aboutsummaryrefslogtreecommitdiff
path: root/runit
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2020-12-30 23:48:01 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2020-12-30 23:48:01 +0100
commit3c13da3dab539eac948de48640d8862857d0c8d0 (patch)
tree9cf3ae59b79ca89cbcfe08ce6b2b121f37d54a66 /runit
parent89a55972fd5d7f0ab815c2a62be69a8f34718353 (diff)
downloadbusybox-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.c4
-rw-r--r--runit/svlogd.c4
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;