[CRIU] [PATCH 1/2] crtools/usage: error on excessive subcommands
Dmitry Safonov
dsafonov at virtuozzo.com
Mon Jan 9 08:59:23 PST 2017
Before:
[~]# criu check lazy_pages
Looks good.
[~]# criu check --feature lazy_pages
Error (criu/kerndat.c:588): Lazy pages are not available
After:
[~]# criu check lazy_pages
Error: excessive parameters for command check
...skipped usage() output...
Just a little improvement, not to mislead anyone.
Cc: Kir Kolyshkin <kir at openvz.org>
Signed-off-by: Dmitry Safonov <dsafonov at virtuozzo.com>
---
criu/crtools.c | 16 ++++++++++++++--
1 file changed, 14 insertions(+), 2 deletions(-)
diff --git a/criu/crtools.c b/criu/crtools.c
index 06b2fa781892..ea470e4a75f8 100644
--- a/criu/crtools.c
+++ b/criu/crtools.c
@@ -214,6 +214,7 @@ int main(int argc, char *argv[], char *envp[])
int ret = -1;
bool usage_error = true;
bool has_exec_cmd = false;
+ bool has_sub_command;
int opt, idx;
int log_level = LOG_UNSET;
char *imgs_dir = ".";
@@ -649,8 +650,10 @@ int main(int argc, char *argv[], char *envp[])
goto usage;
}
+ has_sub_command = (argc - optind) > 1;
+
if (has_exec_cmd) {
- if (argc - optind <= 1) {
+ if (!has_sub_command) {
pr_msg("Error: --exec-cmd requires a command\n");
goto usage;
}
@@ -670,6 +673,13 @@ int main(int argc, char *argv[], char *envp[])
return 1;
memcpy(opts.exec_cmd, &argv[optind + 1], (argc - optind - 1) * sizeof(char *));
opts.exec_cmd[argc - optind - 1] = NULL;
+ } else {
+ /* No subcommands except for cpuinfo and restore --exec-cmd */
+ if (strcmp(argv[optind], "cpuinfo") && has_sub_command) {
+ pr_msg("Error: excessive parameter%s for command %s\n",
+ (argc - optind) > 2 ? "s" : "", argv[optind]);
+ goto usage;
+ }
}
/* We must not open imgs dir, if service is called */
@@ -781,8 +791,10 @@ int main(int argc, char *argv[], char *envp[])
return cr_dedup() != 0;
if (!strcmp(argv[optind], "cpuinfo")) {
- if (!argv[optind + 1])
+ if (!argv[optind + 1]) {
+ pr_msg("Error: cpuinfo requires an action: dump or check\n");
goto usage;
+ }
if (!strcmp(argv[optind + 1], "dump"))
return cpuinfo_dump();
else if (!strcmp(argv[optind + 1], "check"))
--
2.11.0
More information about the CRIU
mailing list