Develop and Download Open Source Software

Browse Subversion Repository

Diff of /trunk/teraterm/teraterm/vtterm.c

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

revision 7407 by zmatsuo, Fri Jan 25 12:38:03 2019 UTC revision 7410 by zmatsuo, Sat Jan 26 18:03:31 2019 UTC
# Line 4092  void IgnoreString(BYTE b) Line 4092  void IgnoreString(BYTE b)
4092          utf8_stat = CheckUTF8Seq(b, utf8_stat);          utf8_stat = CheckUTF8Seq(b, utf8_stat);
4093  }  }
4094    
4095  void RequestStatusString(unsigned char *StrBuff, int StrLen)    // DECRQSS  static void RequestStatusString(const unsigned char *StrBuff, int StrLen)       // DECRQSS
4096  {  {
4097          unsigned char RepStr[256];          char RepStr[256];
4098          int len = 0;          int len = 0;
4099          int tmp = 0;          int tmp = 0;
4100    
# Line 4277  int toHexStr(unsigned char *buff, int bu Line 4277  int toHexStr(unsigned char *buff, int bu
4277          return copylen;          return copylen;
4278  }  }
4279    
4280  int TermcapString(unsigned char *buff, int buffsize, unsigned char *capname)  static int TermcapString(unsigned char *buff, int buffsize, unsigned char *capname)
4281  {  {
4282          int len = 0, l;          int len = 0, l;
4283          unsigned char *capval = NULL;          unsigned char *capval = NULL;
# Line 4317  int TermcapString(unsigned char *buff, i Line 4317  int TermcapString(unsigned char *buff, i
4317          return len;          return len;
4318  }  }
4319    
4320  void RequestTermcapString(unsigned char *StrBuff, int StrLen)   // xterm experimental  static void RequestTermcapString(unsigned char *StrBuff, int StrLen)    // xterm experimental
4321  {  {
4322          unsigned char RepStr[256];          unsigned char RepStr[256];
4323          unsigned char CapName[16];          unsigned char CapName[16];
# Line 4389  void RequestTermcapString(unsigned char Line 4389  void RequestTermcapString(unsigned char
4389          SendDCSstr(RepStr, replen);          SendDCSstr(RepStr, replen);
4390  }  }
4391    
4392  void ParseDCS(BYTE Cmd, unsigned char *StrBuff, int len) {  static void ParseDCS(BYTE Cmd, unsigned char *StrBuff, int len) {
4393          switch (ICount) {          switch (ICount) {
4394            case 0:            case 0:
4395                  break;                  break;
# Line 5469  static int GetIndexOfCombiningFirstCode( Line 5469  static int GetIndexOfCombiningFirstCode(
5469          return (index);          return (index);
5470  }  }
5471    
5472    // unicode(UTF-16,wchar_t)をバッファへ書き込む
5473  static void UnicodeToCP932(unsigned int code)  static void UnicodeToCP932(unsigned int code)
5474  {  {
5475            wchar_t wchar = (wchar_t)code;
5476          int ret;          int ret;
5477          char mbchar[32];          char mbchar[2];
5478          unsigned char wchar[32];          unsigned short cset;
         unsigned short cset = 0;  
   
         wchar[0] = code & 0xff;  
         wchar[1] = (code >> 8) & 0xff;  
5479    
5480            // UnicodeからDEC特殊文字へのマッピング
5481          if (ts.UnicodeDecSpMapping) {          if (ts.UnicodeDecSpMapping) {
5482                  cset = ConvertUnicode(code, mapUnicodeSymbolToDecSp, MAPSIZE(mapUnicodeSymbolToDecSp));                  cset = ConvertUnicode(wchar, mapUnicodeSymbolToDecSp, MAPSIZE(mapUnicodeSymbolToDecSp));
5483          }                  if (((cset >> 8) & ts.UnicodeDecSpMapping) != 0) {
5484          if (((cset >> 8) & ts.UnicodeDecSpMapping) != 0) {                          PutDecSp(cset & 0xff);
5485                  PutDecSp(cset & 0xff);                          return;
5486                    }
5487          }          }
         else {  
                 // Unicode -> CP932  
                 ret = wctomb(mbchar, ((wchar_t *)wchar)[0]);  
                 switch (ret) {  
                   case -1:  
                         if (_stricmp(ts.Locale, DEFAULT_LOCALE) == 0) {  
                                 // U+301Cなどは変換できない。Unicode -> Shift_JISへ変換してみる。  
                                 cset = ConvertUnicode(code, mapUnicodeToSJIS, MAPSIZE(mapUnicodeToSJIS));  
                                 if (cset != 0) {  
                                         Kanji = cset & 0xff00;  
                                         PutKanji(cset & 0x00ff);  
                                 }  
                         }  
5488    
5489                          if (cset == 0) {          // Unicode -> 内部コード(ts.CodePage)へ変換して出力
5490                                  PutChar('?');          ret = WideCharToMultiByte(ts.CodePage, 0, &wchar, 1, mbchar, 2, NULL, NULL);
5491                                  if (ts.UnknownUnicodeCharaAsWide) {          switch (ret) {
5492                                          PutChar('?');          case 0:
5493                                  }                  if (ts.CodePage == 932) {
5494                            // CP932
5495                            // U+301Cなどは変換できない。Unicode -> Shift_JISへ変換してみる。
5496                            cset = ConvertUnicode(code, mapUnicodeToSJIS, MAPSIZE(mapUnicodeToSJIS));
5497                            if (cset != 0) {
5498                                    Kanji = cset & 0xff00;
5499                                    PutKanji(cset & 0x00ff);
5500                          }                          }
                         break;  
                   case 1:  
                         PutChar(mbchar[0]);  
                         break;  
                   default:  
                         Kanji = mbchar[0] << 8;  
                         PutKanji(mbchar[1]);  
                         break;  
5501                  }                  }
5502    
5503                    PutChar('?');
5504                    if (ts.UnknownUnicodeCharaAsWide) {
5505                            PutChar('?');
5506                    }
5507                    break;
5508            case 1:
5509                    PutChar(mbchar[0]);
5510                    break;
5511            case 2:
5512            default:
5513                    Kanji = mbchar[0] << 8;
5514                    PutKanji(mbchar[1]);
5515                    break;
5516          }          }
5517  }  }
5518    

Legend:
Removed from v.7407  
changed lines
  Added in v.7410

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