error-report: replace deprecated g_get_current_time() with glib >= 2.62

According to GLib API:
g_get_current_time has been deprecated since version 2.62 and should not
be used in newly-written code. GTimeVal is not year-2038-safe. Use
g_get_real_time() instead.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Message-Id: <20220323155743.1585078-14-marcandre.lureau@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
Marc-André Lureau 2022-03-23 19:57:24 +04:00 committed by Paolo Bonzini
parent 6e9396696f
commit 73dab893b5
2 changed files with 24 additions and 3 deletions

View File

@ -145,6 +145,16 @@ qemu_g_test_slow(void)
#define g_test_thorough() qemu_g_test_slow()
#define g_test_quick() (!qemu_g_test_slow())
#if GLIB_CHECK_VERSION(2,62,0)
static inline gchar *
g_date_time_format_iso8601_compat(GDateTime *datetime)
{
return g_date_time_format_iso8601(datetime);
}
#define g_date_time_format_iso8601 g_date_time_format_iso8601_compat
#endif
#pragma GCC diagnostic pop
#endif

View File

@ -180,6 +180,19 @@ static void print_loc(void)
}
}
static char *
real_time_iso8601(void)
{
#if GLIB_CHECK_VERSION(2, 62, 0)
g_autoptr(GDateTime) dt = g_date_time_new_from_unix_utc(g_get_real_time());
return g_date_time_format_iso8601(dt);
#else
GTimeVal tv;
g_get_current_time(&tv);
return g_time_val_to_iso8601(&tv);
#endif
}
/*
* Print a message to current monitor if we have one, else to stderr.
* @report_type is the type of message: error, warning or informational.
@ -189,12 +202,10 @@ static void print_loc(void)
*/
static void vreport(report_type type, const char *fmt, va_list ap)
{
GTimeVal tv;
gchar *timestr;
if (message_with_timestamp && !monitor_cur()) {
g_get_current_time(&tv);
timestr = g_time_val_to_iso8601(&tv);
timestr = real_time_iso8601();
error_printf("%s ", timestr);
g_free(timestr);
}