+#define CMD_CAP 0x4000
+#define CMD_FLAG 0x4004
+#define CMD_SECURE 0x4006
+
+#ifdef VC_ENABLE_API_LEGACY
+# define CMD_OBSOLETE_CHOWN 0x8000
+# define CMD_OBSOLETE_DAC_OVERRIDE 0x8001
+# define CMD_OBSOLETE_DAC_READ_SEARCH 0x8002
+# define CMD_OBSOLETE_FOWNER 0x8003
+# define CMD_OBSOLETE_FSETID 0x8004
+# define CMD_OBSOLETE_KILL 0x8005
+# define CMD_OBSOLETE_SETGID 0x8006
+# define CMD_OBSOLETE_SETUID 0x8007
+# define CMD_OBSOLETE_SETPCAP 0x8008
+# define CMD_OBSOLETE_SYS_TTY_CONFIG 0x8009
+# define CMD_OBSOLETE_LEASE 0x800a
+# define CMD_OBSOLETE_SYS_CHROOT 0x800b
+# define CMD_OBSOLETE_X_LINUX_IMMUTABLE 0x800c
+# define CMD_OBSOLETE_X_NET_BIND_SERVICE 0x800d
+# define CMD_OBSOLETE_X_NET_BROADCAST 0x800e
+# define CMD_OBSOLETE_X_NET_ADMIN 0x800f
+# define CMD_OBSOLETE_X_NET_RAW 0x8010
+# define CMD_OBSOLETE_X_IPC_LOCK 0x8011
+# define CMD_OBSOLETE_X_IPC_OWNER 0x8012
+# define CMD_OBSOLETE_X_SYS_MODULE 0x8013
+# define CMD_OBSOLETE_X_SYS_RAWIO 0x8014
+# define CMD_OBSOLETE_X_SYS_PACCT 0x8015
+# define CMD_OBSOLETE_X_SYS_ADMIN 0x8016
+# define CMD_OBSOLETE_X_SYS_BOOT 0x8017
+# define CMD_OBSOLETE_X_SYS_NICE 0x8018
+# define CMD_OBSOLETE_X_SYS_RESOURCE 0x8019
+# define CMD_OBSOLETE_X_SYS_TIME 0x801a
+# define CMD_OBSOLETE_X_MKNOD 0x801b
+# define CMD_OBSOLETE_X_QUOTACTL 0x801c
+
+static char const * const OBSOLETE_MAPPING[] = {
+ // 0 1 2 3
+ "CHOWN", "DAC_OVERRIDE", "DAC_READ_SEARCH", "FOWNER",
+ "FSETID", "KILL", "SETGID", "SETUID",
+ "SETPCAP", "SYS_TTY_CONFIG", "LEASE", "SYS_CHROOT",
+ "LINUX_IMMUTABLE", "NET_BIND_SERVICE", "NET_BROADCAST", "NET_ADMIN",
+ "NET_RAW", "IPC_LOCK", "IPC_OWNER", "SYS_MODULE",
+ "SYS_RAWIO", "SYS_PACCT", "SYS_ADMIN", "SYS_BOOT",
+ "SYS_NICE", "SYS_RESOURCE", "SYS_TIME", "MKNOD",
+ "QUOTACTL" };
+#endif
+
+struct option const
+CMDLINE_OPTIONS[] = {
+ { "help", no_argument, 0, CMD_HELP },
+ { "version", no_argument, 0, CMD_VERSION },
+ { "cap", required_argument, 0, CMD_CAP },
+ { "flag", required_argument, 0, CMD_FLAG },
+ { "secure", no_argument, 0, CMD_SECURE },
+ { "show", no_argument, 0, CMD_SHOW },
+ { "pid", required_argument, 0, CMD_PID },
+#ifdef VC_ENABLE_API_LEGACY
+ { "CAP_CHOWN", no_argument, 0, CMD_OBSOLETE_CHOWN },
+ { "CAP_DAC_OVERRIDE", no_argument, 0, CMD_OBSOLETE_DAC_OVERRIDE },
+ { "CAP_DAC_READ_SEARCH", no_argument, 0, CMD_OBSOLETE_DAC_READ_SEARCH },
+ { "CAP_FOWNER", no_argument, 0, CMD_OBSOLETE_FOWNER },
+ { "CAP_FSETID", no_argument, 0, CMD_OBSOLETE_FSETID },
+ { "CAP_KILL", no_argument, 0, CMD_OBSOLETE_KILL },
+ { "CAP_SETGID", no_argument, 0, CMD_OBSOLETE_SETGID },
+ { "CAP_SETUID", no_argument, 0, CMD_OBSOLETE_SETUID },
+ { "CAP_SETPCAP", no_argument, 0, CMD_OBSOLETE_SETPCAP },
+ { "CAP_SYS_TTY_CONFIG", no_argument, 0, CMD_OBSOLETE_SYS_TTY_CONFIG },
+ { "CAP_LEASE", no_argument, 0, CMD_OBSOLETE_LEASE },
+ { "CAP_SYS_CHROOT", no_argument, 0, CMD_OBSOLETE_SYS_CHROOT },
+ { "--CAP_LINUX_IMMUTABLE", no_argument, 0, CMD_OBSOLETE_X_LINUX_IMMUTABLE },
+ { "--CAP_NET_BIND_SERVICE", no_argument, 0, CMD_OBSOLETE_X_NET_BIND_SERVICE },
+ { "--CAP_NET_BROADCAST", no_argument, 0, CMD_OBSOLETE_X_NET_BROADCAST },
+ { "--CAP_NET_ADMIN", no_argument, 0, CMD_OBSOLETE_X_NET_ADMIN },
+ { "--CAP_NET_RAW", no_argument, 0, CMD_OBSOLETE_X_NET_RAW },
+ { "--CAP_IPC_LOCK", no_argument, 0, CMD_OBSOLETE_X_IPC_LOCK },
+ { "--CAP_IPC_OWNER", no_argument, 0, CMD_OBSOLETE_X_IPC_OWNER },
+ { "--CAP_SYS_MODULE", no_argument, 0, CMD_OBSOLETE_X_SYS_MODULE },
+ { "--CAP_SYS_RAWIO", no_argument, 0, CMD_OBSOLETE_X_SYS_RAWIO },
+ { "--CAP_SYS_PACCT", no_argument, 0, CMD_OBSOLETE_X_SYS_PACCT },
+ { "--CAP_SYS_ADMIN", no_argument, 0, CMD_OBSOLETE_X_SYS_ADMIN },
+ { "--CAP_SYS_BOOT", no_argument, 0, CMD_OBSOLETE_X_SYS_BOOT },
+ { "--CAP_SYS_NICE", no_argument, 0, CMD_OBSOLETE_X_SYS_NICE },
+ { "--CAP_SYS_RESOURCE", no_argument, 0, CMD_OBSOLETE_X_SYS_RESOURCE },
+ { "--CAP_SYS_TIME", no_argument, 0, CMD_OBSOLETE_X_SYS_TIME },
+ { "--CAP_MKNOD", no_argument, 0, CMD_OBSOLETE_X_MKNOD },
+ { "--CAP_QUOTACTL", no_argument, 0, CMD_OBSOLETE_X_QUOTACTL },