diff options
author | trhodes <trhodes@FreeBSD.org> | 2003-08-12 20:06:56 +0000 |
---|---|---|
committer | trhodes <trhodes@FreeBSD.org> | 2003-08-12 20:06:56 +0000 |
commit | 0c5ae3a9aac8cffa88278be425a520abf7ccb5c4 (patch) | |
tree | 3c2fc714329283a20ad88a038c936261060715ba /sbin/mount_msdosfs/mount_msdosfs.c | |
parent | 4d5096698133f049690d975b46c1a8d74b319e25 (diff) | |
download | FreeBSD-src-0c5ae3a9aac8cffa88278be425a520abf7ccb5c4.zip FreeBSD-src-0c5ae3a9aac8cffa88278be425a520abf7ccb5c4.tar.gz |
Add a '-M mask' option so that users can have different
masks for files and directories. This should make some
of the Midnight Commander users happy.
Remove an extra ')' in the manual page.
PR: 35699
Submitted by: Eugene Grosbein <eugen@grosbein.pp.ru> (original version)
Tested by: simon
Diffstat (limited to 'sbin/mount_msdosfs/mount_msdosfs.c')
-rw-r--r-- | sbin/mount_msdosfs/mount_msdosfs.c | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/sbin/mount_msdosfs/mount_msdosfs.c b/sbin/mount_msdosfs/mount_msdosfs.c index 187dc13..061e3cb 100644 --- a/sbin/mount_msdosfs/mount_msdosfs.c +++ b/sbin/mount_msdosfs/mount_msdosfs.c @@ -88,14 +88,14 @@ main(argc, argv) { struct msdosfs_args args; struct stat sb; - int c, mntflags, set_gid, set_uid, set_mask; + int c, mntflags, set_gid, set_uid, set_mask, set_dirmask; char *dev, *dir, mntpath[MAXPATHLEN]; - mntflags = set_gid = set_uid = set_mask = 0; + mntflags = set_gid = set_uid = set_mask = set_dirmask = 0; (void)memset(&args, '\0', sizeof(args)); args.magic = MSDOSFS_ARGSMAGIC; - while ((c = getopt(argc, argv, "sl9u:g:m:o:L:W:")) != -1) { + while ((c = getopt(argc, argv, "sl9u:g:m:M:o:L:W:")) != -1) { switch (c) { #ifdef MSDOSFSMNT_GEMDOSFS case 'G': @@ -123,6 +123,10 @@ main(argc, argv) args.mask = a_mask(optarg); set_mask = 1; break; + case 'M': + args.dirmask = a_mask(optarg); + set_dirmask = 1; + break; case 'L': load_ultable(&args, optarg); args.flags |= MSDOSFSMNT_ULTABLE; @@ -144,6 +148,15 @@ main(argc, argv) if (optind + 2 != argc) usage(); + if (set_mask && !set_dirmask) { + args.dirmask = args.mask; + set_dirmask = 1; + } + else if (set_dirmask && !set_mask) { + args.mask = args.dirmask; + set_mask = 1; + } + dev = argv[optind]; dir = argv[optind + 1]; @@ -169,7 +182,8 @@ main(argc, argv) if (!set_gid) args.gid = sb.st_gid; if (!set_mask) - args.mask = sb.st_mode & (S_IRWXU | S_IRWXG | S_IRWXO); + args.mask = args.dirmask = + sb.st_mode & (S_IRWXU | S_IRWXG | S_IRWXO); } if (mount("msdosfs", mntpath, mntflags, &args) < 0) |