X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Ffstool.c;h=34dc97689d4585734dc007c57f2f63ee5092b607;hb=909fa999c0180aba479959080bd434ad98930c49;hp=7cad9771ee431c1aefe2b89212c858cf85985d9e;hpb=fe6346afa27bc7d53050c25563f1a0afc4176aaf;p=util-vserver.git diff --git a/src/fstool.c b/src/fstool.c index 7cad977..34dc976 100644 --- a/src/fstool.c +++ b/src/fstool.c @@ -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;