Blame


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