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:
parent
299528668c
commit
584d4064c6
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue