On Wed, Apr 6, 2022 at 1:35 PM Marc-André Lureau <marcandre.lur...@redhat.com> wrote: > > Hi > > On Wed, Apr 6, 2022 at 1:08 PM Markus Armbruster <arm...@redhat.com> wrote: > > > > marcandre.lur...@redhat.com writes: > > > > > From: Marc-André Lureau <marcandre.lur...@redhat.com> > > > > > > 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.lur...@redhat.com> > > > --- > > > include/glib-compat.h | 10 ++++++++++ > > > util/qemu-error.c | 17 ++++++++++++++--- > > > 2 files changed, 24 insertions(+), 3 deletions(-) > > > > > > diff --git a/include/glib-compat.h b/include/glib-compat.h > > > index 3113a7d2af84..dc14d3ec0d1e 100644 > > > --- a/include/glib-compat.h > > > +++ b/include/glib-compat.h > > > @@ -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 > > > > I'm confused. > > > > If we're using v2.62 or later, g_time_val_to_iso8601(dt) calls GLib's > > g_time_val_to_iso8601(). Why do we need the inline function and the > > macro? > > To hide the "deprecation" warning because GLIB_VERSION_MAX_ALLOWED is 2.56.
This is probably a better solution, I will change the patch: --- a/util/qemu-error.c +++ b/util/qemu-error.c @@ -185,7 +185,10 @@ 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()); +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" return g_date_time_format_iso8601(dt); +#pragma GCC diagnostic pop #else GTimeVal tv; > > > > > Else, I expect g_date_time_format_iso8601(dt) not to compile. > > > > > + > > > #pragma GCC diagnostic pop > > > > > > #endif > > > diff --git a/util/qemu-error.c b/util/qemu-error.c > > > index 7769aee8e791..4ea380dd4169 100644 > > > --- a/util/qemu-error.c > > > +++ b/util/qemu-error.c > > > @@ -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); > > > } > >