qemu-option: opt_set(): use error_set()

The functions qemu_opt_set() and opts_do_parse() both call opt_set(),
but their callers expect QError semantics. Thus, both functions call
qerro_report_err() to keep the expected semantics.

Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
Reviewed-By: Laszlo Ersek <lersek@redhat.com>
This commit is contained in:
Luiz Capitulino 2012-03-21 16:13:24 -03:00
parent 299528668c
commit 584d4064c6

View file

@ -612,8 +612,8 @@ static void qemu_opt_del(QemuOpt *opt)
g_free(opt); g_free(opt);
} }
static int opt_set(QemuOpts *opts, const char *name, const char *value, static void opt_set(QemuOpts *opts, const char *name, const char *value,
bool prepend) bool prepend, Error **errp)
{ {
QemuOpt *opt; QemuOpt *opt;
const QemuOptDesc *desc = opts->list->desc; const QemuOptDesc *desc = opts->list->desc;
@ -629,8 +629,8 @@ static int opt_set(QemuOpts *opts, const char *name, const char *value,
if (i == 0) { if (i == 0) {
/* empty list -> allow any */; /* empty list -> allow any */;
} else { } else {
qerror_report(QERR_INVALID_PARAMETER, name); error_set(errp, QERR_INVALID_PARAMETER, name);
return -1; return;
} }
} }
@ -650,18 +650,23 @@ static int opt_set(QemuOpts *opts, const char *name, const char *value,
} }
qemu_opt_parse(opt, &local_err); qemu_opt_parse(opt, &local_err);
if (error_is_set(&local_err)) { if (error_is_set(&local_err)) {
qerror_report_err(local_err); error_propagate(errp, local_err);
error_free(local_err);
qemu_opt_del(opt); qemu_opt_del(opt);
return -1;
} }
return 0;
} }
int qemu_opt_set(QemuOpts *opts, const char *name, const char *value) int qemu_opt_set(QemuOpts *opts, const char *name, const char *value)
{ {
return opt_set(opts, name, value, false); Error *local_err = NULL;
opt_set(opts, name, value, false, &local_err);
if (error_is_set(&local_err)) {
qerror_report_err(local_err);
error_free(local_err);
return -1;
}
return 0;
} }
int qemu_opt_set_bool(QemuOpts *opts, const char *name, bool val) int qemu_opt_set_bool(QemuOpts *opts, const char *name, bool val)
@ -847,6 +852,7 @@ static int opts_do_parse(QemuOpts *opts, const char *params,
{ {
char option[128], value[1024]; char option[128], value[1024];
const char *p,*pe,*pc; const char *p,*pe,*pc;
Error *local_err = NULL;
for (p = params; *p != '\0'; p++) { for (p = params; *p != '\0'; p++) {
pe = strchr(p, '='); pe = strchr(p, '=');
@ -878,7 +884,10 @@ static int opts_do_parse(QemuOpts *opts, const char *params,
} }
if (strcmp(option, "id") != 0) { if (strcmp(option, "id") != 0) {
/* store and parse */ /* store and parse */
if (opt_set(opts, option, value, prepend) == -1) { opt_set(opts, option, value, prepend, &local_err);
if (error_is_set(&local_err)) {
qerror_report_err(local_err);
error_free(local_err);
return -1; return -1;
} }
} }