On 05/28/2015 06:21 AM, Markus Armbruster wrote: > Retain the function value for now, to permit selective conversion of > its callers. > > Signed-off-by: Markus Armbruster <arm...@redhat.com> > --- > block/blkdebug.c | 6 ++-- > hw/core/qdev-properties-system.c | 5 +-- > include/qemu/option.h | 4 +-- > include/ui/console.h | 2 +- > net/net.c | 9 ++--- > net/vhost-user.c | 4 +-- > numa.c | 5 +-- > tpm.c | 6 ++-- > ui/vnc.c | 2 +- > util/qemu-config.c | 4 +-- > util/qemu-option.c | 7 ++-- > vl.c | 72 > ++++++++++++++++++++++++---------------- > 12 files changed, 72 insertions(+), 54 deletions(-) >
> diff --git a/block/blkdebug.c b/block/blkdebug.c > index 58f5105..50ef1fc 100644 > --- a/block/blkdebug.c > +++ b/block/blkdebug.c > @@ -219,7 +219,7 @@ struct add_rule_data { > Error **errp; > }; > > -static int add_rule(QemuOpts *opts, void *opaque) > +static int add_rule(void *opaque, QemuOpts *opts, Error **errp) > +++ b/include/qemu/option.h > @@ -125,9 +125,9 @@ QemuOpts *qemu_opts_from_qdict(QemuOptsList *list, const > QDict *qdict, > QDict *qemu_opts_to_qdict(QemuOpts *opts, QDict *qdict); > void qemu_opts_absorb_qdict(QemuOpts *opts, QDict *qdict, Error **errp); > > -typedef int (*qemu_opts_loopfunc)(QemuOpts *opts, void *opaque); > +typedef int (*qemu_opts_loopfunc)(void *opaque, QemuOpts *opts, Error > **errp); Might be nice to justify in the commit message why swapping the arguments of the callback made sense. But doesn't affect code correctness, so: Reviewed-by: Eric Blake <ebl...@redhat.com> > +++ 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,7 +1063,7 @@ 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; > } Do you want to enforce that if errp is set, that rc is non-zero, to match your contract? Perhaps by assert(!*errp) at this point? But if the return value goes away later in the series in favor of only using errp, it may be a moot question. -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature