QEMU use qemu_add_opts() and qemu_add_drive_opts() to add config options when initialization. Extract the same logic in both functions to a seperate function fill_config_groups() to reduce code redundency.
Signed-off-by: Wang, Lei <lei4.w...@intel.com> --- util/qemu-config.c | 39 ++++++++++++++++++++------------------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/util/qemu-config.c b/util/qemu-config.c index 433488aa56..3a1c85223a 100644 --- a/util/qemu-config.c +++ b/util/qemu-config.c @@ -282,36 +282,37 @@ QemuOptsList *qemu_find_opts_err(const char *group, Error **errp) return find_list(vm_config_groups, group, errp); } -void qemu_add_drive_opts(QemuOptsList *list) +static int fill_config_groups(QemuOptsList *groups[], int entries, + QemuOptsList *list) { - int entries, i; + int i; - entries = ARRAY_SIZE(drive_config_groups); entries--; /* keep list NULL terminated */ for (i = 0; i < entries; i++) { - if (drive_config_groups[i] == NULL) { - drive_config_groups[i] = list; - return; + if (groups[i] == NULL) { + groups[i] = list; + return 0; } } - fprintf(stderr, "ran out of space in drive_config_groups"); - abort(); + return -1; } -void qemu_add_opts(QemuOptsList *list) +void qemu_add_drive_opts(QemuOptsList *list) { - int entries, i; + if (fill_config_groups(drive_config_groups, ARRAY_SIZE(drive_config_groups), + list) < 0) { + fprintf(stderr, "ran out of space in drive_config_groups"); + abort(); + } +} - entries = ARRAY_SIZE(vm_config_groups); - entries--; /* keep list NULL terminated */ - for (i = 0; i < entries; i++) { - if (vm_config_groups[i] == NULL) { - vm_config_groups[i] = list; - return; - } +void qemu_add_opts(QemuOptsList *list) +{ + if (fill_config_groups(vm_config_groups, ARRAY_SIZE(vm_config_groups), + list) < 0) { + fprintf(stderr, "ran out of space in vm_config_groups"); + abort(); } - fprintf(stderr, "ran out of space in vm_config_groups"); - abort(); } /* Returns number of config groups on success, -errno on error */ -- 2.37.1