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 4227 by doda, Fri Dec 17 07:41:25 2010 UTC revision 4237 by doda, Mon Dec 20 00:37:14 2010 UTC
# Line 2908  void ControlSequence(BYTE b) Line 2908  void ControlSequence(BYTE b)
2908    FirstPrm = FALSE;    FirstPrm = FALSE;
2909  }  }
2910    
2911    void RequestStatusString(unsigned char *StrBuff, int StrLen) {
2912            unsigned char RepStr[256];
2913            int len = 0;
2914    
2915            switch (StrBuff[0]) {
2916            case '"':
2917                    switch (StrBuff[1]) {
2918                    case 'p': // DECSCL
2919                            switch (ts.TerminalID) {
2920                            case IdVT220J:
2921                            case IdVT282:
2922                                    len = _snprintf_s_l(RepStr, sizeof(RepStr), _TRUNCATE, "0$r62;%d", CLocale, Send8BitMode?0:1);
2923                                    break;
2924                            case IdVT320:
2925                            case IdVT382:
2926                                    len = _snprintf_s_l(RepStr, sizeof(RepStr), _TRUNCATE, "0$r63;%d", CLocale, Send8BitMode?0:1);
2927                                    break;
2928                            case IdVT420:
2929                                    len = _snprintf_s_l(RepStr, sizeof(RepStr), _TRUNCATE, "0$r64;%d", CLocale, Send8BitMode?0:1);
2930                                    break;
2931                            case IdVT520:
2932                            case IdVT525:
2933                                    len = _snprintf_s_l(RepStr, sizeof(RepStr), _TRUNCATE, "0$r65;%d", CLocale, Send8BitMode?0:1);
2934                                    break;
2935                            default:
2936                                    len = _snprintf_s_l(RepStr, sizeof(RepStr), _TRUNCATE, "0$r61;1", CLocale);
2937                                    break;
2938                            }
2939                            break;
2940                    }
2941                    break;
2942            }
2943            if (len > 0) {
2944                    SendDCSstr(RepStr, len);
2945            }
2946            else {
2947                    SendDCSstr("1$r", 0);
2948            }
2949    }
2950    
2951    void ParseDCS(BYTE Cmd, unsigned char *StrBuff, int len) {
2952            switch (ICount) {
2953            case 0:
2954                    break;
2955            case 1:
2956                    switch (IntChar[1]) {
2957                    case '!':
2958                            if (Cmd == '{') { // DECSTUI
2959                                    if (! (ts.TermFlag & TF_LOCKTUID)) {
2960                                            int i;
2961                                            for (i=0; i<8 && isxdigit(StrBuff[i]); i++) {
2962                                                    if (islower(StrBuff[i])) {
2963                                                            StrBuff[i] = toupper(StrBuff[i]);
2964                                                    }
2965                                            }
2966                                            if (len == 8 && i == 8) {
2967                                                    strncpy_s(ts.TerminalUID, sizeof(ts.TerminalUID), StrBuff, _TRUNCATE);
2968                                            }
2969                                    }
2970                            }
2971                            break;
2972                    case '$':
2973                            if (Cmd == 'q')  { // DECRQSS
2974                                    RequestStatusString(StrBuff, len);
2975                            }
2976                            break;
2977                    default:
2978                            break;
2979                    }
2980                    break;
2981            default:
2982                    break;
2983            }
2984    }
2985    
2986  #define ModeDcsFirst     1  #define ModeDcsFirst     1
2987  #define ModeDcsString    2  #define ModeDcsString    2
2988  void DeviceControl(BYTE b)  void DeviceControl(BYTE b)
# Line 2915  void DeviceControl(BYTE b) Line 2990  void DeviceControl(BYTE b)
2990          static unsigned char StrBuff[256];          static unsigned char StrBuff[256];
2991          static int DcsParseMode = ModeDcsFirst;          static int DcsParseMode = ModeDcsFirst;
2992          static int StrLen;          static int StrLen;
2993          static char Cmd;          static BYTE Cmd;
2994    
2995          if ((ESCFlag && (b=='\\')) || (b==ST && ts.KanjiCode!=IdSJIS)) {          if ((ESCFlag && (b=='\\')) || (b==ST && ts.KanjiCode!=IdSJIS)) {
2996                  if (DcsParseMode == ModeDcsString) {                  if (DcsParseMode == ModeDcsString) {
2997                            ParseDCS(Cmd, StrBuff, StrLen);
2998                          StrBuff[StrLen] = 0;                          StrBuff[StrLen] = 0;
                         switch (ICount) {  
                         case 0:  
                                 break;  
                         case 1:  
                                 if (IntChar[1] == '!' && Cmd == '{') { // DECSTUI  
                                         if (! (ts.TermFlag & TF_LOCKTUID)) {  
                                                 int i;  
                                                 for (i=0; i<8 && isxdigit(StrBuff[i]); i++) {  
                                                         if (islower(StrBuff[i])) {  
                                                                 StrBuff[i] = toupper(StrBuff[i]);  
                                                         }  
                                                 }  
                                                 if (StrLen == 8 && i == 8) {  
                                                         strncpy_s(ts.TerminalUID, sizeof(ts.TerminalUID), StrBuff, _TRUNCATE);  
                                                 }  
                                         }  
                                 }  
                                 break;  
                         default:  
                                 break;  
                         }  
2999                  }                  }
3000                  ESCFlag = FALSE;                  ESCFlag = FALSE;
3001                  ParseMode = SavedMode;                  ParseMode = SavedMode;

Legend:
Removed from v.4227  
changed lines
  Added in v.4237

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