qemu-img: Factor out accumulate_options() helper
Signed-off-by: Markus Armbruster <armbru@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Reviewed-by: Kevin Wolf <kwolf@redhat.com> Message-Id: <20200415074927.19897-8-armbru@redhat.com>
This commit is contained in:
parent
56a9efa199
commit
6d2b5cbafb
59
qemu-img.c
59
qemu-img.c
@ -223,6 +223,25 @@ static bool qemu_img_object_print_help(const char *type, QemuOpts *opts)
|
||||
return true;
|
||||
}
|
||||
|
||||
static int accumulate_options(char **options, char *optarg)
|
||||
{
|
||||
char *new_options;
|
||||
|
||||
if (!is_valid_option_list(optarg)) {
|
||||
error_report("Invalid option list: %s", optarg);
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (!*options) {
|
||||
*options = g_strdup(optarg);
|
||||
} else {
|
||||
new_options = g_strdup_printf("%s,%s", *options, optarg);
|
||||
g_free(*options);
|
||||
*options = new_options;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static QemuOptsList qemu_source_opts = {
|
||||
.name = "source",
|
||||
.implied_opt_name = "file",
|
||||
@ -482,17 +501,9 @@ static int img_create(int argc, char **argv)
|
||||
fmt = optarg;
|
||||
break;
|
||||
case 'o':
|
||||
if (!is_valid_option_list(optarg)) {
|
||||
error_report("Invalid option list: %s", optarg);
|
||||
if (accumulate_options(&options, optarg) < 0) {
|
||||
goto fail;
|
||||
}
|
||||
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 'q':
|
||||
quiet = true;
|
||||
@ -2127,17 +2138,9 @@ static int img_convert(int argc, char **argv)
|
||||
s.compressed = true;
|
||||
break;
|
||||
case 'o':
|
||||
if (!is_valid_option_list(optarg)) {
|
||||
error_report("Invalid option list: %s", optarg);
|
||||
if (accumulate_options(&options, optarg) < 0) {
|
||||
goto fail_getopt;
|
||||
}
|
||||
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 'l':
|
||||
if (strstart(optarg, SNAPSHOT_OPT_BASE, NULL)) {
|
||||
@ -3953,18 +3956,10 @@ static int img_amend(int argc, char **argv)
|
||||
help();
|
||||
break;
|
||||
case 'o':
|
||||
if (!is_valid_option_list(optarg)) {
|
||||
error_report("Invalid option list: %s", optarg);
|
||||
if (accumulate_options(&options, optarg) < 0) {
|
||||
ret = -1;
|
||||
goto out_no_progress;
|
||||
}
|
||||
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 'f':
|
||||
fmt = optarg;
|
||||
@ -4855,17 +4850,9 @@ static int img_measure(int argc, char **argv)
|
||||
out_fmt = optarg;
|
||||
break;
|
||||
case 'o':
|
||||
if (!is_valid_option_list(optarg)) {
|
||||
error_report("Invalid option list: %s", optarg);
|
||||
if (accumulate_options(&options, optarg) < 0) {
|
||||
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 'l':
|
||||
if (strstart(optarg, SNAPSHOT_OPT_BASE, NULL)) {
|
||||
|
Loading…
Reference in New Issue
Block a user