aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--coreutils/date.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/coreutils/date.c b/coreutils/date.c
index feb400430..731241536 100644
--- a/coreutils/date.c
+++ b/coreutils/date.c
@@ -36,7 +36,7 @@
36//config:# defaults to "no": stat's nanosecond field is a bit non-portable 36//config:# defaults to "no": stat's nanosecond field is a bit non-portable
37//config:config FEATURE_DATE_NANO 37//config:config FEATURE_DATE_NANO
38//config: bool "Support %[num]N nanosecond format specifier" 38//config: bool "Support %[num]N nanosecond format specifier"
39//config: default n # syscall(__NR_clock_gettime) 39//config: default n # syscall(__NR_clock_gettime) or syscall(__NR_clock_gettime64)
40//config: depends on DATE 40//config: depends on DATE
41//config: select PLATFORM_LINUX 41//config: select PLATFORM_LINUX
42//config: help 42//config: help
@@ -271,10 +271,17 @@ int date_main(int argc UNUSED_PARAM, char **argv)
271 */ 271 */
272#endif 272#endif
273 } else { 273 } else {
274#if ENABLE_FEATURE_DATE_NANO 274#if ENABLE_FEATURE_DATE_NANO && defined(__NR_clock_gettime)
275 /* libc has incredibly messy way of doing this, 275 /* libc has incredibly messy way of doing this,
276 * typically requiring -lrt. We just skip all this mess */ 276 * typically requiring -lrt. We just skip all this mess */
277 syscall(__NR_clock_gettime, CLOCK_REALTIME, &ts); 277 syscall(__NR_clock_gettime, CLOCK_REALTIME, &ts);
278#elif ENABLE_FEATURE_DATE_NANO && __TIMESIZE == 64
279 /* Let's only support the 64 suffix syscalls for 64-bit time_t.
280 * This simplifies the code for us as we don't need to convert
281 * between 64-bit and 32-bit. We also don't have a way to
282 * report overflow errors here.
283 */
284 syscall(__NR_clock_gettime64, CLOCK_REALTIME, &ts);
278#else 285#else
279 time(&ts.tv_sec); 286 time(&ts.tv_sec);
280#endif 287#endif