void-packages/srcpkgs/busybox/patches/time64.patch
Érico Rolim c9307124d9 busybox: fix time64 patch.
The syscall name was changed explicitly so compilation broke instead of
allowing programs using the raw syscall to use the time64 struct
timespec with a syscall expecting the old one.

Since we have modern glibc and musl, we can just force clock_gettime
usage.

The previous patch also broke y2038 support.

Not revbumping, since c085deae94 didn't
either.
2021-02-09 12:31:43 -03:00

38 lines
1.2 KiB
Diff

diff --git coreutils/date.c coreutils/date.c
index 3414d38..6e12f36 100644
--- coreutils/date.c
+++ coreutils/date.c
@@ -272,9 +272,7 @@ int date_main(int argc UNUSED_PARAM, char **argv)
#endif
} else {
#if ENABLE_FEATURE_DATE_NANO
- /* libc has incredibly messy way of doing this,
- * typically requiring -lrt. We just skip all this mess */
- syscall(__NR_clock_gettime, CLOCK_REALTIME, &ts);
+ clock_gettime(CLOCK_REALTIME, &ts);
#else
time(&ts.tv_sec);
#endif
diff --git libbb/time.c libbb/time.c
index f9b8da0..600b60b 100644
--- libbb/time.c
+++ libbb/time.c
@@ -247,17 +247,10 @@ char* FAST_FUNC strftime_YYYYMMDDHHMMSS(char *buf, unsigned len, time_t *tp)
#if ENABLE_MONOTONIC_SYSCALL
#include <sys/syscall.h>
-/* Old glibc (< 2.3.4) does not provide this constant. We use syscall
- * directly so this definition is safe. */
-#ifndef CLOCK_MONOTONIC
-#define CLOCK_MONOTONIC 1
-#endif
-/* libc has incredibly messy way of doing this,
- * typically requiring -lrt. We just skip all this mess */
static void get_mono(struct timespec *ts)
{
- if (syscall(__NR_clock_gettime, CLOCK_MONOTONIC, ts))
+ if (clock_gettime(CLOCK_MONOTONIC, ts))
bb_error_msg_and_die("clock_gettime(MONOTONIC) failed");
}
unsigned long long FAST_FUNC monotonic_ns(void)