From: Bartosz Kosiorek gang65@poczta.onet.pl
--- 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 | 21 ++++++++++++++++++--- dlls/msvcrt/msvcrt.spec | 2 +- dlls/ucrtbase/ucrtbase.spec | 2 +- 8 files changed, 25 insertions(+), 10 deletions(-)
diff --git a/dlls/msvcr100/msvcr100.spec b/dlls/msvcr100/msvcr100.spec index 34e8a98b146..f8d88e44f63 100644 --- a/dlls/msvcr100/msvcr100.spec +++ b/dlls/msvcr100/msvcr100.spec @@ -1069,7 +1069,7 @@ @ cdecl _makepath_s(ptr long str str str str) @ cdecl _malloc_crt(long) malloc @ cdecl _mbbtombc(long) -@ stub _mbbtombc_l +@ cdecl _mbbtombc_l(long ptr) @ cdecl _mbbtype(long long) @ cdecl _mbbtype_l(long long ptr) # extern _mbcasemap diff --git a/dlls/msvcr110/msvcr110.spec b/dlls/msvcr110/msvcr110.spec index 738adcb5ced..e7ebd746619 100644 --- a/dlls/msvcr110/msvcr110.spec +++ b/dlls/msvcr110/msvcr110.spec @@ -1426,7 +1426,7 @@ @ cdecl _makepath_s(ptr long str str str str) @ cdecl _malloc_crt(long) malloc @ cdecl _mbbtombc(long) -@ stub _mbbtombc_l +@ cdecl _mbbtombc_l(long ptr) @ cdecl _mbbtype(long long) @ cdecl _mbbtype_l(long long ptr) # extern _mbcasemap diff --git a/dlls/msvcr120/msvcr120.spec b/dlls/msvcr120/msvcr120.spec index 8aa35a0243b..721f4ec44d9 100644 --- a/dlls/msvcr120/msvcr120.spec +++ b/dlls/msvcr120/msvcr120.spec @@ -1437,7 +1437,7 @@ @ cdecl _makepath_s(ptr long str str str str) @ cdecl _malloc_crt(long) malloc @ cdecl _mbbtombc(long) -@ stub _mbbtombc_l +@ cdecl _mbbtombc_l(long ptr) @ cdecl _mbbtype(long long) @ cdecl _mbbtype_l(long long ptr) # extern _mbcasemap diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec index 962a7bd5c63..b20b680ddb8 100644 --- a/dlls/msvcr80/msvcr80.spec +++ b/dlls/msvcr80/msvcr80.spec @@ -741,7 +741,7 @@ @ cdecl _makepath_s(ptr long str str str str) @ cdecl _malloc_crt(long) malloc @ cdecl _mbbtombc(long) -@ stub _mbbtombc_l +@ cdecl _mbbtombc_l(long ptr) @ cdecl _mbbtype(long long) @ cdecl _mbbtype_l(long long ptr) # extern _mbcasemap diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec index 52bd096d5d4..cd83242f574 100644 --- a/dlls/msvcr90/msvcr90.spec +++ b/dlls/msvcr90/msvcr90.spec @@ -719,7 +719,7 @@ @ cdecl _makepath_s(ptr long str str str str) @ cdecl _malloc_crt(long) malloc @ cdecl _mbbtombc(long) -@ stub _mbbtombc_l +@ cdecl _mbbtombc_l(long ptr) @ cdecl _mbbtype(long long) @ cdecl _mbbtype_l(long long ptr) # extern _mbcasemap diff --git a/dlls/msvcrt/mbcs.c b/dlls/msvcrt/mbcs.c index c1c92859522..2b318511e06 100644 --- a/dlls/msvcrt/mbcs.c +++ b/dlls/msvcrt/mbcs.c @@ -1512,11 +1512,18 @@ unsigned char* CDECL _mbstok(unsigned char *str, const unsigned char *delim) }
/********************************************************************* - * _mbbtombc(MSVCRT.@) + * _mbbtombc_l(MSVCRT.@) */ -unsigned int CDECL _mbbtombc(unsigned int c) +unsigned int CDECL _mbbtombc_l(unsigned int c, _locale_t locale) { - if(get_mbcinfo()->mbcodepage == 932) + pthreadmbcinfo mbcinfo; + + if(locale) + mbcinfo = locale->mbcinfo; + else + mbcinfo = get_mbcinfo(); + + if(mbcinfo->mbcodepage == 932) { if(c >= 0x20 && c <= 0x7e) { if((c >= 0x41 && c <= 0x5a) || (c >= 0x61 && c <= 0x7a) || (c >= 0x30 && c <= 0x39)) @@ -1534,6 +1541,14 @@ unsigned int CDECL _mbbtombc(unsigned int c) return c; /* not Japanese or no MB char */ }
+/********************************************************************* + * _mbbtombc(MSVCRT.@) + */ +unsigned int CDECL _mbbtombc(unsigned int c) +{ + return _mbbtombc_l(c, NULL); +} + /********************************************************************* * _ismbbkana_l(MSVCRT.@) */ diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec index 6be1aa1006b..ecd614dd528 100644 --- a/dlls/msvcrt/msvcrt.spec +++ b/dlls/msvcrt/msvcrt.spec @@ -687,7 +687,7 @@ @ cdecl _makepath_s(ptr long str str str str) # stub _malloc_dbg(long long str long) @ cdecl _mbbtombc(long) -# stub _mbbtombc_l(long ptr) +@ cdecl _mbbtombc_l(long ptr) @ cdecl _mbbtype(long long) # extern _mbcasemap @ cdecl _mbccpy(ptr ptr) diff --git a/dlls/ucrtbase/ucrtbase.spec b/dlls/ucrtbase/ucrtbase.spec index 75ef6446635..9e0cbe7a89f 100644 --- a/dlls/ucrtbase/ucrtbase.spec +++ b/dlls/ucrtbase/ucrtbase.spec @@ -584,7 +584,7 @@ @ cdecl _makepath_s(ptr long str str str str) @ cdecl _malloc_base(long) @ cdecl _mbbtombc(long) -@ stub _mbbtombc_l +@ cdecl _mbbtombc_l(long ptr) @ cdecl _mbbtype(long long) @ cdecl _mbbtype_l(long long ptr) @ stub _mbcasemap