diff options
author | Anthony Liguori <aliguori@us.ibm.com> | 2011-10-10 08:21:46 -0500 |
---|---|---|
committer | Anthony Liguori <aliguori@us.ibm.com> | 2011-10-10 08:21:46 -0500 |
commit | ebffe2afceb1a17b5d134b5debf553955fe5ea1a (patch) | |
tree | 223ee0630a56a8d1410d5ad283996486ec434ab7 /qerror.c | |
parent | 057643f6c4751651ab640edb9b445cb3816edffc (diff) | |
parent | 5bc465e4b1b6f4582a400c0a7033a1c841744278 (diff) |
Merge remote-tracking branch 'qmp/queue/qmp' into staging
Diffstat (limited to 'qerror.c')
-rw-r--r-- | qerror.c | 33 |
1 files changed, 33 insertions, 0 deletions
@@ -482,6 +482,39 @@ void qerror_report_internal(const char *file, int linenr, const char *func, } } +/* Evil... */ +struct Error +{ + QDict *obj; + const char *fmt; + char *msg; +}; + +void qerror_report_err(Error *err) +{ + QError *qerr; + int i; + + qerr = qerror_new(); + loc_save(&qerr->loc); + QINCREF(err->obj); + qerr->error = err->obj; + + for (i = 0; qerror_table[i].error_fmt; i++) { + if (strcmp(qerror_table[i].error_fmt, err->fmt) == 0) { + qerr->entry = &qerror_table[i]; + break; + } + } + + if (monitor_cur_is_qmp()) { + monitor_set_error(cur_mon, qerr); + } else { + qerror_print(qerr); + QDECREF(qerr); + } +} + /** * qobject_to_qerror(): Convert a QObject into a QError */ |