mirror of
https://git.proxmox.com/git/qemu
synced 2025-06-15 11:15:19 +00:00
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>
This commit is contained in:
parent
a84fac1426
commit
da93318a9f
@ -741,13 +741,18 @@ QemuOpts *qemu_opts_create(QemuOptsList *list, const char *id, int fail_if_exist
|
|||||||
}
|
}
|
||||||
opts = qemu_opts_find(list, id);
|
opts = qemu_opts_find(list, id);
|
||||||
if (opts != NULL) {
|
if (opts != NULL) {
|
||||||
if (fail_if_exists) {
|
if (fail_if_exists && !list->merge_lists) {
|
||||||
qerror_report(QERR_DUPLICATE_ID, id, list->name);
|
qerror_report(QERR_DUPLICATE_ID, id, list->name);
|
||||||
return NULL;
|
return NULL;
|
||||||
} else {
|
} else {
|
||||||
return opts;
|
return opts;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else if (list->merge_lists) {
|
||||||
|
opts = qemu_opts_find(list, NULL);
|
||||||
|
if (opts) {
|
||||||
|
return opts;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
opts = g_malloc0(sizeof(*opts));
|
opts = g_malloc0(sizeof(*opts));
|
||||||
if (id) {
|
if (id) {
|
||||||
|
@ -100,6 +100,7 @@ typedef struct QemuOptDesc {
|
|||||||
struct QemuOptsList {
|
struct QemuOptsList {
|
||||||
const char *name;
|
const char *name;
|
||||||
const char *implied_opt_name;
|
const char *implied_opt_name;
|
||||||
|
bool merge_lists; /* Merge multiple uses of option into a single list? */
|
||||||
QTAILQ_HEAD(, QemuOpts) head;
|
QTAILQ_HEAD(, QemuOpts) head;
|
||||||
QemuOptDesc desc[];
|
QemuOptDesc desc[];
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user