added preliminary support for the patch from
[util-vserver.git] / util-vserver / src / fstool.c
index 7ae7a1d..e5ceae2 100644 (file)
@@ -42,29 +42,6 @@ struct Arguments const *             global_args = 0;
 
 int wrapper_exit_code = 1;
 
-bool
-checkForRace(int fd, char const * name, struct stat const *exp_st)
-{
-  struct stat          st;
-  
-  if (fstat(fd, &st)==-1) {
-    perror("fstat()");
-    return false;
- }
-
-  if (st.st_dev  != exp_st->st_dev ||
-      st.st_ino  != exp_st->st_ino ||
-      st.st_mode != exp_st->st_mode) {
-    close(fd);
-    WRITE_MSG(2, "race while visiting '");
-    WRITE_STR(2, name);
-    WRITE_MSG(2, "'\n");
-    exit(2);
-  }
-
-  return true;
-}
-
 inline static bool
 isSpecialDir(char const *d)
 {
@@ -96,7 +73,7 @@ iterateFilesystem(char const *path)
 
   // show current directory entry first
   if (lstat(".", &cur_st)==-1) perror("lstat()");
-  else err += handleFile(".", path, &cur_st) ? 0 : 1;
+  else err += handleFile(".", path) ? 0 : 1;
 
   // strip trailing '/'
   while (path_len>0 && path[path_len-1]=='/') --path_len;
@@ -122,7 +99,7 @@ iterateFilesystem(char const *path)
     
     {
       CONCAT_PATHS(path, path_len, ent->d_name);
-      err += handleFile(ent->d_name, new_path, &st) ? 0 : 1;
+      err += handleFile(ent->d_name, new_path) ? 0 : 1;
     }
   }
 
@@ -183,7 +160,7 @@ processFile(char const *path)
     return iterateFilesystem(path);
   }
   else
-    return handleFile(path, path, &st);
+    return handleFile(path, path) ? 0 : 1;
 }
 
 int main(int argc, char *argv[])
@@ -195,8 +172,6 @@ int main(int argc, char *argv[])
     .do_display_dot    =  false,
     .do_display_dir    =  false,
     .do_mapping                =  true,
-    .immutable         =  false,
-    .immulink          =  false,
     .ctx               =  VC_NOCTX,
     .is_legacy          =  false,
     .do_set             =  false,
@@ -215,12 +190,14 @@ int main(int argc, char *argv[])
     switch (c) {
       case CMD_HELP            :  showHelp(1, argv[0], 0);
       case CMD_VERSION         :  showVersion();
-      case CMD_IMMU            :  args.set_mask |= VC_IATTR_IUNLINK; break;
+      case CMD_IMMU            :  args.set_mask |= VC_IATTR_IMMUTABLE; /*@fallthrough@*/
+      case CMD_IMMUX           :  args.set_mask |= VC_IATTR_IUNLINK; break;
       case CMD_ADMIN           :  args.set_mask |= VC_IATTR_ADMIN;   break;
       case CMD_WATCH           :  args.set_mask |= VC_IATTR_WATCH;   break;
       case CMD_HIDE            :  args.set_mask |= VC_IATTR_HIDE;    break;
       case CMD_BARRIER         :  args.set_mask |= VC_IATTR_BARRIER; break;
-      case CMD_UNSET_IMMU      :  args.del_mask |= VC_IATTR_IUNLINK; break;
+      case CMD_UNSET_IMMU      :  args.del_mask |= VC_IATTR_IMMUTABLE; /*@fallthrough@*/
+      case CMD_UNSET_IMMUX     :  args.del_mask |= VC_IATTR_IUNLINK; break;
       case CMD_UNSET_ADMIN     :  args.del_mask |= VC_IATTR_ADMIN;   break;
       case CMD_UNSET_WATCH     :  args.del_mask |= VC_IATTR_WATCH;   break;
       case CMD_UNSET_HIDE      :  args.del_mask |= VC_IATTR_HIDE;    break;