* 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