X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Ffstool.c;h=34dc97689d4585734dc007c57f2f63ee5092b607;hb=b1dbdec10c0cadc46a58889d738c8ab1c92a07e9;hp=5188393e5e679c4b2f10f428314fc16d96efc941;hpb=7ca2184598beb16840dffa6680e87e87723f846f;p=util-vserver.git diff --git a/src/fstool.c b/src/fstool.c index 5188393..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) { @@ -204,6 +206,7 @@ int main(int argc, char *argv[]) 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; @@ -212,6 +215,21 @@ int main(int argc, char *argv[]) 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;