From 3d2c735b7c8ff3982812df1117597a475c7cc72f Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Wed, 24 Jul 2024 09:45:46 -0700 Subject: [PATCH] maint: higher-precision checkpoint timestamps * src/checkpoint.c (format_checkpoint_string): Use current_timespec to get nanosecond resolution. This also frees us from the necessity of including to use gettimeofday, which is removed in POSIX.1-2024. --- src/checkpoint.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/checkpoint.c b/src/checkpoint.c index ca9534f9..f1710bb5 100644 --- a/src/checkpoint.c +++ b/src/checkpoint.c @@ -103,7 +103,7 @@ checkpoint_compile_action (const char *str) sigemptyset (&sigs); checkpoint_state = CHKP_COMPILE; } - + if (strcmp (str, ".") == 0 || strcmp (str, "dot") == 0) alloc_action (cop_dot); else if (strcmp (str, "bell") == 0) @@ -326,13 +326,11 @@ format_checkpoint_string (FILE *fp, size_t len, case 't': { - struct timeval tv; - struct tm *tm; + struct timespec ts = current_timespec (); const char *fmt = arg ? arg : "%c"; - - gettimeofday (&tv, NULL); - tm = localtime (&tv.tv_sec); - len += fprintftime (fp, fmt, tm, 0, tv.tv_usec * 1000); + struct tm *tm = localtime (&ts.tv_sec); + len += (tm ? fprintftime (fp, fmt, tm, 0, ts.tv_nsec) + : fprintf (fp, "????""-??""-?? ??:??:??")); } break; -- 2.47.3