Module: wine Branch: master Commit: 7984319248f717b032c28caa3c3538c91a1c0d21 URL: https://gitlab.winehq.org/wine/wine/-/commit/7984319248f717b032c28caa3c3538c...
Author: Bartosz Kosiorek gang65@poczta.onet.pl Date: Thu Oct 27 17:30:00 2022 +0200
msvcrt: Add _mbcjmstojis_l implementation.
---
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 | 23 +++++++++++++++++++---- dlls/msvcrt/msvcrt.spec | 2 +- dlls/ucrtbase/ucrtbase.spec | 4 ++-- include/msvcrt/mbstring.h | 1 + 9 files changed, 28 insertions(+), 12 deletions(-)
diff --git a/dlls/msvcr100/msvcr100.spec b/dlls/msvcr100/msvcr100.spec index b8539d8161c..fe5a97dace3 100644 --- a/dlls/msvcr100/msvcr100.spec +++ b/dlls/msvcr100/msvcr100.spec @@ -1080,7 +1080,7 @@ @ cdecl _mbcjistojms(long) @ cdecl _mbcjistojms_l(long ptr) @ cdecl _mbcjmstojis(long) -@ stub _mbcjmstojis_l +@ cdecl _mbcjmstojis_l(long ptr) @ cdecl _mbclen(ptr) @ cdecl _mbclen_l(ptr ptr) @ cdecl _mbctohira(long) diff --git a/dlls/msvcr110/msvcr110.spec b/dlls/msvcr110/msvcr110.spec index f2c8f79bc0e..401161fb0f9 100644 --- a/dlls/msvcr110/msvcr110.spec +++ b/dlls/msvcr110/msvcr110.spec @@ -1437,7 +1437,7 @@ @ cdecl _mbcjistojms(long) @ cdecl _mbcjistojms_l(long ptr) @ cdecl _mbcjmstojis(long) -@ stub _mbcjmstojis_l +@ cdecl _mbcjmstojis_l(long ptr) @ cdecl _mbclen(ptr) @ cdecl _mbclen_l(ptr ptr) @ cdecl _mbctohira(long) diff --git a/dlls/msvcr120/msvcr120.spec b/dlls/msvcr120/msvcr120.spec index 80d1345d2c8..191dcc49407 100644 --- a/dlls/msvcr120/msvcr120.spec +++ b/dlls/msvcr120/msvcr120.spec @@ -1448,7 +1448,7 @@ @ cdecl _mbcjistojms(long) @ cdecl _mbcjistojms_l(long ptr) @ cdecl _mbcjmstojis(long) -@ stub _mbcjmstojis_l +@ cdecl _mbcjmstojis_l(long ptr) @ cdecl _mbclen(ptr) @ cdecl _mbclen_l(ptr ptr) @ cdecl _mbctohira(long) diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec index 04141960357..05312dcf158 100644 --- a/dlls/msvcr80/msvcr80.spec +++ b/dlls/msvcr80/msvcr80.spec @@ -752,7 +752,7 @@ @ cdecl _mbcjistojms(long) @ cdecl _mbcjistojms_l(long ptr) @ cdecl _mbcjmstojis(long) -@ stub _mbcjmstojis_l +@ cdecl _mbcjmstojis_l(long ptr) @ cdecl _mbclen(ptr) @ cdecl _mbclen_l(ptr ptr) @ cdecl _mbctohira(long) diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec index 2e486c85a6d..92e55266ba5 100644 --- a/dlls/msvcr90/msvcr90.spec +++ b/dlls/msvcr90/msvcr90.spec @@ -730,7 +730,7 @@ @ cdecl _mbcjistojms(long) @ cdecl _mbcjistojms_l(long ptr) @ cdecl _mbcjmstojis(long) -@ stub _mbcjmstojis_l +@ cdecl _mbcjmstojis_l(long ptr) @ cdecl _mbclen(ptr) @ cdecl _mbclen_l(ptr ptr) @ cdecl _mbctohira(long) diff --git a/dlls/msvcrt/mbcs.c b/dlls/msvcrt/mbcs.c index 58e3772e5b7..ed1e47770f0 100644 --- a/dlls/msvcrt/mbcs.c +++ b/dlls/msvcrt/mbcs.c @@ -607,17 +607,24 @@ unsigned int CDECL _mbcjistojms(unsigned int c) }
/********************************************************************* - * _mbcjmstojis(MSVCRT.@) + * _mbcjmstojis_l(MSVCRT.@) * * Converts a sjis character to jis. */ -unsigned int CDECL _mbcjmstojis(unsigned int c) +unsigned int CDECL _mbcjmstojis_l(unsigned int c, _locale_t locale) { + pthreadmbcinfo mbcinfo; + + if(locale) + mbcinfo = locale->mbcinfo; + else + mbcinfo = get_mbcinfo(); + /* Conversion takes place only when codepage is 932. In all other cases, c is returned unchanged */ - if(get_mbcinfo()->mbcodepage == 932) + if(mbcinfo->mbcodepage == 932) { - if(_ismbclegal(c) && HIBYTE(c) < 0xf0) + if(_ismbclegal_l(c, locale) && HIBYTE(c) < 0xf0) { if(HIBYTE(c) >= 0xe0) c -= 0x4000; @@ -639,6 +646,14 @@ unsigned int CDECL _mbcjmstojis(unsigned int c) return c; }
+/********************************************************************* + * _mbcjmstojis(MSVCRT.@) + */ +unsigned int CDECL _mbcjmstojis(unsigned int c) +{ + return _mbcjmstojis_l(c, NULL); +} + /********************************************************************* * _mbsdec(MSVCRT.@) */ diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec index 94f23df0871..d37e51ef84f 100644 --- a/dlls/msvcrt/msvcrt.spec +++ b/dlls/msvcrt/msvcrt.spec @@ -697,7 +697,7 @@ @ cdecl _mbcjistojms (long) @ cdecl _mbcjistojms_l(long ptr) @ cdecl _mbcjmstojis(long) -# stub _mbcjmstojis_l(long ptr) +@ cdecl _mbcjmstojis_l(long ptr) @ cdecl _mbclen(ptr) @ cdecl _mbclen_l(ptr ptr) @ cdecl _mbctohira(long) diff --git a/dlls/ucrtbase/ucrtbase.spec b/dlls/ucrtbase/ucrtbase.spec index 819240a5015..77d6fea014a 100644 --- a/dlls/ucrtbase/ucrtbase.spec +++ b/dlls/ucrtbase/ucrtbase.spec @@ -595,7 +595,7 @@ @ cdecl _mbcjistojms(long) @ cdecl _mbcjistojms_l(long ptr) @ cdecl _mbcjmstojis(long) -@ stub _mbcjmstojis_l +@ cdecl _mbcjmstojis_l(long ptr) @ cdecl _mbclen(ptr) @ cdecl _mbclen_l(ptr ptr) @ cdecl _mbctohira(long) @@ -1165,7 +1165,7 @@ @ cdecl _o__mbcjistojms(long) _mbcjistojms @ cdecl _o__mbcjistojms_l(long ptr) _mbcjistojms_l @ cdecl _o__mbcjmstojis(long) _mbcjmstojis -@ stub _o__mbcjmstojis_l +@ cdecl _o__mbcjmstojis_l(long ptr) _mbcjmstojis_l @ cdecl _o__mbclen(ptr) _mbclen @ cdecl _o__mbclen_l(ptr ptr) _mbclen_l @ cdecl _o__mbctohira(long) _mbctohira diff --git a/include/msvcrt/mbstring.h b/include/msvcrt/mbstring.h index 1de3307326f..28a0e41f10d 100644 --- a/include/msvcrt/mbstring.h +++ b/include/msvcrt/mbstring.h @@ -43,6 +43,7 @@ _ACRTIMP int __cdecl _ismbcl0(unsigned int); _ACRTIMP int __cdecl _ismbcl1(unsigned int); _ACRTIMP int __cdecl _ismbcl2(unsigned int); _ACRTIMP int __cdecl _ismbclegal(unsigned int); +_ACRTIMP int __cdecl _ismbclegal_l(unsigned int, _locale_t); _ACRTIMP int __cdecl _ismbclower(unsigned int); _ACRTIMP int __cdecl _ismbcprint(unsigned int); _ACRTIMP int __cdecl _ismbcpunct(unsigned int);