diff options
author | yar <yar@FreeBSD.org> | 2003-08-05 15:04:39 +0000 |
---|---|---|
committer | yar <yar@FreeBSD.org> | 2003-08-05 15:04:39 +0000 |
commit | 186be00c7486a491b16114fda3e051d4a4fb0e75 (patch) | |
tree | ca0c68957bce4ecf984b91a3f6a61b0d57e19fb2 /sbin | |
parent | a00853028bf6ab555c105dde4b09bc90bd2649c1 (diff) | |
download | FreeBSD-src-186be00c7486a491b16114fda3e051d4a4fb0e75.zip FreeBSD-src-186be00c7486a491b16114fda3e051d4a4fb0e75.tar.gz |
Don't reinvent the wheel: Use setmode(3) to interpret
a file mode specification from the command line. This
approach is more flexible and less error-prone than using
a mere strtoul(3).
Diffstat (limited to 'sbin')
-rw-r--r-- | sbin/mdmfs/mdmfs.8 | 11 | ||||
-rw-r--r-- | sbin/mdmfs/mdmfs.c | 7 |
2 files changed, 15 insertions, 3 deletions
diff --git a/sbin/mdmfs/mdmfs.8 b/sbin/mdmfs/mdmfs.8 index 9db5194..daf66c2 100644 --- a/sbin/mdmfs/mdmfs.8 +++ b/sbin/mdmfs/mdmfs.8 @@ -200,6 +200,17 @@ Set the file (directory) permissions of the mount point .Ar mount-point to .Ar permissions . +The +.Ar permissions +argument can be in any of the mode formats recognized by +.Xr chmod 1 . +If symbolic permissions are specified, +the operation characters +.Dq + +and +.Dq - +are interpreted relative to the initial permissions of +.Dq a=rwx . .It Fl S Do not enable soft-updates on the file system. .It Fl s Ar size diff --git a/sbin/mdmfs/mdmfs.c b/sbin/mdmfs/mdmfs.c index 035f1fe..db143cc 100644 --- a/sbin/mdmfs/mdmfs.c +++ b/sbin/mdmfs/mdmfs.c @@ -92,6 +92,7 @@ main(int argc, char **argv) bool detach, softdep, autounit; char *mtpoint, *unitstr; char ch, *p; + void *set; /* Misc. initialization. */ (void)memset(&mi, '\0', sizeof(mi)); @@ -191,11 +192,11 @@ main(int argc, char **argv) case 'p': if (compat) usage(); - if (*optarg >= '0' && *optarg <= '7') - mi.mi_mode = strtol(optarg, NULL, 8); - if ((mi.mi_mode & ~07777) != 0) + if ((set = setmode(optarg)) == NULL) usage(); + mi.mi_mode = getmode(set, S_IRWXU | S_IRWXG | S_IRWXO); mi.mi_have_mode = true; + free(set); break; case 'S': if (compat) |