From 95b3ff9f74ada220295128ceee34a8e191b93baa Mon Sep 17 00:00:00 2001 From: Piotr Caban Date: Thu, 16 Jul 2020 15:33:19 +0200 Subject: [PATCH] msvcrt: Add _ismbcupper_l implementation. Signed-off-by: Piotr Caban Signed-off-by: Alexandre Julliard --- .../api-ms-win-crt-multibyte-l1-1-0.spec | 2 +- .../api-ms-win-crt-private-l1-1-0.spec | 2 +- dlls/msvcr100/msvcr100.spec | 2 +- dlls/msvcr110/msvcr110.spec | 2 +- dlls/msvcr120/msvcr120.spec | 2 +- dlls/msvcr80/msvcr80.spec | 2 +- dlls/msvcr90/msvcr90.spec | 2 +- dlls/msvcrt/mbcs.c | 11 +++++++++-- dlls/msvcrt/msvcrt.h | 1 + dlls/msvcrt/msvcrt.spec | 2 +- dlls/ucrtbase/ucrtbase.spec | 4 ++-- 11 files changed, 20 insertions(+), 12 deletions(-) diff --git a/dlls/api-ms-win-crt-multibyte-l1-1-0/api-ms-win-crt-multibyte-l1-1-0.spec b/dlls/api-ms-win-crt-multibyte-l1-1-0/api-ms-win-crt-multibyte-l1-1-0.spec index 1131c6876e3..1034c209703 100644 --- a/dlls/api-ms-win-crt-multibyte-l1-1-0/api-ms-win-crt-multibyte-l1-1-0.spec +++ b/dlls/api-ms-win-crt-multibyte-l1-1-0/api-ms-win-crt-multibyte-l1-1-0.spec @@ -57,7 +57,7 @@ @ cdecl _ismbcsymbol(long) ucrtbase._ismbcsymbol @ stub _ismbcsymbol_l @ cdecl _ismbcupper(long) ucrtbase._ismbcupper -@ stub _ismbcupper_l +@ cdecl _ismbcupper_l(long ptr) ucrtbase._ismbcupper_l @ cdecl _ismbslead(ptr ptr) ucrtbase._ismbslead @ stub _ismbslead_l @ cdecl _ismbstrail(ptr ptr) ucrtbase._ismbstrail diff --git a/dlls/api-ms-win-crt-private-l1-1-0/api-ms-win-crt-private-l1-1-0.spec b/dlls/api-ms-win-crt-private-l1-1-0/api-ms-win-crt-private-l1-1-0.spec index b5b2aa783a3..61992d3a463 100644 --- a/dlls/api-ms-win-crt-private-l1-1-0/api-ms-win-crt-private-l1-1-0.spec +++ b/dlls/api-ms-win-crt-private-l1-1-0/api-ms-win-crt-private-l1-1-0.spec @@ -430,7 +430,7 @@ @ cdecl _o__ismbcsymbol(long) ucrtbase._o__ismbcsymbol @ stub _o__ismbcsymbol_l @ cdecl _o__ismbcupper(long) ucrtbase._o__ismbcupper -@ stub _o__ismbcupper_l +@ cdecl _o__ismbcupper_l(long ptr) ucrtbase._o__ismbcupper_l @ cdecl _o__ismbslead(ptr ptr) ucrtbase._o__ismbslead @ stub _o__ismbslead_l @ cdecl _o__ismbstrail(ptr ptr) ucrtbase._o__ismbstrail diff --git a/dlls/msvcr100/msvcr100.spec b/dlls/msvcr100/msvcr100.spec index cf1b51a4a93..43d92304aaa 100644 --- a/dlls/msvcr100/msvcr100.spec +++ b/dlls/msvcr100/msvcr100.spec @@ -1005,7 +1005,7 @@ @ cdecl _ismbcsymbol(long) @ stub _ismbcsymbol_l @ cdecl _ismbcupper(long) -@ stub _ismbcupper_l +@ cdecl _ismbcupper_l(long ptr) @ cdecl _ismbslead(ptr ptr) @ stub _ismbslead_l @ cdecl _ismbstrail(ptr ptr) diff --git a/dlls/msvcr110/msvcr110.spec b/dlls/msvcr110/msvcr110.spec index d3bd29417c5..0acb77474e0 100644 --- a/dlls/msvcr110/msvcr110.spec +++ b/dlls/msvcr110/msvcr110.spec @@ -1351,7 +1351,7 @@ @ cdecl _ismbcsymbol(long) @ stub _ismbcsymbol_l @ cdecl _ismbcupper(long) -@ stub _ismbcupper_l +@ cdecl _ismbcupper_l(long ptr) @ cdecl _ismbslead(ptr ptr) @ stub _ismbslead_l @ cdecl _ismbstrail(ptr ptr) diff --git a/dlls/msvcr120/msvcr120.spec b/dlls/msvcr120/msvcr120.spec index 604830ac602..26ebdd2445b 100644 --- a/dlls/msvcr120/msvcr120.spec +++ b/dlls/msvcr120/msvcr120.spec @@ -1356,7 +1356,7 @@ @ cdecl _ismbcsymbol(long) @ stub _ismbcsymbol_l @ cdecl _ismbcupper(long) -@ stub _ismbcupper_l +@ cdecl _ismbcupper_l(long ptr) @ cdecl _ismbslead(ptr ptr) @ stub _ismbslead_l @ cdecl _ismbstrail(ptr ptr) diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec index ca668cda120..93b5be804d7 100644 --- a/dlls/msvcr80/msvcr80.spec +++ b/dlls/msvcr80/msvcr80.spec @@ -677,7 +677,7 @@ @ cdecl _ismbcsymbol(long) @ stub _ismbcsymbol_l @ cdecl _ismbcupper(long) -@ stub _ismbcupper_l +@ cdecl _ismbcupper_l(long ptr) @ cdecl _ismbslead(ptr ptr) @ stub _ismbslead_l @ cdecl _ismbstrail(ptr ptr) diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec index 77a95142718..5dccd7cf306 100644 --- a/dlls/msvcr90/msvcr90.spec +++ b/dlls/msvcr90/msvcr90.spec @@ -655,7 +655,7 @@ @ cdecl _ismbcsymbol(long) @ stub _ismbcsymbol_l @ cdecl _ismbcupper(long) -@ stub _ismbcupper_l +@ cdecl _ismbcupper_l(long ptr) @ cdecl _ismbslead(ptr ptr) @ stub _ismbslead_l @ cdecl _ismbstrail(ptr ptr) diff --git a/dlls/msvcrt/mbcs.c b/dlls/msvcrt/mbcs.c index dccfce4448a..59dcbcc4fee 100644 --- a/dlls/msvcrt/mbcs.c +++ b/dlls/msvcrt/mbcs.c @@ -1491,13 +1491,20 @@ int CDECL _ismbclower(unsigned int ch) return _ismbclower_l( ch, NULL ); } +/********************************************************************* + * _ismbcupper_l (MSVCRT.@) + */ +int CDECL _ismbcupper_l(unsigned int ch, MSVCRT__locale_t locale) +{ + return MSVCRT__iswupper_l( msvcrt_mbc_to_wc_l(ch, locale), locale ); +} + /********************************************************************* * _ismbcupper (MSVCRT.@) */ int CDECL _ismbcupper(unsigned int ch) { - MSVCRT_wchar_t wch = msvcrt_mbc_to_wc( ch ); - return (get_char_typeW( wch ) & C1_LOWER); + return _ismbcupper_l( ch, NULL ); } /********************************************************************* diff --git a/dlls/msvcrt/msvcrt.h b/dlls/msvcrt/msvcrt.h index a5a1bf64bc4..492fdf26bc0 100644 --- a/dlls/msvcrt/msvcrt.h +++ b/dlls/msvcrt/msvcrt.h @@ -1206,6 +1206,7 @@ int __cdecl MSVCRT__iswdigit_l(MSVCRT_wchar_t, MSVCRT__locale_t); int __cdecl MSVCRT__iswgraph_l(MSVCRT_wchar_t, MSVCRT__locale_t); int __cdecl MSVCRT__iswalpha_l(MSVCRT_wchar_t, MSVCRT__locale_t); int __cdecl MSVCRT__iswlower_l(MSVCRT_wchar_t, MSVCRT__locale_t); +int __cdecl MSVCRT__iswupper_l(MSVCRT_wchar_t, MSVCRT__locale_t); /* Maybe one day we'll enable the invalid parameter handlers with the full set of information (msvcrXXd) * #define MSVCRT_INVALID_PMT(x) MSVCRT_call_invalid_parameter_handler(x, __FUNCTION__, __FILE__, __LINE__, 0) diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec index bcea57a7e32..5f68220d4b4 100644 --- a/dlls/msvcrt/msvcrt.spec +++ b/dlls/msvcrt/msvcrt.spec @@ -623,7 +623,7 @@ @ cdecl _ismbcsymbol(long) # stub _ismbcsymbol_l(long ptr) @ cdecl _ismbcupper(long) -# stub _ismbcupper_l(long ptr) +@ cdecl _ismbcupper_l(long ptr) @ cdecl _ismbslead(ptr ptr) # stub _ismbslead_l(long ptr) @ cdecl _ismbstrail(ptr ptr) diff --git a/dlls/ucrtbase/ucrtbase.spec b/dlls/ucrtbase/ucrtbase.spec index 68b61fece96..2492fec1e60 100644 --- a/dlls/ucrtbase/ucrtbase.spec +++ b/dlls/ucrtbase/ucrtbase.spec @@ -495,7 +495,7 @@ @ cdecl _ismbcsymbol(long) @ stub _ismbcsymbol_l @ cdecl _ismbcupper(long) -@ stub _ismbcupper_l +@ cdecl _ismbcupper_l(long ptr) @ cdecl _ismbslead(ptr ptr) @ stub _ismbslead_l @ cdecl _ismbstrail(ptr ptr) @@ -1094,7 +1094,7 @@ @ cdecl _o__ismbcsymbol(long) _ismbcsymbol @ stub _o__ismbcsymbol_l @ cdecl _o__ismbcupper(long) _ismbcupper -@ stub _o__ismbcupper_l +@ cdecl _o__ismbcupper_l(long ptr) _ismbcupper_l @ cdecl _o__ismbslead(ptr ptr) _ismbslead @ stub _o__ismbslead_l @ cdecl _o__ismbstrail(ptr ptr) _ismbstrail