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>
diff --git a/libbb/xfuncs_printf.c b/libbb/xfuncs_printf.c
index aea995a..99596b9 100644
--- a/libbb/xfuncs_printf.c
+++ b/libbb/xfuncs_printf.c
@@ -720,3 +720,14 @@
if (settimeofday(tv, NULL))
bb_simple_perror_msg_and_die("settimeofday");
}
+
+void FAST_FUNC xgettimeofday(struct timeval *tv)
+{
+#if 0
+ if (gettimeofday(tv, NULL))
+ bb_simple_perror_msg_and_die("gettimeofday");
+#else
+ /* Never fails on Linux */
+ gettimeofday(tv, NULL);
+#endif
+}