[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 03/13] QemuOpts: Convert qemu_opts_set() to Error, fi
From: |
Markus Armbruster |
Subject: |
[Qemu-devel] [PULL 03/13] QemuOpts: Convert qemu_opts_set() to Error, fix its use |
Date: |
Thu, 26 Feb 2015 15:07:18 +0100 |
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 <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
---
include/qemu/option.h | 4 ++--
net/net.c | 4 ++--
tests/test-qemu-opts.c | 6 +++---
util/qemu-option.c | 11 +++++------
vl.c | 15 ++++++++++-----
5 files changed, 22 insertions(+), 18 deletions(-)
diff --git a/include/qemu/option.h b/include/qemu/option.h
index 7422cc2..7d6addc 100644
--- a/include/qemu/option.h
+++ b/include/qemu/option.h
@@ -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);
diff --git a/net/net.c b/net/net.c
index 5146361..2af07e6 100644
--- a/net/net.c
+++ b/net/net.c
@@ -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
}
diff --git a/tests/test-qemu-opts.c b/tests/test-qemu-opts.c
index 3fea96a..11cd1bd 100644
--- a/tests/test-qemu-opts.c
+++ b/tests/test-qemu-opts.c
@@ -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 */
diff --git a/util/qemu-option.c b/util/qemu-option.c
index c873b6c..56711ca 100644
--- a/util/qemu-option.c
+++ b/util/qemu-option.c
@@ -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)
diff --git a/vl.c b/vl.c
index 8ea8b08..80e2be0 100644
--- a/vl.c
+++ b/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;
--
1.9.3
- [Qemu-devel] [PULL 04/13] qemu-img: Suppress unhelpful extra errors in convert, resize, (continued)
- [Qemu-devel] [PULL 04/13] qemu-img: Suppress unhelpful extra errors in convert, resize, Markus Armbruster, 2015/02/26
- [Qemu-devel] [PULL 10/13] block: Simplify setting numeric options, Markus Armbruster, 2015/02/26
- [Qemu-devel] [PULL 07/13] QemuOpts: Propagate errors through opts_do_parse(), Markus Armbruster, 2015/02/26
- [Qemu-devel] [PULL 08/13] QemuOpts: Propagate errors through opts_parse(), Markus Armbruster, 2015/02/26
- [Qemu-devel] [PULL 11/13] qemu-sockets: Simplify setting numeric and boolean options, Markus Armbruster, 2015/02/26
- [Qemu-devel] [PULL 06/13] QemuOpts: Drop qemu_opt_set(), rename qemu_opt_set_err(), fix use, Markus Armbruster, 2015/02/26
- [Qemu-devel] [PULL 05/13] block: Suppress unhelpful extra errors in bdrv_img_create(), Markus Armbruster, 2015/02/26
- [Qemu-devel] [PULL 13/13] qtest: Use qemu_opt_set() instead of qemu_opts_parse(), Markus Armbruster, 2015/02/26
- [Qemu-devel] [PULL 12/13] pc: Use qemu_opt_set() instead of qemu_opts_parse(), Markus Armbruster, 2015/02/26
- [Qemu-devel] [PULL 09/13] qemu-img: Suppress unhelpful extra errors in convert, amend, Markus Armbruster, 2015/02/26
- [Qemu-devel] [PULL 03/13] QemuOpts: Convert qemu_opts_set() to Error, fix its use,
Markus Armbruster <=