diff options
author | Peter Maydell <peter.maydell@linaro.org> | 2012-02-08 05:41:37 +0000 |
---|---|---|
committer | Andrzej Zaborowski <balrogg@gmail.com> | 2012-02-17 09:08:22 +0100 |
commit | da93318a9f0ff83e4a93e8755fa92291f9b8cc1b (patch) | |
tree | 2bb23fc889e4da2ccd7c327f45f0a1bd0e84617f | |
parent | a84fac1426acd56f6dff4f6023611c1aefe748de (diff) |
qemu-option: Add support for merged QemuOptsLists
Add support for option lists which are merged together, so that
"-listname foo=bar -listname bar=baz" is equivalent to "-listname
foo=bar,bar=baz" rather than generating two separate lists of options.
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Andrzej Zaborowski <andrew.zaborowski@intel.com>
-rw-r--r-- | qemu-option.c | 7 | ||||
-rw-r--r-- | qemu-option.h | 1 |
2 files changed, 7 insertions, 1 deletions
diff --git a/qemu-option.c b/qemu-option.c index 4626ccfe54..35cd609f75 100644 --- a/qemu-option.c +++ b/qemu-option.c @@ -741,13 +741,18 @@ QemuOpts *qemu_opts_create(QemuOptsList *list, const char *id, int fail_if_exist } opts = qemu_opts_find(list, id); if (opts != NULL) { - if (fail_if_exists) { + if (fail_if_exists && !list->merge_lists) { qerror_report(QERR_DUPLICATE_ID, id, list->name); return NULL; } else { return opts; } } + } else if (list->merge_lists) { + opts = qemu_opts_find(list, NULL); + if (opts) { + return opts; + } } opts = g_malloc0(sizeof(*opts)); if (id) { diff --git a/qemu-option.h b/qemu-option.h index e6f61e6e35..3ca00c3cec 100644 --- a/qemu-option.h +++ b/qemu-option.h @@ -100,6 +100,7 @@ typedef struct QemuOptDesc { struct QemuOptsList { const char *name; const char *implied_opt_name; + bool merge_lists; /* Merge multiple uses of option into a single list? */ QTAILQ_HEAD(, QemuOpts) head; QemuOptDesc desc[]; }; |