From a573f9e4be0f14c614bcbef493775fcce3c7dbe4 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Wed, 30 Aug 2023 22:46:36 -0400 Subject: [PATCH] libroot: Fix build of new time files under GCC2. --- src/system/libroot/posix/musl/time/__tm_to_secs.c | 2 ++ src/system/libroot/posix/musl/time/__year_to_secs.c | 7 ++++++- src/system/libroot/posix/time/Jamfile | 1 + 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/system/libroot/posix/musl/time/__tm_to_secs.c b/src/system/libroot/posix/musl/time/__tm_to_secs.c index c29fa985a6..514f1e2f3b 100644 --- a/src/system/libroot/posix/musl/time/__tm_to_secs.c +++ b/src/system/libroot/posix/musl/time/__tm_to_secs.c @@ -14,6 +14,7 @@ long long __tm_to_secs(const struct tm *tm) } year += adj; } + { long long t = __year_to_secs(year, &is_leap); t += __month_to_secs(month, is_leap); t += 86400LL * (tm->tm_mday-1); @@ -21,4 +22,5 @@ long long __tm_to_secs(const struct tm *tm) t += 60LL * tm->tm_min; t += tm->tm_sec; return t; + } } diff --git a/src/system/libroot/posix/musl/time/__year_to_secs.c b/src/system/libroot/posix/musl/time/__year_to_secs.c index 2824ec6dcc..9bbe686a40 100644 --- a/src/system/libroot/posix/musl/time/__year_to_secs.c +++ b/src/system/libroot/posix/musl/time/__year_to_secs.c @@ -10,9 +10,13 @@ long long __year_to_secs(long long year, int *is_leap) return 31536000*(y-70) + 86400*leaps; } + { int cycles, centuries, leaps, rem; - if (!is_leap) is_leap = &(int){0}; + if (!is_leap) { + static int isleap = 0; + is_leap = &isleap; + } cycles = (year-100) / 400; rem = (year-100) % 400; if (rem < 0) { @@ -44,4 +48,5 @@ long long __year_to_secs(long long year, int *is_leap) leaps += 97*cycles + 24*centuries - *is_leap; return (year-100) * 31536000LL + leaps * 86400LL + 946684800 + 86400; + } } diff --git a/src/system/libroot/posix/time/Jamfile b/src/system/libroot/posix/time/Jamfile index eb0d97430a..3167c553c8 100644 --- a/src/system/libroot/posix/time/Jamfile +++ b/src/system/libroot/posix/time/Jamfile @@ -7,6 +7,7 @@ UsePrivateHeaders shared ; SubDirSysHdrs [ FDirName $(SUBDIR) .. musl include ] ; +SubDirHdrs [ FDirName $(SUBDIR) .. musl time ] ; local architectureObject ; for architectureObject in [ MultiArchSubDirSetup ] {