aboutsummaryrefslogtreecommitdiff
path: root/util
diff options
context:
space:
mode:
authorMarkus Armbruster <armbru@redhat.com>2015-03-13 13:35:14 +0100
committerMarkus Armbruster <armbru@redhat.com>2015-06-09 07:37:37 +0200
commit28d0de7a4fb721b06de72970bd163f5183c2188b (patch)
tree3ce566258a1d828e7b84eed69e8b24f5f1b07d3f /util
parenta4c7367f7dd9348f94dc4298571ed515b8160a27 (diff)
QemuOpts: Convert qemu_opts_foreach() to Error
Retain the function value for now, to permit selective conversion of its callers. Signed-off-by: Markus Armbruster <armbru@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Acked-by: Kevin Wolf <kwolf@redhat.com>
Diffstat (limited to 'util')
-rw-r--r--util/qemu-config.c4
-rw-r--r--util/qemu-option.c8
2 files changed, 7 insertions, 5 deletions
diff --git a/util/qemu-config.c b/util/qemu-config.c
index b38927a88d..a88461f6b7 100644
--- a/util/qemu-config.c
+++ b/util/qemu-config.c
@@ -343,7 +343,7 @@ static int config_write_opt(const char *name, const char *value, void *opaque)
return 0;
}
-static int config_write_opts(QemuOpts *opts, void *opaque)
+static int config_write_opts(void *opaque, QemuOpts *opts, Error **errp)
{
struct ConfigWriteData *data = opaque;
const char *id = qemu_opts_id(opts);
@@ -367,7 +367,7 @@ void qemu_config_write(FILE *fp)
fprintf(fp, "# qemu config file\n\n");
for (i = 0; lists[i] != NULL; i++) {
data.list = lists[i];
- qemu_opts_foreach(data.list, config_write_opts, &data);
+ qemu_opts_foreach(data.list, config_write_opts, &data, NULL);
}
}
diff --git a/util/qemu-option.c b/util/qemu-option.c
index 7672aae897..07b03e313a 100644
--- a/util/qemu-option.c
+++ b/util/qemu-option.c
@@ -1047,13 +1047,14 @@ void qemu_opts_validate(QemuOpts *opts, const QemuOptDesc *desc, Error **errp)
}
/**
- * For each member of @list, call @func(member, @opaque).
+ * For each member of @list, call @func(@opaque, member, @errp).
* Call it with the current location temporarily set to the member's.
+ * @func() may store an Error through @errp, but must return non-zero then.
* When @func() returns non-zero, break the loop and return that value.
* Return zero when the loop completes.
*/
int qemu_opts_foreach(QemuOptsList *list, qemu_opts_loopfunc func,
- void *opaque)
+ void *opaque, Error **errp)
{
Location loc;
QemuOpts *opts;
@@ -1062,10 +1063,11 @@ int qemu_opts_foreach(QemuOptsList *list, qemu_opts_loopfunc func,
loc_push_none(&loc);
QTAILQ_FOREACH(opts, &list->head, next) {
loc_restore(&opts->loc);
- rc = func(opts, opaque);
+ rc = func(opaque, opts, errp);
if (rc) {
return rc;
}
+ assert(!errp || !*errp);
}
loc_pop(&loc);
return 0;