[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 08/13] QemuOpts: Propagate errors through opts_parse
From: |
Markus Armbruster |
Subject: |
[Qemu-devel] [PATCH 08/13] QemuOpts: Propagate errors through opts_parse() |
Date: |
Mon, 16 Feb 2015 15:44:20 +0100 |
Since I'm touching qemu_opts_parse() anyway, write a function comment
for it.
Signed-off-by: Markus Armbruster <address@hidden>
---
util/qemu-option.c | 29 ++++++++++++++++++++---------
1 file changed, 20 insertions(+), 9 deletions(-)
diff --git a/util/qemu-option.c b/util/qemu-option.c
index 8a0f69e..95f242e 100644
--- a/util/qemu-option.c
+++ b/util/qemu-option.c
@@ -813,7 +813,7 @@ int qemu_opts_do_parse(QemuOpts *opts, const char *params,
const char *firstname
}
static QemuOpts *opts_parse(QemuOptsList *list, const char *params,
- int permit_abbrev, bool defaults)
+ int permit_abbrev, bool defaults, Error **errp)
{
const char *firstname;
char value[1024], *id = NULL;
@@ -842,17 +842,13 @@ static QemuOpts *opts_parse(QemuOptsList *list, const
char *params,
assert(!defaults || list->merge_lists);
opts = qemu_opts_create(list, id, !defaults, &local_err);
if (opts == NULL) {
- if (local_err) {
- qerror_report_err(local_err);
- error_free(local_err);
- }
+ error_propagate(errp, local_err);
return NULL;
}
opts_do_parse(opts, params, firstname, defaults, &local_err);
if (local_err) {
- qerror_report_err(local_err);
- error_free(local_err);
+ error_propagate(errp, local_err);
qemu_opts_del(opts);
return NULL;
}
@@ -860,10 +856,25 @@ static QemuOpts *opts_parse(QemuOptsList *list, const
char *params,
return opts;
}
+/**
+ * Create a QemuOpts in @list and with options parsed from @params.
+ * If @permit_abbrev, the first key=value in @params may omit key=,
+ * and is treated as if key was @list->implied_opt_name.
+ * Report errors with qerror_report_err().
+ * Return the new QemuOpts on success, null pointer on error.
+ */
QemuOpts *qemu_opts_parse(QemuOptsList *list, const char *params,
int permit_abbrev)
{
- return opts_parse(list, params, permit_abbrev, false);
+ Error *err = NULL;
+ QemuOpts *opts;
+
+ opts = opts_parse(list, params, permit_abbrev, false, &err);
+ if (!opts) {
+ qerror_report_err(err);
+ error_free(err);
+ }
+ return opts;
}
void qemu_opts_set_defaults(QemuOptsList *list, const char *params,
@@ -871,7 +882,7 @@ void qemu_opts_set_defaults(QemuOptsList *list, const char
*params,
{
QemuOpts *opts;
- opts = opts_parse(list, params, permit_abbrev, true);
+ opts = opts_parse(list, params, permit_abbrev, true, NULL);
assert(opts);
}
--
1.9.3
- Re: [Qemu-devel] [PATCH 13/13] qtest: Use qemu_opt_set() instead of qemu_opts_parse(), (continued)
- [Qemu-devel] [PATCH 09/13] qemu-img: Suppress unhelpful extra errors in convert, amend, Markus Armbruster, 2015/02/16
- [Qemu-devel] [PATCH 01/13] QemuOpts: Convert qemu_opt_set_bool() to Error, fix its use, Markus Armbruster, 2015/02/16
- [Qemu-devel] [PATCH 11/13] qemu-sockets: Simplify setting numeric and boolean options, Markus Armbruster, 2015/02/16
- [Qemu-devel] [PATCH 02/13] QemuOpts: Convert qemu_opt_set_number() to Error, fix its use, Markus Armbruster, 2015/02/16
- [Qemu-devel] [PATCH 08/13] QemuOpts: Propagate errors through opts_parse(),
Markus Armbruster <=
- [Qemu-devel] [PATCH 12/13] pc: Use qemu_opt_set() instead of qemu_opts_parse(), Markus Armbruster, 2015/02/16
- [Qemu-devel] [PATCH 05/13] block: Suppress unhelpful extra errors in bdrv_img_create(), Markus Armbruster, 2015/02/16
- [Qemu-devel] [PATCH 07/13] QemuOpts: Propagate errors through opts_do_parse(), Markus Armbruster, 2015/02/16
- [Qemu-devel] [PATCH 06/13] QemuOpts: Drop qemu_opt_set(), rename qemu_opt_set_err(), fix use, Markus Armbruster, 2015/02/16