1*7dd7cddfSDavid du Colombier #include <u.h> 2*7dd7cddfSDavid du Colombier #include <libc.h> 3*7dd7cddfSDavid du Colombier 4*7dd7cddfSDavid du Colombier void main(int argc,char ** argv)5*7dd7cddfSDavid du Colombiermain(int argc, char **argv) 6*7dd7cddfSDavid du Colombier { 7*7dd7cddfSDavid du Colombier char *dir; 8*7dd7cddfSDavid du Colombier char *name; 9*7dd7cddfSDavid du Colombier int i; 10*7dd7cddfSDavid du Colombier 11*7dd7cddfSDavid du Colombier dir = nil; 12*7dd7cddfSDavid du Colombier ARGBEGIN{ 13*7dd7cddfSDavid du Colombier case 'd': 14*7dd7cddfSDavid du Colombier if((dir=ARGF()) == nil) 15*7dd7cddfSDavid du Colombier goto Usage; 16*7dd7cddfSDavid du Colombier break; 17*7dd7cddfSDavid du Colombier default: 18*7dd7cddfSDavid du Colombier goto Usage; 19*7dd7cddfSDavid du Colombier }ARGEND; 20*7dd7cddfSDavid du Colombier 21*7dd7cddfSDavid du Colombier if(argc < 1) { 22*7dd7cddfSDavid du Colombier Usage: 23*7dd7cddfSDavid du Colombier fprint(2, "usage: cleanname [-d pwd] name...\n"); 24*7dd7cddfSDavid du Colombier exits("usage"); 25*7dd7cddfSDavid du Colombier } 26*7dd7cddfSDavid du Colombier 27*7dd7cddfSDavid du Colombier for(i=0; i<argc; i++) { 28*7dd7cddfSDavid du Colombier if(dir == nil || argv[i][0] == '/') { 29*7dd7cddfSDavid du Colombier cleanname(argv[i]); 30*7dd7cddfSDavid du Colombier print("%s\n", argv[i]); 31*7dd7cddfSDavid du Colombier } else { 32*7dd7cddfSDavid du Colombier name = malloc(strlen(argv[i])+1+strlen(dir)+1); 33*7dd7cddfSDavid du Colombier if(name == nil) { 34*7dd7cddfSDavid du Colombier fprint(2, "cleanname: out of memory\n"); 35*7dd7cddfSDavid du Colombier exits("out of memory"); 36*7dd7cddfSDavid du Colombier } 37*7dd7cddfSDavid du Colombier sprint(name, "%s/%s", dir, argv[i]); 38*7dd7cddfSDavid du Colombier cleanname(name); 39*7dd7cddfSDavid du Colombier print("%s\n", name); 40*7dd7cddfSDavid du Colombier free(name); 41*7dd7cddfSDavid du Colombier } 42*7dd7cddfSDavid du Colombier } 43*7dd7cddfSDavid du Colombier exits(0); 44*7dd7cddfSDavid du Colombier } 45