Develop and Download Open Source Software

Browse Subversion Repository

Diff of /trunk/teraterm/ttpcmn/ttcmn.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 3419 by doda, Mon May 25 12:45:32 2009 UTC revision 3438 by doda, Thu Jun 4 11:52:11 2009 UTC
# Line 1595  int FAR PASCAL TextEchoJP(PComVar cv, PC Line 1595  int FAR PASCAL TextEchoJP(PComVar cv, PC
1595          return i;          return i;
1596  }  }
1597    
1598    int FAR PASCAL TextEchoKR(PComVar cv, PCHAR B, int C)
1599    {
1600            int i, TempLen;
1601            WORD K;
1602            char TempStr[11];
1603            int EchoCodeNew;
1604            BYTE d;
1605            BOOL Full, KanjiFlagNew;
1606    
1607            Full = FALSE;
1608            i = 0;
1609            while (! Full && (i < C)) {
1610                    TempLen = 0;
1611                    d = (BYTE)B[i];
1612                    EchoCodeNew = cv->EchoCode;
1613    
1614                    if (cv->EchoKanjiFlag) {
1615                            KanjiFlagNew = FALSE;
1616                            EchoCodeNew = IdKanji;
1617    
1618                            K = (cv->EchoKanjiFirst << 8) + d;
1619                            // UTF-8への変換を行う。1〜3バイトまでの対応なので注意。
1620                            if (cv->KanjiCodeSend == IdUTF8) {
1621                                    OutputTextUTF8(K, TempStr, &TempLen, cv);
1622                            }
1623                            else {
1624                                    TempStr[TempLen] = HIBYTE(K);
1625                                    TempStr[TempLen+1] = LOBYTE(K);
1626                                    TempLen = TempLen + 2;
1627                            }
1628                    }
1629                    else if (IsDBCSLeadByteEx(*cv->CodePage, d)) {
1630                            KanjiFlagNew = TRUE;
1631                            cv->EchoKanjiFirst = d;
1632                            EchoCodeNew = IdKanji;
1633                            TempLen = 0;
1634                    }
1635                    else {
1636                            KanjiFlagNew = FALSE;
1637                            TempLen = 0;
1638                            EchoCodeNew = IdASCII;
1639    
1640                            if (d==0x0d) {
1641                                    TempStr[TempLen] = 0x0d;
1642                                    TempLen++;
1643                                    if (cv->CRSend==IdCRLF) {
1644                                            TempStr[TempLen] = 0x0a;
1645                                            TempLen++;
1646                                    }
1647                                    else if ((cv->CRSend==IdCR) &&
1648                                              cv->TelFlag && ! cv->TelBinSend) {
1649                                            TempStr[TempLen] = 0;
1650                                            TempLen++;
1651                                    }
1652                            }
1653                            else {
1654                                    TempStr[TempLen] = d;
1655                                    TempLen++;
1656                                    if (cv->TelFlag && (d==0xff)) {
1657                                            TempStr[TempLen] = (char)0xff;
1658                                            TempLen++;
1659                                    }
1660                            }
1661                    } // if (cv->SendKanjiFlag) else if ... else ... end
1662    
1663                    if (TempLen == 0) {
1664                            i++;
1665                            cv->EchoCode = EchoCodeNew;
1666                            cv->EchoKanjiFlag = KanjiFlagNew;
1667                    }
1668                    else {
1669                            Full = InBuffSize-cv->InBuffCount-TempLen < 0;
1670                            if (! Full) {
1671                                    i++;
1672                                    cv->EchoCode = EchoCodeNew;
1673                                    cv->EchoKanjiFlag = KanjiFlagNew;
1674                                    memcpy(&(cv->InBuff[cv->InBuffCount]),TempStr,TempLen);
1675                                    cv->InBuffCount = cv->InBuffCount + TempLen;
1676                            }
1677                    }
1678    
1679            } // end of "while {}"
1680    
1681            return i;
1682    }
1683    
1684  int FAR PASCAL CommTextEcho(PComVar cv, PCHAR B, int C)  int FAR PASCAL CommTextEcho(PComVar cv, PCHAR B, int C)
1685  {  {
1686          int i, TempLen;          int i, TempLen;
# Line 1614  int FAR PASCAL CommTextEcho(PComVar cv, Line 1700  int FAR PASCAL CommTextEcho(PComVar cv,
1700          if (cv->Language==IdJapanese || cv->Language == IdUtf8) {          if (cv->Language==IdJapanese || cv->Language == IdUtf8) {
1701                  return TextEchoJP(cv,B,C);                  return TextEchoJP(cv,B,C);
1702          }          }
1703            else if (cv->Language == IdKorean) {
1704                    return TextEchoKR(cv,B,C);
1705            }
1706    
1707          Full = FALSE;          Full = FALSE;
1708          i = 0;          i = 0;

Legend:
Removed from v.3419  
changed lines
  Added in v.3438

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26