This patch removes inline and macro definitions of str[n]casecmp from string.h. Both str[n]casecmp already defined as aliases for CRT's _str[n]icmp in crt-aliases.def.in.
In general, I would like to look more through mingw-w64's header files and remove such definitions wherever possible. I think we should avoid providing inline definitions for functions which are not provided by CRTs, since applications may want to define functions with these names (even if those are POSIX names, since Windows is not POSIX it should be allowed). Results of GitHub CI for this single patch are here[1]. - Kirill Makurin [1] https://github.com/maiddaisuki/mingw-w64/actions/runs/20323047405
From 4559b4cbc92f59111cb8a08182b8d2b57f059654 Mon Sep 17 00:00:00 2001 From: Kirill Makurin <[email protected]> Date: Thu, 18 Dec 2025 10:32:03 +0900 Subject: [PATCH 1/9] crt: remove inline definitions of str[n]casecmp from string.h mingw-w64 already defines str[n]casecamp as an alias for _str[n]icmp in crt-aliases.def.in. There is no need to define them as inline wrappers or override them through macros. Removing inline definition from string.h also allows other packages to define functions named str[n]casecmp. Signed-off-by: Kirill Makurin <[email protected]> --- mingw-w64-headers/crt/string.h | 7 ------- 1 file changed, 7 deletions(-) diff --git a/mingw-w64-headers/crt/string.h b/mingw-w64-headers/crt/string.h index 1832e38ed..e947930ff 100644 --- a/mingw-w64-headers/crt/string.h +++ b/mingw-w64-headers/crt/string.h @@ -126,13 +126,6 @@ extern "C" { int __cdecl strnicmp(const char *_Str1,const char *_Str,size_t _MaxCount) __MINGW_ATTRIB_DEPRECATED_MSVC2005; int __cdecl strncasecmp (const char *, const char *, size_t); int __cdecl strcasecmp (const char *, const char *); -#ifndef __CRT__NO_INLINE - __CRT_INLINE int __cdecl strncasecmp (const char *__sz1, const char *__sz2, size_t __sizeMaxCompare) { return _strnicmp (__sz1, __sz2, __sizeMaxCompare); } - __CRT_INLINE int __cdecl strcasecmp (const char *__sz1, const char *__sz2) { return _stricmp (__sz1, __sz2); } -#else -#define strncasecmp _strnicmp -#define strcasecmp _stricmp -#endif /* !__CRT__NO_INLINE */ char *__cdecl strnset(char *_Str,int _Val,size_t _MaxCount) __MINGW_ATTRIB_DEPRECATED_MSVC2005; char *__cdecl strrev(char *_Str) __MINGW_ATTRIB_DEPRECATED_MSVC2005; char *__cdecl strset(char *_Str,int _Val) __MINGW_ATTRIB_DEPRECATED_MSVC2005; -- 2.51.0.windows.1
_______________________________________________ Mingw-w64-public mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/mingw-w64-public
