mirror of
https://github.com/qemu/qemu.git
synced 2024-11-24 19:33:39 +08:00
QemuOpts: Convert qemu_opts_set() to Error, fix its use
Return the Error object instead of reporting it with qerror_report_err(). Change callers that assume the function can't fail to pass &error_abort, so that should the assumption ever break, it'll break noisily. Turns out all callers outside its unit test assume that. We could drop the Error ** argument, but that would make the interface less regular, so don't. Signed-off-by: Markus Armbruster <armbru@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com>
This commit is contained in:
parent
39101f2511
commit
79087c782e
@ -110,8 +110,8 @@ QemuOpts *qemu_opts_create(QemuOptsList *list, const char *id,
|
||||
int fail_if_exists, Error **errp);
|
||||
void qemu_opts_reset(QemuOptsList *list);
|
||||
void qemu_opts_loc_restore(QemuOpts *opts);
|
||||
int qemu_opts_set(QemuOptsList *list, const char *id,
|
||||
const char *name, const char *value);
|
||||
void qemu_opts_set(QemuOptsList *list, const char *id,
|
||||
const char *name, const char *value, Error **errp);
|
||||
const char *qemu_opts_id(QemuOpts *opts);
|
||||
void qemu_opts_set_id(QemuOpts *opts, char *id);
|
||||
void qemu_opts_del(QemuOpts *opts);
|
||||
|
@ -1296,9 +1296,9 @@ int net_init_clients(void)
|
||||
|
||||
if (default_net) {
|
||||
/* if no clients, we use a default config */
|
||||
qemu_opts_set(net, NULL, "type", "nic");
|
||||
qemu_opts_set(net, NULL, "type", "nic", &error_abort);
|
||||
#ifdef CONFIG_SLIRP
|
||||
qemu_opts_set(net, NULL, "type", "user");
|
||||
qemu_opts_set(net, NULL, "type", "user", &error_abort);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -388,9 +388,9 @@ static void test_qemu_opts_reset(void)
|
||||
|
||||
static void test_qemu_opts_set(void)
|
||||
{
|
||||
Error *err = NULL;
|
||||
QemuOptsList *list;
|
||||
QemuOpts *opts;
|
||||
int ret;
|
||||
const char *opt;
|
||||
|
||||
list = qemu_find_opts("opts_list_01");
|
||||
@ -403,8 +403,8 @@ static void test_qemu_opts_set(void)
|
||||
g_assert(opts == NULL);
|
||||
|
||||
/* implicitly create opts and set str3 value */
|
||||
ret = qemu_opts_set(list, NULL, "str3", "value");
|
||||
g_assert(ret == 0);
|
||||
qemu_opts_set(list, NULL, "str3", "value", &err);
|
||||
g_assert(!err);
|
||||
g_assert(!QTAILQ_EMPTY(&list->head));
|
||||
|
||||
/* get the just created opts */
|
||||
|
@ -690,19 +690,18 @@ void qemu_opts_loc_restore(QemuOpts *opts)
|
||||
loc_restore(&opts->loc);
|
||||
}
|
||||
|
||||
int qemu_opts_set(QemuOptsList *list, const char *id,
|
||||
const char *name, const char *value)
|
||||
void qemu_opts_set(QemuOptsList *list, const char *id,
|
||||
const char *name, const char *value, Error **errp)
|
||||
{
|
||||
QemuOpts *opts;
|
||||
Error *local_err = NULL;
|
||||
|
||||
opts = qemu_opts_create(list, id, 1, &local_err);
|
||||
if (local_err) {
|
||||
qerror_report_err(local_err);
|
||||
error_free(local_err);
|
||||
return -1;
|
||||
error_propagate(errp, local_err);
|
||||
return;
|
||||
}
|
||||
return qemu_opt_set(opts, name, value);
|
||||
qemu_opt_set_err(opts, name, value, errp);
|
||||
}
|
||||
|
||||
const char *qemu_opts_id(QemuOpts *opts)
|
||||
|
15
vl.c
15
vl.c
@ -3023,16 +3023,20 @@ int main(int argc, char **argv, char **envp)
|
||||
}
|
||||
break;
|
||||
case QEMU_OPTION_kernel:
|
||||
qemu_opts_set(qemu_find_opts("machine"), 0, "kernel", optarg);
|
||||
qemu_opts_set(qemu_find_opts("machine"), 0, "kernel", optarg,
|
||||
&error_abort);
|
||||
break;
|
||||
case QEMU_OPTION_initrd:
|
||||
qemu_opts_set(qemu_find_opts("machine"), 0, "initrd", optarg);
|
||||
qemu_opts_set(qemu_find_opts("machine"), 0, "initrd", optarg,
|
||||
&error_abort);
|
||||
break;
|
||||
case QEMU_OPTION_append:
|
||||
qemu_opts_set(qemu_find_opts("machine"), 0, "append", optarg);
|
||||
qemu_opts_set(qemu_find_opts("machine"), 0, "append", optarg,
|
||||
&error_abort);
|
||||
break;
|
||||
case QEMU_OPTION_dtb:
|
||||
qemu_opts_set(qemu_find_opts("machine"), 0, "dtb", optarg);
|
||||
qemu_opts_set(qemu_find_opts("machine"), 0, "dtb", optarg,
|
||||
&error_abort);
|
||||
break;
|
||||
case QEMU_OPTION_cdrom:
|
||||
drive_add(IF_DEFAULT, 2, optarg, CDROM_OPTS);
|
||||
@ -3136,7 +3140,8 @@ int main(int argc, char **argv, char **envp)
|
||||
}
|
||||
break;
|
||||
case QEMU_OPTION_bios:
|
||||
qemu_opts_set(qemu_find_opts("machine"), 0, "firmware", optarg);
|
||||
qemu_opts_set(qemu_find_opts("machine"), 0, "firmware", optarg,
|
||||
&error_abort);
|
||||
break;
|
||||
case QEMU_OPTION_singlestep:
|
||||
singlestep = 1;
|
||||
|
Loading…
Reference in New Issue
Block a user