removed the fscompat* files
[util-vserver.git] / util-vserver / lib / fscompat_setiattr-fscompat.hc
index 7ffcb66..a8e6f68 100644 (file)
 static inline ALWAYSINLINE int
 vc_set_iattr_compat_fscompat(char const *filename,
                             dev_t dev, ino_t ino, xid_t xid,
-                            uint32_t flags, uint32_t mask)
+                            uint32_t flags, uint32_t mask,
+                            mode_t const *mode)
 {
-  int                  fd = open(filename, O_RDONLY);
+  int                  fd;
   struct stat          st;
   int                  stat_rc;
-    
+
+  if (mode!=0 && !S_ISREG(*mode) && !S_ISDIR(*mode)) return 0;
+  
+  fd = open(filename, O_RDONLY);
   if (fd==-1) return -1;
     
   stat_rc = fstat(fd, &st);
@@ -53,7 +57,8 @@ vc_set_iattr_compat_fscompat(char const *filename,
   }
 
   if ( (mask&VC_IATTR_BARRIER) ) {
-    if (fchmod(fd, (flags&VC_IATTR_BARRIER) ? 0 : (st.st_mode|0500))==-1)
+    if (fchmod(fd, (flags&VC_IATTR_BARRIER) ? 0 :
+              (st.st_mode| (mode ? *mode : 0500)))==-1)
       goto err;
   }