[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 08/32] qemu-img: Factor out accumulate_options() helper
From: |
Markus Armbruster |
Subject: |
[PULL 08/32] qemu-img: Factor out accumulate_options() helper |
Date: |
Wed, 29 Apr 2020 09:20:24 +0200 |
Signed-off-by: Markus Armbruster <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Reviewed-by: Kevin Wolf <address@hidden>
Message-Id: <address@hidden>
---
qemu-img.c | 59 +++++++++++++++++++++---------------------------------
1 file changed, 23 insertions(+), 36 deletions(-)
diff --git a/qemu-img.c b/qemu-img.c
index 821cbf610e..d36b21b758 100644
--- a/qemu-img.c
+++ b/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)) {
--
2.21.1
- [PULL 05/32] qemu-option: Fix has_help_option()'s sloppy parsing, (continued)
- [PULL 05/32] qemu-option: Fix has_help_option()'s sloppy parsing, Markus Armbruster, 2020/04/29
- [PULL 09/32] qemu-img: Move is_valid_option_list() to qemu-img.c and rewrite, Markus Armbruster, 2020/04/29
- [PULL 03/32] qemu-options: Factor out get_opt_name_value() helper, Markus Armbruster, 2020/04/29
- [PULL 04/32] qemu-option: Fix sloppy recognition of "id=..." after ", , ", Markus Armbruster, 2020/04/29
- [PULL 06/32] test-qemu-opts: Simplify test_has_help_option() after bug fix, Markus Armbruster, 2020/04/29
- [PULL 20/32] io: Fix qio_channel_socket_close() error handling, Markus Armbruster, 2020/04/29
- [PULL 31/32] libqos: Give get_machine_allocator() internal linkage, Markus Armbruster, 2020/04/29
- [PULL 07/32] qemu-option: Avoid has_help_option() in qemu_opts_parse_noisily(), Markus Armbruster, 2020/04/29
- [PULL 19/32] xen/pt: Fix flawed conversion to realize(), Markus Armbruster, 2020/04/29
- [PULL 32/32] qemu-option: pass NULL rather than 0 to the id of qemu_opts_set(), Markus Armbruster, 2020/04/29
- [PULL 08/32] qemu-img: Factor out accumulate_options() helper,
Markus Armbruster <=
- [PULL 24/32] qga: Fix qmp_guest_suspend_{disk, ram}() error handling, Markus Armbruster, 2020/04/29
- [PULL 25/32] sam460ex: Suppress useless warning on -m 32 and -m 64, Markus Armbruster, 2020/04/29
- [PULL 27/32] bamboo, sam460ex: Tidy up error message for unsupported RAM size, Markus Armbruster, 2020/04/29
- [PULL 16/32] fdc: Fix fallback=auto error handling, Markus Armbruster, 2020/04/29
- [PULL 28/32] smbus: Fix spd_data_generate() for number of banks > 2, Markus Armbruster, 2020/04/29
- [PULL 11/32] cryptodev: Fix cryptodev_builtin_cleanup() error API violation, Markus Armbruster, 2020/04/29
- [PULL 01/32] various: Remove suspicious '\' character outside of #define in C code, Markus Armbruster, 2020/04/29
- [PULL 26/32] smbus: Fix spd_data_generate() error API violation, Markus Armbruster, 2020/04/29
- [PULL 17/32] bochs-display: Fix vgamem=SIZE error handling, Markus Armbruster, 2020/04/29
- [PULL 23/32] qga: Fix qmp_guest_get_memory_blocks() error handling, Markus Armbruster, 2020/04/29