gentoo: use /var/run for new /run compatibility
[util-vserver.git] / src / fstool.c
index 7cad977..34dc976 100644 (file)
@@ -191,6 +191,8 @@ int main(int argc, char *argv[])
   while (1) {
     int                c = getopt_long(argc, argv, CMDLINE_OPTIONS_SHORT,
                                CMDLINE_OPTIONS, 0);
+    long       flags;
+    char       *endptr;
     if (c==-1) break;
 
     switch (c) {
@@ -203,6 +205,8 @@ int main(int argc, char *argv[])
       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_WRITE           :  args.set_mask |= VC_IATTR_WRITE;     break;
+      case CMD_COW             :  args.set_mask |= VC_IATTR_COW;       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_IMMUTABLE :  args.del_mask |= VC_IATTR_IMMUTABLE; break;
@@ -210,6 +214,22 @@ int main(int argc, char *argv[])
       case CMD_UNSET_WATCH     :  args.del_mask |= VC_IATTR_WATCH;     break;
       case CMD_UNSET_HIDE      :  args.del_mask |= VC_IATTR_HIDE;      break;
       case CMD_UNSET_BARRIER   :  args.del_mask |= VC_IATTR_BARRIER;   break;
+      case CMD_UNSET_WRITE     :  args.del_mask |= VC_IATTR_WRITE;     break;
+      case CMD_UNSET_COW       :  args.del_mask |= VC_IATTR_COW;       break;
+      case CMD_FLAGS           :
+      case CMD_UNSET_FLAGS     :
+       flags = strtoul(optarg, &endptr, 0);
+       if ((flags == 0 && errno != 0) || *endptr != '\0') {
+         WRITE_MSG(2, "Invalid flags argument: '");
+         WRITE_STR(2, optarg);
+         WRITE_MSG(2, "'; try '--help' for more information\n");
+         return EXIT_FAILURE;
+       }
+       if (c == CMD_FLAGS)
+         args.set_mask |= flags;
+       else
+         args.del_mask |= flags;
+        break;
       case 'R'                 :  args.do_recurse     = true;          break;
       case 'a'                 :  args.do_display_dot = true;          break;
       case 'd'                 :  args.do_display_dir = true;          break;