diff options
author | Markus Armbruster <armbru@redhat.com> | 2015-03-13 13:35:14 +0100 |
---|---|---|
committer | Markus Armbruster <armbru@redhat.com> | 2015-06-09 07:37:37 +0200 |
commit | 28d0de7a4fb721b06de72970bd163f5183c2188b (patch) | |
tree | 3ce566258a1d828e7b84eed69e8b24f5f1b07d3f /util/qemu-option.c | |
parent | a4c7367f7dd9348f94dc4298571ed515b8160a27 (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/qemu-option.c')
-rw-r--r-- | util/qemu-option.c | 8 |
1 files changed, 5 insertions, 3 deletions
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; |