svnno****@sourc*****
svnno****@sourc*****
2009年 6月 10日 (水) 12:28:31 JST
Revision: 3462 http://svn.sourceforge.jp/view?root=ttssh2&view=rev&rev=3462 Author: doda Date: 2009-06-10 12:28:31 +0900 (Wed, 10 Jun 2009) Log Message: ----------- IsDBCSLeadByteEx を _isleadbyte_l に置き換え。 Locale/CodePage の対応があっているならば動作に近いがないので問題ないはず。 これによって CodePage の設定は使われなくなる。 動作の違いの確認は以下のコードで行った。 #include <stdio.h> #include <stdlib.h> #include <windows.h> #include <ctype.h> #include <locale.h> void leadbyte_test(char *locale_str, unsigned int codepage) { _locale_t locale; int i; printf("testing %s(%d)\n", locale_str, codepage); locale = _create_locale(LC_ALL, locale_str); for (i=0; i<256; i++) { if ((_isleadbyte_l(i, locale)!=0) != (IsDBCSLeadByteEx(codepage, i)!=0)) { printf("%02x: Fail\n", i); } } _free_locale(locale); } int main(void) { leadbyte_test("Japanese", 932); leadbyte_test("Korean", 949); leadbyte_test("cht", 950); leadbyte_test("chs", 936); leadbyte_test("english", 1252); return 0; } Modified Paths: -------------- trunk/teraterm/ttpcmn/ttcmn.c -------------- next part -------------- Modified: trunk/teraterm/ttpcmn/ttcmn.c =================================================================== --- trunk/teraterm/ttpcmn/ttcmn.c 2009-06-09 14:57:09 UTC (rev 3461) +++ trunk/teraterm/ttpcmn/ttcmn.c 2009-06-10 03:28:31 UTC (rev 3462) @@ -14,6 +14,7 @@ #include <windows.h> #include <tchar.h> #include <setupapi.h> +#include <locale.h> #include "compat_w95.h" @@ -1151,7 +1152,10 @@ int SendCodeNew; BYTE d; BOOL Full, KanjiFlagNew; + _locale_t locale; + locale = _create_locale(LC_ALL, cv->Locale); + Full = FALSE; i = 0; while (! Full && (i < C)) { @@ -1195,7 +1199,7 @@ TempStr[TempLen++] = LOBYTE(K); } } - else if (IsDBCSLeadByteEx(*cv->CodePage, d)) { + else if (_isleadbyte_l(d, locale)) { KanjiFlagNew = TRUE; cv->SendKanjiFirst = d; SendCodeNew = IdKanji; @@ -1301,6 +1305,8 @@ } // end of "while {}" + _free_locale(locale); + return i; } @@ -1411,7 +1417,10 @@ int EchoCodeNew; BYTE d; BOOL Full, KanjiFlagNew; + _locale_t locale; + locale = _create_locale(LC_ALL, cv->Locale); + Full = FALSE; i = 0; while (! Full && (i < C)) { @@ -1455,7 +1464,7 @@ TempStr[TempLen++] = LOBYTE(K); } } - else if (IsDBCSLeadByteEx(*cv->CodePage, d)) { + else if (_isleadbyte_l(d, locale)) { KanjiFlagNew = TRUE; cv->EchoKanjiFirst = d; EchoCodeNew = IdKanji; @@ -1562,6 +1571,8 @@ } // end of "while {}" + _free_locale(locale); + return i; }