67 lines
2.3 KiB
Diff
67 lines
2.3 KiB
Diff
From 6e7ad1e4c22e7038975ba37c7413374fe566b064 Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?Carlo=20Marcelo=20Arenas=20Bel=C3=B3n?= <carenas@gmail.com>
|
|
Date: Sat, 27 Nov 2021 10:15:32 +0000
|
|
Subject: [PATCH] mingw: avoid fallback for {local,gm}time_r()
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
mingw-w64's pthread_unistd.h had a bug that mistakenly (because there is
|
|
no support for the *lockfile() functions required[1]) defined
|
|
_POSIX_THREAD_SAFE_FUNCTIONS and that was being worked around since
|
|
3ecd153a3b (compat/mingw: support MSys2-based MinGW build, 2016-01-14).
|
|
|
|
The bug was fixed in winphtreads, but as a side effect, leaves the
|
|
reentrant functions from time.h no longer visible and therefore breaks
|
|
the build.
|
|
|
|
Since the intention all along was to avoid using the fallback functions,
|
|
formalize the use of POSIX by setting the corresponding feature flag and
|
|
compile out the implementation for the fallback functions.
|
|
|
|
[1] https://unix.org/whitepapers/reentrant.html
|
|
|
|
Signed-off-by: Carlo Marcelo Arenas Belón <carenas@gmail.com>
|
|
Acked-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
|
|
Signed-off-by: Junio C Hamano <gitster@pobox.com>
|
|
---
|
|
compat/mingw.c | 2 ++
|
|
git-compat-util.h | 4 +++-
|
|
2 files changed, 5 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/compat/mingw.c b/compat/mingw.c
|
|
index a43599841c6c6b..abb4d26ce940f3 100644
|
|
--- a/compat/mingw.c
|
|
+++ b/compat/mingw.c
|
|
@@ -1060,6 +1060,7 @@ int pipe(int filedes[2])
|
|
return 0;
|
|
}
|
|
|
|
+#ifndef __MINGW64__
|
|
struct tm *gmtime_r(const time_t *timep, struct tm *result)
|
|
{
|
|
if (gmtime_s(result, timep) == 0)
|
|
@@ -1073,6 +1074,7 @@ struct tm *localtime_r(const time_t *timep, struct tm *result)
|
|
return result;
|
|
return NULL;
|
|
}
|
|
+#endif
|
|
|
|
char *mingw_getcwd(char *pointer, int len)
|
|
{
|
|
diff --git a/git-compat-util.h b/git-compat-util.h
|
|
index 7d3db43f11d049..3da9f975e27712 100644
|
|
--- a/git-compat-util.h
|
|
+++ b/git-compat-util.h
|
|
@@ -127,7 +127,9 @@
|
|
/* Approximation of the length of the decimal representation of this type. */
|
|
#define decimal_length(x) ((int)(sizeof(x) * 2.56 + 0.5) + 1)
|
|
|
|
-#if defined(__sun__)
|
|
+#ifdef __MINGW64__
|
|
+#define _POSIX_C_SOURCE 1
|
|
+#elif defined(__sun__)
|
|
/*
|
|
* On Solaris, when _XOPEN_EXTENDED is set, its header file
|
|
* forces the programs to be XPG4v2, defeating any _XOPEN_SOURCE
|