svnno****@sourc*****
svnno****@sourc*****
2009年 6月 4日 (木) 20:52:11 JST
Revision: 3438 http://svn.sourceforge.jp/view?root=ttssh2&view=rev&rev=3438 Author: doda Date: 2009-06-04 20:52:11 +0900 (Thu, 04 Jun 2009) Log Message: ----------- éå½èªã¢ã¼ãã§ã®ãã¼ã«ã«ã¨ã³ã¼ãæ¹åããã Modified Paths: -------------- trunk/teraterm/ttpcmn/ttcmn.c -------------- next part -------------- Modified: trunk/teraterm/ttpcmn/ttcmn.c =================================================================== --- trunk/teraterm/ttpcmn/ttcmn.c 2009-06-04 11:16:55 UTC (rev 3437) +++ trunk/teraterm/ttpcmn/ttcmn.c 2009-06-04 11:52:11 UTC (rev 3438) @@ -1595,6 +1595,92 @@ return i; } +int FAR PASCAL TextEchoKR(PComVar cv, PCHAR B, int C) +{ + int i, TempLen; + WORD K; + char TempStr[11]; + int EchoCodeNew; + BYTE d; + BOOL Full, KanjiFlagNew; + + Full = FALSE; + i = 0; + while (! Full && (i < C)) { + TempLen = 0; + d = (BYTE)B[i]; + EchoCodeNew = cv->EchoCode; + + if (cv->EchoKanjiFlag) { + KanjiFlagNew = FALSE; + EchoCodeNew = IdKanji; + + K = (cv->EchoKanjiFirst << 8) + d; + // UTF-8ÖÌÏ·ðs¤B1`3oCgÜÅÌÎÈÌÅÓB + if (cv->KanjiCodeSend == IdUTF8) { + OutputTextUTF8(K, TempStr, &TempLen, cv); + } + else { + TempStr[TempLen] = HIBYTE(K); + TempStr[TempLen+1] = LOBYTE(K); + TempLen = TempLen + 2; + } + } + else if (IsDBCSLeadByteEx(*cv->CodePage, d)) { + KanjiFlagNew = TRUE; + cv->EchoKanjiFirst = d; + EchoCodeNew = IdKanji; + TempLen = 0; + } + else { + KanjiFlagNew = FALSE; + TempLen = 0; + EchoCodeNew = IdASCII; + + if (d==0x0d) { + TempStr[TempLen] = 0x0d; + TempLen++; + if (cv->CRSend==IdCRLF) { + TempStr[TempLen] = 0x0a; + TempLen++; + } + else if ((cv->CRSend==IdCR) && + cv->TelFlag && ! cv->TelBinSend) { + TempStr[TempLen] = 0; + TempLen++; + } + } + else { + TempStr[TempLen] = d; + TempLen++; + if (cv->TelFlag && (d==0xff)) { + TempStr[TempLen] = (char)0xff; + TempLen++; + } + } + } // if (cv->SendKanjiFlag) else if ... else ... end + + if (TempLen == 0) { + i++; + cv->EchoCode = EchoCodeNew; + cv->EchoKanjiFlag = KanjiFlagNew; + } + else { + Full = InBuffSize-cv->InBuffCount-TempLen < 0; + if (! Full) { + i++; + cv->EchoCode = EchoCodeNew; + cv->EchoKanjiFlag = KanjiFlagNew; + memcpy(&(cv->InBuff[cv->InBuffCount]),TempStr,TempLen); + cv->InBuffCount = cv->InBuffCount + TempLen; + } + } + + } // end of "while {}" + + return i; +} + int FAR PASCAL CommTextEcho(PComVar cv, PCHAR B, int C) { int i, TempLen; @@ -1614,6 +1700,9 @@ if (cv->Language==IdJapanese || cv->Language == IdUtf8) { return TextEchoJP(cv,B,C); } + else if (cv->Language == IdKorean) { + return TextEchoKR(cv,B,C); + } Full = FALSE; i = 0;