summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlo Marcelo Arenas Belón <carenas@gmail.com>2021-11-27 10:15:32 (GMT)
committerJunio C Hamano <gitster@pobox.com>2021-11-28 07:49:20 (GMT)
commit9e12400da8d2b71e1fd7ccaa8f3c9cdbc52df554 (patch)
tree920aae481d587dcd40c68d184ff0f8380e0b065b
parente9d7761bb94f20acc98824275e317fa82436c25d (diff)
downloadgit-9e12400da8d2b71e1fd7ccaa8f3c9cdbc52df554.zip
git-9e12400da8d2b71e1fd7ccaa8f3c9cdbc52df554.tar.gz
git-9e12400da8d2b71e1fd7ccaa8f3c9cdbc52df554.tar.bz2
mingw: avoid fallback for {local,gm}time_r()
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>
-rw-r--r--compat/mingw.c2
-rw-r--r--git-compat-util.h4
2 files changed, 5 insertions, 1 deletions
diff --git a/compat/mingw.c b/compat/mingw.c
index 9e0cd1e..e14f2d5 100644
--- a/compat/mingw.c
+++ b/compat/mingw.c
@@ -1083,6 +1083,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)
@@ -1096,6 +1097,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 d70ce14..c8005db 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