svn commit: samba r23697 - in branches/SAMBA_4_0/source/ntvfs/posix: .

tridge at samba.org tridge at samba.org
Wed Jul 4 04:16:16 GMT 2007


Author: tridge
Date: 2007-07-04 04:16:16 +0000 (Wed, 04 Jul 2007)
New Revision: 23697

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=23697

Log:

use the file perm options in the posix backend

Modified:
   branches/SAMBA_4_0/source/ntvfs/posix/pvfs_fileinfo.c
   branches/SAMBA_4_0/source/ntvfs/posix/vfs_posix.c
   branches/SAMBA_4_0/source/ntvfs/posix/vfs_posix.h


Changeset:
Modified: branches/SAMBA_4_0/source/ntvfs/posix/pvfs_fileinfo.c
===================================================================
--- branches/SAMBA_4_0/source/ntvfs/posix/pvfs_fileinfo.c	2007-07-04 04:15:07 UTC (rev 23696)
+++ branches/SAMBA_4_0/source/ntvfs/posix/pvfs_fileinfo.c	2007-07-04 04:16:16 UTC (rev 23697)
@@ -88,34 +88,39 @@
 */
 mode_t pvfs_fileperms(struct pvfs_state *pvfs, uint32_t attrib)
 {
-	mode_t mode = S_IRUSR;
+	mode_t mode = (S_IRUSR | S_IRGRP | S_IROTH | S_IWUSR | S_IWGRP | S_IWOTH);
 
-	if (attrib & FILE_ATTRIBUTE_DIRECTORY) {
-		mode |= S_IXUSR;
+	if (!(pvfs->flags & PVFS_FLAG_XATTR_ENABLE) &&
+	    (attrib & FILE_ATTRIBUTE_READONLY)) {
+		mode &= ~(S_IWUSR | S_IWGRP | S_IWOTH);
 	}
 
-	if (!(attrib & FILE_ATTRIBUTE_READONLY) ||
-	    (pvfs->flags & PVFS_FLAG_XATTR_ENABLE)) {
-		mode |= S_IWUSR;
-	}
-
 	if (!(pvfs->flags & PVFS_FLAG_XATTR_ENABLE)) {
 		if ((attrib & FILE_ATTRIBUTE_ARCHIVE) &&
 		    (pvfs->flags & PVFS_FLAG_MAP_ARCHIVE)) {
 			mode |= S_IXUSR;
 		}
-		
 		if ((attrib & FILE_ATTRIBUTE_SYSTEM) &&
 		    (pvfs->flags & PVFS_FLAG_MAP_SYSTEM)) {
 			mode |= S_IXGRP;
 		}
-		
 		if ((attrib & FILE_ATTRIBUTE_HIDDEN) &&
 		    (pvfs->flags & PVFS_FLAG_MAP_HIDDEN)) {
 			mode |= S_IXOTH;
 		}
 	}
 
+	if (attrib & FILE_ATTRIBUTE_DIRECTORY) {
+		mode |= (S_IFDIR | S_IWUSR);
+		mode |= (S_IXUSR | S_IXGRP | S_IXOTH);                 
+		mode &= pvfs->options.dir_mask;
+		mode |= pvfs->options.force_dir_mode;
+	} else {
+		mode &= pvfs->options.create_mask;
+		mode |= pvfs->options.force_create_mode;
+	}
+
 	return mode;
 }
 
+

Modified: branches/SAMBA_4_0/source/ntvfs/posix/vfs_posix.c
===================================================================
--- branches/SAMBA_4_0/source/ntvfs/posix/vfs_posix.c	2007-07-04 04:15:07 UTC (rev 23696)
+++ branches/SAMBA_4_0/source/ntvfs/posix/vfs_posix.c	2007-07-04 04:16:16 UTC (rev 23697)
@@ -60,6 +60,19 @@
 	if (share_bool_option(scfg, PVFS_AIO, False))
 		pvfs->flags |= PVFS_FLAG_LINUX_AIO;
 
+	/* file perm options */
+	pvfs->options.create_mask       = share_int_option(scfg,
+							   SHARE_CREATE_MASK,
+							   SHARE_CREATE_MASK_DEFAULT);
+	pvfs->options.dir_mask          = share_int_option(scfg,
+							   SHARE_DIR_MASK,
+							   SHARE_DIR_MASK_DEFAULT);
+	pvfs->options.force_dir_mode    = share_int_option(scfg,
+							   SHARE_FORCE_DIR_MODE,
+							   SHARE_FORCE_DIR_MODE_DEFAULT);
+	pvfs->options.force_create_mode = share_int_option(scfg,
+							   SHARE_FORCE_CREATE_MODE,
+							   SHARE_FORCE_CREATE_MODE_DEFAULT);
 	/* this must be a power of 2 */
 	pvfs->alloc_size_rounding = share_int_option(scfg,
 							PVFS_ALLOCATION_ROUNDING,

Modified: branches/SAMBA_4_0/source/ntvfs/posix/vfs_posix.h
===================================================================
--- branches/SAMBA_4_0/source/ntvfs/posix/vfs_posix.h	2007-07-04 04:15:07 UTC (rev 23696)
+++ branches/SAMBA_4_0/source/ntvfs/posix/vfs_posix.h	2007-07-04 04:16:16 UTC (rev 23697)
@@ -86,6 +86,14 @@
 
 	/* the acl backend */
 	const struct pvfs_acl_ops *acl_ops;
+
+	/* non-flag share options */
+	struct {
+		mode_t dir_mask;
+		mode_t force_dir_mode;
+		mode_t create_mask;
+		mode_t force_create_mode;
+	} options;
 };
 
 /* this is the basic information needed about a file from the filesystem */



More information about the samba-cvs mailing list