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