Akihiro Sagawa : msvcrt: Add _mbctokata implementation.
Alexandre Julliard
julliard at wine.codeweavers.com
Mon Mar 16 10:34:24 CDT 2015
Module: wine
Branch: master
Commit: cd5a76b182dad336b007746d8cf744154b1a8966
URL: http://source.winehq.org/git/wine.git/?a=commit;h=cd5a76b182dad336b007746d8cf744154b1a8966
Author: Akihiro Sagawa <sagawa.aki at gmail.com>
Date: Mon Mar 16 21:48:48 2015 +0900
msvcrt: Add _mbctokata implementation.
---
dlls/msvcr100/msvcr100.spec | 2 +-
dlls/msvcr110/msvcr110.spec | 2 +-
dlls/msvcr120/msvcr120.spec | 2 +-
dlls/msvcr70/msvcr70.spec | 2 +-
dlls/msvcr71/msvcr71.spec | 2 +-
dlls/msvcr80/msvcr80.spec | 2 +-
dlls/msvcr90/msvcr90.spec | 2 +-
dlls/msvcrt/mbcs.c | 12 ++++++++++++
dlls/msvcrt/msvcrt.spec | 2 +-
dlls/msvcrt/tests/string.c | 30 ++++++++++++++++++++++++++++++
10 files changed, 50 insertions(+), 8 deletions(-)
diff --git a/dlls/msvcr100/msvcr100.spec b/dlls/msvcr100/msvcr100.spec
index 7ca7f8c..b7d4945 100644
--- a/dlls/msvcr100/msvcr100.spec
+++ b/dlls/msvcr100/msvcr100.spec
@@ -1084,7 +1084,7 @@
@ stub _mbclen_l
@ cdecl _mbctohira(long)
@ stub _mbctohira_l
-@ stub _mbctokata(long)
+@ cdecl _mbctokata(long)
@ stub _mbctokata_l
@ cdecl _mbctolower(long)
@ stub _mbctolower_l
diff --git a/dlls/msvcr110/msvcr110.spec b/dlls/msvcr110/msvcr110.spec
index d4459a6..c7222b9 100644
--- a/dlls/msvcr110/msvcr110.spec
+++ b/dlls/msvcr110/msvcr110.spec
@@ -1442,7 +1442,7 @@
@ stub _mbclen_l
@ cdecl _mbctohira(long)
@ stub _mbctohira_l
-@ stub _mbctokata(long)
+@ cdecl _mbctokata(long)
@ stub _mbctokata_l
@ cdecl _mbctolower(long)
@ stub _mbctolower_l
diff --git a/dlls/msvcr120/msvcr120.spec b/dlls/msvcr120/msvcr120.spec
index 03fff1a..c7df42f 100644
--- a/dlls/msvcr120/msvcr120.spec
+++ b/dlls/msvcr120/msvcr120.spec
@@ -1450,7 +1450,7 @@
@ stub _mbclen_l
@ cdecl _mbctohira(long)
@ stub _mbctohira_l
-@ stub _mbctokata(long)
+@ cdecl _mbctokata(long)
@ stub _mbctokata_l
@ cdecl _mbctolower(long)
@ stub _mbctolower_l
diff --git a/dlls/msvcr70/msvcr70.spec b/dlls/msvcr70/msvcr70.spec
index 9881eca..c494ce0 100644
--- a/dlls/msvcr70/msvcr70.spec
+++ b/dlls/msvcr70/msvcr70.spec
@@ -424,7 +424,7 @@
@ cdecl _mbcjmstojis(long)
@ cdecl _mbclen(ptr)
@ cdecl _mbctohira(long)
-@ stub _mbctokata(long)
+@ cdecl _mbctokata(long)
@ cdecl _mbctolower(long)
@ cdecl _mbctombb(long)
@ cdecl _mbctoupper(long)
diff --git a/dlls/msvcr71/msvcr71.spec b/dlls/msvcr71/msvcr71.spec
index 6e1d309..f8a52f1 100644
--- a/dlls/msvcr71/msvcr71.spec
+++ b/dlls/msvcr71/msvcr71.spec
@@ -419,7 +419,7 @@
@ cdecl _mbcjmstojis(long)
@ cdecl _mbclen(ptr)
@ cdecl _mbctohira(long)
-@ stub _mbctokata(long)
+@ cdecl _mbctokata(long)
@ cdecl _mbctolower(long)
@ cdecl _mbctombb(long)
@ cdecl _mbctoupper(long)
diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec
index 5709319..8b40e2e 100644
--- a/dlls/msvcr80/msvcr80.spec
+++ b/dlls/msvcr80/msvcr80.spec
@@ -757,7 +757,7 @@
@ stub _mbclen_l
@ cdecl _mbctohira(long)
@ stub _mbctohira_l
-@ stub _mbctokata(long)
+@ cdecl _mbctokata(long)
@ stub _mbctokata_l
@ cdecl _mbctolower(long)
@ stub _mbctolower_l
diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec
index 167e0f9..5c65b2f 100644
--- a/dlls/msvcr90/msvcr90.spec
+++ b/dlls/msvcr90/msvcr90.spec
@@ -734,7 +734,7 @@
@ stub _mbclen_l
@ cdecl _mbctohira(long)
@ stub _mbctohira_l
-@ stub _mbctokata(long)
+@ cdecl _mbctokata(long)
@ stub _mbctokata_l
@ cdecl _mbctolower(long)
@ stub _mbctolower_l
diff --git a/dlls/msvcrt/mbcs.c b/dlls/msvcrt/mbcs.c
index b76157f..044c2bd 100644
--- a/dlls/msvcrt/mbcs.c
+++ b/dlls/msvcrt/mbcs.c
@@ -2288,3 +2288,15 @@ unsigned int CDECL _mbctohira(unsigned int c)
return (c - 0x8340 - (c >= 0x837f ? 1 : 0)) + 0x829f;
return c;
}
+
+/*********************************************************************
+ * _mbctokata (MSVCRT.@)
+ *
+ * Converts a sjis hiragana character to katakana.
+ */
+unsigned int CDECL _mbctokata(unsigned int c)
+{
+ if(_ismbchira(c))
+ return (c - 0x829f) + 0x8340 + (c >= 0x82de ? 1 : 0);
+ return c;
+}
diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec
index ea7dd90..1f2a8ce 100644
--- a/dlls/msvcrt/msvcrt.spec
+++ b/dlls/msvcrt/msvcrt.spec
@@ -700,7 +700,7 @@
# stub _mbclen_l(ptr ptr)
@ cdecl _mbctohira(long)
# stub _mbctohira_l(long ptr)
-@ stub _mbctokata(long)
+@ cdecl _mbctokata(long)
# stub _mbctokata_l(long ptr)
@ cdecl _mbctolower(long)
# stub _mbctolower_l(long ptr)
diff --git a/dlls/msvcrt/tests/string.c b/dlls/msvcrt/tests/string.c
index 4e48cd2..cf609f7 100644
--- a/dlls/msvcrt/tests/string.c
+++ b/dlls/msvcrt/tests/string.c
@@ -1172,6 +1172,35 @@ static void test_mbctohira(void)
_setmbcp(prev_cp);
}
+static void test_mbctokata(void)
+{
+ static const unsigned int mbckata_932[][2] = {
+ {0x8152, 0x8152}, {0x8153, 0x8153}, {0x8154, 0x8154}, {0x8155, 0x8155},
+ {0x833f, 0x833f}, {0x829f, 0x8340}, {0x82dd, 0x837e}, {0x837f, 0x837f},
+ {0x82de, 0x8380}, {0x8394, 0x8394}, {0x8397, 0x8397},
+ {0xa5, 0xa5}, {0xb0, 0xb0}, {0xdd, 0xdd} };
+ unsigned int i;
+ unsigned int prev_cp = _getmbcp();
+
+ _setmbcp(_MB_CP_SBCS);
+ for (i = 0; i < sizeof(mbckata_932)/sizeof(mbckata_932[0]); i++)
+ {
+ int ret, exp = mbckata_932[i][0];
+ ret = _mbctokata(mbckata_932[i][0]);
+ ok(ret == exp, "Expected 0x%x, got 0x%x\n", exp, ret);
+ }
+
+ _setmbcp(932);
+ for (i = 0; i < sizeof(mbckata_932)/sizeof(mbckata_932[0]); i++)
+ {
+ unsigned int ret, exp;
+ ret = _mbctokata(mbckata_932[i][0]);
+ exp = mbckata_932[i][1];
+ ok(ret == exp, "Expected 0x%x, got 0x%x\n", exp, ret);
+ }
+ _setmbcp(prev_cp);
+}
+
static void test_mbbtombc(void)
{
static const unsigned int mbbmbc[][2] = {
@@ -2919,6 +2948,7 @@ START_TEST(string)
test_mbcjisjms();
test_mbcjmsjis();
test_mbctohira();
+ test_mbctokata();
test_mbbtombc();
test_mbctombb();
test_ismbckata();
More information about the wine-cvs
mailing list