while (1) {
int c = getopt_long(argc, argv, CMDLINE_OPTIONS_SHORT,
CMDLINE_OPTIONS, 0);
+ long flags;
+ char *endptr;
if (c==-1) break;
switch (c) {
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;
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;