From 0800572257a1da4cb8a18c0017c3057e262903aa Mon Sep 17 00:00:00 2001 From: Akihiro Sagawa Date: Thu, 15 Mar 2012 23:41:30 +0900 Subject: [PATCH] msvcrt: Add semi stub _mbcjmstojis implementation. --- dlls/msvcrt/mbcs.c | 17 +++++++++++++++++ dlls/msvcrt/msvcrt.spec | 2 +- dlls/msvcrt/tests/string.c | 33 +++++++++++++++++++++++++++++++++ 3 files changed, 51 insertions(+), 1 deletion(-) diff --git a/dlls/msvcrt/mbcs.c b/dlls/msvcrt/mbcs.c index a8cd2372cc..cde1e06295 100644 --- a/dlls/msvcrt/mbcs.c +++ b/dlls/msvcrt/mbcs.c @@ -463,6 +463,23 @@ unsigned int CDECL _mbcjistojms(unsigned int c) return c; } +/********************************************************************* + * _mbcjmstojis(MSVCRT.@) + * + * Converts a sjis character to jis. + */ +unsigned int CDECL _mbcjmstojis(unsigned int c) +{ + /* Conversion takes place only when codepage is 932. + In all other cases, c is returned unchanged */ + if(get_mbcinfo()->mbcodepage == 932) + { + FIXME("(%x): stub\n", c); + } + + return c; +} + /********************************************************************* * _mbsdec(MSVCRT.@) */ diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec index 393939e30e..04ef9ad5c1 100644 --- a/dlls/msvcrt/msvcrt.spec +++ b/dlls/msvcrt/msvcrt.spec @@ -664,7 +664,7 @@ # stub _mbccpy_s_l(ptr long ptr str ptr) @ cdecl _mbcjistojms (long) # stub _mbcjistojms_l(long ptr) -@ stub _mbcjmstojis(long) +@ cdecl _mbcjmstojis(long) # stub _mbcjmstojis_l(long ptr) @ cdecl _mbclen(ptr) # stub _mbclen_l(ptr ptr) diff --git a/dlls/msvcrt/tests/string.c b/dlls/msvcrt/tests/string.c index 8aa7a81324..659afc2e5f 100644 --- a/dlls/msvcrt/tests/string.c +++ b/dlls/msvcrt/tests/string.c @@ -880,6 +880,38 @@ static void test_mbcjisjms(void) } while(jisjms[i++][0] != 0); } +static void test_mbcjmsjis(void) +{ + /* List of value-pairs to test. The test assumes the last pair to be {0, ..} */ + unsigned int jmsjis[][2] = { {0x80fc, 0}, {0x813f, 0}, {0x8140, 0x2121}, + {0x817e, 0x215f}, {0x817f, 0}, {0x8180, 0x2160}, + {0x819e, 0x217e}, {0x819f, 0x2221}, {0x81fc, 0x227e}, + {0x81fd, 0}, {0x9ffc, 0x5e7e}, {0x9ffd, 0}, + {0xa040, 0}, {0xdffc, 0}, {0xe040, 0x5f21}, + {0xeffc, 0x7e7e}, {0xf040, 0}, {0x21, 0}, {0, 0}}; + int cp[] = { 932, 936, 939, 950, 1361, _MB_CP_SBCS }; + unsigned int i, j; + int prev_cp = _getmbcp(); + + for (i = 0; i < sizeof(cp)/sizeof(cp[0]); i++) + { + _setmbcp(cp[i]); + for (j = 0; jmsjis[j][0] != 0; j++) + { + unsigned int ret, exp; + ret = _mbcjmstojis(jmsjis[j][0]); + exp = (cp[i] == 932) ? jmsjis[j][1] : jmsjis[j][0]; + if (cp[i] == 932) + todo_wine ok(ret == exp, "Expected 0x%x, got 0x%x (0x%x, codepage=%d)\n", + exp, ret, jmsjis[j][0], cp[i]); + else + ok(ret == exp, "Expected 0x%x, got 0x%x (0x%x, codepage=%d)\n", + exp, ret, jmsjis[j][0], cp[i]); + } + } + _setmbcp(prev_cp); +} + static void test_mbctombb(void) { static const unsigned int mbcmbb_932[][2] = { @@ -2105,6 +2137,7 @@ START_TEST(string) test_strcat_s(); test__mbsnbcpy_s(); test_mbcjisjms(); + test_mbcjmsjis(); test_mbctombb(); test_ismbclegal(); test_strtok(); -- 2.32.0.93.g670b81a890