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

Reply via email to