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:
parent
f42df9a686
commit
82d0fb1cec
@ -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
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user