diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2020-12-30 23:48:01 +0100 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2020-12-30 23:48:01 +0100 |
commit | 3c13da3dab539eac948de48640d8862857d0c8d0 (patch) | |
tree | 9cf3ae59b79ca89cbcfe08ce6b2b121f37d54a66 /runit | |
parent | 89a55972fd5d7f0ab815c2a62be69a8f34718353 (diff) | |
download | busybox-w32-3c13da3dab539eac948de48640d8862857d0c8d0.tar.gz busybox-w32-3c13da3dab539eac948de48640d8862857d0c8d0.tar.bz2 busybox-w32-3c13da3dab539eac948de48640d8862857d0c8d0.zip |
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 <vda.linux@googlemail.com>
Diffstat (limited to 'runit')
-rw-r--r-- | runit/runsv.c | 4 | ||||
-rw-r--r-- | runit/svlogd.c | 4 |
2 files changed, 4 insertions, 4 deletions
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) | |||
62 | && sizeof(((struct timeval*)ts)->tv_usec) == sizeof(ts->tv_nsec) | 62 | && sizeof(((struct timeval*)ts)->tv_usec) == sizeof(ts->tv_nsec) |
63 | ) { | 63 | ) { |
64 | /* Cheat */ | 64 | /* Cheat */ |
65 | gettimeofday((void*)ts, NULL); | 65 | xgettimeofday((void*)ts); |
66 | ts->tv_nsec *= 1000; | 66 | ts->tv_nsec *= 1000; |
67 | } else { | 67 | } else { |
68 | /* For example, musl has "incompatible" layouts */ | 68 | /* For example, musl has "incompatible" layouts */ |
69 | struct timeval tv; | 69 | struct timeval tv; |
70 | gettimeofday(&tv, NULL); | 70 | xgettimeofday(&tv); |
71 | ts->tv_sec = tv.tv_sec; | 71 | ts->tv_sec = tv.tv_sec; |
72 | ts->tv_nsec = tv.tv_usec * 1000; | 72 | ts->tv_nsec = tv.tv_usec * 1000; |
73 | } | 73 | } |
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) | |||
351 | struct tm *ptm; | 351 | struct tm *ptm; |
352 | struct timeval tv; | 352 | struct timeval tv; |
353 | 353 | ||
354 | gettimeofday(&tv, NULL); | 354 | xgettimeofday(&tv); |
355 | ptm = gmtime_r(&tv.tv_sec, &tm); | 355 | ptm = gmtime_r(&tv.tv_sec, &tm); |
356 | /* ^^^ using gmtime_r() instead of gmtime() to not use static data */ | 356 | /* ^^^ using gmtime_r() instead of gmtime() to not use static data */ |
357 | sprintf(s, "%04u-%02u-%02u%c%02u:%02u:%02u.%06u000", | 357 | sprintf(s, "%04u-%02u-%02u%c%02u:%02u:%02u.%06u000", |
@@ -376,7 +376,7 @@ static void fmt_time_bernstein_25(char *s) | |||
376 | struct timeval tv; | 376 | struct timeval tv; |
377 | unsigned sec_hi; | 377 | unsigned sec_hi; |
378 | 378 | ||
379 | gettimeofday(&tv, NULL); | 379 | xgettimeofday(&tv); |
380 | sec_hi = (0x400000000000000aULL + tv.tv_sec) >> 32; | 380 | sec_hi = (0x400000000000000aULL + tv.tv_sec) >> 32; |
381 | tv.tv_sec = (time_t)(0x400000000000000aULL) + tv.tv_sec; | 381 | tv.tv_sec = (time_t)(0x400000000000000aULL) + tv.tv_sec; |
382 | tv.tv_usec *= 1000; | 382 | tv.tv_usec *= 1000; |