* tools/virsh.c (vshParseArgv): Use NULL instead of 0 for pointer, and symbolic names for has_arg. Give --version an optional arg. (vshUsage): Document this. * tools/virsh.pod: Likewise. --- Technically, this treats '--version=anything' as -v, so that only '--version=long' is -V; if you want, I can spin a V2 that requires that optarg be exactly NULL, "short", or "long", rather than letting anything go, but I didn't think it was worth it. tools/virsh.c | 31 +++++++++++++++++-------------- tools/virsh.pod | 4 ++-- 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/tools/virsh.c b/tools/virsh.c index 26d7f5a..5caa46e 100644 --- a/tools/virsh.c +++ b/tools/virsh.c @@ -11524,8 +11524,8 @@ vshUsage(void) " -q | --quiet quiet mode\n" " -t | --timing print timing information\n" " -l | --log <file> 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++) @@ -11670,15 +11670,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 @@ -11704,12 +11704,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 i/tools/virsh.pod w/tools/virsh.pod index 4f3f220..6bfae09 100644 --- i/tools/virsh.pod +++ w/tools/virsh.pod @@ -54,12 +54,12 @@ The B<virsh> program understands the following I<OPTIONS>. Ignore all other arguments, and behave as if the B<help> 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. -- 1.7.3.2 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list