Skip to content

Commit

Permalink
qemu-img convert: Support multiple -o options
Browse files Browse the repository at this point in the history
Instead of ignoring all option values but the last one, multiple -o
options now have the same meaning as having a single option with all
settings in the order of their respective -o options.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Reviewed-by: Jeff Cody <jcody@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
  • Loading branch information
kevmw committed Feb 21, 2014
1 parent 77386bf commit 2dc8328
Showing 1 changed file with 25 additions and 9 deletions.
34 changes: 25 additions & 9 deletions qemu-img.c
Expand Up @@ -1164,6 +1164,9 @@ static int img_convert(int argc, char **argv)
Error *local_err = NULL;
QemuOpts *sn_opts = NULL;

/* Initialize before goto out */
qemu_progress_init(progress, 1.0);

fmt = NULL;
out_fmt = "raw";
cache = "unsafe";
Expand Down Expand Up @@ -1195,13 +1198,26 @@ static int img_convert(int argc, char **argv)
case 'e':
error_report("option -e is deprecated, please use \'-o "
"encryption\' instead!");
return 1;
ret = -1;
goto out;
case '6':
error_report("option -6 is deprecated, please use \'-o "
"compat6\' instead!");
return 1;
ret = -1;
goto out;
case 'o':
options = optarg;
if (!is_valid_option_list(optarg)) {
error_report("Invalid option list: %s", optarg);
ret = -1;
goto out;
}
if (!options) {
options = g_strdup(optarg);
} else {
char *old_options = options;
options = g_strdup_printf("%s,%s", options, optarg);
g_free(old_options);
}
break;
case 's':
snapshot_name = optarg;
Expand All @@ -1212,7 +1228,8 @@ static int img_convert(int argc, char **argv)
if (!sn_opts) {
error_report("Failed in parsing snapshot param '%s'",
optarg);
return 1;
ret = -1;
goto out;
}
} else {
snapshot_name = optarg;
Expand All @@ -1225,7 +1242,8 @@ static int img_convert(int argc, char **argv)
sval = strtosz_suffix(optarg, &end, STRTOSZ_DEFSUFFIX_B);
if (sval < 0 || *end) {
error_report("Invalid minimum zero buffer size for sparse output specified");
return 1;
ret = -1;
goto out;
}

min_sparse = sval / BDRV_SECTOR_SIZE;
Expand Down Expand Up @@ -1257,10 +1275,7 @@ static int img_convert(int argc, char **argv)

out_filename = argv[argc - 1];

/* Initialize before goto out */
qemu_progress_init(progress, 1.0);

if (options && is_help_option(options)) {
if (options && has_help_option(options)) {
ret = print_block_option_help(out_filename, out_fmt);
goto out;
}
Expand Down Expand Up @@ -1653,6 +1668,7 @@ static int img_convert(int argc, char **argv)
free_option_parameters(create_options);
free_option_parameters(param);
qemu_vfree(buf);
g_free(options);
if (sn_opts) {
qemu_opts_del(sn_opts);
}
Expand Down

0 comments on commit 2dc8328

Please sign in to comment.