Thread (1 message) 1 message, 1 author, 2021-11-26

Re: [PATCH] mingw: avoid fallback for {local,gm}time_r()

From: Junio C Hamano <hidden>
Date: 2021-11-26 06:30:27

"Carlo Marcelo Arenas Belón via GitGitGadget"
[off-list ref] writes:
From: =?UTF-8?q?Carlo=20Marcelo=20Arenas=20Bel=C3=B3n?= <redacted>

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 sideeffect, leaves the
s/the/The/; s/sideeffect/side effect/;
reentrant functions from time.h not longer visible and therefore breaks
s/not longer/no longer/
the build.

since the intention all along was to avoid using the fallback functions,
s/since/Since/;
formalize the use of POSIX by setting the corresponding feature flag and
to make the intention clearer compile out the fallback functions.
I cannot parse the last sentence.  I am guessing "... make the
intention clearer by compiling out..." or "... make the intention
clearer to compile out...", but I cannot quite tell.
quoted hunk
diff --git a/compat/mingw.c b/compat/mingw.c
index 9e0cd1e097f..e14f2d5f77c 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 d70ce142861..c8005db3fb6 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
base-commit: cd3e606211bb1cf8bc57f7d76bab98cc17a150bc
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help