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;
|
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 = {
|
static QemuOptsList qemu_source_opts = {
|
||||||
.name = "source",
|
.name = "source",
|
||||||
.implied_opt_name = "file",
|
.implied_opt_name = "file",
|
||||||
@ -482,17 +501,9 @@ static int img_create(int argc, char **argv)
|
|||||||
fmt = optarg;
|
fmt = optarg;
|
||||||
break;
|
break;
|
||||||
case 'o':
|
case 'o':
|
||||||
if (!is_valid_option_list(optarg)) {
|
if (accumulate_options(&options, optarg) < 0) {
|
||||||
error_report("Invalid option list: %s", optarg);
|
|
||||||
goto fail;
|
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;
|
break;
|
||||||
case 'q':
|
case 'q':
|
||||||
quiet = true;
|
quiet = true;
|
||||||
@ -2127,17 +2138,9 @@ static int img_convert(int argc, char **argv)
|
|||||||
s.compressed = true;
|
s.compressed = true;
|
||||||
break;
|
break;
|
||||||
case 'o':
|
case 'o':
|
||||||
if (!is_valid_option_list(optarg)) {
|
if (accumulate_options(&options, optarg) < 0) {
|
||||||
error_report("Invalid option list: %s", optarg);
|
|
||||||
goto fail_getopt;
|
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;
|
break;
|
||||||
case 'l':
|
case 'l':
|
||||||
if (strstart(optarg, SNAPSHOT_OPT_BASE, NULL)) {
|
if (strstart(optarg, SNAPSHOT_OPT_BASE, NULL)) {
|
||||||
@ -3953,18 +3956,10 @@ static int img_amend(int argc, char **argv)
|
|||||||
help();
|
help();
|
||||||
break;
|
break;
|
||||||
case 'o':
|
case 'o':
|
||||||
if (!is_valid_option_list(optarg)) {
|
if (accumulate_options(&options, optarg) < 0) {
|
||||||
error_report("Invalid option list: %s", optarg);
|
|
||||||
ret = -1;
|
ret = -1;
|
||||||
goto out_no_progress;
|
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;
|
break;
|
||||||
case 'f':
|
case 'f':
|
||||||
fmt = optarg;
|
fmt = optarg;
|
||||||
@ -4855,17 +4850,9 @@ static int img_measure(int argc, char **argv)
|
|||||||
out_fmt = optarg;
|
out_fmt = optarg;
|
||||||
break;
|
break;
|
||||||
case 'o':
|
case 'o':
|
||||||
if (!is_valid_option_list(optarg)) {
|
if (accumulate_options(&options, optarg) < 0) {
|
||||||
error_report("Invalid option list: %s", optarg);
|
|
||||||
goto out;
|
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;
|
break;
|
||||||
case 'l':
|
case 'l':
|
||||||
if (strstart(optarg, SNAPSHOT_OPT_BASE, NULL)) {
|
if (strstart(optarg, SNAPSHOT_OPT_BASE, NULL)) {
|
||||||
|
Loading…
Reference in New Issue
Block a user