Re: [PATCH] Use mingw.h declarations for gmtime_r/localtime_r on msys2

From
Mike Hommey <hidden>
Date
2021-11-19 07:24:09
Reply to
Carlo Arenas, 2021-11-19
On Thu, Nov 18, 2021 at 09:38:00PM -0800, Carlo Arenas wrote:
On Thu, Nov 18, 2021 at 1:05 AM Mike Hommey [off-list ref] wrote:
quoted
Oh my bad, I overlooked an important part of the build log: it was a
mingw32 build, not minwg64. Mingw64 builds fine without
-D_POSIX_THREAD_SAFE_FUNCTIONS=200112L. Mingw32 requires it (because
the ifdefs are for mingw64)
Can you confirm the version of the winpthread library in your SDK? and
output of your headers, or something that could back up that statement
of "ifdefs are for mingw64"?.
The ifdef around gmtime_r and localtime_r in mingw.h is for __MINGW64_VERSION_MAJOR.
The ifdef around _POSIX_C_SOURCE in git-compat-util.h is for
__MINGW64__.
I'd imagine that plays a role.

winpthreads version on my system is 9.0.0.6246.ae63cde27-1.

The /mingw32/i686-w64-mingw32/include/time.h section related to gtime_r
and localtime_r starts with:
#if defined(_POSIX_C_SOURCE) && !defined(_POSIX_THREAD_SAFE_FUNCTIONS)
#define _POSIX_THREAD_SAFE_FUNCTIONS 200112L
#endif
#ifdef _POSIX_THREAD_SAFE_FUNCTIONS
__forceinline struct tm *__CRTDECL localtime_r(const time_t *_Time, struct tm *_Tm) {
  return localtime_s(_Tm, _Time) ? NULL : _Tm;
}
__forceinline struct tm *__CRTDECL gmtime_r(const time_t *_Time, struct tm *_Tm) {
  return gmtime_s(_Tm, _Time) ? NULL : _Tm;
}
Mike
Thread (11 messages) 11 messages, 2 authors, 2021-11-19
Keyboard shortcuts
hback out one level
jnext message in thread / next series-diff position
kprevious message in thread / previous series-diff position
ldrill in
Escclose help / fold thread tree
?toggle this help