summaryrefslogtreecommitdiffstats
path: root/sbin/mount_msdosfs/mount_msdosfs.c
diff options
context:
space:
mode:
authortrhodes <trhodes@FreeBSD.org>2003-08-12 20:06:56 +0000
committertrhodes <trhodes@FreeBSD.org>2003-08-12 20:06:56 +0000
commit0c5ae3a9aac8cffa88278be425a520abf7ccb5c4 (patch)
tree3c2fc714329283a20ad88a038c936261060715ba /sbin/mount_msdosfs/mount_msdosfs.c
parent4d5096698133f049690d975b46c1a8d74b319e25 (diff)
downloadFreeBSD-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.c22
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)
OpenPOWER on IntegriCloud