From: Paul Eggert Date: Wed, 24 Jul 2024 16:45:46 +0000 (-0700) Subject: maint: higher-precision checkpoint timestamps X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=3d2c735b7c8ff3982812df1117597a475c7cc72f;p=thirdparty%2Ftar.git 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. --- 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;