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>
diff --git a/qerror.c b/qerror.c
index 0bf8aec..dda1427 100644
--- a/qerror.c
+++ b/qerror.c
@@ -342,45 +342,6 @@
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 @@
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;
}