We skip printing timestamp when _any_ monitor is active. But
then, in production (where QMP is usually used) we lack timestamps
in logs.
Let's go a bit further, and use same logic to detect HMP monitor
in the whole util/error-report.c like in error_vprintf().
Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
---
stubs/monitor-core.c | 5 +++++
tests/unit/test-util-sockets.c | 1 +
util/error-report.c | 23 ++++++++++++++---------
3 files changed, 20 insertions(+), 9 deletions(-)
diff --git a/stubs/monitor-core.c b/stubs/monitor-core.c
index 1894cdfe1f..275cb0cbfa 100644
--- a/stubs/monitor-core.c
+++ b/stubs/monitor-core.c
@@ -7,6 +7,11 @@ Monitor *monitor_cur(void)
return NULL;
}
+bool monitor_cur_is_hmp(void)
+{
+ return false;
+}
+
Monitor *monitor_set_cur(Coroutine *co, Monitor *mon)
{
return NULL;
diff --git a/tests/unit/test-util-sockets.c b/tests/unit/test-util-sockets.c
index ee66d727c3..4b7f408902 100644
--- a/tests/unit/test-util-sockets.c
+++ b/tests/unit/test-util-sockets.c
@@ -74,6 +74,7 @@ int monitor_get_fd(Monitor *mon, const char *fdname, Error **errp)
Monitor *monitor_cur(void) { return cur_mon; }
Monitor *monitor_set_cur(Coroutine *co, Monitor *mon) { abort(); }
int monitor_vprintf(Monitor *mon, const char *fmt, va_list ap) { abort(); }
+bool monitor_cur_is_hmp(void) { return false; }
#ifndef _WIN32
static void test_socket_fd_pass_name_good(void)
diff --git a/util/error-report.c b/util/error-report.c
index 1b17c11de1..7ffbcf2123 100644
--- a/util/error-report.c
+++ b/util/error-report.c
@@ -144,7 +144,7 @@ static void print_loc(void)
int i;
const char *const *argp;
- if (!monitor_cur() && g_get_prgname()) {
+ if (!monitor_cur_is_hmp() && g_get_prgname()) {
error_printf("%s:", g_get_prgname());
sep = " ";
}
@@ -188,15 +188,20 @@ static void vreport(report_type type, const char *fmt, va_list ap)
{
gchar *timestr;
- if (message_with_timestamp && !monitor_cur()) {
- timestr = real_time_iso8601();
- error_printf("%s ", timestr);
- g_free(timestr);
- }
+ if (!monitor_cur_is_hmp()) {
+ if (message_with_timestamp) {
+ timestr = real_time_iso8601();
+ error_printf("%s ", timestr);
+ g_free(timestr);
+ }
- /* Only prepend guest name if -msg guest-name and -name guest=... are set */
- if (error_with_guestname && error_guest_name && !monitor_cur()) {
- error_printf("%s ", error_guest_name);
+ /*
+ * Only prepend guest name if -msg guest-name and -name guest=...
+ * are set.
+ */
+ if (error_with_guestname && error_guest_name) {
+ error_printf("%s ", error_guest_name);
+ }
}
print_loc();
--
2.48.1