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 3451 by doda, Mon Jun 8 11:39:28 2009 UTC revision 3452 by doda, Mon Jun 8 12:38:13 2009 UTC
# Line 1262  int TextOutMBCS(PComVar cv, PCHAR B, int Line 1262  int TextOutMBCS(PComVar cv, PCHAR B, int
1262                                  TempLen += OutputTextUTF8((WORD)d, TempStr, cv);                                  TempLen += OutputTextUTF8((WORD)d, TempStr, cv);
1263                          }                          }
1264                          else if ((d>=0xa1) && (d<=0xe0) && (cv->Language == IdJapanese)) {                          else if ((d>=0xa1) && (d<=0xe0) && (cv->Language == IdJapanese)) {
1265                                    /* Katakana */
1266                                  if (cv->KanjiCodeSend==IdEUC) {                                  if (cv->KanjiCodeSend==IdEUC) {
1267                                          TempStr[TempLen++] = (char)SS2;                                          TempStr[TempLen++] = (char)SS2;
1268                                  }                                  }
# Line 1330  int FAR PASCAL CommTextOut(PComVar cv, P Line 1331  int FAR PASCAL CommTextOut(PComVar cv, P
1331                          TempStr[TempLen] = 0x0d;                          TempStr[TempLen] = 0x0d;
1332                          TempLen++;                          TempLen++;
1333                          if (cv->CRSend==IdCRLF) {                          if (cv->CRSend==IdCRLF) {
1334                                  TempStr[TempLen] = 0x0a;                                  TempStr[TempLen++] = 0x0a;
                                 TempLen++;  
1335                          }                          }
1336                          else if ((cv->CRSend==IdCR) &&                          else if (cv->CRSend==IdCR && cv->TelFlag && ! cv->TelBinSend) {
1337                                           cv->TelFlag && ! cv->TelBinSend) {                                  TempStr[TempLen++] = 0;
                                 TempStr[TempLen] = 0;  
                                 TempLen++;  
1338                          }                          }
1339                  }                  }
1340                  else {                  else {
1341                          if ((cv->Language==IdRussian) &&                          if ((cv->Language==IdRussian) && (d>=128)) {
                             (d>=128))  
1342                                  d = RussConv(cv->RussClient,cv->RussHost,d);                                  d = RussConv(cv->RussClient,cv->RussHost,d);
1343                          TempStr[TempLen] = d;                          }
1344                          TempLen++;                          TempStr[TempLen++] = d;
1345                          if (cv->TelFlag && (d==0xff)) {                          if (cv->TelFlag && (d==0xff)) {
1346                                  TempStr[TempLen] = (char)0xff;                                  TempStr[TempLen++] = (char)0xff;
                                 TempLen++;  
1347                          }                          }
1348                  }                  }
1349    
# Line 1409  int FAR PASCAL TextEchoJP(PComVar cv, PC Line 1405  int FAR PASCAL TextEchoJP(PComVar cv, PC
1405  {  {
1406          int i, TempLen;          int i, TempLen;
1407          WORD K;          WORD K;
1408          char TempStr[11];          char TempStr[12];
1409          int EchoCodeNew;          int EchoCodeNew;
1410          BYTE d;          BYTE d;
1411          BOOL Full, KanjiFlagNew;          BOOL Full, KanjiFlagNew;
# Line 1420  int FAR PASCAL TextEchoJP(PComVar cv, PC Line 1416  int FAR PASCAL TextEchoJP(PComVar cv, PC
1416                  TempLen = 0;                  TempLen = 0;
1417                  d = (BYTE)B[i];                  d = (BYTE)B[i];
1418                  EchoCodeNew = cv->EchoCode;                  EchoCodeNew = cv->EchoCode;
1419                    KanjiFlagNew = FALSE;
1420    
1421                  if (cv->EchoKanjiFlag) {                  if (cv->EchoKanjiFlag) {
                         KanjiFlagNew = FALSE;  
1422                          EchoCodeNew = IdKanji;                          EchoCodeNew = IdKanji;
1423    
1424                          K = (cv->EchoKanjiFirst << 8) + d;                          K = (cv->EchoKanjiFirst << 8) + d;
1425    
1426                          // UTF-8への変換を行う。1〜3バイトまでの対応なので注意。                          // UTF-8への変換を行う。1〜3バイトまでの対応なので注意。
1427                          if (cv->KanjiCodeSend == IdUTF8 || cv->Language==IdUtf8) {                          if (cv->KanjiCodeEcho == IdUTF8 || cv->Language==IdUtf8) {
1428                                  TempLen += OutputTextUTF8(K, TempStr, cv);                                  TempLen += OutputTextUTF8(K, TempStr, cv);
1429                          }                          }
1430                          else {                          else {
1431                                  if (cv->KanjiCodeEcho == IdEUC) {                                  switch (cv->Language) {
1432                                          K = SJIS2EUC(K);                                    case IdJapanese:
1433                                  }                                          switch (cv->KanjiCodeEcho) {
1434                                  else if (cv->KanjiCodeEcho != IdSJIS) {                                            case IdEUC:
1435                                          K = SJIS2JIS(K);                                                  K = SJIS2EUC(K);
1436                                  }                                                  break;
1437                                              case IdJIS:
1438                                  if ((cv->EchoCode==IdKatakana) &&                                                  K = SJIS2JIS(K);
1439                                      (cv->KanjiCodeEcho==IdJIS) &&                                                  if ((cv->EchoCode==IdKatakana) &&
1440                                      (cv->JIS7KatakanaEcho==1)) {                                                      (cv->JIS7KatakanaEcho==1)) {
1441                                          TempStr[TempLen] = SI;                                                          TempStr[TempLen++] = SI;
1442                                          TempLen++;                                                  }
1443                                                    break;
1444                                              case IdSJIS:
1445                                                    /* nothing to do */
1446                                                    break;
1447                                            }
1448                                            break;
1449                                      case IdKorean:
1450                                            break;
1451                                  }                                  }
1452                                    TempStr[TempLen++] = HIBYTE(K);
1453                                  TempStr[TempLen] = HIBYTE(K);                                  TempStr[TempLen++] = LOBYTE(K);
                                 TempStr[TempLen+1] = LOBYTE(K);  
                                 TempLen = TempLen + 2;  
1454                          }                          }
1455                  }                  }
1456                  else if (IsDBCSLeadByteEx(*cv->CodePage, d)) {                  else if (IsDBCSLeadByteEx(*cv->CodePage, d)) {
# Line 1455  int FAR PASCAL TextEchoJP(PComVar cv, PC Line 1458  int FAR PASCAL TextEchoJP(PComVar cv, PC
1458                          cv->EchoKanjiFirst = d;                          cv->EchoKanjiFirst = d;
1459                          EchoCodeNew = IdKanji;                          EchoCodeNew = IdKanji;
1460    
1461                          if ((cv->EchoCode!=IdKanji) &&                          if (cv->Language == IdJapanese) {
1462                              (cv->KanjiCodeEcho==IdJIS)) {                                  if ((cv->EchoCode!=IdKanji) && (cv->KanjiCodeEcho==IdJIS)) {
1463                                  TempStr[0] = 0x1B;                                          TempStr[0] = 0x1B;
1464                                  TempStr[1] = '$';                                          TempStr[1] = '$';
1465                                  if (cv->KanjiIn == IdKanjiInB) {                                          if (cv->KanjiIn == IdKanjiInB) {
1466                                          TempStr[2] = 'B';                                                  TempStr[2] = 'B';
1467                                  }                                          }
1468                                  else {                                          else {
1469                                          TempStr[2] = '@';                                                  TempStr[2] = '@';
1470                                            }
1471                                            TempLen = 3;
1472                                  }                                  }
                                 TempLen = 3;  
                         }  
                         else {  
                                 TempLen = 0;  
1473                          }                          }
1474                  }                  }
1475                  else {                  else {
1476                          KanjiFlagNew = FALSE;                          if (cv->Language == IdJapanese) {
1477                                    if ((cv->EchoCode==IdKanji) && (cv->KanjiCodeEcho==IdJIS)) {
1478                          if ((cv->EchoCode==IdKanji) &&                                          TempStr[0] = 0x1B;
1479                              (cv->KanjiCodeEcho==IdJIS)) {                                          TempStr[1] = '(';
1480                                  TempStr[0] = 0x1B;                                          switch (cv->KanjiOut) {
1481                                  TempStr[1] = '(';                                            case IdKanjiOutJ:
                                 switch (cv->KanjiOut) {  
                                         case IdKanjiOutJ:  
1482                                                  TempStr[2] = 'J';                                                  TempStr[2] = 'J';
1483                                                  break;                                                  break;
1484                                          case IdKanjiOutH:                                            case IdKanjiOutH:
1485                                                  TempStr[2] = 'H';                                                  TempStr[2] = 'H';
1486                                                  break;                                                  break;
1487                                          default:                                            default:
1488                                                  TempStr[2] = 'B';                                                  TempStr[2] = 'B';
1489                                            }
1490                                            TempLen = 3;
1491                                  }                                  }
                                 TempLen = 3;  
                         }  
                         else  
                                 TempLen = 0;  
1492    
1493                          if ((0xa0<d) && (d<0xe0)) {                                  if ((0xa0<d) && (d<0xe0)) {
1494                                  EchoCodeNew = IdKatakana;                                          EchoCodeNew = IdKatakana;
1495                                  if ((cv->EchoCode!=IdKatakana) &&                                          if ((cv->EchoCode!=IdKatakana) &&
1496                                      (cv->KanjiCodeEcho==IdJIS) &&                                              (cv->KanjiCodeEcho==IdJIS) &&
1497                                      (cv->JIS7KatakanaEcho==1)) {                                              (cv->JIS7KatakanaEcho==1)) {
1498                                          TempStr[TempLen] = SO;                                                  TempStr[TempLen++] = SO;
1499                                          TempLen++;                                          }
1500                                  }                                  }
1501                          }                                  else {
1502                          else {                                          EchoCodeNew = IdASCII;
1503                                  EchoCodeNew = IdASCII;                                          if ((cv->EchoCode==IdKatakana) &&
1504                                  if ((cv->EchoCode==IdKatakana) &&                                              (cv->KanjiCodeEcho==IdJIS) &&
1505                                      (cv->KanjiCodeEcho==IdJIS) &&                                              (cv->JIS7KatakanaEcho==1)) {
1506                                      (cv->JIS7KatakanaEcho==1)) {                                                  TempStr[TempLen++] = SI;
1507                                          TempStr[TempLen] = SI;                                          }
                                         TempLen++;  
1508                                  }                                  }
1509                          }                          }
1510    
1511                          if (d==0x0d) {                          if (d==0x0d) {
1512                                  TempStr[TempLen] = 0x0d;                                  TempStr[TempLen++] = 0x0d;
                                 TempLen++;  
1513                                  if (cv->CRSend==IdCRLF) {                                  if (cv->CRSend==IdCRLF) {
1514                                          TempStr[TempLen] = 0x0a;                                          TempStr[TempLen++] = 0x0a;
                                         TempLen++;  
1515                                  }                                  }
1516                                  else if ((cv->CRSend==IdCR) &&                                  else if ((cv->CRSend==IdCR) &&
1517                                            cv->TelFlag && ! cv->TelBinSend) {                                            cv->TelFlag && ! cv->TelBinSend) {
1518                                          TempStr[TempLen] = 0;                                          TempStr[TempLen++] = 0;
                                         TempLen++;  
1519                                  }                                  }
1520                          }                          }
1521                          else if ((d>=0xa1) && (d<=0xe0)) {                          else if ((d>=0x80) && (cv->KanjiCodeEcho==IdUTF8 || cv->Language==IdUtf8)) {
1522                                    TempLen += OutputTextUTF8((WORD)d, TempStr, cv);
1523                            }
1524                            else if ((d>=0xa1) && (d<=0xe0) && (cv->Language == IdJapanese)) {
1525                                  /* Katakana */                                  /* Katakana */
1526                                  if (cv->KanjiCodeEcho==IdEUC) {                                  if (cv->KanjiCodeEcho==IdEUC) {
1527                                          TempStr[TempLen] = (char)SS2;                                          TempStr[TempLen++] = (char)SS2;
                                         TempLen++;  
1528                                  }                                  }
1529                                  if ((cv->KanjiCodeEcho==IdJIS) &&                                  if ((cv->KanjiCodeEcho==IdJIS) &&
1530                                          (cv->JIS7KatakanaEcho==1)) {                                          (cv->JIS7KatakanaEcho==1)) {
1531                                          TempStr[TempLen] = d & 0x7f;                                          TempStr[TempLen++] = d & 0x7f;
1532                                  }                                  }
1533                                  else {                                  else {
1534                                          TempStr[TempLen] = d;                                          TempStr[TempLen++] = d;
1535                                  }                                  }
                                 TempLen++;  
1536                          }                          }
1537                          else {                          else {
1538                                  TempStr[TempLen] = d;                                  TempStr[TempLen++] = d;
                                 TempLen++;  
1539                                  if (cv->TelFlag && (d==0xff)) {                                  if (cv->TelFlag && (d==0xff)) {
1540                                          TempStr[TempLen] = (char)0xff;                                          TempStr[TempLen++] = (char)0xff;
                                         TempLen++;  
1541                                  }                                  }
1542                          }                          }
1543                  } // if (cv->SendKanjiFlag) else if ... else ... end                  } // if (cv->EchoKanjiFlag) else if ... else ... end
1544    
1545                  if (TempLen == 0) {                  if (TempLen == 0) {
1546                          i++;                          i++;
# Line 1586  int FAR PASCAL TextEchoKR(PComVar cv, PC Line 1578  int FAR PASCAL TextEchoKR(PComVar cv, PC
1578                  TempLen = 0;                  TempLen = 0;
1579                  d = (BYTE)B[i];                  d = (BYTE)B[i];
1580                  EchoCodeNew = cv->EchoCode;                  EchoCodeNew = cv->EchoCode;
1581                    KanjiFlagNew = FALSE;
1582    
1583                  if (cv->EchoKanjiFlag) {                  if (cv->EchoKanjiFlag) {
                         KanjiFlagNew = FALSE;  
1584                          EchoCodeNew = IdKanji;                          EchoCodeNew = IdKanji;
1585    
1586                          K = (cv->EchoKanjiFirst << 8) + d;                          K = (cv->EchoKanjiFirst << 8) + d;
1587    
1588                          // UTF-8への変換を行う。1〜3バイトまでの対応なので注意。                          // UTF-8への変換を行う。1〜3バイトまでの対応なので注意。
1589                          if (cv->KanjiCodeSend == IdUTF8) {                          if (cv->KanjiCodeEcho == IdUTF8) {
1590                                  TempLen += OutputTextUTF8(K, TempStr, cv);                                  TempLen += OutputTextUTF8(K, TempStr, cv);
1591                          }                          }
1592                          else {                          else {
1593                                  TempStr[TempLen] = HIBYTE(K);                                  TempStr[TempLen++] = HIBYTE(K);
1594                                  TempStr[TempLen+1] = LOBYTE(K);                                  TempStr[TempLen++] = LOBYTE(K);
                                 TempLen = TempLen + 2;  
1595                          }                          }
1596                  }                  }
1597                  else if (IsDBCSLeadByteEx(*cv->CodePage, d)) {                  else if (IsDBCSLeadByteEx(*cv->CodePage, d)) {
1598                          KanjiFlagNew = TRUE;                          KanjiFlagNew = TRUE;
1599                          cv->EchoKanjiFirst = d;                          cv->EchoKanjiFirst = d;
1600                          EchoCodeNew = IdKanji;                          EchoCodeNew = IdKanji;
                         TempLen = 0;  
1601                  }                  }
1602                  else {                  else {
                         KanjiFlagNew = FALSE;  
                         TempLen = 0;  
1603                          EchoCodeNew = IdASCII;                          EchoCodeNew = IdASCII;
1604    
1605                          if (d==0x0d) {                          if (d==0x0d) {
1606                                  TempStr[TempLen] = 0x0d;                                  TempStr[TempLen++] = 0x0d;
                                 TempLen++;  
1607                                  if (cv->CRSend==IdCRLF) {                                  if (cv->CRSend==IdCRLF) {
1608                                          TempStr[TempLen] = 0x0a;                                          TempStr[TempLen++] = 0x0a;
                                         TempLen++;  
1609                                  }                                  }
1610                                  else if ((cv->CRSend==IdCR) &&                                  else if ((cv->CRSend==IdCR) &&
1611                                            cv->TelFlag && ! cv->TelBinSend) {                                            cv->TelFlag && ! cv->TelBinSend) {
1612                                          TempStr[TempLen] = 0;                                          TempStr[TempLen++] = 0;
                                         TempLen++;  
1613                                  }                                  }
1614                          }                          }
1615                            else if ((d>=0x80) && (cv->KanjiCodeEcho==IdUTF8)) {
1616                                    TempLen += OutputTextUTF8((WORD)d, TempStr, cv);
1617                            }
1618                          else {                          else {
1619                                  TempStr[TempLen] = d;                                  TempStr[TempLen++] = d;
                                 TempLen++;  
1620                                  if (cv->TelFlag && (d==0xff)) {                                  if (cv->TelFlag && (d==0xff)) {
1621                                          TempStr[TempLen] = (char)0xff;                                          TempStr[TempLen++] = (char)0xff;
                                         TempLen++;  
1622                                  }                                  }
1623                          }                          }
1624                  } // if (cv->SendKanjiFlag) else if ... else ... end                  } // if (cv->EchoKanjiFlag) else if ... else ... end
1625    
1626                  if (TempLen == 0) {                  if (TempLen == 0) {
1627                          i++;                          i++;
# Line 1673  int FAR PASCAL CommTextEcho(PComVar cv, Line 1660  int FAR PASCAL CommTextEcho(PComVar cv,
1660                  cv->InPtr = 0;                  cv->InPtr = 0;
1661          }          }
1662    
1663          if (cv->Language==IdJapanese || cv->Language == IdUtf8) {          switch (cv->Language) {
1664              case IdUtf8:
1665              case IdJapanese:
1666                  return TextEchoJP(cv,B,C);                  return TextEchoJP(cv,B,C);
1667          }                  break;
1668          else if (cv->Language == IdKorean) {            case IdKorean:
1669                  return TextEchoKR(cv,B,C);                  return TextEchoKR(cv,B,C);
1670                    break;
1671          }          }
1672    
1673          Full = FALSE;          Full = FALSE;
# Line 1690  int FAR PASCAL CommTextEcho(PComVar cv, Line 1680  int FAR PASCAL CommTextEcho(PComVar cv,
1680                          TempStr[TempLen] = 0x0d;                          TempStr[TempLen] = 0x0d;
1681                          TempLen++;                          TempLen++;
1682                          if (cv->CRSend==IdCRLF) {                          if (cv->CRSend==IdCRLF) {
1683                                  TempStr[TempLen] = 0x0a;                                  TempStr[TempLen++] = 0x0a;
                                 TempLen++;  
1684                          }                          }
1685                          else if ((cv->CRSend==IdCR) &&                          else if (cv->CRSend==IdCR && cv->TelFlag && ! cv->TelBinSend) {
1686                                   cv->TelFlag && ! cv->TelBinSend) {                                  TempStr[TempLen++] = 0;
                                 TempStr[TempLen] = 0;  
                                 TempLen++;  
1687                          }                          }
1688                  }                  }
1689                  else {                  else {
1690                          if ((cv->Language==IdRussian) &&                          if ((cv->Language==IdRussian) && (d>=128)) {
                                 (d>=128)) {  
1691                                  d = RussConv(cv->RussClient,cv->RussHost,d);                                  d = RussConv(cv->RussClient,cv->RussHost,d);
1692                          }                          }
1693                          TempStr[TempLen] = d;                          TempStr[TempLen++] = d;
                         TempLen++;  
1694                          if (cv->TelFlag && (d==0xff)) {                          if (cv->TelFlag && (d==0xff)) {
1695                                  TempStr[TempLen] = (char)0xff;                                  TempStr[TempLen++] = (char)0xff;
                                 TempLen++;  
1696                          }                          }
1697                  }                  }
1698    

Legend:
Removed from v.3451  
changed lines
  Added in v.3452

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