| tadd -m flag - plan9port - [fork] Plan 9 from user space | |
| git clone git://src.adamsgaard.dk/plan9port | |
| Log | |
| Files | |
| Refs | |
| README | |
| LICENSE | |
| --- | |
| commit 24c8d8491f7260a6b24b285bdcafc3a5f7351cbb | |
| parent 53db2d0f6bfc971f44183f360f3db5a72edd948a | |
| Author: rsc <devnull@localhost> | |
| Date: Wed, 21 Apr 2004 22:37:29 +0000 | |
| add -m flag | |
| Diffstat: | |
| M man/man1/mkdir.1 | 8 ++++++++ | |
| M src/cmd/mkdir.C | 14 ++++++++++++-- | |
| 2 files changed, 20 insertions(+), 2 deletions(-) | |
| --- | |
| diff --git a/man/man1/mkdir.1 b/man/man1/mkdir.1 | |
| t@@ -5,6 +5,9 @@ mkdir \- make a directory | |
| .B mkdir | |
| [ | |
| .B -p | |
| +] [ | |
| +.B -m | |
| +. I mode | |
| ] | |
| .I dirname ... | |
| .SH DESCRIPTION | |
| t@@ -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 | |
| diff --git a/src/cmd/mkdir.C b/src/cmd/mkdir.C | |
| t@@ -2,11 +2,12 @@ | |
| #include <libc.h> | |
| 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"); | |
| } | |
| t@@ -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"; | |
| t@@ -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; |