Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 25 Nov 2008 03:49:41 +0000 (UTC)
From:      Daichi GOTO <daichi@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r185284 - head/sys/fs/unionfs
Message-ID:  <200811250349.mAP3nfFX007572@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: daichi
Date: Tue Nov 25 03:49:41 2008
New Revision: 185284
URL: http://svn.freebsd.org/changeset/base/185284

Log:
  Simplify mode_t check treatment (suggested by trasz).
  By semantical view, trasz's code is better than prior one.
  
  Submitted by:	trasz
  Reviewed by:	Masanori OZAWA <ozawa@ongs.co.jp>

Modified:
  head/sys/fs/unionfs/union_vfsops.c

Modified: head/sys/fs/unionfs/union_vfsops.c
==============================================================================
--- head/sys/fs/unionfs/union_vfsops.c	Tue Nov 25 03:18:35 2008	(r185283)
+++ head/sys/fs/unionfs/union_vfsops.c	Tue Nov 25 03:49:41 2008	(r185284)
@@ -67,43 +67,6 @@ static vfs_extattrctl_t	unionfs_extattrc
 static struct vfsops unionfs_vfsops;
 
 /*
- * Exchange from userland file mode to vmode.
- */
-static u_short 
-mode2vmode(mode_t mode)
-{
-	u_short		ret;
-
-	ret = 0;
-
-	/* other */
-	if (mode & S_IXOTH)
-		ret |= VEXEC >> 6;
-	if (mode & S_IWOTH)
-		ret |= VWRITE >> 6;
-	if (mode & S_IROTH)
-		ret |= VREAD >> 6;
-
-	/* group */
-	if (mode & S_IXGRP)
-		ret |= VEXEC >> 3;
-	if (mode & S_IWGRP)
-		ret |= VWRITE >> 3;
-	if (mode & S_IRGRP)
-		ret |= VREAD >> 3;
-
-	/* owner */
-	if (mode & S_IXUSR)
-		ret |= VEXEC;
-	if (mode & S_IWUSR)
-		ret |= VWRITE;
-	if (mode & S_IRUSR)
-		ret |= VREAD;
-
-	return (ret);
-}
-
-/*
  * Mount unionfs layer.
  */
 static int
@@ -174,7 +137,7 @@ unionfs_domount(struct mount *mp, struct
 			vfs_mount_error(mp, "Invalid udir");
 			return (EINVAL);
 		}
-		udir = mode2vmode(udir);
+		udir &= S_IRWXU | S_IRWXG | S_IRWXO;
 	}
 	if (vfs_getopt(mp->mnt_optnew, "ufile", (void **)&tmp, NULL) == 0) {
 		if (tmp != NULL)
@@ -183,7 +146,7 @@ unionfs_domount(struct mount *mp, struct
 			vfs_mount_error(mp, "Invalid ufile");
 			return (EINVAL);
 		}
-		ufile = mode2vmode(ufile);
+		ufile &= S_IRWXU | S_IRWXG | S_IRWXO;
 	}
 	/* check umask, uid and gid */
 	if (udir == 0 && ufile != 0)



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200811250349.mAP3nfFX007572>