mirror of https://github.com/xemu-project/xemu.git
qemu-img: move common options parsing before commands processing
This is necessary to enable creation of common qemu-img options which will be specified before command. The patch also enables '-V' alias to '--version' (exactly like in other block utilities) and documents this change. Signed-off-by: Denis V. Lunev <den@openvz.org> Reviewed-by: Eric Blake <eblake@redhat.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Message-id: 1466174654-30130-7-git-send-email-den@openvz.org CC: Paolo Bonzini <pbonzini@redhat.com> CC: Kevin Wolf <kwolf@redhat.com> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
parent
39ca463e81
commit
10985131e3
41
qemu-img.c
41
qemu-img.c
|
@ -91,9 +91,12 @@ static void QEMU_NORETURN help(void)
|
|||
{
|
||||
const char *help_msg =
|
||||
QEMU_IMG_VERSION
|
||||
"usage: qemu-img command [command options]\n"
|
||||
"usage: qemu-img [standard options] command [command options]\n"
|
||||
"QEMU disk image utility\n"
|
||||
"\n"
|
||||
" '-h', '--help' display this help and exit\n"
|
||||
" '-V', '--version' output version information and exit\n"
|
||||
"\n"
|
||||
"Command syntax:\n"
|
||||
#define DEF(option, callback, arg_string) \
|
||||
" " arg_string "\n"
|
||||
|
@ -3806,7 +3809,7 @@ int main(int argc, char **argv)
|
|||
int c;
|
||||
static const struct option long_options[] = {
|
||||
{"help", no_argument, 0, 'h'},
|
||||
{"version", no_argument, 0, 'v'},
|
||||
{"version", no_argument, 0, 'V'},
|
||||
{0, 0, 0, 0}
|
||||
};
|
||||
|
||||
|
@ -3829,28 +3832,38 @@ int main(int argc, char **argv)
|
|||
if (argc < 2) {
|
||||
error_exit("Not enough arguments");
|
||||
}
|
||||
cmdname = argv[1];
|
||||
|
||||
qemu_add_opts(&qemu_object_opts);
|
||||
qemu_add_opts(&qemu_source_opts);
|
||||
|
||||
while ((c = getopt_long(argc, argv, "+hV", long_options, NULL)) != -1) {
|
||||
switch (c) {
|
||||
case 'h':
|
||||
help();
|
||||
return 0;
|
||||
case 'V':
|
||||
printf(QEMU_IMG_VERSION);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
cmdname = argv[optind];
|
||||
|
||||
/* reset getopt_long scanning */
|
||||
argc -= optind;
|
||||
if (argc < 1) {
|
||||
return 0;
|
||||
}
|
||||
argv += optind;
|
||||
optind = 1;
|
||||
|
||||
/* find the command */
|
||||
for (cmd = img_cmds; cmd->name != NULL; cmd++) {
|
||||
if (!strcmp(cmdname, cmd->name)) {
|
||||
return cmd->handler(argc - 1, argv + 1);
|
||||
return cmd->handler(argc, argv);
|
||||
}
|
||||
}
|
||||
|
||||
c = getopt_long(argc, argv, "h", long_options, NULL);
|
||||
|
||||
if (c == 'h') {
|
||||
help();
|
||||
}
|
||||
if (c == 'v') {
|
||||
printf(QEMU_IMG_VERSION);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* not found */
|
||||
error_exit("Command not found: %s", cmdname);
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
@example
|
||||
@c man begin SYNOPSIS
|
||||
@command{qemu-img} @var{command} [@var{command} @var{options}]
|
||||
@command{qemu-img} [@var{standard} @var{options}] @var{command} [@var{command} @var{options}]
|
||||
@c man end
|
||||
@end example
|
||||
|
||||
|
@ -16,6 +16,14 @@ inconsistent state.
|
|||
|
||||
@c man begin OPTIONS
|
||||
|
||||
Standard options:
|
||||
@table @option
|
||||
@item -h, --help
|
||||
Display this help and exit
|
||||
@item -V, --version
|
||||
Display version information and exit
|
||||
@end table
|
||||
|
||||
The following commands are supported:
|
||||
|
||||
@include qemu-img-cmds.texi
|
||||
|
|
Loading…
Reference in New Issue