mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-07-27 20:33:54 -06:00
error, qerror: pass desc string to error calls
This commit changes all QERR_ macros to contain a human message (ie. the desc string found in qerr_table[]) instead of a json dictionary in string format. Before this commit, error_set() and qerror_report() would receive a json dictionary in string format and build a qobject from it. Now, both function receive a human message instead and the qobject is not built anymore. Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com> Reviewed-by: Markus Armbruster <armbru@redhat.com>
This commit is contained in:
parent
7795b166d9
commit
df1e608a01
4 changed files with 77 additions and 119 deletions
42
qerror.c
42
qerror.c
|
@ -342,45 +342,6 @@ static QError *qerror_new(void)
|
|||
return qerr;
|
||||
}
|
||||
|
||||
static QDict *error_obj_from_fmt_no_fail(const char *fmt, va_list *va)
|
||||
{
|
||||
QObject *obj;
|
||||
QDict *ret;
|
||||
|
||||
obj = qobject_from_jsonv(fmt, va);
|
||||
if (!obj) {
|
||||
fprintf(stderr, "invalid json in error dict '%s'\n", fmt);
|
||||
abort();
|
||||
}
|
||||
if (qobject_type(obj) != QTYPE_QDICT) {
|
||||
fprintf(stderr, "error is not a dict '%s'\n", fmt);
|
||||
abort();
|
||||
}
|
||||
|
||||
ret = qobject_to_qdict(obj);
|
||||
obj = qdict_get(ret, "class");
|
||||
if (!obj) {
|
||||
fprintf(stderr, "missing 'class' key in '%s'\n", fmt);
|
||||
abort();
|
||||
}
|
||||
if (qobject_type(obj) != QTYPE_QSTRING) {
|
||||
fprintf(stderr, "'class' key value should be a string in '%s'\n", fmt);
|
||||
abort();
|
||||
}
|
||||
|
||||
obj = qdict_get(ret, "data");
|
||||
if (!obj) {
|
||||
fprintf(stderr, "missing 'data' key in '%s'\n", fmt);
|
||||
abort();
|
||||
}
|
||||
if (qobject_type(obj) != QTYPE_QDICT) {
|
||||
fprintf(stderr, "'data' key value should be a dict in '%s'\n", fmt);
|
||||
abort();
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* qerror_from_info(): Create a new QError from error information
|
||||
*
|
||||
|
@ -394,9 +355,8 @@ static QError *qerror_from_info(ErrorClass err_class, const char *fmt,
|
|||
qerr = qerror_new();
|
||||
loc_save(&qerr->loc);
|
||||
|
||||
qerr->err_msg = g_strdup_vprintf(fmt, *va);
|
||||
qerr->err_class = err_class;
|
||||
qerr->error = error_obj_from_fmt_no_fail(fmt, va);
|
||||
qerr->err_msg = qerror_format(fmt, qerr->error);
|
||||
|
||||
return qerr;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue