[PATCH 3/7] net/rocker: use GDateTime for formatting timestamp in debug messages

Daniel P. Berrangé posted 7 patches 4 years, 9 months ago
[PATCH 3/7] net/rocker: use GDateTime for formatting timestamp in debug messages
Posted by Daniel P. Berrangé 4 years, 9 months ago
The GDateTime APIs provided by GLib avoid portability pitfalls, such
as some platforms where 'struct timeval.tv_sec' field is still 'long'
instead of 'time_t'. When combined with automatic cleanup, GDateTime
often results in simpler code too.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
---
 hw/net/rocker/rocker.h | 11 +++--------
 1 file changed, 3 insertions(+), 8 deletions(-)

diff --git a/hw/net/rocker/rocker.h b/hw/net/rocker/rocker.h
index 941c932265..412fa44d01 100644
--- a/hw/net/rocker/rocker.h
+++ b/hw/net/rocker/rocker.h
@@ -25,14 +25,9 @@
 #if defined(DEBUG_ROCKER)
 #  define DPRINTF(fmt, ...) \
     do {                                                           \
-        struct timeval tv;                                         \
-        char timestr[64];                                          \
-        time_t now;                                                \
-        gettimeofday(&tv, NULL);                                   \
-        now = tv.tv_sec;                                           \
-        strftime(timestr, sizeof(timestr), "%T", localtime(&now)); \
-        fprintf(stderr, "%s.%06ld ", timestr, tv.tv_usec);         \
-        fprintf(stderr, "ROCKER: " fmt, ## __VA_ARGS__);           \
+        g_autoptr(GDateTime) now = g_date_time_new_now_local();    \
+        g_autofree char *nowstr = g_date_time_format(now, "%T.%f");\
+        fprintf(stderr, "%s ROCKER: " fmt, nowstr, ## __VA_ARGS__);\
     } while (0)
 #else
 static inline GCC_FMT_ATTR(1, 2) int DPRINTF(const char *fmt, ...)
-- 
2.31.1


Re: [PATCH 3/7] net/rocker: use GDateTime for formatting timestamp in debug messages
Posted by Daniel P. Berrangé 4 years, 8 months ago
ping: anyone willing to give a review of this one

On Wed, May 05, 2021 at 11:36:58AM +0100, Daniel P. Berrangé wrote:
> The GDateTime APIs provided by GLib avoid portability pitfalls, such
> as some platforms where 'struct timeval.tv_sec' field is still 'long'
> instead of 'time_t'. When combined with automatic cleanup, GDateTime
> often results in simpler code too.
> 
> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
> ---
>  hw/net/rocker/rocker.h | 11 +++--------
>  1 file changed, 3 insertions(+), 8 deletions(-)
> 
> diff --git a/hw/net/rocker/rocker.h b/hw/net/rocker/rocker.h
> index 941c932265..412fa44d01 100644
> --- a/hw/net/rocker/rocker.h
> +++ b/hw/net/rocker/rocker.h
> @@ -25,14 +25,9 @@
>  #if defined(DEBUG_ROCKER)
>  #  define DPRINTF(fmt, ...) \
>      do {                                                           \
> -        struct timeval tv;                                         \
> -        char timestr[64];                                          \
> -        time_t now;                                                \
> -        gettimeofday(&tv, NULL);                                   \
> -        now = tv.tv_sec;                                           \
> -        strftime(timestr, sizeof(timestr), "%T", localtime(&now)); \
> -        fprintf(stderr, "%s.%06ld ", timestr, tv.tv_usec);         \
> -        fprintf(stderr, "ROCKER: " fmt, ## __VA_ARGS__);           \
> +        g_autoptr(GDateTime) now = g_date_time_new_now_local();    \
> +        g_autofree char *nowstr = g_date_time_format(now, "%T.%f");\
> +        fprintf(stderr, "%s ROCKER: " fmt, nowstr, ## __VA_ARGS__);\
>      } while (0)
>  #else
>  static inline GCC_FMT_ATTR(1, 2) int DPRINTF(const char *fmt, ...)
> -- 
> 2.31.1
> 

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|


Re: [PATCH 3/7] net/rocker: use GDateTime for formatting timestamp in debug messages
Posted by Juan Quintela 4 years, 7 months ago
Daniel P. Berrangé <berrange@redhat.com> wrote:
> ping: anyone willing to give a review of this one
>
> On Wed, May 05, 2021 at 11:36:58AM +0100, Daniel P. Berrangé wrote:
>> The GDateTime APIs provided by GLib avoid portability pitfalls, such
>> as some platforms where 'struct timeval.tv_sec' field is still 'long'
>> instead of 'time_t'. When combined with automatic cleanup, GDateTime
>> often results in simpler code too.
>> 
>> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
>> ---
>>  hw/net/rocker/rocker.h | 11 +++--------
>>  1 file changed, 3 insertions(+), 8 deletions(-)
>> 
>> diff --git a/hw/net/rocker/rocker.h b/hw/net/rocker/rocker.h
>> index 941c932265..412fa44d01 100644
>> --- a/hw/net/rocker/rocker.h
>> +++ b/hw/net/rocker/rocker.h
>> @@ -25,14 +25,9 @@
>>  #if defined(DEBUG_ROCKER)
>>  #  define DPRINTF(fmt, ...) \
>>      do {                                                           \
>> -        struct timeval tv;                                         \
>> -        char timestr[64];                                          \
>> -        time_t now;                                                \
>> -        gettimeofday(&tv, NULL);                                   \
>> -        now = tv.tv_sec;                                           \
>> -        strftime(timestr, sizeof(timestr), "%T", localtime(&now)); \
>> -        fprintf(stderr, "%s.%06ld ", timestr, tv.tv_usec);         \
>> -        fprintf(stderr, "ROCKER: " fmt, ## __VA_ARGS__);           \
>> +        g_autoptr(GDateTime) now = g_date_time_new_now_local();    \
>> +        g_autofree char *nowstr = g_date_time_format(now, "%T.%f");\
>> +        fprintf(stderr, "%s ROCKER: " fmt, nowstr, ## __VA_ARGS__);\
>>      } while (0)
>>  #else
>>  static inline GCC_FMT_ATTR(1, 2) int DPRINTF(const char *fmt, ...)

Reviewed-by: Juan Quintela <quintela@redhat.com>