From: Guannan Ren Date: Tue, 19 Feb 2013 08:50:59 +0000 (+0800) Subject: virsh: distinguish errors between missing argument and wrong option X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=dd71fa110a05ae480a445a75e7c454914f42789c;p=libvirt.git virsh: distinguish errors between missing argument and wrong option Specifying ':' to suppress the error messages printed by getopt(). Then, distinguish the two types of errors. Before: # virsh -c virsh: option requires an argument -- 'c' error: unsupported option '-?'. See --help. After: # virsh -c error: option '-c' requires an argument # virsh -x error: unsupported option '-x'. See --help. --- diff --git a/tools/virsh.c b/tools/virsh.c index d64e539660..d822e09415 100644 --- a/tools/virsh.c +++ b/tools/virsh.c @@ -2919,7 +2919,7 @@ vshParseArgv(vshControl *ctl, int argc, char **argv) /* Standard (non-command) options. The leading + ensures that no * argument reordering takes place, so that command options are * not confused with top-level virsh options. */ - while ((arg = getopt_long(argc, argv, "+d:hqtc:vVrl:e:", opt, NULL)) != -1) { + while ((arg = getopt_long(argc, argv, "+:d:hqtc:vVrl:e:", opt, NULL)) != -1) { switch (arg) { case 'd': if (virStrToLong_i(optarg, NULL, 10, &debug) < 0) { @@ -2973,8 +2973,14 @@ vshParseArgv(vshControl *ctl, int argc, char **argv) exit(EXIT_FAILURE); } break; + case ':': + vshError(ctl, _("option '-%c' requires an argument"), optopt); + exit(EXIT_FAILURE); + case '?': + vshError(ctl, _("unsupported option '-%c'. See --help."), optopt); + exit(EXIT_FAILURE); default: - vshError(ctl, _("unsupported option '-%c'. See --help."), arg); + vshError(ctl, _("unknown option")); exit(EXIT_FAILURE); } }