diff --git a/monitor.c b/monitor.c index e23f45cc42..b266a8c9e7 100644 --- a/monitor.c +++ b/monitor.c @@ -3971,8 +3971,6 @@ static void handle_user_command(Monitor *mon, const char *cmdline) if (!cmd) goto out; - qemu_errors_to_mon(mon); - if (monitor_handler_is_async(cmd)) { user_async_cmd_handler(mon, cmd, qdict); } else if (monitor_handler_ported(cmd)) { @@ -3984,8 +3982,6 @@ static void handle_user_command(Monitor *mon, const char *cmdline) if (monitor_has_error(mon)) monitor_print_error(mon); - qemu_errors_to_previous(); - out: QDECREF(qdict); } @@ -4387,7 +4383,6 @@ static void handle_qmp_command(JSONMessageParser *parser, QList *tokens) const char *cmd_name, *info_item; args = NULL; - qemu_errors_to_mon(mon); obj = json_parser_parse(tokens, NULL); if (!obj) { @@ -4468,7 +4463,6 @@ err_out: monitor_protocol_emitter(mon, NULL); out: QDECREF(args); - qemu_errors_to_previous(); } /** diff --git a/qemu-error.c b/qemu-error.c index df381f679e..63bcdcfa1a 100644 --- a/qemu-error.c +++ b/qemu-error.c @@ -2,70 +2,17 @@ #include "monitor.h" #include "sysemu.h" -typedef struct QemuErrorSink QemuErrorSink; -struct QemuErrorSink { - enum { - ERR_SINK_FILE, - ERR_SINK_MONITOR, - } dest; - union { - FILE *fp; - Monitor *mon; - }; - QemuErrorSink *previous; -}; - -static QemuErrorSink *qemu_error_sink; - -void qemu_errors_to_file(FILE *fp) -{ - QemuErrorSink *sink; - - sink = qemu_mallocz(sizeof(*sink)); - sink->dest = ERR_SINK_FILE; - sink->fp = fp; - sink->previous = qemu_error_sink; - qemu_error_sink = sink; -} - -void qemu_errors_to_mon(Monitor *mon) -{ - QemuErrorSink *sink; - - sink = qemu_mallocz(sizeof(*sink)); - sink->dest = ERR_SINK_MONITOR; - sink->mon = mon; - sink->previous = qemu_error_sink; - qemu_error_sink = sink; -} - -void qemu_errors_to_previous(void) -{ - QemuErrorSink *sink; - - assert(qemu_error_sink != NULL); - sink = qemu_error_sink; - qemu_error_sink = sink->previous; - qemu_free(sink); -} - void qemu_error(const char *fmt, ...) { va_list args; - assert(qemu_error_sink != NULL); - switch (qemu_error_sink->dest) { - case ERR_SINK_FILE: - va_start(args, fmt); - vfprintf(qemu_error_sink->fp, fmt, args); - va_end(args); - break; - case ERR_SINK_MONITOR: - va_start(args, fmt); - monitor_vprintf(qemu_error_sink->mon, fmt, args); - va_end(args); - break; + va_start(args, fmt); + if (cur_mon) { + monitor_vprintf(cur_mon, fmt, args); + } else { + vfprintf(stderr, fmt, args); } + va_end(args); } void qemu_error_internal(const char *file, int linenr, const char *func, @@ -74,19 +21,14 @@ void qemu_error_internal(const char *file, int linenr, const char *func, va_list va; QError *qerror; - assert(qemu_error_sink != NULL); - va_start(va, fmt); qerror = qerror_from_info(file, linenr, func, fmt, &va); va_end(va); - switch (qemu_error_sink->dest) { - case ERR_SINK_FILE: + if (cur_mon) { + monitor_set_error(cur_mon, qerror); + } else { qerror_print(qerror); QDECREF(qerror); - break; - case ERR_SINK_MONITOR: - monitor_set_error(qemu_error_sink->mon, qerror); - break; } } diff --git a/sysemu.h b/sysemu.h index 3fef78df88..14de993afc 100644 --- a/sysemu.h +++ b/sysemu.h @@ -73,9 +73,6 @@ int qemu_savevm_state_complete(Monitor *mon, QEMUFile *f); void qemu_savevm_state_cancel(Monitor *mon, QEMUFile *f); int qemu_loadvm_state(QEMUFile *f); -void qemu_errors_to_file(FILE *fp); -void qemu_errors_to_mon(Monitor *mon); -void qemu_errors_to_previous(void); void qemu_error(const char *fmt, ...) __attribute__ ((format(printf, 1, 2))); void qemu_error_internal(const char *file, int linenr, const char *func, const char *fmt, ...) diff --git a/vl.c b/vl.c index 0030d5493f..99d6ec1d60 100644 --- a/vl.c +++ b/vl.c @@ -4864,7 +4864,6 @@ int main(int argc, char **argv, char **envp) init_clocks(); - qemu_errors_to_file(stderr); qemu_cache_utils_init(envp); QLIST_INIT (&vm_change_state_head);