tadd -m flag - plan9port - [fork] Plan 9 from user space
 (HTM) git clone git://src.adamsgaard.dk/plan9port
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 24c8d8491f7260a6b24b285bdcafc3a5f7351cbb
 (DIR) parent 53db2d0f6bfc971f44183f360f3db5a72edd948a
 (HTM) 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(-)
       ---
 (DIR) 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
 (DIR) 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;