Always define __USE_MINGW_ANSI_STDIO as 0 or 1 in _mingw.h We check state of __USE_MINGW_ANSI_STDIO in many places. This patch checks all corner cases for __USE_MINGW_ANSI_STDIO in one place in _mingw.h and then we have easy and consistent check -- it is 0 or 1. Signed-off-by: Mateusz Brzostek <mateuszb@poczta.onet.pl> Signed-off-by: Liu Hao <lh_mouse@126.com>
diff --git a/mingw-w64-headers/crt/_mingw.h.in b/mingw-w64-headers/crt/_mingw.h.in index bbbd07d..c6b9d76 100644 --- a/mingw-w64-headers/crt/_mingw.h.in +++ b/mingw-w64-headers/crt/_mingw.h.in
@@ -428,6 +428,15 @@ # define __USE_MINGW_ANSI_STDIO 1 #endif +/* We are defining __USE_MINGW_ANSI_STDIO as 0 or 1 */ +#if !defined(__USE_MINGW_ANSI_STDIO) +#define __USE_MINGW_ANSI_STDIO 0 /* was not defined so it should be 0 */ +#elif (__USE_MINGW_ANSI_STDIO + 0) != 0 || (1 - __USE_MINGW_ANSI_STDIO - 1) == 2 +#define __USE_MINGW_ANSI_STDIO 1 /* was defined as nonzero or empty so it should be 1 */ +#else +#define __USE_MINGW_ANSI_STDIO 0 /* was defined as (int)zero and non-empty so it should be 0 */ +#endif + /* _dowildcard is an int that controls the globbing of the command line. * The MinGW32 (mingw.org) runtime calls it _CRT_glob, so we are adding * a compatibility definition here: you can use either of _CRT_glob or
diff --git a/mingw-w64-headers/crt/inttypes.h b/mingw-w64-headers/crt/inttypes.h index 500df7d..23dcd42 100644 --- a/mingw-w64-headers/crt/inttypes.h +++ b/mingw-w64-headers/crt/inttypes.h
@@ -29,7 +29,7 @@ * The non-standard I64 length specifier causes warning in GCC, * but understood by MS runtime functions. */ -#if __MSVCRT_VERSION__ >= 0x1400 || (defined(__USE_MINGW_ANSI_STDIO) && ((__USE_MINGW_ANSI_STDIO + 0) != 0)) +#if __MSVCRT_VERSION__ >= 0x1400 || __USE_MINGW_ANSI_STDIO #define PRId64 "lld" #define PRIi64 "lli" #define PRIo64 "llo"
diff --git a/mingw-w64-headers/crt/stdio.h b/mingw-w64-headers/crt/stdio.h index d065923..e412b2d 100644 --- a/mingw-w64-headers/crt/stdio.h +++ b/mingw-w64-headers/crt/stdio.h
@@ -221,7 +221,7 @@ #if defined(__clang__) #define __MINGW_PRINTF_FORMAT printf #define __MINGW_SCANF_FORMAT scanf -#elif defined(__USE_MINGW_ANSI_STDIO) +#elif __USE_MINGW_ANSI_STDIO #define __MINGW_PRINTF_FORMAT gnu_printf #define __MINGW_SCANF_FORMAT gnu_scanf #else @@ -735,7 +735,7 @@ _CRTIMP int __cdecl _vsnprintf(char * __restrict__ _Dest,size_t _Count,const char * __restrict__ _Format,va_list _Args) __MINGW_ATTRIB_DEPRECATED_SEC_WARN; #endif -#if !defined (__USE_MINGW_ANSI_STDIO) || __USE_MINGW_ANSI_STDIO == 0 +#if __USE_MINGW_ANSI_STDIO == 0 #if __MSVCRT_VERSION__ >= 0x1400 #ifdef __GNUC__ @@ -1140,7 +1140,7 @@ } int __cdecl _vsnwprintf(wchar_t * __restrict__ _Dest,size_t _Count,const wchar_t * __restrict__ _Format,va_list _Args) __MINGW_ATTRIB_DEPRECATED_SEC_WARN; -#if !defined (__USE_MINGW_ANSI_STDIO) || __USE_MINGW_ANSI_STDIO == 0 +#if __USE_MINGW_ANSI_STDIO == 0 __mingw_ovr int snwprintf (wchar_t * __restrict__ s, size_t n, const wchar_t * __restrict__ format, ...) { @@ -1190,7 +1190,7 @@ #ifndef __NO_ISOCEXT /* externs in libmingwex.a */ -#if !defined (__USE_MINGW_ANSI_STDIO) || __USE_MINGW_ANSI_STDIO == 0 +#if __USE_MINGW_ANSI_STDIO == 0 #pragma push_macro("snwprintf") #pragma push_macro("vsnwprintf") # undef snwprintf
diff --git a/mingw-w64-headers/crt/stdlib.h b/mingw-w64-headers/crt/stdlib.h index 4d9c1d9..22b53b9 100644 --- a/mingw-w64-headers/crt/stdlib.h +++ b/mingw-w64-headers/crt/stdlib.h
@@ -9,7 +9,7 @@ #include <crtdefs.h> #include <limits.h> -#if defined (__USE_MINGW_ANSI_STDIO) && ((__USE_MINGW_ANSI_STDIO + 0) != 0) && !defined (__USE_MINGW_STRTOX) +#if __USE_MINGW_ANSI_STDIO && !defined (__USE_MINGW_STRTOX) #define __USE_MINGW_STRTOX 1 #endif
diff --git a/mingw-w64-headers/crt/wchar.h b/mingw-w64-headers/crt/wchar.h index 3b79a89..53f556d 100644 --- a/mingw-w64-headers/crt/wchar.h +++ b/mingw-w64-headers/crt/wchar.h
@@ -8,7 +8,7 @@ #include <crtdefs.h> -#if defined (__USE_MINGW_ANSI_STDIO) && ((__USE_MINGW_ANSI_STDIO + 0) != 0) && !defined (__USE_MINGW_STRTOX) +#if __USE_MINGW_ANSI_STDIO && !defined (__USE_MINGW_STRTOX) #define __USE_MINGW_STRTOX 1 #endif @@ -808,7 +808,7 @@ return __stdio_common_vswprintf(UCRTBASE_PRINTF_DEFAULT_WIDE | UCRTBASE_PRINTF_LEGACY_VSPRINTF_NULL_TERMINATION, _Dest, _Count, _Format, NULL, _Args); } -#if !defined (__USE_MINGW_ANSI_STDIO) || __USE_MINGW_ANSI_STDIO == 0 +#if __USE_MINGW_ANSI_STDIO == 0 __mingw_ovr int snwprintf (wchar_t * __restrict__ s, size_t n, const wchar_t * __restrict__ format, ...) { @@ -836,7 +836,7 @@ #ifndef __NO_ISOCEXT /* externs in libmingwex.a */ -#if !defined (__USE_MINGW_ANSI_STDIO) || __USE_MINGW_ANSI_STDIO == 0 +#if __USE_MINGW_ANSI_STDIO == 0 #pragma push_macro("snwprintf") #pragma push_macro("vsnwprintf") # undef snwprintf