diff options
author | Ron Yorston <rmy@pobox.com> | 2020-07-19 10:39:43 +0100 |
---|---|---|
committer | Ron Yorston <rmy@pobox.com> | 2020-07-19 10:39:43 +0100 |
commit | 0bc672a9be9caf0482bf1f2b1e528b6b20b8eaaf (patch) | |
tree | c1fe09d26077e1210aae3343a7b40dc14ad30032 | |
parent | 01a256149453c0dc108a7063ac48f8498c4663da (diff) | |
download | busybox-w32-0bc672a9be9caf0482bf1f2b1e528b6b20b8eaaf.tar.gz busybox-w32-0bc672a9be9caf0482bf1f2b1e528b6b20b8eaaf.tar.bz2 busybox-w32-0bc672a9be9caf0482bf1f2b1e528b6b20b8eaaf.zip |
ts: correct output in 64-bit build
ts failed to output the correct time when built for 64-bit Windows.
In 64-bit builds time_t is a 64-bit quantity whereas the tv_sec
member of struct timeval is 32-bit.
https://sourceforge.net/p/mingw-w64/bugs/783/
Use a temporary time_t value in 64-bit builds.
-rw-r--r-- | miscutils/ts.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/miscutils/ts.c b/miscutils/ts.c index f2d367654..f769d663b 100644 --- a/miscutils/ts.c +++ b/miscutils/ts.c | |||
@@ -22,6 +22,9 @@ int ts_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; | |||
22 | int ts_main(int argc UNUSED_PARAM, char **argv) | 22 | int ts_main(int argc UNUSED_PARAM, char **argv) |
23 | { | 23 | { |
24 | struct timeval base; | 24 | struct timeval base; |
25 | #if ENABLE_PLATFORM_MINGW32 && !defined(_USE_32BIT_TIME_T) | ||
26 | time_t t; | ||
27 | #endif | ||
25 | unsigned opt; | 28 | unsigned opt; |
26 | char *frac; | 29 | char *frac; |
27 | char *fmt_dt2str; | 30 | char *fmt_dt2str; |
@@ -70,7 +73,12 @@ int ts_main(int argc UNUSED_PARAM, char **argv) | |||
70 | if (opt & 1) /* -i */ | 73 | if (opt & 1) /* -i */ |
71 | base = ts1; | 74 | base = ts1; |
72 | } | 75 | } |
76 | #if ENABLE_PLATFORM_MINGW32 && !defined(_USE_32BIT_TIME_T) | ||
77 | t = ts.tv_sec; | ||
78 | localtime_r(&t, &tm_time); | ||
79 | #else | ||
73 | localtime_r(&ts.tv_sec, &tm_time); | 80 | localtime_r(&ts.tv_sec, &tm_time); |
81 | #endif | ||
74 | strftime(date_buf, COMMON_BUFSIZE, fmt_dt2str, &tm_time); | 82 | strftime(date_buf, COMMON_BUFSIZE, fmt_dt2str, &tm_time); |
75 | if (!frac) { | 83 | if (!frac) { |
76 | printf("%s %s", date_buf, line); | 84 | printf("%s %s", date_buf, line); |