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).
This commit is contained in:
Yaroslav Tykhiy 2003-08-05 15:04:39 +00:00
parent 7e3d4432af
commit ce03e3a7bd
2 changed files with 15 additions and 3 deletions

View File

@ -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

View File

@ -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)