From 3c13da3dab539eac948de48640d8862857d0c8d0 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Wed, 30 Dec 2020 23:48:01 +0100 Subject: libbb: introduce and use xgettimeofday(), do not truncate 64-bit time_t in shells function old new delta xgettimeofday - 11 +11 get_local_var_value 280 281 +1 svlogd_main 1323 1322 -1 change_epoch 67 66 -1 timestamp_and_log 461 458 -3 hwclock_main 301 298 -3 fmt_time_bernstein_25 135 132 -3 step_time 331 326 -5 script_main 1207 1202 -5 machtime 34 28 -6 curtime 61 54 -7 ts_main 423 415 -8 nmeter_main 761 751 -10 gettime1900d 67 46 -21 ------------------------------------------------------------------------------ (add/remove: 1/0 grow/shrink: 1/12 up/down: 12/-73) Total: -61 bytes Signed-off-by: Denys Vlasenko --- runit/runsv.c | 4 ++-- runit/svlogd.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'runit') diff --git a/runit/runsv.c b/runit/runsv.c index d395d4528..ecab8cdf5 100644 --- a/runit/runsv.c +++ b/runit/runsv.c @@ -62,12 +62,12 @@ static void gettimeofday_ns(struct timespec *ts) && sizeof(((struct timeval*)ts)->tv_usec) == sizeof(ts->tv_nsec) ) { /* Cheat */ - gettimeofday((void*)ts, NULL); + xgettimeofday((void*)ts); ts->tv_nsec *= 1000; } else { /* For example, musl has "incompatible" layouts */ struct timeval tv; - gettimeofday(&tv, NULL); + xgettimeofday(&tv); ts->tv_sec = tv.tv_sec; ts->tv_nsec = tv.tv_usec * 1000; } diff --git a/runit/svlogd.c b/runit/svlogd.c index 040e71104..294e31aca 100644 --- a/runit/svlogd.c +++ b/runit/svlogd.c @@ -351,7 +351,7 @@ static void fmt_time_human_30nul(char *s, char dt_delim) struct tm *ptm; struct timeval tv; - gettimeofday(&tv, NULL); + xgettimeofday(&tv); ptm = gmtime_r(&tv.tv_sec, &tm); /* ^^^ using gmtime_r() instead of gmtime() to not use static data */ sprintf(s, "%04u-%02u-%02u%c%02u:%02u:%02u.%06u000", @@ -376,7 +376,7 @@ static void fmt_time_bernstein_25(char *s) struct timeval tv; unsigned sec_hi; - gettimeofday(&tv, NULL); + xgettimeofday(&tv); sec_hi = (0x400000000000000aULL + tv.tv_sec) >> 32; tv.tv_sec = (time_t)(0x400000000000000aULL) + tv.tv_sec; tv.tv_usec *= 1000; -- cgit v1.2.3