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 3391 by doda, Tue Apr 28 13:10:36 2009 UTC revision 3392 by maya, Tue May 12 11:55:27 2009 UTC
# Line 72  BOOL PASCAL FAR StartTeraTerm(PTTSet ts) Line 72  BOOL PASCAL FAR StartTeraTerm(PTTSet ts)
72                  FirstInstance = FALSE;                  FirstInstance = FALSE;
73                  return TRUE;                  return TRUE;
74          }          }
75          else          else {
76                  return FALSE;                  return FALSE;
77            }
78  }  }
79    
80  void PASCAL FAR ChangeDefaultSet(PTTSet ts, PKeyMap km)  void PASCAL FAR ChangeDefaultSet(PTTSet ts, PKeyMap km)
81  {  {
82          if ((ts!=NULL) &&          if ((ts!=NULL) &&
83              (_stricmp(ts->SetupFName, pm->ts.SetupFName) == 0))                  (_stricmp(ts->SetupFName, pm->ts.SetupFName) == 0)) {
84                  memcpy(&(pm->ts),ts,sizeof(TTTSet));                  memcpy(&(pm->ts),ts,sizeof(TTTSet));
85          if (km!=NULL)          }
86            if (km!=NULL) {
87                  memcpy(&(pm->km),km,sizeof(TKeyMap));                  memcpy(&(pm->km),km,sizeof(TKeyMap));
88            }
89  }  }
90    
91  void PASCAL FAR GetDefaultSet(PTTSet ts)  void PASCAL FAR GetDefaultSet(PTTSet ts)
# Line 96  WORD PASCAL FAR GetKeyCode(PKeyMap KeyMa Line 99  WORD PASCAL FAR GetKeyCode(PKeyMap KeyMa
99  {  {
100          WORD Key;          WORD Key;
101    
102          if (KeyMap==NULL)          if (KeyMap==NULL) {
103                  KeyMap = &(pm->km);                  KeyMap = &(pm->km);
104            }
105          Key = IdKeyMax;          Key = IdKeyMax;
106          while ((Key>0) && (KeyMap->Map[Key-1] != Scan))          while ((Key>0) && (KeyMap->Map[Key-1] != Scan)) {
107                  Key--;                  Key--;
108            }
109          return Key;          return Key;
110  }  }
111    
# Line 112  void PASCAL FAR GetKeyStr(HWND HWin, PKe Line 117  void PASCAL FAR GetKeyStr(HWND HWin, PKe
117          MSG Msg;          MSG Msg;
118          char Temp[201];          char Temp[201];
119    
120          if (KeyMap==NULL)          if (KeyMap==NULL) {
121                  KeyMap = &(pm->km);                  KeyMap = &(pm->km);
122            }
123    
124          *Type = IdBinary;  // key type          *Type = IdBinary;  // key type
125          *Len = 0;          *Len = 0;
# Line 781  int FAR PASCAL RegWin(HWND HWinVT, HWND Line 787  int FAR PASCAL RegWin(HWND HWinVT, HWND
787                  return 0;                  return 0;
788          }          }
789          pm->WinList[pm->NWin++] = HWinVT;          pm->WinList[pm->NWin++] = HWinVT;
790          if (pm->NWin==1)          if (pm->NWin==1) {
791                  return 1;                  return 1;
792          else          }
793            else {
794                  return (int)(SendMessage(pm->WinList[pm->NWin-2],                  return (int)(SendMessage(pm->WinList[pm->NWin-2],
795                               WM_USER_GETSERIALNO,0,0)+1);                                           WM_USER_GETSERIALNO,0,0)+1);
796            }
797  }  }
798    
799  void FAR PASCAL UnregWin(HWND HWin)  void FAR PASCAL UnregWin(HWND HWin)
# Line 793  void FAR PASCAL UnregWin(HWND HWin) Line 801  void FAR PASCAL UnregWin(HWND HWin)
801          int i, j;          int i, j;
802    
803          i = 0;          i = 0;
804          while ((i<pm->NWin) && (pm->WinList[i]!=HWin))          while ((i<pm->NWin) && (pm->WinList[i]!=HWin)) {
805                  i++;                  i++;
806          if (pm->WinList[i]!=HWin)          }
807            if (pm->WinList[i]!=HWin) {
808                  return;                  return;
809          for (j=i ; j<pm->NWin-1 ; j++)          }
810            for (j=i ; j<pm->NWin-1 ; j++) {
811                  pm->WinList[j] = pm->WinList[j+1];                  pm->WinList[j] = pm->WinList[j+1];
812          if (pm->NWin>0)          }
813            if (pm->NWin>0) {
814                  pm->NWin--;                  pm->NWin--;
815            }
816  }  }
817    
818  void FAR PASCAL SetWinMenu(HMENU menu, PCHAR buf, int buflen, PCHAR langFile, int VTFlag)  void FAR PASCAL SetWinMenu(HMENU menu, PCHAR buf, int buflen, PCHAR langFile, int VTFlag)
# Line 829  void FAR PASCAL SetWinMenu(HMENU menu, P Line 841  void FAR PASCAL SetWinMenu(HMENU menu, P
841                          GetWindowText(Hw,&Temp[3],sizeof(Temp)-4);                          GetWindowText(Hw,&Temp[3],sizeof(Temp)-4);
842                          AppendMenu(menu,MF_ENABLED | MF_STRING,ID_WINDOW_1+i,Temp);                          AppendMenu(menu,MF_ENABLED | MF_STRING,ID_WINDOW_1+i,Temp);
843                          i++;                          i++;
844                          if (i>8)                          if (i>8) {
845                                  i = pm->NWin;                                  i = pm->NWin;
846                            }
847                  }                  }
848                  else                  else {
849                          UnregWin(Hw);                          UnregWin(Hw);
850                    }
851          }          }
852          get_lang_msg("MENU_WINDOW_WINDOW", buf, buflen, "&Window", langFile);          get_lang_msg("MENU_WINDOW_WINDOW", buf, buflen, "&Window", langFile);
853          if (VTFlag == 1) {          if (VTFlag == 1) {
# Line 858  void FAR PASCAL SetWinList(HWND HWin, HW Line 872  void FAR PASCAL SetWinList(HWND HWin, HW
872                          GetWindowText(Hw,Temp,sizeof(Temp)-1);                          GetWindowText(Hw,Temp,sizeof(Temp)-1);
873                          SendDlgItemMessage(HDlg, IList, LB_ADDSTRING,                          SendDlgItemMessage(HDlg, IList, LB_ADDSTRING,
874                                             0, (LONG)Temp);                                             0, (LONG)Temp);
875                          if (Hw==HWin)                          if (Hw==HWin) {
876                                  SendDlgItemMessage(HDlg, IList, LB_SETCURSEL,                                  SendDlgItemMessage(HDlg, IList, LB_SETCURSEL, i,0);
877                                                    i,0);                          }
878                  }                  }
879                  else                  else {
880                          UnregWin(Hw);                          UnregWin(Hw);
881                    }
882          }          }
883  }  }
884    
# Line 880  void FAR PASCAL SelectNextWin(HWND HWin, Line 895  void FAR PASCAL SelectNextWin(HWND HWin,
895          int i;          int i;
896    
897          i = 0;          i = 0;
898          while ((i<pm->NWin) && (pm->WinList[i]!=HWin))          while ((i<pm->NWin) && (pm->WinList[i]!=HWin)) {
899                  i++;                  i++;
900          if (pm->WinList[i]!=HWin)          }
901            if (pm->WinList[i]!=HWin) {
902                  return;                  return;
903            }
904          i = i + Next;          i = i + Next;
905          if (i >= pm->NWin)          if (i >= pm->NWin) {
906                  i = 0;                  i = 0;
907          else if (i<0)          }
908            else if (i<0) {
909                  i = pm->NWin-1;                  i = pm->NWin-1;
910            }
911          SelectWin(i);          SelectWin(i);
912  }  }
913    
914  HWND FAR PASCAL GetNthWin(int n)  HWND FAR PASCAL GetNthWin(int n)
915  {  {
916          if (n<pm->NWin)          if (n<pm->NWin) {
917                  return pm->WinList[n];                  return pm->WinList[n];
918          else          }
919            else {
920                  return NULL;                  return NULL;
921            }
922  }  }
923    
924  int FAR PASCAL CommReadRawByte(PComVar cv, LPBYTE b)  int FAR PASCAL CommReadRawByte(PComVar cv, LPBYTE b)
925  {  {
926          if ( ! cv->Ready )          if ( ! cv->Ready ) {
927                  return 0;                  return 0;
928            }
929    
930          if ( cv->InBuffCount>0 ) {          if ( cv->InBuffCount>0 ) {
931                  *b = cv->InBuff[cv->InPtr];                  *b = cv->InBuff[cv->InPtr];
932                  cv->InPtr++;                  cv->InPtr++;
933                  cv->InBuffCount--;                  cv->InBuffCount--;
934                  if ( cv->InBuffCount==0 )                  if ( cv->InBuffCount==0 ) {
935                          cv->InPtr = 0;                          cv->InPtr = 0;
936                    }
937                  return 1;                  return 1;
938          }          }
939          else {          else {
# Line 921  int FAR PASCAL CommReadRawByte(PComVar c Line 944  int FAR PASCAL CommReadRawByte(PComVar c
944    
945  void PASCAL FAR CommInsert1Byte(PComVar cv, BYTE b)  void PASCAL FAR CommInsert1Byte(PComVar cv, BYTE b)
946  {  {
947          if ( ! cv->Ready )          if ( ! cv->Ready ) {
948                  return;                  return;
949            }
950    
951          if (cv->InPtr == 0)          if (cv->InPtr == 0) {
952                  memmove(&(cv->InBuff[1]),&(cv->InBuff[0]),cv->InBuffCount);                  memmove(&(cv->InBuff[1]),&(cv->InBuff[0]),cv->InBuffCount);
953          else          }
954            else {
955                  cv->InPtr--;                  cv->InPtr--;
956            }
957          cv->InBuff[cv->InPtr] = b;          cv->InBuff[cv->InPtr] = b;
958          cv->InBuffCount++;          cv->InBuffCount++;
959    
960          if (cv->HBinBuf!=0 )          if (cv->HBinBuf!=0 ) {
961                  cv->BinSkip++;                  cv->BinSkip++;
962            }
963  }  }
964    
965  void Log1Bin(PComVar cv, BYTE b)  void Log1Bin(PComVar cv, BYTE b)
966  {  {
967          if (((cv->FilePause & OpLog)!=0) || cv->ProtoFlag)          if (((cv->FilePause & OpLog)!=0) || cv->ProtoFlag) {
968                  return;                  return;
969            }
970          if (cv->BinSkip > 0) {          if (cv->BinSkip > 0) {
971                  cv->BinSkip--;                  cv->BinSkip--;
972                  return;                  return;
973          }          }
974          cv->BinBuf[cv->BinPtr] = b;          cv->BinBuf[cv->BinPtr] = b;
975          cv->BinPtr++;          cv->BinPtr++;
976          if (cv->BinPtr>=InBuffSize)          if (cv->BinPtr>=InBuffSize) {
977                  cv->BinPtr = cv->BinPtr-InBuffSize;                  cv->BinPtr = cv->BinPtr-InBuffSize;
978            }
979          if (cv->BCount>=InBuffSize) {          if (cv->BCount>=InBuffSize) {
980                  cv->BCount = InBuffSize;                  cv->BCount = InBuffSize;
981                  cv->BStart = cv->BinPtr;                  cv->BStart = cv->BinPtr;
982          }          }
983          else          else {
984                  cv->BCount++;                  cv->BCount++;
985            }
986  }  }
987    
988  int FAR PASCAL CommRead1Byte(PComVar cv, LPBYTE b)  int FAR PASCAL CommRead1Byte(PComVar cv, LPBYTE b)
989  {  {
990          int c;          int c;
991    
992          if ( ! cv->Ready )          if ( ! cv->Ready ) {
993                  return 0;                  return 0;
994            }
995    
996          if ((cv->HLogBuf!=NULL) &&          if ((cv->HLogBuf!=NULL) &&
997              ((cv->LCount>=InBuffSize-10) ||              ((cv->LCount>=InBuffSize-10) ||
# Line 973  int FAR PASCAL CommRead1Byte(PComVar cv, Line 1004  int FAR PASCAL CommRead1Byte(PComVar cv,
1004          }          }
1005    
1006          if ((cv->HBinBuf!=NULL) &&          if ((cv->HBinBuf!=NULL) &&
1007              (cv->BCount>=InBuffSize-10))              (cv->BCount>=InBuffSize-10)) {
1008                  return 0;                  return 0;
1009            }
1010    
1011          if ( cv->TelMode )          if ( cv->TelMode ) {
1012                  c = 0;                  c = 0;
1013          else          }
1014            else {
1015                  c = CommReadRawByte(cv,b);                  c = CommReadRawByte(cv,b);
1016            }
1017    
1018          if ((c==1) && cv->TelCRFlag) {          if ((c==1) && cv->TelCRFlag) {
1019                  cv->TelCRFlag = FALSE;                  cv->TelCRFlag = FALSE;
1020                  if (*b==0) c = 0;                  if (*b==0) {
1021                            c = 0;
1022                    }
1023          }          }
1024    
1025          if ( c==1 ) {          if ( c==1 ) {
# Line 992  int FAR PASCAL CommRead1Byte(PComVar cv, Line 1028  int FAR PASCAL CommRead1Byte(PComVar cv,
1028                          if ( *b != 0xFF ) {                          if ( *b != 0xFF ) {
1029                                  cv->TelMode = TRUE;                                  cv->TelMode = TRUE;
1030                                  CommInsert1Byte(cv,*b);                                  CommInsert1Byte(cv,*b);
1031                                  if ( cv->HBinBuf!=0 )                                  if ( cv->HBinBuf!=0 ) {
1032                                          cv->BinSkip--;                                          cv->BinSkip--;
1033                                    }
1034                                  c = 0;                                  c = 0;
1035                          }                          }
1036                  }                  }
1037                  else if ((cv->PortType==IdTCPIP) && (*b==0xFF)) {                  else if ((cv->PortType==IdTCPIP) && (*b==0xFF)) {
1038                          if (!cv->TelFlag && cv->TelAutoDetect)  /* TTPLUG */                          if (!cv->TelFlag && cv->TelAutoDetect) { /* TTPLUG */
1039                                  cv->TelFlag = TRUE;                                  cv->TelFlag = TRUE;
1040                            }
1041                          if (cv->TelFlag) {                          if (cv->TelFlag) {
1042                                  cv->IACFlag = TRUE;                                  cv->IACFlag = TRUE;
1043                                  c = 0;                                  c = 0;
1044                          }                          }
1045                  }                  }
1046                  else if (cv->TelFlag && ! cv->TelBinRecv && (*b==0x0D))                  else if (cv->TelFlag && ! cv->TelBinRecv && (*b==0x0D)) {
1047                          cv->TelCRFlag = TRUE;                          cv->TelCRFlag = TRUE;
1048                    }
1049          }          }
1050    
1051          if ( (c==1) && (cv->HBinBuf!=0) )          if ( (c==1) && (cv->HBinBuf!=0) ) {
1052                  Log1Bin(cv, *b);                  Log1Bin(cv, *b);
1053            }
1054    
1055          return c;          return c;
1056  }  }
# Line 1019  int FAR PASCAL CommRawOut(PComVar cv, PC Line 1059  int FAR PASCAL CommRawOut(PComVar cv, PC
1059  {  {
1060          int a;          int a;
1061    
1062          if ( ! cv->Ready )          if ( ! cv->Ready ) {
1063                  return C;                  return C;
1064            }
1065    
1066          if (C > OutBuffSize - cv->OutBuffCount)          if (C > OutBuffSize - cv->OutBuffCount) {
1067                  a = OutBuffSize - cv->OutBuffCount;                  a = OutBuffSize - cv->OutBuffCount;
1068          else          }
1069            else {
1070                  a = C;                  a = C;
1071            }
1072          if ( cv->OutPtr > 0 ) {          if ( cv->OutPtr > 0 ) {
1073                  memmove(&(cv->OutBuff[0]),&(cv->OutBuff[cv->OutPtr]),cv->OutBuffCount);                  memmove(&(cv->OutBuff[0]),&(cv->OutBuff[cv->OutPtr]),cv->OutBuffCount);
1074                  cv->OutPtr = 0;                  cv->OutPtr = 0;
# Line 1040  int FAR PASCAL CommBinaryOut(PComVar cv, Line 1083  int FAR PASCAL CommBinaryOut(PComVar cv,
1083          int a, i, Len;          int a, i, Len;
1084          char d[3];          char d[3];
1085    
1086          if ( ! cv->Ready )          if ( ! cv->Ready ) {
1087                  return C;                  return C;
1088            }
1089    
1090          i = 0;          i = 0;
1091          a = 1;          a = 1;
# Line 1066  int FAR PASCAL CommBinaryOut(PComVar cv, Line 1110  int FAR PASCAL CommBinaryOut(PComVar cv,
1110                          CommRawOut(cv,d,Len);                          CommRawOut(cv,d,Len);
1111                          a = 1;                          a = 1;
1112                  }                  }
1113                  else                  else {
1114                          a = 0;                          a = 0;
1115                    }
1116    
1117                  i = i + a;                  i = i + a;
1118          }          }
# Line 1131  int TextOutJP(PComVar cv, PCHAR B, int C Line 1176  int TextOutJP(PComVar cv, PCHAR B, int C
1176    
1177                          } else {                          } else {
1178    
1179                                  if (cv->KanjiCodeSend == IdEUC)                                  if (cv->KanjiCodeSend == IdEUC) {
1180                                          K = SJIS2EUC(K);                                          K = SJIS2EUC(K);
1181                                  else if (cv->KanjiCodeSend != IdSJIS)                                  }
1182                                    else if (cv->KanjiCodeSend != IdSJIS) {
1183                                          K = SJIS2JIS(K);                                          K = SJIS2JIS(K);
1184                                    }
1185    
1186                                  if ((cv->SendCode==IdKatakana) &&                                  if ((cv->SendCode==IdKatakana) &&
1187                                      (cv->KanjiCodeSend==IdJIS) &&                                      (cv->KanjiCodeSend==IdJIS) &&
# Line 1158  int TextOutJP(PComVar cv, PCHAR B, int C Line 1205  int TextOutJP(PComVar cv, PCHAR B, int C
1205                              (cv->KanjiCodeSend==IdJIS)) {                              (cv->KanjiCodeSend==IdJIS)) {
1206                                  TempStr[0] = 0x1B;                                  TempStr[0] = 0x1B;
1207                                  TempStr[1] = '$';                                  TempStr[1] = '$';
1208                                  if (cv->KanjiIn == IdKanjiInB)                                  if (cv->KanjiIn == IdKanjiInB) {
1209                                          TempStr[2] = 'B';                                          TempStr[2] = 'B';
1210                                  else                                  }
1211                                    else {
1212                                          TempStr[2] = '@';                                          TempStr[2] = '@';
1213                                    }
1214                                  TempLen = 3;                                  TempLen = 3;
1215                          }                          }
1216                          else TempLen = 0;                          else {
1217                                    TempLen = 0;
1218                            }
1219                  }                  }
1220                  else {                  else {
1221                          KanjiFlagNew = FALSE;                          KanjiFlagNew = FALSE;
1222    
1223                          if ((cv->SendCode==IdKanji) &&                          if ((cv->SendCode==IdKanji) &&
1224                                  (cv->KanjiCodeSend==IdJIS))                              (cv->KanjiCodeSend==IdJIS)) {
                         {  
1225                                  TempStr[0] = 0x1B;                                  TempStr[0] = 0x1B;
1226                                  TempStr[1] = '(';                                  TempStr[1] = '(';
1227                                  switch (cv->KanjiOut) {                                  switch (cv->KanjiOut) {
# Line 1186  int TextOutJP(PComVar cv, PCHAR B, int C Line 1236  int TextOutJP(PComVar cv, PCHAR B, int C
1236                                  }                                  }
1237                                  TempLen = 3;                                  TempLen = 3;
1238                          }                          }
1239                          else TempLen = 0;                          else {
1240                                    TempLen = 0;
1241                            }
1242    
1243                          if ((0xa0<d) && (d<0xe0)) {                          if ((0xa0<d) && (d<0xe0)) {
1244                                  SendCodeNew = IdKatakana;                                  SendCodeNew = IdKatakana;
# Line 1227  int TextOutJP(PComVar cv, PCHAR B, int C Line 1279  int TextOutJP(PComVar cv, PCHAR B, int C
1279                                          TempLen++;                                          TempLen++;
1280                                  }                                  }
1281                                  if ((cv->KanjiCodeSend==IdJIS) &&                                  if ((cv->KanjiCodeSend==IdJIS) &&
1282                                      (cv->JIS7KatakanaSend==1))                                          (cv->JIS7KatakanaSend==1)) {
1283                                          TempStr[TempLen] = d & 0x7f;                                          TempStr[TempLen] = d & 0x7f;
1284                                  else                                  }
1285                                    else {
1286                                          TempStr[TempLen] = d;                                          TempStr[TempLen] = d;
1287                                    }
1288                                  TempLen++;                                  TempLen++;
1289    
1290                                  // 半角カナはUnicodeでは2バイトになる (2004.10.4 yutaka)                                  // 半角カナはUnicodeでは2バイトになる (2004.10.4 yutaka)
# Line 1300  int TextOutKR(PComVar cv, PCHAR B, int C Line 1354  int TextOutKR(PComVar cv, PCHAR B, int C
1354    
1355                          } else {                          } else {
1356    
1357                                  if (cv->KanjiCodeSend == IdEUC) K = K;                                  if (cv->KanjiCodeSend == IdEUC) {
1358                                  else if (cv->KanjiCodeSend != IdSJIS) K = K;                                          K = K;
1359                                    }
1360                                    else if (cv->KanjiCodeSend != IdSJIS) {
1361                                            K = K;
1362                                    }
1363    
1364                                  if ((cv->SendCode==IdKatakana) &&                                  if ((cv->SendCode==IdKatakana) &&
1365                                          (cv->KanjiCodeSend==IdJIS) &&                                      (cv->KanjiCodeSend==IdJIS) &&
1366                                          (cv->JIS7KatakanaSend==1))                                      (cv->JIS7KatakanaSend==1)) {
                                 {  
1367                                          TempStr[TempLen] = SI;                                          TempStr[TempLen] = SI;
1368                                          TempLen++;                                          TempLen++;
1369                                  }                                  }
# Line 1323  int TextOutKR(PComVar cv, PCHAR B, int C Line 1380  int TextOutKR(PComVar cv, PCHAR B, int C
1380                          SendCodeNew = IdKanji;                          SendCodeNew = IdKanji;
1381    
1382                          if ((cv->SendCode!=IdKanji) &&                          if ((cv->SendCode!=IdKanji) &&
1383                                  (cv->KanjiCodeSend==IdJIS))                              (cv->KanjiCodeSend==IdJIS)) {
                         {  
1384                                  TempStr[0] = 0x1B;                                  TempStr[0] = 0x1B;
1385                                  TempStr[1] = '$';                                  TempStr[1] = '$';
1386                                  if (cv->KanjiIn == IdKanjiInB)                                  if (cv->KanjiIn == IdKanjiInB) {
1387                                          TempStr[2] = 'B';                                          TempStr[2] = 'B';
1388                                  else                                  }
1389                                    else {
1390                                          TempStr[2] = '@';                                          TempStr[2] = '@';
1391                                    }
1392                                  TempLen = 3;                                  TempLen = 3;
1393                          }                          }
1394                          else TempLen = 0;                          else {
1395                                    TempLen = 0;
1396                            }
1397                  }                  }
1398                  else {                  else {
1399                          KanjiFlagNew = FALSE;                          KanjiFlagNew = FALSE;
1400    
1401                          if ((cv->SendCode==IdKanji) &&                          if ((cv->SendCode==IdKanji) &&
1402                                  (cv->KanjiCodeSend==IdJIS))                              (cv->KanjiCodeSend==IdJIS)) {
                         {  
1403                                  TempStr[0] = 0x1B;                                  TempStr[0] = 0x1B;
1404                                  TempStr[1] = '(';                                  TempStr[1] = '(';
1405                                  switch (cv->KanjiOut) {                                  switch (cv->KanjiOut) {
1406                                  case IdKanjiOutJ: TempStr[2] = 'J'; break;                                          case IdKanjiOutJ:
1407                                  case IdKanjiOutH: TempStr[2] = 'H'; break;                                                  TempStr[2] = 'J';
1408                                  default:                                                  break;
1409                                          TempStr[2] = 'B';                                          case IdKanjiOutH:
1410                                                    TempStr[2] = 'H';
1411                                                    break;
1412                                            default:
1413                                                    TempStr[2] = 'B';
1414                                  }                                  }
1415                                  TempLen = 3;                                  TempLen = 3;
1416                          }                          }
1417                          else TempLen = 0;                          else {
1418                                    TempLen = 0;
1419                            }
1420    
1421                          if ((0xa0<d) && (d<0xe0))                          if ((0xa0<d) && (d<0xe0)) {
                         {  
1422                                  SendCodeNew = IdKatakana;                                  SendCodeNew = IdKatakana;
1423                                  if ((cv->SendCode!=IdKatakana) &&                                  if ((cv->SendCode!=IdKatakana) &&
1424                                          (cv->KanjiCodeSend==IdJIS) &&                                      (cv->KanjiCodeSend==IdJIS) &&
1425                                          (cv->JIS7KatakanaSend==1))                                      (cv->JIS7KatakanaSend==1)) {
                                 {  
1426                                          TempStr[TempLen] = SO;                                          TempStr[TempLen] = SO;
1427                                          TempLen++;                                          TempLen++;
1428                                  }                                  }
# Line 1367  int TextOutKR(PComVar cv, PCHAR B, int C Line 1430  int TextOutKR(PComVar cv, PCHAR B, int C
1430                          else {                          else {
1431                                  SendCodeNew = IdASCII;                                  SendCodeNew = IdASCII;
1432                                  if ((cv->SendCode==IdKatakana) &&                                  if ((cv->SendCode==IdKatakana) &&
1433                                          (cv->KanjiCodeSend==IdJIS) &&                                      (cv->KanjiCodeSend==IdJIS) &&
1434                                          (cv->JIS7KatakanaSend==1))                                      (cv->JIS7KatakanaSend==1)) {
                                 {  
1435                                          TempStr[TempLen] = SI;                                          TempStr[TempLen] = SI;
1436                                          TempLen++;                                          TempLen++;
1437                                  }                                  }
1438                          }                          }
1439    
1440                          if (d==0x0d)                          if (d==0x0d) {
                         {  
1441                                  TempStr[TempLen] = 0x0d;                                  TempStr[TempLen] = 0x0d;
1442                                  TempLen++;                                  TempLen++;
1443                                  if (cv->CRSend==IdCRLF)                                  if (cv->CRSend==IdCRLF) {
                                 {  
1444                                          TempStr[TempLen] = 0x0a;                                          TempStr[TempLen] = 0x0a;
1445                                          TempLen++;                                          TempLen++;
1446                                  }                                  }
1447                                  else if ((cv->CRSend==IdCR) &&                                  else if ((cv->CRSend==IdCR) &&
1448                                          cv->TelFlag && ! cv->TelBinSend)                                      cv->TelFlag && ! cv->TelBinSend) {
                                 {  
1449                                          TempStr[TempLen] = 0;                                          TempStr[TempLen] = 0;
1450                                          TempLen++;                                          TempLen++;
1451                                  }                                  }
1452                          }                          }
1453                          else if ((d>=0xa1) && (d<=0xe0))                          else if ((d>=0xa1) && (d<=0xe0)) {
                         {  
1454                                  /* Katakana */                                  /* Katakana */
1455                                  if (cv->KanjiCodeSend==IdEUC)                                  if (cv->KanjiCodeSend==IdEUC) {
                                 {  
1456                                          TempStr[TempLen] = (char)0x8E;                                          TempStr[TempLen] = (char)0x8E;
1457                                          TempLen++;                                          TempLen++;
1458                                  }                                  }
1459                                  if ((cv->KanjiCodeSend==IdJIS) &&                                  if ((cv->KanjiCodeSend==IdJIS) &&
1460                                          (cv->JIS7KatakanaSend==1))                                          (cv->JIS7KatakanaSend==1)) {
1461                                          TempStr[TempLen] = d & 0x7f;                                          TempStr[TempLen] = d & 0x7f;
1462                                  else                                  }
1463                                    else {
1464                                          TempStr[TempLen] = d;                                          TempStr[TempLen] = d;
1465                                    }
1466                                  TempLen++;                                  TempLen++;
1467    
1468                                  // 半角カナはUnicodeでは2バイトになる (2004.10.4 yutaka)                                  // 半角カナはUnicodeでは2バイトになる (2004.10.4 yutaka)
# Line 1416  int TextOutKR(PComVar cv, PCHAR B, int C Line 1475  int TextOutKR(PComVar cv, PCHAR B, int C
1475                          else {                          else {
1476                                  TempStr[TempLen] = d;                                  TempStr[TempLen] = d;
1477                                  TempLen++;                                  TempLen++;
1478                                  if (cv->TelFlag && (d==0xff))                                  if (cv->TelFlag && (d==0xff)) {
                                 {  
1479                                          TempStr[TempLen] = (char)0xff;                                          TempStr[TempLen] = (char)0xff;
1480                                          TempLen++;                                          TempLen++;
1481                                  }                                  }
1482                          }                          }
1483                  } // if (cv->SendKanjiFlag) else if ... else ... end                  } // if (cv->SendKanjiFlag) else if ... else ... end
1484    
1485                  if (TempLen == 0)                  if (TempLen == 0) {
                 {  
1486                          i++;                          i++;
1487                          cv->SendCode = SendCodeNew;                          cv->SendCode = SendCodeNew;
1488                          cv->SendKanjiFlag = KanjiFlagNew;                          cv->SendKanjiFlag = KanjiFlagNew;
1489                  }                  }
1490                  else {                  else {
1491                          Full = OutBuffSize-cv->OutBuffCount-TempLen < 0;                          Full = OutBuffSize-cv->OutBuffCount-TempLen < 0;
1492                          if (! Full)                          if (! Full) {
                         {  
1493                                  i++;                                  i++;
1494                                  cv->SendCode = SendCodeNew;                                  cv->SendCode = SendCodeNew;
1495                                  cv->SendKanjiFlag = KanjiFlagNew;                                  cv->SendKanjiFlag = KanjiFlagNew;
# Line 1453  int FAR PASCAL CommTextOut(PComVar cv, P Line 1509  int FAR PASCAL CommTextOut(PComVar cv, P
1509          BYTE d;          BYTE d;
1510          BOOL Full;          BOOL Full;
1511    
1512          if (! cv->Ready )          if (! cv->Ready ) {
1513                  return C;                  return C;
1514            }
1515    
1516          if (cv->Language==IdJapanese)          if (cv->Language==IdJapanese) {
1517                  return TextOutJP(cv,B,C);                  return TextOutJP(cv,B,C);
1518          if (cv->Language==IdKorean)             // HKS          }
1519            if (cv->Language==IdKorean) { // HKS
1520                  return TextOutKR(cv,B,C);                  return TextOutKR(cv,B,C);
1521            }
1522    
1523          Full = FALSE;          Full = FALSE;
1524          i = 0;          i = 0;
# Line 1572  int FAR PASCAL TextEchoJP(PComVar cv, PC Line 1631  int FAR PASCAL TextEchoJP(PComVar cv, PC
1631                                  OutputTextUTF8(K, TempStr, &TempLen, cv);                                  OutputTextUTF8(K, TempStr, &TempLen, cv);
1632                          }                          }
1633                          else {                          else {
1634                                  if (cv->KanjiCodeEcho == IdEUC)                                  if (cv->KanjiCodeEcho == IdEUC) {
1635                                          K = SJIS2EUC(K);                                          K = SJIS2EUC(K);
1636                                  else if (cv->KanjiCodeEcho != IdSJIS)                                  }
1637                                    else if (cv->KanjiCodeEcho != IdSJIS) {
1638                                          K = SJIS2JIS(K);                                          K = SJIS2JIS(K);
1639                                    }
1640    
1641                                  if ((cv->EchoCode==IdKatakana) &&                                  if ((cv->EchoCode==IdKatakana) &&
1642                                      (cv->KanjiCodeEcho==IdJIS) &&                                      (cv->KanjiCodeEcho==IdJIS) &&
# Line 1598  int FAR PASCAL TextEchoJP(PComVar cv, PC Line 1659  int FAR PASCAL TextEchoJP(PComVar cv, PC
1659                              (cv->KanjiCodeEcho==IdJIS)) {                              (cv->KanjiCodeEcho==IdJIS)) {
1660                                  TempStr[0] = 0x1B;                                  TempStr[0] = 0x1B;
1661                                  TempStr[1] = '$';                                  TempStr[1] = '$';
1662                                  if (cv->KanjiIn == IdKanjiInB)                                  if (cv->KanjiIn == IdKanjiInB) {
1663                                          TempStr[2] = 'B';                                          TempStr[2] = 'B';
1664                                  else                                  }
1665                                    else {
1666                                          TempStr[2] = '@';                                          TempStr[2] = '@';
1667                                    }
1668                                  TempLen = 3;                                  TempLen = 3;
1669                          }                          }
1670                          else                          else {
1671                                  TempLen = 0;                                  TempLen = 0;
1672                            }
1673                  }                  }
1674                  else {                  else {
1675                          KanjiFlagNew = FALSE;                          KanjiFlagNew = FALSE;
# Line 1656  int FAR PASCAL TextEchoJP(PComVar cv, PC Line 1720  int FAR PASCAL TextEchoJP(PComVar cv, PC
1720                                          TempLen++;                                          TempLen++;
1721                                  }                                  }
1722                                  else if ((cv->CRSend==IdCR) &&                                  else if ((cv->CRSend==IdCR) &&
1723                                                   cv->TelFlag && ! cv->TelBinSend) {                                            cv->TelFlag && ! cv->TelBinSend) {
1724                                          TempStr[TempLen] = 0;                                          TempStr[TempLen] = 0;
1725                                          TempLen++;                                          TempLen++;
1726                                  }                                  }
# Line 1668  int FAR PASCAL TextEchoJP(PComVar cv, PC Line 1732  int FAR PASCAL TextEchoJP(PComVar cv, PC
1732                                          TempLen++;                                          TempLen++;
1733                                  }                                  }
1734                                  if ((cv->KanjiCodeEcho==IdJIS) &&                                  if ((cv->KanjiCodeEcho==IdJIS) &&
1735                                      (cv->JIS7KatakanaEcho==1))                                          (cv->JIS7KatakanaEcho==1)) {
1736                                          TempStr[TempLen] = d & 0x7f;                                          TempStr[TempLen] = d & 0x7f;
1737                                  else                                  }
1738                                    else {
1739                                          TempStr[TempLen] = d;                                          TempStr[TempLen] = d;
1740                                    }
1741                                  TempLen++;                                  TempLen++;
1742                          }                          }
1743                          else {                          else {
# Line 1712  int FAR PASCAL CommTextEcho(PComVar cv, Line 1778  int FAR PASCAL CommTextEcho(PComVar cv,
1778          BYTE d;          BYTE d;
1779          BOOL Full;          BOOL Full;
1780    
1781          if ( ! cv->Ready )          if ( ! cv->Ready ) {
1782                  return C;                  return C;
1783            }
1784    
1785          if ( (cv->InPtr>0) && (cv->InBuffCount>0) ) {          if ( (cv->InPtr>0) && (cv->InBuffCount>0) ) {
1786                  memmove(cv->InBuff,&(cv->InBuff[cv->InPtr]),cv->InBuffCount);                  memmove(cv->InBuff,&(cv->InBuff[cv->InPtr]),cv->InBuffCount);
1787                  cv->InPtr = 0;                  cv->InPtr = 0;
1788          }          }
1789    
1790          if (cv->Language==IdJapanese)          if (cv->Language==IdJapanese) {
1791                  return TextEchoJP(cv,B,C);                  return TextEchoJP(cv,B,C);
1792            }
1793    
1794          Full = FALSE;          Full = FALSE;
1795          i = 0;          i = 0;
# Line 1744  int FAR PASCAL CommTextEcho(PComVar cv, Line 1812  int FAR PASCAL CommTextEcho(PComVar cv,
1812                  }                  }
1813                  else {                  else {
1814                          if ((cv->Language==IdRussian) &&                          if ((cv->Language==IdRussian) &&
1815                              (d>=128))                                  (d>=128)) {
1816                                  d = RussConv(cv->RussClient,cv->RussHost,d);                                  d = RussConv(cv->RussClient,cv->RussHost,d);
1817                            }
1818                          TempStr[TempLen] = d;                          TempStr[TempLen] = d;
1819                          TempLen++;                          TempLen++;
1820                          if (cv->TelFlag && (d==0xff)) {                          if (cv->TelFlag && (d==0xff)) {
# Line 1790  static void ListupSerialPort(LPWORD ComP Line 1859  static void ListupSerialPort(LPWORD ComP
1859          bRet =          bRet =
1860                  SetupDiClassGuidsFromName(_T("PORTS"), (LPGUID) & ClassGuid, 1,                  SetupDiClassGuidsFromName(_T("PORTS"), (LPGUID) & ClassGuid, 1,
1861                                            &dwRequiredSize);                                            &dwRequiredSize);
1862          if (!bRet)          if (!bRet) {
1863                  goto cleanup;                  goto cleanup;
1864            }
1865    
1866  // Get class devices  // Get class devices
1867          // COMポート番号を強制付け替えした場合に、現在のものではなく、レジストリに残っている          // COMポート番号を強制付け替えした場合に、現在のものではなく、レジストリに残っている
# Line 1803  static void ListupSerialPort(LPWORD ComP Line 1873  static void ListupSerialPort(LPWORD ComP
1873  // Enumerate devices  // Enumerate devices
1874                  dwMemberIndex = 0;                  dwMemberIndex = 0;
1875                  while (SetupDiEnumDeviceInfo                  while (SetupDiEnumDeviceInfo
1876                             (DeviceInfoSet, dwMemberIndex++, &DeviceInfoData)) {                         (DeviceInfoSet, dwMemberIndex++, &DeviceInfoData)) {
1877                          TCHAR szFriendlyName[MAX_PATH];                          TCHAR szFriendlyName[MAX_PATH];
1878                          TCHAR szPortName[MAX_PATH];                          TCHAR szPortName[MAX_PATH];
1879                          //TCHAR szMessage[MAX_PATH];                          //TCHAR szMessage[MAX_PATH];
# Line 1863  static void ListupSerialPort(LPWORD ComP Line 1933  static void ListupSerialPort(LPWORD ComP
1933                  }                  }
1934          }          }
1935    
1936    cleanup:  cleanup:
1937  // Destroy device info list  // Destroy device info list
1938          SetupDiDestroyDeviceInfoList(DeviceInfoSet);          SetupDiDestroyDeviceInfoList(DeviceInfoSet);
1939  }  }
# Line 1893  int PASCAL DetectComPorts(LPWORD ComPort Line 1963  int PASCAL DetectComPorts(LPWORD ComPort
1963    
1964                  for (i=0; i<comports-1; i++) {                  for (i=0; i<comports-1; i++) {
1965                          min = i;                          min = i;
1966                          for (j=i+1; j<comports; j++)                          for (j=i+1; j<comports; j++) {
1967                                  if (ComPortTable[min] > ComPortTable[j])                                  if (ComPortTable[min] > ComPortTable[j]) {
1968                                          min = j;                                          min = j;
1969                                    }
1970                            }
1971                          if (min != i) {                          if (min != i) {
1972                                  s = ComPortTable[i];                                  s = ComPortTable[i];
1973                                  ComPortTable[i] = ComPortTable[min];                                  ComPortTable[i] = ComPortTable[min];
# Line 1939  BOOL WINAPI DllMain(HANDLE hInstance, Line 2011  BOOL WINAPI DllMain(HANDLE hInstance,
2011                          /* do process initialization */                          /* do process initialization */
2012                          DoCover_IsDebuggerPresent();                          DoCover_IsDebuggerPresent();
2013                          hInst = hInstance;                          hInst = hInstance;
2014                          HMap = CreateFileMapping(                          HMap = CreateFileMapping((HANDLE) 0xFFFFFFFF, NULL, PAGE_READWRITE,
2015                                  (HANDLE) 0xFFFFFFFF, NULL, PAGE_READWRITE,                                                   0, sizeof(TMap), TT_FILEMAPNAME);
2016                                  0, sizeof(TMap), TT_FILEMAPNAME);                          if (HMap == NULL) {
                         if (HMap == NULL)  
2017                                  return FALSE;                                  return FALSE;
2018                            }
2019                          FirstInstance = (GetLastError() != ERROR_ALREADY_EXISTS);                          FirstInstance = (GetLastError() != ERROR_ALREADY_EXISTS);
2020    
2021                          pm = (PMap)MapViewOfFile(HMap,FILE_MAP_WRITE,0,0,0);                          pm = (PMap)MapViewOfFile(HMap,FILE_MAP_WRITE,0,0,0);
2022                          if (pm == NULL)                          if (pm == NULL) {
2023                                  return FALSE;                                  return FALSE;
2024                            }
2025                          break;                          break;
2026                  case DLL_PROCESS_DETACH:                  case DLL_PROCESS_DETACH:
2027                          /* do process cleanup */                          /* do process cleanup */

Legend:
Removed from v.3391  
changed lines
  Added in v.3392

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