monitor: Factor monitor_set_error() out of qemu_error_internal()

This separates the monitor part from the QError part.
This commit is contained in:
Markus Armbruster 2010-02-17 10:52:26 +01:00
parent a44264880e
commit d6f468337a
2 changed files with 16 additions and 8 deletions

View File

@ -3858,6 +3858,18 @@ fail:
return NULL;
}
void monitor_set_error(Monitor *mon, QError *qerror)
{
/* report only the first error */
if (!mon->error) {
mon->error = qerror;
} else {
MON_DEBUG("Additional error report at %s:%d\n",
qerror->file, qerror->linenr);
QDECREF(qerror);
}
}
static void monitor_print_error(Monitor *mon)
{
qerror_print(mon->error);
@ -4759,14 +4771,7 @@ void qemu_error_internal(const char *file, int linenr, const char *func,
QDECREF(qerror);
break;
case ERR_SINK_MONITOR:
/* report only the first error */
if (!qemu_error_sink->mon->error) {
qemu_error_sink->mon->error = qerror;
} else {
MON_DEBUG("Additional error report at %s:%d\n", qerror->file,
qerror->linenr);
QDECREF(qerror);
}
monitor_set_error(qemu_error_sink->mon, qerror);
break;
}
}

View File

@ -3,6 +3,7 @@
#include "qemu-common.h"
#include "qemu-char.h"
#include "qerror.h"
#include "qdict.h"
#include "block.h"
@ -49,4 +50,6 @@ void monitor_flush(Monitor *mon);
typedef void (MonitorCompletion)(void *opaque, QObject *ret_data);
void monitor_set_error(Monitor *mon, QError *qerror);
#endif /* !MONITOR_H */