QemuOpts: Drop qemu_opt_foreach() parameter abort_on_failure
When the argument is non-zero, qemu_opt_foreach() stops on callback returning non-zero, and returns that value. When the argument is zero, it doesn't stop, and returns the callback's value from the last iteration. The two callers that pass zero could just as well pass one: * qemu_spice_init()'s callback add_channel() either returns zero or exit()s. * config_write_opts()'s callback config_write_opt() always returns zero. Drop the parameter, and always stop. Signed-off-by: Markus Armbruster <armbru@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com>
This commit is contained in:
parent
8809cfc38e
commit
1640b200d5
@ -101,8 +101,7 @@ void qemu_opt_set_bool(QemuOpts *opts, const char *name, bool val,
|
|||||||
void qemu_opt_set_number(QemuOpts *opts, const char *name, int64_t val,
|
void qemu_opt_set_number(QemuOpts *opts, const char *name, int64_t val,
|
||||||
Error **errp);
|
Error **errp);
|
||||||
typedef int (*qemu_opt_loopfunc)(const char *name, const char *value, void *opaque);
|
typedef int (*qemu_opt_loopfunc)(const char *name, const char *value, void *opaque);
|
||||||
int qemu_opt_foreach(QemuOpts *opts, qemu_opt_loopfunc func, void *opaque,
|
int qemu_opt_foreach(QemuOpts *opts, qemu_opt_loopfunc func, void *opaque);
|
||||||
int abort_on_failure);
|
|
||||||
|
|
||||||
QemuOpts *qemu_opts_find(QemuOptsList *list, const char *id);
|
QemuOpts *qemu_opts_find(QemuOptsList *list, const char *id);
|
||||||
QemuOpts *qemu_opts_create(QemuOptsList *list, const char *id,
|
QemuOpts *qemu_opts_create(QemuOptsList *list, const char *id,
|
||||||
|
@ -189,7 +189,7 @@ static CharDriverState *net_vhost_parse_chardev(const NetdevVhostUserOptions *op
|
|||||||
|
|
||||||
/* inspect chardev opts */
|
/* inspect chardev opts */
|
||||||
memset(&props, 0, sizeof(props));
|
memset(&props, 0, sizeof(props));
|
||||||
if (qemu_opt_foreach(chr->opts, net_vhost_chardev_opts, &props, true) != 0) {
|
if (qemu_opt_foreach(chr->opts, net_vhost_chardev_opts, &props)) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -564,7 +564,7 @@ DeviceState *qdev_device_add(QemuOpts *opts)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* set properties */
|
/* set properties */
|
||||||
if (qemu_opt_foreach(opts, set_property, dev, 1) != 0) {
|
if (qemu_opt_foreach(opts, set_property, dev)) {
|
||||||
object_unparent(OBJECT(dev));
|
object_unparent(OBJECT(dev));
|
||||||
object_unref(OBJECT(dev));
|
object_unref(OBJECT(dev));
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -782,7 +782,7 @@ void qemu_spice_init(void)
|
|||||||
spice_server_set_playback_compression
|
spice_server_set_playback_compression
|
||||||
(spice_server, qemu_opt_get_bool(opts, "playback-compression", 1));
|
(spice_server, qemu_opt_get_bool(opts, "playback-compression", 1));
|
||||||
|
|
||||||
qemu_opt_foreach(opts, add_channel, &tls_port, 0);
|
qemu_opt_foreach(opts, add_channel, &tls_port);
|
||||||
|
|
||||||
spice_server_set_name(spice_server, qemu_name);
|
spice_server_set_name(spice_server, qemu_name);
|
||||||
spice_server_set_uuid(spice_server, qemu_uuid);
|
spice_server_set_uuid(spice_server, qemu_uuid);
|
||||||
|
@ -353,7 +353,7 @@ static int config_write_opts(void *opaque, QemuOpts *opts, Error **errp)
|
|||||||
} else {
|
} else {
|
||||||
fprintf(data->fp, "[%s]\n", data->list->name);
|
fprintf(data->fp, "[%s]\n", data->list->name);
|
||||||
}
|
}
|
||||||
qemu_opt_foreach(opts, config_write_opt, data, 0);
|
qemu_opt_foreach(opts, config_write_opt, data);
|
||||||
fprintf(data->fp, "\n");
|
fprintf(data->fp, "\n");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -596,18 +596,23 @@ void qemu_opt_set_number(QemuOpts *opts, const char *name, int64_t val,
|
|||||||
QTAILQ_INSERT_TAIL(&opts->head, opt, next);
|
QTAILQ_INSERT_TAIL(&opts->head, opt, next);
|
||||||
}
|
}
|
||||||
|
|
||||||
int qemu_opt_foreach(QemuOpts *opts, qemu_opt_loopfunc func, void *opaque,
|
/**
|
||||||
int abort_on_failure)
|
* For each member of @opts, call @func(name, value, @opaque).
|
||||||
|
* When @func() returns non-zero, break the loop and return that value.
|
||||||
|
* Return zero when the loop completes.
|
||||||
|
*/
|
||||||
|
int qemu_opt_foreach(QemuOpts *opts, qemu_opt_loopfunc func, void *opaque)
|
||||||
{
|
{
|
||||||
QemuOpt *opt;
|
QemuOpt *opt;
|
||||||
int rc = 0;
|
int rc;
|
||||||
|
|
||||||
QTAILQ_FOREACH(opt, &opts->head, next) {
|
QTAILQ_FOREACH(opt, &opts->head, next) {
|
||||||
rc = func(opt->name, opt->str, opaque);
|
rc = func(opt->name, opt->str, opaque);
|
||||||
if (abort_on_failure && rc != 0)
|
if (rc) {
|
||||||
break;
|
return rc;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return rc;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
QemuOpts *qemu_opts_find(QemuOptsList *list, const char *id)
|
QemuOpts *qemu_opts_find(QemuOptsList *list, const char *id)
|
||||||
|
4
vl.c
4
vl.c
@ -4070,8 +4070,8 @@ int main(int argc, char **argv, char **envp)
|
|||||||
}
|
}
|
||||||
|
|
||||||
machine_opts = qemu_get_machine_opts();
|
machine_opts = qemu_get_machine_opts();
|
||||||
if (qemu_opt_foreach(machine_opts, machine_set_property, current_machine,
|
if (qemu_opt_foreach(machine_opts, machine_set_property,
|
||||||
1) < 0) {
|
current_machine)) {
|
||||||
object_unref(OBJECT(current_machine));
|
object_unref(OBJECT(current_machine));
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user