diff options
author | Luiz Capitulino <lcapitulino@redhat.com> | 2012-07-27 14:09:29 -0300 |
---|---|---|
committer | Luiz Capitulino <lcapitulino@redhat.com> | 2012-08-13 13:21:21 -0300 |
commit | 13f59ae8157e8ec238fa8aefe5309909a1eeb7e2 (patch) | |
tree | a60ca832661ef024c876a5315bfa1a0774032ef8 /qerror.c | |
parent | 85465051e0e8a79c3c1df3187c2acaacb10d6232 (diff) |
error, qerror: add ErrorClass argument to error functions
The new argument is added to functions qerror_report() and error_set().
It's stored in Error and QError. qerror_report_err() is also updated to
take care of it.
The QERR_ macros are changed to contain a place holder value for the
new argument, so that the value is used on all current calls to
qerror_report() and error_set() (and also to initialize qerror_table[]).
Next commit will update the QERR_ macros with a proper ErrorClass
value.
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Diffstat (limited to 'qerror.c')
-rw-r--r-- | qerror.c | 10 |
1 files changed, 7 insertions, 3 deletions
@@ -386,13 +386,15 @@ static QDict *error_obj_from_fmt_no_fail(const char *fmt, va_list *va) * * Return strong reference. */ -static QError *qerror_from_info(const char *fmt, va_list *va) +static QError *qerror_from_info(ErrorClass err_class, const char *fmt, + va_list *va) { QError *qerr; qerr = qerror_new(); loc_save(&qerr->loc); + qerr->err_class = err_class; qerr->error = error_obj_from_fmt_no_fail(fmt, va); qerr->err_msg = qerror_format(fmt, qerr->error); @@ -518,13 +520,13 @@ static void qerror_print(QError *qerror) QDECREF(qstring); } -void qerror_report(const char *fmt, ...) +void qerror_report(ErrorClass eclass, const char *fmt, ...) { va_list va; QError *qerror; va_start(va, fmt); - qerror = qerror_from_info(fmt, &va); + qerror = qerror_from_info(eclass, fmt, &va); va_end(va); if (monitor_cur_is_qmp()) { @@ -540,6 +542,7 @@ struct Error { QDict *obj; char *msg; + ErrorClass err_class; }; void qerror_report_err(Error *err) @@ -551,6 +554,7 @@ void qerror_report_err(Error *err) QINCREF(err->obj); qerr->error = err->obj; qerr->err_msg = g_strdup(err->msg); + qerr->err_class = err->err_class; if (monitor_cur_is_qmp()) { monitor_set_error(cur_mon, qerr); |