block: Add '--version' option to qemu-img

This allows qemu-img to print out version information, without
needing to print the long help wall of text.

While there, perform some minor whitespace cleanup, and remove the
unused option_index variable in the call to getopt_long().

Reported-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Jeff Cody <jcody@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
Jeff Cody 2014-04-28 14:37:18 -04:00 committed by Kevin Wolf
parent f0e9736012
commit 5f6979cba9
1 changed files with 11 additions and 4 deletions

View File

@ -33,6 +33,9 @@
#include "block/qapi.h" #include "block/qapi.h"
#include <getopt.h> #include <getopt.h>
#define QEMU_IMG_VERSION "qemu-img version " QEMU_VERSION \
", Copyright (c) 2004-2008 Fabrice Bellard\n"
typedef struct img_cmd_t { typedef struct img_cmd_t {
const char *name; const char *name;
int (*handler)(int argc, char **argv); int (*handler)(int argc, char **argv);
@ -75,7 +78,7 @@ static void QEMU_NORETURN GCC_FMT_ATTR(1, 2) error_exit(const char *fmt, ...)
static void QEMU_NORETURN help(void) static void QEMU_NORETURN help(void)
{ {
const char *help_msg = const char *help_msg =
"qemu-img version " QEMU_VERSION ", Copyright (c) 2004-2008 Fabrice Bellard\n" QEMU_IMG_VERSION
"usage: qemu-img command [command options]\n" "usage: qemu-img command [command options]\n"
"QEMU disk image utility\n" "QEMU disk image utility\n"
"\n" "\n"
@ -2790,9 +2793,9 @@ int main(int argc, char **argv)
const img_cmd_t *cmd; const img_cmd_t *cmd;
const char *cmdname; const char *cmdname;
int c; int c;
int option_index = 0;
static const struct option long_options[] = { static const struct option long_options[] = {
{"help", no_argument, 0, 'h'}, {"help", no_argument, 0, 'h'},
{"version", no_argument, 0, 'v'},
{0, 0, 0, 0} {0, 0, 0, 0}
}; };
@ -2811,17 +2814,21 @@ int main(int argc, char **argv)
cmdname = argv[1]; cmdname = argv[1];
/* find the command */ /* find the command */
for(cmd = img_cmds; cmd->name != NULL; cmd++) { for (cmd = img_cmds; cmd->name != NULL; cmd++) {
if (!strcmp(cmdname, cmd->name)) { if (!strcmp(cmdname, cmd->name)) {
return cmd->handler(argc - 1, argv + 1); return cmd->handler(argc - 1, argv + 1);
} }
} }
c = getopt_long(argc, argv, "h", long_options, &option_index); c = getopt_long(argc, argv, "h", long_options, NULL);
if (c == 'h') { if (c == 'h') {
help(); help();
} }
if (c == 'v') {
printf(QEMU_IMG_VERSION);
return 0;
}
/* not found */ /* not found */
error_exit("Command not found: %s", cmdname); error_exit("Command not found: %s", cmdname);