Symbols __iswcsymf and __iswcsym are available in msvcr80+ and UCRT.
They are not available in msvcrt.dll.
---
mingw-w64-crt/Makefile.am | 4 ++++
mingw-w64-crt/misc/__iswcsym.c | 19 +++++++++++++++++++
mingw-w64-crt/misc/__iswcsymf.c | 19 +++++++++++++++++++
mingw-w64-headers/crt/ctype.h | 4 ++--
mingw-w64-headers/crt/wchar.h | 4 ++--
mingw-w64-headers/crt/wctype.h | 2 --
6 files changed, 46 insertions(+), 6 deletions(-)
create mode 100644 mingw-w64-crt/misc/__iswcsym.c
create mode 100644 mingw-w64-crt/misc/__iswcsymf.c
diff --git a/mingw-w64-crt/Makefile.am b/mingw-w64-crt/Makefile.am
index 98bd5a164e8d..12a1c8cfda91 100644
--- a/mingw-w64-crt/Makefile.am
+++ b/mingw-w64-crt/Makefile.am
@@ -320,6 +320,8 @@ src_msvcrt_add_vscanf=\
# Files included in libmsvcrt-os.a (for msvcrt.dll) on all archs
src_msvcrt=\
$(src_msvcrt_add_vscanf) \
+ misc/__iswcsym.c \
+ misc/__iswcsymf.c \
misc/__sys_errlist.c \
misc/__sys_nerr.c \
misc/_configthreadlocale.c \
@@ -776,6 +778,8 @@ src_pre_msvcr71=\
misc/_set_purecall_handler.c
src_pre_msvcr80=\
+ misc/__iswcsym.c \
+ misc/__iswcsymf.c \
misc/__sys_errlist.c \
misc/__sys_nerr.c \
misc/_configthreadlocale.c \
diff --git a/mingw-w64-crt/misc/__iswcsym.c b/mingw-w64-crt/misc/__iswcsym.c
new file mode 100644
index 000000000000..74d9e7ffdf4a
--- /dev/null
+++ b/mingw-w64-crt/misc/__iswcsym.c
@@ -0,0 +1,19 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ */
+
+#include <_mingw.h>
+#include <corecrt.h>
+
+#undef iswalnum
+_CRTIMP int __cdecl iswalnum(wint_t c);
+
+#undef __iswcsym
+int __cdecl __iswcsym(wint_t c);
+int __cdecl __iswcsym(wint_t c)
+{
+ return iswalnum(c) || c == L'_';
+}
+int (__cdecl *__MINGW_IMP_SYMBOL(__iswcsym))(wint_t) = __iswcsym;
diff --git a/mingw-w64-crt/misc/__iswcsymf.c b/mingw-w64-crt/misc/__iswcsymf.c
new file mode 100644
index 000000000000..18a234a0bed7
--- /dev/null
+++ b/mingw-w64-crt/misc/__iswcsymf.c
@@ -0,0 +1,19 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ */
+
+#include <_mingw.h>
+#include <corecrt.h>
+
+#undef iswalpha
+_CRTIMP int __cdecl iswalpha(wint_t c);
+
+#undef __iswcsymf
+int __cdecl __iswcsymf(wint_t c);
+int __cdecl __iswcsymf(wint_t c)
+{
+ return iswalpha(c) || c == L'_';
+}
+int (__cdecl *__MINGW_IMP_SYMBOL(__iswcsymf))(wint_t) = __iswcsymf;
diff --git a/mingw-w64-headers/crt/ctype.h b/mingw-w64-headers/crt/ctype.h
index 922dab67a6b3..08fc02b75823 100644
--- a/mingw-w64-headers/crt/ctype.h
+++ b/mingw-w64-headers/crt/ctype.h
@@ -138,6 +138,8 @@ int __cdecl isblank(int _C);
_CRTIMP wint_t __cdecl towupper(wint_t _C);
_CRTIMP wint_t __cdecl towlower(wint_t _C);
_CRTIMP int __cdecl iswctype(wint_t _C,wctype_t _Type);
+ _CRTIMP int __cdecl __iswcsymf(wint_t _C);
+ _CRTIMP int __cdecl __iswcsym(wint_t _C);
#if __MSVCRT_VERSION__ >= 0x800 || (__MSVCRT_VERSION__ == 0x600 &&
_WIN32_WINNT >= 0x0600)
/* These are available since msvcr80.dll (__MSVCRT_VERSION__ >= 0x800), and
in
* msvcrt.dll (__MSVCRT_VERSION__ == 0x600) since Vista (_WIN32_WINNT >=
0x0600). */
@@ -158,8 +160,6 @@ int __cdecl isblank(int _C);
_CRTIMP int __cdecl _isleadbyte_l(int _C,_locale_t _Locale);
# endif /* _CRT_USE_WINAPI_FAMILY_DESKTOP_APP */
_CRTIMP int __cdecl _iswctype_l(wint_t _C,wctype_t _Type,_locale_t _Locale);
- _CRTIMP int __cdecl __iswcsymf(wint_t _C);
- _CRTIMP int __cdecl __iswcsym(wint_t _C);
#endif
#if __MSVCRT_VERSION__ >= 0x800
/* These are only available since msvcr80.dll, never in msvcrt.dll. */
diff --git a/mingw-w64-headers/crt/wchar.h b/mingw-w64-headers/crt/wchar.h
index ca2c1fc70cb3..7cc047fe61d1 100644
--- a/mingw-w64-headers/crt/wchar.h
+++ b/mingw-w64-headers/crt/wchar.h
@@ -213,6 +213,8 @@ _CRTIMP FILE *__cdecl __acrt_iob_func(unsigned index);
wint_t __cdecl towupper(wint_t _C);
wint_t __cdecl towlower(wint_t _C);
int __cdecl iswctype(wint_t _C,wctype_t _Type);
+ _CRTIMP int __cdecl __iswcsymf(wint_t _C);
+ _CRTIMP int __cdecl __iswcsym(wint_t _C);
#if __MSVCRT_VERSION__ >= 0x800 || (__MSVCRT_VERSION__ == 0x600 &&
_WIN32_WINNT >= 0x0600)
/* These are available since msvcr80.dll (__MSVCRT_VERSION__ >= 0x800), and
in
* msvcrt.dll (__MSVCRT_VERSION__ == 0x600) since Vista (_WIN32_WINNT >=
0x0600). */
@@ -233,8 +235,6 @@ _CRTIMP FILE *__cdecl __acrt_iob_func(unsigned index);
_CRTIMP wint_t __cdecl _towupper_l(wint_t _C,_locale_t _Locale);
_CRTIMP wint_t __cdecl _towlower_l(wint_t _C,_locale_t _Locale);
_CRTIMP int __cdecl _iswctype_l(wint_t _C,wctype_t _Type,_locale_t _Locale);
- _CRTIMP int __cdecl __iswcsymf(wint_t _C);
- _CRTIMP int __cdecl __iswcsym(wint_t _C);
#endif
#if __MSVCRT_VERSION__ >= 0x800
/* These are only available since msvcr80.dll, never in msvcrt.dll. */
diff --git a/mingw-w64-headers/crt/wctype.h b/mingw-w64-headers/crt/wctype.h
index b45ba26c9e53..669b70c2897c 100644
--- a/mingw-w64-headers/crt/wctype.h
+++ b/mingw-w64-headers/crt/wctype.h
@@ -102,10 +102,8 @@ extern "C" {
wint_t __cdecl towupper(wint_t);
wint_t __cdecl towlower(wint_t);
int __cdecl iswctype(wint_t,wctype_t);
-#if __MSVCRT_VERSION__ >= 0x800
_CRTIMP int __cdecl __iswcsymf(wint_t);
_CRTIMP int __cdecl __iswcsym(wint_t);
-#endif
int __cdecl is_wctype(wint_t,wctype_t);
#if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || !defined
(NO_OLDNAMES) || defined (__cplusplus)
int __cdecl iswblank(wint_t _C);
--
2.20.1
_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public