commit 24c8d8491f7260a6b24b285bdcafc3a5f7351cbb from: rsc date: Wed Apr 21 22:37:29 2004 UTC add -m flag commit - 53db2d0f6bfc971f44183f360f3db5a72edd948a commit + 24c8d8491f7260a6b24b285bdcafc3a5f7351cbb blob - 7bae8cee8bd168b85b66365d7f9f931053b837d8 blob + cac5818d704e37a940c15429ba99402784f06216 --- man/man1/mkdir.1 +++ man/man1/mkdir.1 @@ -5,6 +5,9 @@ mkdir \- make a directory .B mkdir [ .B -p +] [ +.B -m +. I mode ] .I dirname ... .SH DESCRIPTION @@ -19,6 +22,11 @@ flag is given, .I mkdir creates any necessary parent directories and does not complain if the target directory already exists. +.PP +The +.B -m +flag sets the permissions to be used when creating the directory. +The default is 0777. .SH "SEE ALSO" .IR rm (1) .br blob - 11421d97d441bf4e3bf46624673bcea3f8726e63 blob + 1c16565d5be8c3c819bc941c34129b1e29929784 --- src/cmd/mkdir.C +++ src/cmd/mkdir.C @@ -2,11 +2,12 @@ #include char *e; +ulong mode = 0777L; void usage(void) { - fprint(2, "usage: mkdir [-p] dir...\n"); + fprint(2, "usage: mkdir [-p] [-m mode] dir...\n"); exits("usage"); } @@ -20,7 +21,7 @@ makedir(char *s) e = "error"; return -1; } - f = create(s, OREAD, DMDIR | 0777L); + f = create(s, OREAD, DMDIR | mode); if(f < 0){ fprint(2, "mkdir: can't create %s: %r\n", s); e = "error"; @@ -50,11 +51,20 @@ void main(int argc, char *argv[]) { int i, pflag; + char *m; pflag = 0; ARGBEGIN{ default: usage(); + case 'm': + m = ARGF(); + if(m == nil) + usage(); + mode = strtoul(m, &m, 8); + if(mode > 0777) + usage(); + break; case 'p': pflag = 1; break;