diff --git a/tools/virsh.c b/tools/virsh.c index 0c91f15d4a..cd20d34d9c 100644 --- a/tools/virsh.c +++ b/tools/virsh.c @@ -11523,8 +11523,8 @@ vshUsage(void) " -q | --quiet quiet mode\n" " -t | --timing print timing information\n" " -l | --log output logging to file\n" - " -v | --version program version\n\n" - " -V version and full options\n\n" + " -v | --version[=short] program version\n\n" + " -V | --version=long version and full options\n\n" " commands (non interactive mode):\n"), progname, progname); for (cmd = commands; cmd->name; cmd++) @@ -11669,15 +11669,15 @@ vshParseArgv(vshControl *ctl, int argc, char **argv) bool help = false; int arg; struct option opt[] = { - {"debug", 1, 0, 'd'}, - {"help", 0, 0, 'h'}, - {"quiet", 0, 0, 'q'}, - {"timing", 0, 0, 't'}, - {"version", 0, 0, 'v'}, - {"connect", 1, 0, 'c'}, - {"readonly", 0, 0, 'r'}, - {"log", 1, 0, 'l'}, - {0, 0, 0, 0} + {"debug", required_argument, NULL, 'd'}, + {"help", no_argument, NULL, 'h'}, + {"quiet", no_argument, NULL, 'q'}, + {"timing", no_argument, NULL, 't'}, + {"version", optional_argument, NULL, 'v'}, + {"connect", required_argument, NULL, 'c'}, + {"readonly", no_argument, NULL, 'r'}, + {"log", required_argument, NULL, 'l'}, + {NULL, 0, NULL, 0} }; /* Standard (non-command) options. The leading + ensures that no @@ -11703,12 +11703,15 @@ vshParseArgv(vshControl *ctl, int argc, char **argv) case 'c': ctl->name = vshStrdup(ctl, optarg); break; + case 'v': + if (STRNEQ_NULLABLE(optarg, "long")) { + puts(VERSION); + exit(EXIT_SUCCESS); + } + /* fall through */ case 'V': vshShowVersion(ctl); exit(EXIT_SUCCESS); - case 'v': - puts(VERSION); - exit(EXIT_SUCCESS); case 'r': ctl->readonly = TRUE; break; diff --git a/tools/virsh.pod b/tools/virsh.pod index 4f3f220f7c..1646a61436 100644 --- a/tools/virsh.pod +++ b/tools/virsh.pod @@ -54,12 +54,12 @@ The B program understands the following I. Ignore all other arguments, and behave as if the B command were given instead. -=item B<-v>, B<--version> +=item B<-v>, B<--version[=short]> Ignore all other arguments, and prints the version of the libvirt library virsh is coming from -=item B<-V> +=item B<-V>, B<--version=long> Ignore all other arguments, and prints the version of the libvirt library virsh is coming from and which options and driver are compiled in.