Blob
- Date:
- Message:
- cmd: rename *.C to *.c These were *.C back in 2003, before the 9 script, to avoid conflicts with the system utilities. A later change renamed them, but that change seems to have been lost during the hg->git conversion because I ran the conversion on a case-insensitive file system. Change-Id: Id32c99cb9571ef0e185c3cc9e8c8d6d5b48ca195
- Actions:
- History | Blame | Raw File
1 #include <u.h>2 #include <libc.h>4 char *e;5 ulong mode = 0777L;7 void8 usage(void)9 {10 fprint(2, "usage: mkdir [-p] [-m mode] dir...\n");11 exits("usage");12 }14 int15 makedir(char *s)16 {17 int f;19 if(access(s, AEXIST) == 0){20 fprint(2, "mkdir: %s already exists\n", s);21 e = "error";22 return -1;23 }24 f = create(s, OREAD, DMDIR | mode);25 if(f < 0){26 fprint(2, "mkdir: can't create %s: %r\n", s);27 e = "error";28 return -1;29 }30 close(f);31 return 0;32 }34 void35 mkdirp(char *s)36 {37 char *p;39 for(p=strchr(s+1, '/'); p; p=strchr(p+1, '/')){40 *p = 0;41 if(access(s, AEXIST) != 0 && makedir(s) < 0)42 return;43 *p = '/';44 }45 if(access(s, AEXIST) != 0)46 makedir(s);47 }50 void51 main(int argc, char *argv[])52 {53 int i, pflag;54 char *m;56 pflag = 0;57 ARGBEGIN{58 default:59 usage();60 case 'm':61 m = ARGF();62 if(m == nil)63 usage();64 mode = strtoul(m, &m, 8);65 if(mode > 0777)66 usage();67 break;68 case 'p':69 pflag = 1;70 break;71 }ARGEND73 for(i=0; i<argc; i++){74 if(pflag)75 mkdirp(argv[i]);76 else77 makedir(argv[i]);78 }79 exits(e);80 }