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 2476 by maya, Mon Apr 14 17:35:50 2008 UTC revision 2484 by doda, Tue Apr 22 12:39:44 2008 UTC
# Line 499  void PutKanji(BYTE b) Line 499  void PutKanji(BYTE b)
499      UpdateStr();      UpdateStr();
500      Special = FALSE;      Special = FALSE;
501    }    }
502      
503  #ifndef NO_COPYLINE_FIX  #ifndef NO_COPYLINE_FIX
504    BuffPutKanji(Kanji, CharAttrTmp, InsertMode);    BuffPutKanji(Kanji, CharAttrTmp, InsertMode);
505  #else  #else
# Line 900  void ESCDBCSSelect(BYTE b) Line 900  void ESCDBCSSelect(BYTE b)
900        }        }
901        break;        break;
902    }    }
903  }    }
904    
905  void ESCSelectCode(BYTE b)  void ESCSelectCode(BYTE b)
906  {  {
# Line 1063  void ParseEscape(BYTE b) /* b is the fin Line 1063  void ParseEscape(BYTE b) /* b is the fin
1063            NParam = 1;            NParam = 1;
1064            Param[1] = 0;            Param[1] = 0;
1065            ParseMode = ModeXS;            ParseMode = ModeXS;
1066            return;              return;
1067          case '^':          case '^':
1068          case '_': /* PM, APC */          case '_': /* PM, APC */
1069            SavedMode = ParseMode;            SavedMode = ParseMode;
# Line 1640  void CSSetAttr() Line 1640  void CSSetAttr()
1640        MoveCursor(0,CursorY);        MoveCursor(0,CursorY);
1641        return;        return;
1642      }      }
1643      if (Param[1]<1) Param[1] =1;          if (Param[1]<1) Param[1] =1;
1644      if ((NParam < 2) | (Param[2]<1))      if ((NParam < 2) | (Param[2]<1))
1645        Param[2] = NumOfLines-StatusLine;        Param[2] = NumOfLines-StatusLine;
1646      Param[1]--;      Param[1]--;
# Line 1923  void CSSetAttr() Line 1923  void CSSetAttr()
1923    void CSQuest(BYTE b)    void CSQuest(BYTE b)
1924    {    {
1925      switch (b) {      switch (b) {
1926        case 'K': CSLineErase(); break;        case 'K': CSLineErase(); break;
1927        case 'h': CSQ_h_Mode(); break;        case 'h': CSQ_h_Mode(); break;
1928        case 'i': CSQ_i_Mode(); break;        case 'i': CSQ_i_Mode(); break;
1929        case 'l': CSQ_l_Mode(); break;        case 'l': CSQ_l_Mode(); break;
# Line 2135  void ControlSequence(BYTE b) Line 2135  void ControlSequence(BYTE b)
2135      else if ((b>=0x30) && (b<=0x39))      else if ((b>=0x30) && (b<=0x39))
2136      {      {
2137        if (Param[NParam] < 0)        if (Param[NParam] < 0)
2138          Param[NParam] = 0;          Param[NParam] = 0;
2139        if (Param[NParam]<1000)        if (Param[NParam]<1000)
2140         Param[NParam] = Param[NParam]*10 + b - 0x30;         Param[NParam] = Param[NParam]*10 + b - 0x30;
2141      }      }
# Line 2175  void DeviceControl(BYTE b) Line 2175  void DeviceControl(BYTE b)
2175      ParseControl(b);      ParseControl(b);
2176    else if ((b>=0x30) && (b<=0x39))    else if ((b>=0x30) && (b<=0x39))
2177    {    {
2178      if (Param[NParam] < 0) Param[NParam] = 0;      if (Param[NParam] < 0) Param[NParam] = 0;
2179      if (Param[NParam]<1000)      if (Param[NParam]<1000)
2180        Param[NParam] = Param[NParam]*10 + b - 0x30;        Param[NParam] = Param[NParam]*10 + b - 0x30;
2181    }    }
# Line 2268  void IgnoreString(BYTE b) Line 2268  void IgnoreString(BYTE b)
2268    
2269  BOOL XsParseColor(char *colspec, COLORREF *color)  BOOL XsParseColor(char *colspec, COLORREF *color)
2270  {  {
2271    int r, g, b;          int r, g, b;
2272  //  double dr, dg, db;  //      double dr, dg, db;
2273    
2274    r = g = b = 255;          r = g = b = 255;
2275    
2276    if (colspec == NULL || color == NULL) {          if (colspec == NULL || color == NULL) {
2277      return FALSE;                  return FALSE;
2278    }          }
2279    
2280    if (_strnicmp(colspec, "rgb:", 4) == 0) {          if (_strnicmp(colspec, "rgb:", 4) == 0) {
2281      switch (strlen(colspec)) {                  switch (strlen(colspec)) {
2282        case  9:  // rgb:R/G/B                    case  9:      // rgb:R/G/B
2283          if (sscanf(colspec, "rgb:%1x/%1x/%1x", &r, &g, &b) != 3) {                          if (sscanf(colspec, "rgb:%1x/%1x/%1x", &r, &g, &b) != 3) {
2284            return FALSE;                                  return FALSE;
2285          }                          }
2286          r *= 17; g *= 17; b *= 17;                          r *= 17; g *= 17; b *= 17;
2287          break;                          break;
2288        case 12:  // rgb:RR/GG/BB                    case 12:      // rgb:RR/GG/BB
2289          if (sscanf(colspec, "rgb:%2x/%2x/%2x", &r, &g, &b) != 3) {                          if (sscanf(colspec, "rgb:%2x/%2x/%2x", &r, &g, &b) != 3) {
2290            return FALSE;                                  return FALSE;
2291          }                          }
2292          break;                          break;
2293        case 15:  // rgb:RRR/GGG/BBB                    case 15:      // rgb:RRR/GGG/BBB
2294          if (sscanf(colspec, "rgb:%3x/%3x/%3x", &r, &g, &b) != 3) {                          if (sscanf(colspec, "rgb:%3x/%3x/%3x", &r, &g, &b) != 3) {
2295            return FALSE;                                  return FALSE;
2296          }                          }
2297          r >>= 4; g >>= 4; b >>= 4;                          r >>= 4; g >>= 4; b >>= 4;
2298          break;                          break;
2299        case 18:  // rgb:RRRR/GGGG/BBBB                    case 18:      // rgb:RRRR/GGGG/BBBB
2300          if (sscanf(colspec, "rgb:%4x/%4x/%4x", &r, &g, &b) != 3) {                          if (sscanf(colspec, "rgb:%4x/%4x/%4x", &r, &g, &b) != 3) {
2301            return FALSE;                                  return FALSE;
2302          }                          }
2303          r >>= 8; g >>= 8; b >>= 8;                          r >>= 8; g >>= 8; b >>= 8;
2304          break;                          break;
2305        default:                    default:
2306          return FALSE;                          return FALSE;
2307      }                  }
2308    }          }
2309  //else if (_strnicmp(colspec, "rgbi:", 5) == 0) {  //      else if (_strnicmp(colspec, "rgbi:", 5) == 0) {
2310  //}  //              ; /* nothing to do */
2311    else if (colspec[0] == '#') {  //      }
2312      switch (strlen(colspec)) {          else if (colspec[0] == '#') {
2313        case  4:  // #RGB                  switch (strlen(colspec)) {
2314          if (sscanf(colspec, "#%1x%1x%1x", &r, &g, &b) != 3) {                    case  4:      // #RGB
2315            return FALSE;                          if (sscanf(colspec, "#%1x%1x%1x", &r, &g, &b) != 3) {
2316          }                                  return FALSE;
2317          r <<= 4; g <<= 4; b <<= 4;                          }
2318          break;                          r <<= 4; g <<= 4; b <<= 4;
2319        case  7:  // #RGB                          break;
2320          if (sscanf(colspec, "#%2x%2x%2x", &r, &g, &b) != 3) {                    case  7:      // #RRGGBB
2321            return FALSE;                          if (sscanf(colspec, "#%2x%2x%2x", &r, &g, &b) != 3) {
2322          }                                  return FALSE;
2323          break;                          }
2324        case 10:  // #RGB                          break;
2325          if (sscanf(colspec, "#%3x%3x%3x", &r, &g, &b) != 3) {                    case 10:      // #RRRGGGBBB
2326            return FALSE;                          if (sscanf(colspec, "#%3x%3x%3x", &r, &g, &b) != 3) {
2327          }                                  return FALSE;
2328          r >>= 4; g >>= 4; b >>= 4;                          }
2329          break;                          r >>= 4; g >>= 4; b >>= 4;
2330        case 13:  // #RGB                          break;
2331          if (sscanf(colspec, "#%4x%4x%4x", &r, &g, &b) != 3) {                    case 13:      // #RRRRGGGGBBBB
2332            return FALSE;                          if (sscanf(colspec, "#%4x%4x%4x", &r, &g, &b) != 3) {
2333          }                                  return FALSE;
2334          r >>= 8; g >>= 8; b >>= 8;                          }
2335          break;                          r >>= 8; g >>= 8; b >>= 8;
2336        default:                          break;
2337          return FALSE;                    default:
2338      }                          return FALSE;
2339    }                  }
2340    else {          }
2341      return FALSE;          else {
2342    }                  return FALSE;
2343            }
2344    
2345    if (r < 0 || r > 255 || g < 0 || g > 255 || b < 0 || b > 255) {          if (r < 0 || r > 255 || g < 0 || g > 255 || b < 0 || b > 255) {
2346      return FALSE;                  return FALSE;
2347    }          }
2348    
2349    *color = RGB(r, g, b);          *color = RGB(r, g, b);
2350    return TRUE;          return TRUE;
2351  }  }
2352    
2353  #define ModeXsFirst     1  #define ModeXsFirst     1
# Line 2356  BOOL XsParseColor(char *colspec, COLORRE Line 2357  BOOL XsParseColor(char *colspec, COLORRE
2357  #define ModeXsEsc       5  #define ModeXsEsc       5
2358  void XSequence(BYTE b)  void XSequence(BYTE b)
2359  {  {
2360    static BYTE XsParseMode = ModeXsFirst, PrevMode;          static BYTE XsParseMode = ModeXsFirst, PrevMode;
2361    static char StrBuff[sizeof(ts.Title)];          static char StrBuff[sizeof(ts.Title)];
2362    static int ColorNumber, StrLen;          static int ColorNumber, StrLen;
2363    COLORREF color;          COLORREF color;
2364    
2365    switch (XsParseMode) {          switch (XsParseMode) {
2366      case ModeXsFirst:            case ModeXsFirst:
2367        if (isdigit(b)) {                  if (isdigit(b)) {
2368          if (Param[1] < 1000) {                          if (Param[1] < 1000) {
2369            Param[1] = Param[1]*10 + b - '0';                                  Param[1] = Param[1]*10 + b - '0';
2370          }                          }
2371        }                  }
2372        else if (b == ';') {                  else if (b == ';') {
2373          StrBuff[0] = '\0';                          StrBuff[0] = '\0';
2374          StrLen = 0;                          StrLen = 0;
2375          if (Param[1] == 4) {                          if (Param[1] == 4) {
2376            ColorNumber = 0;                                  ColorNumber = 0;
2377            XsParseMode = ModeXsColorNum;                                  XsParseMode = ModeXsColorNum;
2378          }                          }
2379          else {                          else {
2380            XsParseMode = ModeXsString;                                  XsParseMode = ModeXsString;
2381          }                          }
2382        }                  }
2383        else {                  else {
2384          ParseMode = ModeFirst;                          ParseMode = ModeFirst;
2385        }                  }
2386        break;                  break;
2387      case ModeXsString:            case ModeXsString:
2388        if (b == ST || b == '\a') { /* String Terminator */                  if (b == ST || b == '\a') { /* String Terminator */
2389          StrBuff[StrLen] = '\0';                          StrBuff[StrLen] = '\0';
2390          switch (Param[1]) {                          switch (Param[1]) {
2391            case 0: /* Change window title and icon name */                            case 0: /* Change window title and icon name */
2392            case 1: /* Change icon name */                            case 1: /* Change icon name */
2393            case 2: /* Change window title */                            case 2: /* Change window title */
2394              strncpy_s(ts.Title, sizeof(ts.Title), StrBuff, _TRUNCATE);                                  strncpy_s(ts.Title, sizeof(ts.Title), StrBuff, _TRUNCATE);
2395              // (2006.6.15 maya) タイトルに渡す文字列をSJISに変換                                  // (2006.6.15 maya) タイトルに渡す文字列をSJISに変換
2396              ConvertToCP932(ts.Title, sizeof(ts.Title));                                  ConvertToCP932(ts.Title, sizeof(ts.Title));
2397              ChangeTitle();                                  ChangeTitle();
2398              break;                                  break;
2399            default:                            default:
2400              /* nothing to do */;                                  /* nothing to do */;
2401          }                          }
2402          ParseMode = ModeFirst;                          ParseMode = ModeFirst;
2403          XsParseMode = ModeXsFirst;                          XsParseMode = ModeXsFirst;
2404        }                  }
2405        else if (b == ESC) { /* Escape */                  else if (b == ESC) { /* Escape */
2406          PrevMode = ModeXsString;                          PrevMode = ModeXsString;
2407          XsParseMode = ModeXsEsc;                          XsParseMode = ModeXsEsc;
2408        }                  }
2409        else if (b <= US) { /* Other control character -- invalid sequence */                  else if (b <= US) { /* Other control character -- invalid sequence */
2410          ParseMode = ModeFirst;                          ParseMode = ModeFirst;
2411          XsParseMode = ModeXsFirst;                          XsParseMode = ModeXsFirst;
2412        }                  }
2413        else if (StrLen < sizeof(StrBuff) - 1) {                  else if (StrLen < sizeof(StrBuff) - 1) {
2414          StrBuff[StrLen++] = b;                          StrBuff[StrLen++] = b;
2415        }                  }
2416        break;                  break;
2417      case ModeXsColorNum:            case ModeXsColorNum:
2418        if (isdigit(b)) {                  if (isdigit(b)) {
2419          ColorNumber = ColorNumber*10 + b - '0';                          ColorNumber = ColorNumber*10 + b - '0';
2420        }                  }
2421        else if (b == ';') {                  else if (b == ';') {
2422          XsParseMode = ModeXsColorSpec;                          XsParseMode = ModeXsColorSpec;
2423          StrBuff[0] = '\0';                          StrBuff[0] = '\0';
2424          StrLen = 0;                          StrLen = 0;
2425        }                  }
2426        else {                  else {
2427          ParseMode = ModeFirst;                          ParseMode = ModeFirst;
2428          XsParseMode = ModeXsFirst;                          XsParseMode = ModeXsFirst;
2429        }                  }
2430        break;                  break;
2431      case ModeXsColorSpec:            case ModeXsColorSpec:
2432        if (b == ST || b == '\a') { /* String Terminator */                  if (b == ST || b == '\a') { /* String Terminator */
2433          StrBuff[StrLen] = '\0';                          StrBuff[StrLen] = '\0';
2434          if ((ts.ColorFlag & CF_XTERM256) && ColorNumber >= 0 && ColorNumber <= 255) {                          if ((ts.ColorFlag & CF_XTERM256) && ColorNumber >= 0 && ColorNumber <= 255) {
2435            if (strcmp(StrBuff, "?") == 0) {                                  if (strcmp(StrBuff, "?") == 0) {
2436              color = DispGetANSIColor(ColorNumber);                                          color = DispGetANSIColor(ColorNumber);
2437              if (Send8BitMode) {                                          if (Send8BitMode) {
2438                _snprintf_s_l(StrBuff, sizeof(StrBuff), _TRUNCATE,                                                  _snprintf_s_l(StrBuff, sizeof(StrBuff), _TRUNCATE,
2439                              "\2354;%d;rgb:%02x/%02x/%02x\234", CLocale,                                                          "\2354;%d;rgb:%02x/%02x/%02x\234", CLocale, ColorNumber,
2440                              ColorNumber, GetRValue(color), GetGValue(color), GetBValue(color));                                                          GetRValue(color), GetGValue(color), GetBValue(color));
2441              }                                          }
2442              else {                                          else {
2443                _snprintf_s_l(StrBuff, sizeof(StrBuff), _TRUNCATE,                                                  _snprintf_s_l(StrBuff, sizeof(StrBuff), _TRUNCATE,
2444                              "\033]4;%d;rgb:%02x/%02x/%02x\033\\", CLocale,                                                          "\033]4;%d;rgb:%02x/%02x/%02x\033\\", CLocale, ColorNumber,
2445                              ColorNumber, GetRValue(color), GetGValue(color), GetBValue(color));                                                          GetRValue(color), GetGValue(color), GetBValue(color));
2446              }                                          }
2447              ParseMode = ModeFirst;                                          ParseMode = ModeFirst;
2448              XsParseMode = ModeXsFirst;                                          XsParseMode = ModeXsFirst;
2449              CommBinaryOut(&cv, StrBuff, strlen(StrBuff));                                          CommBinaryOut(&cv, StrBuff, strlen(StrBuff));
2450              break;                                          break;
2451            }                                  }
2452            else if (XsParseColor(StrBuff, &color)) {                                  else if (XsParseColor(StrBuff, &color)) {
2453              DispSetANSIColor(ColorNumber, color);                                          DispSetANSIColor(ColorNumber, color);
2454            }                                  }
2455          }                          }
2456          ParseMode = ModeFirst;                          ParseMode = ModeFirst;
2457          XsParseMode = ModeXsFirst;                          XsParseMode = ModeXsFirst;
2458        }                  }
2459        else if (b == ESC) {                  else if (b == ESC) {
2460          PrevMode = ModeXsColorSpec;                          PrevMode = ModeXsColorSpec;
2461          XsParseMode = ModeXsEsc;                          XsParseMode = ModeXsEsc;
2462        }                  }
2463        else if (b <= US) { /* Other control character -- invalid sequence */                  else if (b <= US) { /* Other control character -- invalid sequence */
2464          ParseMode = ModeFirst;                          ParseMode = ModeFirst;
2465          XsParseMode = ModeXsFirst;                          XsParseMode = ModeXsFirst;
2466        }                  }
2467        else if (b == ';') {                  else if (b == ';') {
2468          if ((ts.ColorFlag & CF_XTERM256) && ColorNumber >= 0 && ColorNumber <= 255) {                          if ((ts.ColorFlag & CF_XTERM256) && ColorNumber >= 0 && ColorNumber <= 255) {
2469            if (strcmp(StrBuff, "?") == 0) {                                  if (strcmp(StrBuff, "?") == 0) {
2470              color = DispGetANSIColor(ColorNumber);                                          color = DispGetANSIColor(ColorNumber);
2471              if (Send8BitMode) {                                          if (Send8BitMode) {
2472                _snprintf_s_l(StrBuff, sizeof(StrBuff), _TRUNCATE,                                                  _snprintf_s_l(StrBuff, sizeof(StrBuff), _TRUNCATE,
2473                              "\2354;%d;rgb:%02x/%02x/%02x\234", CLocale,                                                          "\2354;%d;rgb:%02x/%02x/%02x\234", CLocale, ColorNumber,
2474                              ColorNumber, GetRValue(color), GetGValue(color), GetBValue(color));                                                          GetRValue(color), GetGValue(color), GetBValue(color));
2475              }                                          }
2476              else {                                          else {
2477                _snprintf_s_l(StrBuff, sizeof(StrBuff), _TRUNCATE,                                                  _snprintf_s_l(StrBuff, sizeof(StrBuff), _TRUNCATE,
2478                              "\033]4;%d;rgb:%02x/%02x/%02x\033\\", CLocale,                                                          "\033]4;%d;rgb:%02x/%02x/%02x\033\\", CLocale, ColorNumber,
2479                              ColorNumber, GetRValue(color), GetGValue(color), GetBValue(color));                                                          GetRValue(color), GetGValue(color), GetBValue(color));
2480              }                                          }
2481              XsParseMode = ModeXsColorNum;                                          XsParseMode = ModeXsColorNum;
2482              CommBinaryOut(&cv, StrBuff, strlen(StrBuff));                                          CommBinaryOut(&cv, StrBuff, strlen(StrBuff));
2483            }                                  }
2484            else if (XsParseColor(StrBuff, &color)) {                                  else if (XsParseColor(StrBuff, &color)) {
2485              DispSetANSIColor(ColorNumber, color);                                          DispSetANSIColor(ColorNumber, color);
2486            }                                  }
2487                            }
2488                            ColorNumber = 0;
2489                            StrBuff[0] = '\0';
2490                            StrLen = 0;
2491                            XsParseMode = ModeXsColorNum;
2492                    }
2493                    else if (StrLen < sizeof(StrBuff) - 1) {
2494                            StrBuff[StrLen++] = b;
2495                    }
2496                    break;
2497              case ModeXsEsc:
2498                    if (b == '\\') { /* String Terminator */
2499                            XsParseMode = PrevMode;
2500                            XSequence(ST);
2501                    }
2502                    else { /* Other character -- invalid sequence */
2503                            ParseMode = ModeFirst;
2504                            XsParseMode = ModeXsFirst;
2505                    }
2506                    break;
2507    //        default:
2508    //              ParseMode = ModeFirst;
2509    //              XsParseMode = ModeXsFirst;
2510          }          }
         ColorNumber = 0;  
         StrBuff[0] = '\0';  
         StrLen = 0;  
         XsParseMode = ModeXsColorNum;  
       }  
       else if (StrLen < sizeof(StrBuff) - 1) {  
         StrBuff[StrLen++] = b;  
       }  
       break;  
     case ModeXsEsc:  
       if (b == '\\') { /* String Terminator */  
         XsParseMode = PrevMode;  
         XSequence(ST);  
       }  
       else { /* Other character -- invalid sequence */  
         ParseMode = ModeFirst;  
         XsParseMode = ModeXsFirst;  
       }  
       break;  
 //    default:  
 //      ParseMode = ModeFirst;  
 //      XsParseMode = ModeXsFirst;  
   }  
2511  }  }
2512    
2513  void DLESeen(BYTE b)  void DLESeen(BYTE b)
# Line 2587  BOOL ParseFirstJP(BYTE b) Line 2588  BOOL ParseFirstJP(BYTE b)
2588        Wrap = FALSE;        Wrap = FALSE;
2589      }      }
2590    }    }
2591            
2592    if (SSflag)    if (SSflag)
2593    {    {
2594      if (Gn[GLtmp] == IdKanji)      if (Gn[GLtmp] == IdKanji)
# Line 2673  BOOL ParseFirstJP(BYTE b) Line 2674  BOOL ParseFirstJP(BYTE b)
2674          ((ts.TermFlag & TF_FIXEDJIS)!=0))          ((ts.TermFlag & TF_FIXEDJIS)!=0))
2675        PutChar(b);  // katakana        PutChar(b);  // katakana
2676      else {      else {
2677        if (Gn[Glr[1]] == IdASCII)                  if (Gn[Glr[1]] == IdASCII)
2678          b = b & 0x7f;          b = b & 0x7f;
2679        PutChar(b);        PutChar(b);
2680      }      }
# Line 2715  extern unsigned short ConvertUnicode(uns Line 2716  extern unsigned short ConvertUnicode(uns
2716  //  //
2717  #include "hfs_plus.map"  #include "hfs_plus.map"
2718    
2719  unsigned short GetIllegalUnicode(int start_index, unsigned short first_code, unsigned short code,  unsigned short GetIllegalUnicode(int start_index, unsigned short first_code, unsigned short code,
2720                                                                   hfsplus_codemap_t *table, int tmax)                                                                   hfsplus_codemap_t *table, int tmax)
2721  {  {
2722          unsigned short result = 0;          unsigned short result = 0;
# Line 2799  static void UnicodeToCP932(unsigned int Line 2800  static void UnicodeToCP932(unsigned int
2800                          if (cset != 0) {                          if (cset != 0) {
2801                                  Kanji = cset & 0xff00;                                  Kanji = cset & 0xff00;
2802                                  PutKanji(cset & 0x00ff);                                  PutKanji(cset & 0x00ff);
2803                          }                          }
2804                  }                  }
2805    
2806                  if (cset == 0) {                  if (cset == 0) {
# Line 2861  BOOL ParseFirstUTF8(BYTE b, int hfsplus_ Line 2862  BOOL ParseFirstUTF8(BYTE b, int hfsplus_
2862          memset(mbchar, 0, sizeof(mbchar));          memset(mbchar, 0, sizeof(mbchar));
2863    
2864          // 2バイトコードの場合          // 2バイトコードの場合
2865          if ((buf[0] & 0xe0) == 0xc0 &&          if ((buf[0] & 0xe0) == 0xc0 &&
2866                  (buf[1] & 0xc0) == 0x80) {                  (buf[1] & 0xc0) == 0x80) {
2867    
2868                  if (hfsplus_mode == 1 && maybe_hfsplus == 1) {                  if (hfsplus_mode == 1 && maybe_hfsplus == 1) {
# Line 2886  BOOL ParseFirstUTF8(BYTE b, int hfsplus_ Line 2887  BOOL ParseFirstUTF8(BYTE b, int hfsplus_
2887                  }                  }
2888    
2889                  return TRUE;                  return TRUE;
2890          }          }
2891    
2892          buf[count++] = b;          buf[count++] = b;
2893                    
2894          if ((buf[0] & 0xe0) == 0xe0 &&          if ((buf[0] & 0xe0) == 0xe0 &&
2895                  (buf[1] & 0xc0) == 0x80 &&                  (buf[1] & 0xc0) == 0x80 &&
2896                  (buf[2] & 0xc0) == 0x80) { // 3バイトコードの場合                  (buf[2] & 0xc0) == 0x80) { // 3バイトコードの場合
2897    
2898                  // UTF-8 BOM(Byte Order Mark)                  // UTF-8 BOM(Byte Order Mark)
# Line 2977  void ParseFirst(BYTE b) Line 2978  void ParseFirst(BYTE b)
2978          if ((ts.Language==IdJapanese && ts.KanjiCode == IdUTF8) &&          if ((ts.Language==IdJapanese && ts.KanjiCode == IdUTF8) &&
2979                  ParseFirstUTF8(b, 0)) {                  ParseFirstUTF8(b, 0)) {
2980                          return;                          return;
   
2981          } else  if ((ts.Language==IdJapanese && ts.KanjiCode == IdUTF8m) &&          } else  if ((ts.Language==IdJapanese && ts.KanjiCode == IdUTF8m) &&
2982                  ParseFirstUTF8(b, 1)) {                  ParseFirstUTF8(b, 1)) {
2983                          return;                          return;
           
   
2984          } else if ((ts.Language==IdJapanese) &&          } else if ((ts.Language==IdJapanese) &&
2985      ParseFirstJP(b)) return;      ParseFirstJP(b)) return;
2986    else if ((ts.Language==IdRussian) &&    else if ((ts.Language==IdRussian) &&
2987      ParseFirstRus(b)) return;      ParseFirstRus(b)) return;
2988            
2989    if (SSflag)    if (SSflag)
2990    {    {
2991      PutChar(b);      PutChar(b);

Legend:
Removed from v.2476  
changed lines
  Added in v.2484

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