r20227: Simplify logic in vfs_MkDir() a bit
authorVolker Lendecke <vlendec@samba.org>
Sun, 17 Dec 2006 18:10:15 +0000 (18:10 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 17:16:33 +0000 (12:16 -0500)
(This used to be commit b24cf79e9ec914ac33f1a20524e5ffa7fe1cba5e)

source3/smbd/vfs.c

index 3ed56d3bf6fa29ecb0057d7f22a2099d796090c1..ab9ddef9fff869e39c6f75372b25fb70b319a7e9 100644 (file)
@@ -315,20 +315,24 @@ int vfs_MkDir(connection_struct *conn, const char *name, mode_t mode)
        int ret;
        SMB_STRUCT_STAT sbuf;
 
-       if(!(ret=SMB_VFS_MKDIR(conn, name, mode))) {
+       if ((ret=SMB_VFS_MKDIR(conn, name, mode)) != 0) {
+               return ret;
+       }
 
-               inherit_access_acl(conn, name, mode);
+       inherit_access_acl(conn, name, mode);
 
-               /*
-                * Check if high bits should have been set,
-                * then (if bits are missing): add them.
-                * Consider bits automagically set by UNIX, i.e. SGID bit from parent dir.
-                */
-               if(mode & ~(S_IRWXU|S_IRWXG|S_IRWXO) &&
-                               !SMB_VFS_STAT(conn,name,&sbuf) && (mode & ~sbuf.st_mode))
-                       SMB_VFS_CHMOD(conn,name,sbuf.st_mode | (mode & ~sbuf.st_mode));
+       /*
+        * Check if high bits should have been set,
+        * then (if bits are missing): add them.
+        * Consider bits automagically set by UNIX, i.e. SGID bit from parent
+        * dir.
+        */
+       if (mode & ~(S_IRWXU|S_IRWXG|S_IRWXO)
+           && (SMB_VFS_STAT(conn,name,&sbuf) == 0)
+           && (mode & ~sbuf.st_mode)) {
+               SMB_VFS_CHMOD(conn,name,sbuf.st_mode | (mode & ~sbuf.st_mode));
        }
-       return ret;
+       return 0;
 }
 
 /*******************************************************************