Develop and Download Open Source Software

Browse CVS Repository

Diff of /ttssh2/teraterm/source/teraterm/filesys.cpp

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

revision 1.20 by maya, Fri Nov 30 08:59:11 2007 UTC revision 1.21 by maya, Tue Jan 29 17:43:33 2008 UTC
# Line 74  enum enumLineEnd eLineEnd = Line_LineHea Line 74  enum enumLineEnd eLineEnd = Line_LineHea
74    
75  BOOL LoadTTFILE()  BOOL LoadTTFILE()
76  {  {
77    BOOL Err;          BOOL Err;
78    
79    if (HTTFILE != NULL)          if (HTTFILE != NULL)
80    {          {
81      TTFILECount++;                  TTFILECount++;
82      return TRUE;                  return TRUE;
83    }          }
84    else          else
85      TTFILECount = 0;                  TTFILECount = 0;
86    
87    HTTFILE = LoadLibrary("TTPFILE.DLL");          HTTFILE = LoadLibrary("TTPFILE.DLL");
88    if (HTTFILE == NULL) return FALSE;          if (HTTFILE == NULL)
89                    return FALSE;
90    Err = FALSE;  
91    GetSetupFname = (PGetSetupFname)GetProcAddress(HTTFILE,          Err = FALSE;
92      MAKEINTRESOURCE(IdGetSetupFname));          GetSetupFname = (PGetSetupFname)GetProcAddress(HTTFILE,
93    if (GetSetupFname==NULL) Err = TRUE;                                                         MAKEINTRESOURCE(IdGetSetupFname));
94            if (GetSetupFname==NULL)
95    GetTransFname = (PGetTransFname)GetProcAddress(HTTFILE,                  Err = TRUE;
96      MAKEINTRESOURCE(IdGetTransFname));  
97    if (GetTransFname==NULL) Err = TRUE;          GetTransFname = (PGetTransFname)GetProcAddress(HTTFILE,
98                                                           MAKEINTRESOURCE(IdGetTransFname));
99    GetMultiFname = (PGetMultiFname)GetProcAddress(HTTFILE,          if (GetTransFname==NULL)
100      MAKEINTRESOURCE(IdGetMultiFname));                  Err = TRUE;
101    if (GetMultiFname==NULL) Err = TRUE;  
102            GetMultiFname = (PGetMultiFname)GetProcAddress(HTTFILE,
103    GetGetFname = (PGetGetFname)GetProcAddress(HTTFILE,                                                         MAKEINTRESOURCE(IdGetMultiFname));
104      MAKEINTRESOURCE(IdGetGetFname));          if (GetMultiFname==NULL)
105    if (GetGetFname==NULL) Err = TRUE;                  Err = TRUE;
106    
107    SetFileVar = (PSetFileVar)GetProcAddress(HTTFILE,          GetGetFname = (PGetGetFname)GetProcAddress(HTTFILE,
108      MAKEINTRESOURCE(IdSetFileVar));                                                     MAKEINTRESOURCE(IdGetGetFname));
109    if (SetFileVar==NULL) Err = TRUE;          if (GetGetFname==NULL)
110                    Err = TRUE;
111    GetXFname = (PGetXFname)GetProcAddress(HTTFILE,  
112      MAKEINTRESOURCE(IdGetXFname));          SetFileVar = (PSetFileVar)GetProcAddress(HTTFILE,
113    if (GetXFname==NULL) Err = TRUE;                                                   MAKEINTRESOURCE(IdSetFileVar));
114            if (SetFileVar==NULL)
115    ProtoInit = (PProtoInit)GetProcAddress(HTTFILE,                  Err = TRUE;
116      MAKEINTRESOURCE(IdProtoInit));  
117    if (ProtoInit==NULL) Err = TRUE;          GetXFname = (PGetXFname)GetProcAddress(HTTFILE,
118                                                   MAKEINTRESOURCE(IdGetXFname));
119    ProtoParse = (PProtoParse)GetProcAddress(HTTFILE,          if (GetXFname==NULL)
120      MAKEINTRESOURCE(IdProtoParse));                  Err = TRUE;
121    if (ProtoParse==NULL) Err = TRUE;  
122            ProtoInit = (PProtoInit)GetProcAddress(HTTFILE,
123    ProtoTimeOutProc = (PProtoTimeOutProc)GetProcAddress(HTTFILE,                                                 MAKEINTRESOURCE(IdProtoInit));
124      MAKEINTRESOURCE(IdProtoTimeOutProc));          if (ProtoInit==NULL)
125    if (ProtoTimeOutProc==NULL) Err = TRUE;                  Err = TRUE;
126    
127    ProtoCancel = (PProtoCancel)GetProcAddress(HTTFILE,          ProtoParse = (PProtoParse)GetProcAddress(HTTFILE,
128      MAKEINTRESOURCE(IdProtoCancel));                                                   MAKEINTRESOURCE(IdProtoParse));
129    if (ProtoCancel==NULL) Err = TRUE;          if (ProtoParse==NULL)
130                    Err = TRUE;
131    if (Err)  
132    {          ProtoTimeOutProc = (PProtoTimeOutProc)GetProcAddress(HTTFILE,
133      FreeLibrary(HTTFILE);                                                               MAKEINTRESOURCE(IdProtoTimeOutProc));
134      HTTFILE = NULL;          if (ProtoTimeOutProc==NULL)
135      return FALSE;                  Err = TRUE;
136    }  
137    else {          ProtoCancel = (PProtoCancel)GetProcAddress(HTTFILE,
138      TTFILECount = 1;                                                     MAKEINTRESOURCE(IdProtoCancel));
139      return TRUE;          if (ProtoCancel==NULL)
140    }                  Err = TRUE;
141    
142            if (Err)
143            {
144                    FreeLibrary(HTTFILE);
145                    HTTFILE = NULL;
146                    return FALSE;
147            }
148            else {
149                    TTFILECount = 1;
150                    return TRUE;
151            }
152  }  }
153    
154  BOOL FreeTTFILE()  BOOL FreeTTFILE()
155  {  {
156    if (TTFILECount==0) return FALSE;          if (TTFILECount==0)
157    TTFILECount--;                  return FALSE;
158    if (TTFILECount>0) return TRUE;          TTFILECount--;
159    if (HTTFILE!=NULL)          if (TTFILECount>0)
160    {                  return TRUE;
161      FreeLibrary(HTTFILE);          if (HTTFILE!=NULL)
162      HTTFILE = NULL;          {
163    }                  FreeLibrary(HTTFILE);
164    return TRUE;                  HTTFILE = NULL;
165            }
166            return TRUE;
167  }  }
168    
169  static PFileTransDlg FLogDlg = NULL;  static PFileTransDlg FLogDlg = NULL;
# Line 159  static PProtoDlg PtDlg = NULL; Line 172  static PProtoDlg PtDlg = NULL;
172    
173  BOOL OpenFTDlg(PFileVar fv)  BOOL OpenFTDlg(PFileVar fv)
174  {  {
175    PFileTransDlg FTDlg;          PFileTransDlg FTDlg;
176    HWND HFTDlg;          HWND HFTDlg;
177    char uimsg[MAX_UIMSG];          char uimsg[MAX_UIMSG];
   
   FTDlg = new CFileTransDlg();  
     
   if (FTDlg!=NULL)  
   {  
     FTDlg->Create(fv, &cv, &ts);  
     FTDlg->RefreshNum();  
     if (fv->OpId == OpLog)  
       FTDlg->ShowWindow(SW_MINIMIZE);  
   }  
   
   if (fv->OpId==OpLog)  
     FLogDlg = FTDlg; /* Log */  
   else  
     SendDlg = FTDlg; /* File send */  
   
   HFTDlg=FTDlg->GetSafeHwnd();  
   
   GetDlgItemText(HFTDlg, IDC_TRANS_FILENAME, uimsg, sizeof(uimsg));  
   get_lang_msg("DLG_FILETRANS_FILENAME", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);  
   SetDlgItemText(HFTDlg, IDC_TRANS_FILENAME, ts.UIMsg);  
   GetDlgItemText(HFTDlg, IDC_FULLPATH_LABEL, uimsg, sizeof(uimsg));  
   get_lang_msg("DLG_FILETRANS_FULLPATH", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);  
   SetDlgItemText(HFTDlg, IDC_FULLPATH_LABEL, ts.UIMsg);  
   GetDlgItemText(HFTDlg, IDC_TRANS_TRANS, uimsg, sizeof(uimsg));  
   get_lang_msg("DLG_FILETRANS_TRNAS", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);  
   SetDlgItemText(HFTDlg, IDC_TRANS_TRANS, ts.UIMsg);  
   GetDlgItemText(HFTDlg, IDCANCEL, uimsg, sizeof(uimsg));  
   get_lang_msg("BTN_CANCEL", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);  
   SetDlgItemText(HFTDlg, IDCANCEL, ts.UIMsg);  
   GetDlgItemText(HFTDlg, IDC_TRANSPAUSESTART, uimsg, sizeof(uimsg));  
   get_lang_msg("DLG_FILETRANS_PAUSE", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);  
   SetDlgItemText(HFTDlg, IDC_TRANSPAUSESTART, ts.UIMsg);  
   GetDlgItemText(HFTDlg, IDC_TRANSHELP, uimsg, sizeof(uimsg));  
   get_lang_msg("BTN_HELP", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);  
   SetDlgItemText(HFTDlg, IDC_TRANSHELP, ts.UIMsg);  
178    
179    return (FTDlg!=NULL);          FTDlg = new CFileTransDlg();
180    
181            if (FTDlg!=NULL)
182            {
183                    FTDlg->Create(fv, &cv, &ts);
184                    FTDlg->RefreshNum();
185                    if (fv->HideDialog)
186                            FTDlg->ShowWindow(SW_HIDE);
187                    else if (fv->OpId == OpLog)
188                            FTDlg->ShowWindow(SW_MINIMIZE);
189            }
190    
191            if (fv->OpId==OpLog)
192                    FLogDlg = FTDlg; /* Log */
193            else
194                    SendDlg = FTDlg; /* File send */
195    
196            HFTDlg=FTDlg->GetSafeHwnd();
197    
198            GetDlgItemText(HFTDlg, IDC_TRANS_FILENAME, uimsg, sizeof(uimsg));
199            get_lang_msg("DLG_FILETRANS_FILENAME", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
200            SetDlgItemText(HFTDlg, IDC_TRANS_FILENAME, ts.UIMsg);
201            GetDlgItemText(HFTDlg, IDC_FULLPATH_LABEL, uimsg, sizeof(uimsg));
202            get_lang_msg("DLG_FILETRANS_FULLPATH", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
203            SetDlgItemText(HFTDlg, IDC_FULLPATH_LABEL, ts.UIMsg);
204            GetDlgItemText(HFTDlg, IDC_TRANS_TRANS, uimsg, sizeof(uimsg));
205            get_lang_msg("DLG_FILETRANS_TRNAS", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
206            SetDlgItemText(HFTDlg, IDC_TRANS_TRANS, ts.UIMsg);
207            GetDlgItemText(HFTDlg, IDCANCEL, uimsg, sizeof(uimsg));
208            get_lang_msg("BTN_CANCEL", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
209            SetDlgItemText(HFTDlg, IDCANCEL, ts.UIMsg);
210            GetDlgItemText(HFTDlg, IDC_TRANSPAUSESTART, uimsg, sizeof(uimsg));
211            get_lang_msg("DLG_FILETRANS_PAUSE", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
212            SetDlgItemText(HFTDlg, IDC_TRANSPAUSESTART, ts.UIMsg);
213            GetDlgItemText(HFTDlg, IDC_TRANSHELP, uimsg, sizeof(uimsg));
214            get_lang_msg("BTN_HELP", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
215            SetDlgItemText(HFTDlg, IDC_TRANSHELP, ts.UIMsg);
216    
217            return (FTDlg!=NULL);
218  }  }
219    
220  BOOL NewFileVar(PFileVar *fv)  BOOL NewFileVar(PFileVar *fv)
221  {  {
222    if ((*fv)==NULL)          if ((*fv)==NULL)
223    {          {
224      *fv = (PFileVar)malloc(sizeof(TFileVar));                  *fv = (PFileVar)malloc(sizeof(TFileVar));
225      if ((*fv)!=NULL)                  if ((*fv)!=NULL)
226      {                  {
227        memset(*fv, 0, sizeof(TFileVar));                          memset(*fv, 0, sizeof(TFileVar));
228        strncpy_s((*fv)->FullName, sizeof((*fv)->FullName),ts.FileDir, _TRUNCATE);                          strncpy_s((*fv)->FullName, sizeof((*fv)->FullName),ts.FileDir, _TRUNCATE);
229        AppendSlash((*fv)->FullName,sizeof((*fv)->FullName));                          AppendSlash((*fv)->FullName,sizeof((*fv)->FullName));
230        (*fv)->DirLen = strlen((*fv)->FullName);                          (*fv)->DirLen = strlen((*fv)->FullName);
231        (*fv)->FileOpen = FALSE;                          (*fv)->FileOpen = FALSE;
232        (*fv)->OverWrite = ((ts.FTFlag & FT_RENAME) == 0);                          (*fv)->OverWrite = ((ts.FTFlag & FT_RENAME) == 0);
233        (*fv)->HMainWin = HVTWin;                          (*fv)->HMainWin = HVTWin;
234        (*fv)->Success = FALSE;                          (*fv)->Success = FALSE;
235        (*fv)->NoMsg = FALSE;                          (*fv)->NoMsg = FALSE;
236      }                          (*fv)->HideDialog = FALSE;
237    }                  }
238            }
239    
240    return ((*fv)!=NULL);          return ((*fv)!=NULL);
241  }  }
242    
243  void FreeFileVar(PFileVar *fv)  void FreeFileVar(PFileVar *fv)
244  {  {
245    if ((*fv)!=NULL)          if ((*fv)!=NULL)
246    {          {
247      if ((*fv)->FileOpen) _lclose((*fv)->FileHandle);                  if ((*fv)->FileOpen) _lclose((*fv)->FileHandle);
248      if ((*fv)->FnStrMemHandle>0)                  if ((*fv)->FnStrMemHandle>0)
249      {                  {
250        GlobalUnlock((*fv)->FnStrMemHandle);                          GlobalUnlock((*fv)->FnStrMemHandle);
251        GlobalFree((*fv)->FnStrMemHandle);                          GlobalFree((*fv)->FnStrMemHandle);
252      }                  }
253      free(*fv);                  free(*fv);
254      *fv = NULL;                  *fv = NULL;
255    }          }
256  }  }
257    
258  // &h をホスト名に置換 (2007.5.14)  // &h をホスト名に置換 (2007.5.14)
259  void ConvertLogname(char *c, int destlen)  void ConvertLogname(char *c, int destlen)
260  {  {
261    char buf[MAXPATHLEN], buf2[MAXPATHLEN], *p = c;          char buf[MAXPATHLEN], buf2[MAXPATHLEN], *p = c;
262    
263    memset(buf, 0, sizeof(buf));          memset(buf, 0, sizeof(buf));
264    
265    while(*p != '\0') {          while(*p != '\0') {
266      if (*p == '&' && *(p+1) != '\0') {                  if (*p == '&' && *(p+1) != '\0') {
267        switch (*(p+1)) {                          switch (*(p+1)) {
268          case 'h':                          case 'h':
269            if (cv.Open) {                                  if (cv.Open) {
270              if (cv.PortType == IdTCPIP) {                                          if (cv.PortType == IdTCPIP) {
271                strncat_s(buf,sizeof(buf),ts.HostName,_TRUNCATE);                                                  strncat_s(buf,sizeof(buf),ts.HostName,_TRUNCATE);
272              }                                          }
273              else if (cv.PortType == IdSerial) {                                          else if (cv.PortType == IdSerial) {
274                strncpy_s(buf2,sizeof(buf2),buf,_TRUNCATE);                                                  strncpy_s(buf2,sizeof(buf2),buf,_TRUNCATE);
275                _snprintf_s(buf, sizeof(buf), _TRUNCATE, "%sCOM%d", buf2, ts.ComPort);                                                  _snprintf_s(buf, sizeof(buf), _TRUNCATE, "%sCOM%d", buf2, ts.ComPort);
276              }                                          }
277            }                                  }
278            break;                                  break;
279          default:                          default:
280            strncpy_s(buf2,sizeof(buf2),p,2);                                  strncpy_s(buf2,sizeof(buf2),p,2);
281            strncat_s(buf,sizeof(buf),buf2,_TRUNCATE);                                  strncat_s(buf,sizeof(buf),buf2,_TRUNCATE);
282        }                          }
283        p++;                          p++;
284      }                  }
285      else {                  else {
286            strncpy_s(buf2,sizeof(buf2),p,1);                          strncpy_s(buf2,sizeof(buf2),p,1);
287            strncat_s(buf,sizeof(buf),buf2,_TRUNCATE);                          strncat_s(buf,sizeof(buf),buf2,_TRUNCATE);
288      }                  }
289      p++;                  p++;
290    }          }
291    strncpy_s(c, destlen, buf, _TRUNCATE);          strncpy_s(c, destlen, buf, _TRUNCATE);
292  }  }
293    
294  extern "C" {  extern "C" {
# Line 309  void LogStart() Line 325  void LogStart()
325                  // 0x0001 = Append                  // 0x0001 = Append
326                  // 0x1000 = plain text (2005.2.20 yutaka)                  // 0x1000 = plain text (2005.2.20 yutaka)
327                  // 0x2000 = timestamp (2006.7.23 maya)                  // 0x2000 = timestamp (2006.7.23 maya)
328                    // 0x4000 = hide file transfer dialog (2008.1.30 maya)
329                  // teraterm.iniの設定を見てからデフォルトオプションを決める。(2005.5.7 yutaka)                  // teraterm.iniの設定を見てからデフォルトオプションを決める。(2005.5.7 yutaka)
330                  Option = MAKELONG(ts.TransBin,ts.Append |                  Option = MAKELONG(ts.TransBin,
331                                                    (0x1000 * ts.LogTypePlainText) |                                    ts.Append |
332                                                    (0x2000 * ts.LogTimestamp));                                    (0x1000 * ts.LogTypePlainText) |
333                                      (0x2000 * ts.LogTimestamp) |
334                                      (0x4000 * ts.LogHideDialog));
335    
336                  // ログのデフォルトファイル名を設定 (2006.8.28 maya)                  // ログのデフォルトファイル名を設定 (2006.8.28 maya)
337                  strncat_s(LogVar->FullName, sizeof(LogVar->FullName), ts.LogDefaultName, _TRUNCATE);                  strncat_s(LogVar->FullName, sizeof(LogVar->FullName), ts.LogDefaultName, _TRUNCATE);
# Line 345  void LogStart() Line 364  void LogStart()
364                          ts.LogTimestamp = 0;                          ts.LogTimestamp = 0;
365                  }                  }
366    
367                    if (ts.Append & 0x4000) {
368                            ts.LogHideDialog = 1;
369                    }
370                    else {
371                            ts.LogHideDialog = 0;
372                    }
373    
374                  ts.Append &= 0x1; // 1bitにマスクする                  ts.Append &= 0x1; // 1bitにマスクする
375    
376          }          }
# Line 385  void LogStart() Line 411  void LogStart()
411          }          }
412          cv.LStart = cv.LogPtr;          cv.LStart = cv.LogPtr;
413          cv.LCount = 0;          cv.LCount = 0;
414            if (ts.LogHideDialog)
415                    LogVar->HideDialog = 1;
416    
417          HelpId = HlpFileLog;          HelpId = HlpFileLog;
418          /* 2007.05.24 Gentaro */          /* 2007.05.24 Gentaro */
# Line 421  void LogStart() Line 449  void LogStart()
449    
450  void LogPut1(BYTE b)  void LogPut1(BYTE b)
451  {  {
452    LogLast = b;          LogLast = b;
453    cv.LogBuf[cv.LogPtr] = b;          cv.LogBuf[cv.LogPtr] = b;
454    cv.LogPtr++;          cv.LogPtr++;
455    if (cv.LogPtr>=InBuffSize)          if (cv.LogPtr>=InBuffSize)
456      cv.LogPtr = cv.LogPtr-InBuffSize;                  cv.LogPtr = cv.LogPtr-InBuffSize;
457    
458    if (FileLog)          if (FileLog)
459    {          {
460      if (cv.LCount>=InBuffSize)                  if (cv.LCount>=InBuffSize)
461      {                  {
462        cv.LCount = InBuffSize;                          cv.LCount = InBuffSize;
463        cv.LStart = cv.LogPtr;                          cv.LStart = cv.LogPtr;
464      }                  }
465      else cv.LCount++;                  else
466    }                          cv.LCount++;
467    else          }
468      cv.LCount = 0;          else
469                    cv.LCount = 0;
470    if (DDELog)  
471    {          if (DDELog)
472      if (cv.DCount>=InBuffSize)          {
473      {                  if (cv.DCount>=InBuffSize)
474        cv.DCount = InBuffSize;                  {
475        cv.DStart = cv.LogPtr;                          cv.DCount = InBuffSize;
476      }                          cv.DStart = cv.LogPtr;
477      else cv.DCount++;                  }
478    }                  else
479    else {                          cv.DCount++;
480      cv.DCount = 0;          }
481          // ログ採取中にマクロがストールする問題への修正。          else {
482          // ログ採取中に一度マクロを止めると、バッファのインデックスが同期取れなくなり、                  cv.DCount = 0;
483          // 再度マクロを流しても正しいデータが送れないのが原因。                  // ログ採取中にマクロがストールする問題への修正。
484          // マクロを停止させた状態でもインデックスの同期を取るようにした。                  // ログ採取中に一度マクロを止めると、バッファのインデックスが同期取れなくなり、
485          // (2006.12.26 yutaka)                  // 再度マクロを流しても正しいデータが送れないのが原因。
486      cv.DStart = cv.LogPtr;                  // マクロを停止させた状態でもインデックスの同期を取るようにした。
487    }                  // (2006.12.26 yutaka)
488                    cv.DStart = cv.LogPtr;
489            }
490  }  }
491    
492  void Log1Byte(BYTE b)  void Log1Byte(BYTE b)
493  {  {
494    if (b==0x0d)          if (b==0x0d)
495    {          {
496      LogLast = b;                  LogLast = b;
497      return;                  return;
498    }          }
499    if ((b==0x0a) && (LogLast==0x0d))          if ((b==0x0a) && (LogLast==0x0d))
500      LogPut1(0x0d);                  LogPut1(0x0d);
501    LogPut1(b);          LogPut1(b);
502  }  }
503    
504    static BOOL Get1(PCHAR Buf, int *Start, int *Count, PBYTE b)  static BOOL Get1(PCHAR Buf, int *Start, int *Count, PBYTE b)
505    {  {
506      if (*Count<=0) return FALSE;          if (*Count<=0) return FALSE;
507      *b = Buf[*Start];          *b = Buf[*Start];
508      (*Start)++;          (*Start)++;
509      if (*Start>=InBuffSize)          if (*Start>=InBuffSize)
510        *Start = *Start-InBuffSize;                  *Start = *Start-InBuffSize;
511      (*Count)--;          (*Count)--;
512      return TRUE;          return TRUE;
513    }  }
514    
515    
516    
# Line 510  void CommentLogToFile(char *buf, int siz Line 540  void CommentLogToFile(char *buf, int siz
540                  char uimsg[MAX_UIMSG];                  char uimsg[MAX_UIMSG];
541                  get_lang_msg("MSG_ERROR", uimsg, sizeof(uimsg), "ERROR", ts.UILanguageFile);                  get_lang_msg("MSG_ERROR", uimsg, sizeof(uimsg), "ERROR", ts.UILanguageFile);
542                  get_lang_msg("MSG_COMMENT_LOG_OPEN_ERROR", ts.UIMsg, sizeof(ts.UIMsg),                  get_lang_msg("MSG_COMMENT_LOG_OPEN_ERROR", ts.UIMsg, sizeof(ts.UIMsg),
543                                           "It is not opened by the log file yet.", ts.UILanguageFile);                               "It is not opened by the log file yet.", ts.UILanguageFile);
544                  ::MessageBox(NULL, ts.UIMsg, uimsg, MB_OK|MB_ICONEXCLAMATION);                  ::MessageBox(NULL, ts.UIMsg, uimsg, MB_OK|MB_ICONEXCLAMATION);
545                  return;                  return;
546          }          }
# Line 616  void LogToFile() Line 646  void LogToFile()
646    
647  BOOL CreateLogBuf()  BOOL CreateLogBuf()
648  {  {
649    if (cv.HLogBuf==NULL)          if (cv.HLogBuf==NULL)
650    {          {
651      cv.HLogBuf = GlobalAlloc(GMEM_MOVEABLE,InBuffSize);                  cv.HLogBuf = GlobalAlloc(GMEM_MOVEABLE,InBuffSize);
652      cv.LogBuf = NULL;                  cv.LogBuf = NULL;
653      cv.LogPtr = 0;                  cv.LogPtr = 0;
654      cv.LStart = 0;                  cv.LStart = 0;
655      cv.LCount = 0;                  cv.LCount = 0;
656      cv.DStart = 0;                  cv.DStart = 0;
657      cv.DCount = 0;                  cv.DCount = 0;
658    }          }
659    return (cv.HLogBuf!=NULL);          return (cv.HLogBuf!=NULL);
660  }  }
661    
662  void FreeLogBuf()  void FreeLogBuf()
663  {  {
664    if ((cv.HLogBuf==NULL) || FileLog || DDELog) return;          if ((cv.HLogBuf==NULL) || FileLog || DDELog)
665    if (cv.LogBuf!=NULL) GlobalUnlock(cv.HLogBuf);                  return;
666    GlobalFree(cv.HLogBuf);          if (cv.LogBuf!=NULL)
667    cv.HLogBuf = NULL;                  GlobalUnlock(cv.HLogBuf);
668    cv.LogBuf = NULL;          GlobalFree(cv.HLogBuf);
669    cv.LogPtr = 0;          cv.HLogBuf = NULL;
670    cv.LStart = 0;          cv.LogBuf = NULL;
671    cv.LCount = 0;          cv.LogPtr = 0;
672    cv.DStart = 0;          cv.LStart = 0;
673    cv.DCount = 0;          cv.LCount = 0;
674            cv.DStart = 0;
675            cv.DCount = 0;
676  }  }
677    
678  BOOL CreateBinBuf()  BOOL CreateBinBuf()
679  {  {
680    if (cv.HBinBuf==NULL)          if (cv.HBinBuf==NULL)
681    {          {
682      cv.HBinBuf = GlobalAlloc(GMEM_MOVEABLE,InBuffSize);                  cv.HBinBuf = GlobalAlloc(GMEM_MOVEABLE,InBuffSize);
683      cv.BinBuf = NULL;                  cv.BinBuf = NULL;
684      cv.BinPtr = 0;                  cv.BinPtr = 0;
685      cv.BStart = 0;                  cv.BStart = 0;
686      cv.BCount = 0;                  cv.BCount = 0;
687    }          }
688    return (cv.HBinBuf!=NULL);          return (cv.HBinBuf!=NULL);
689  }  }
690    
691  void FreeBinBuf()  void FreeBinBuf()
692  {  {
693    if ((cv.HBinBuf==NULL) || BinLog) return;          if ((cv.HBinBuf==NULL) || BinLog)
694    if (cv.BinBuf!=NULL) GlobalUnlock(cv.HBinBuf);                  return;
695    GlobalFree(cv.HBinBuf);          if (cv.BinBuf!=NULL)
696    cv.HBinBuf = NULL;                  GlobalUnlock(cv.HBinBuf);
697    cv.BinBuf = NULL;          GlobalFree(cv.HBinBuf);
698    cv.BinPtr = 0;          cv.HBinBuf = NULL;
699    cv.BStart = 0;          cv.BinBuf = NULL;
700    cv.BCount = 0;          cv.BinPtr = 0;
701            cv.BStart = 0;
702            cv.BCount = 0;
703  }  }
704    
705  extern "C" {  extern "C" {
706  void FileSendStart()  void FileSendStart()
707  {  {
708    LONG Option;          LONG Option;
709    
710    if (! cv.Ready || FSend) return;          if (! cv.Ready || FSend) return;
711    if (cv.ProtoFlag)          if (cv.ProtoFlag)
712    {          {
713      FreeFileVar(&SendVar);                  FreeFileVar(&SendVar);
714      return;                  return;
715    }          }
   
   if (! LoadTTFILE()) return;  
   if (! NewFileVar(&SendVar))  
   {  
     FreeTTFILE();  
     return;  
   }  
   SendVar->OpId = OpSendFile;  
   
   FSend = TRUE;  
   
   if (strlen(&(SendVar->FullName[SendVar->DirLen]))==0)  
   {  
     Option = MAKELONG(ts.TransBin,0);  
         SendVar->FullName[0] = 0;  
     if (! (*GetTransFname)(SendVar, ts.FileDir, GTF_SEND, &Option))  
         {  
       FileTransEnd(OpSendFile);  
       return;  
     }  
     ts.TransBin = LOWORD(Option);  
   }  
   else  
     (*SetFileVar)(SendVar);  
   
   SendVar->FileHandle = _lopen(SendVar->FullName,OF_READ);  
   SendVar->FileOpen = (SendVar->FileHandle>0);  
   if (! SendVar->FileOpen)  
   {  
     FileTransEnd(OpSendFile);  
     return;  
   }  
   SendVar->ByteCount = 0;  
   
   TalkStatus = IdTalkFile;  
   FileRetrySend = FALSE;  
   FileRetryEcho = FALSE;  
   FileCRSend = FALSE;  
716    
717    if (! OpenFTDlg(SendVar))          if (! LoadTTFILE())
718      FileTransEnd(OpSendFile);                  return;
719  }          if (! NewFileVar(&SendVar))
720            {
721                    FreeTTFILE();
722                    return;
723            }
724            SendVar->OpId = OpSendFile;
725    
726            FSend = TRUE;
727    
728            if (strlen(&(SendVar->FullName[SendVar->DirLen]))==0)
729            {
730                    Option = MAKELONG(ts.TransBin,0);
731                    SendVar->FullName[0] = 0;
732                    if (! (*GetTransFname)(SendVar, ts.FileDir, GTF_SEND, &Option))
733                    {
734                            FileTransEnd(OpSendFile);
735                            return;
736                    }
737                    ts.TransBin = LOWORD(Option);
738            }
739            else
740                    (*SetFileVar)(SendVar);
741    
742            SendVar->FileHandle = _lopen(SendVar->FullName,OF_READ);
743            SendVar->FileOpen = (SendVar->FileHandle>0);
744            if (! SendVar->FileOpen)
745            {
746                    FileTransEnd(OpSendFile);
747                    return;
748            }
749            SendVar->ByteCount = 0;
750    
751            TalkStatus = IdTalkFile;
752            FileRetrySend = FALSE;
753            FileRetryEcho = FALSE;
754            FileCRSend = FALSE;
755    
756            if (! OpenFTDlg(SendVar))
757                    FileTransEnd(OpSendFile);
758            }
759  }  }
760    
761  void FileTransEnd(WORD OpId)  void FileTransEnd(WORD OpId)
# Line 728  void FileTransEnd(WORD OpId) Line 763  void FileTransEnd(WORD OpId)
763        OpLog: close Log        OpLog: close Log
764   OpSendFile: close FileSend */   OpSendFile: close FileSend */
765  {  {
766    if (((OpId==0) || (OpId==OpLog)) &&          if (((OpId==0) || (OpId==OpLog)) && (FileLog || BinLog))
767        (FileLog || BinLog))          {
768    {                  FileLog = FALSE;
769      FileLog = FALSE;                  BinLog = FALSE;
770      BinLog = FALSE;                  if (FLogDlg!=NULL)
771      if (FLogDlg!=NULL)                  {
772      {                          FLogDlg->DestroyWindow();
773        FLogDlg->DestroyWindow();                          FLogDlg = NULL;
774        FLogDlg = NULL;                  }
775      }                  FreeFileVar(&LogVar);
776      FreeFileVar(&LogVar);                  FreeLogBuf();
777      FreeLogBuf();                  FreeBinBuf();
778      FreeBinBuf();                  FreeTTFILE();
779      FreeTTFILE();          }
780    }  
781            if (((OpId==0) || (OpId==OpSendFile)) && FSend)
782    if (((OpId==0) || (OpId==OpSendFile)) &&          {
783        FSend)                  FSend = FALSE;
784    {                  TalkStatus = IdTalkKeyb;
785      FSend = FALSE;                  if (SendDlg!=NULL)
786      TalkStatus = IdTalkKeyb;                  {
787      if (SendDlg!=NULL)                          SendDlg->DestroyWindow();
788      {                          SendDlg = NULL;
789        SendDlg->DestroyWindow();                  }
790        SendDlg = NULL;                  FreeFileVar(&SendVar);
791      }                  FreeTTFILE();
792      FreeFileVar(&SendVar);          }
     FreeTTFILE();  
   }  
793    
794    EndDdeCmnd(0);          EndDdeCmnd(0);
795  }  }
796    
797  // vtwin.cpp からコールしたいので、extern "C"を付ける。(2004.11.3 yutaka)  // vtwin.cpp からコールしたいので、extern "C"を付ける。(2004.11.3 yutaka)
798  extern "C" {  extern "C" {
799    int FSOut1(BYTE b)  int FSOut1(BYTE b)
800    {  {
801      if (ts.TransBin > 0)          if (ts.TransBin > 0)
802        return CommBinaryOut(&cv,(PCHAR)&b,1);                  return CommBinaryOut(&cv,(PCHAR)&b,1);
803      else if ((b>=0x20) || (b==0x09) || (b==0x0A) || (b==0x0D))          else if ((b>=0x20) || (b==0x09) || (b==0x0A) || (b==0x0D))
804        return CommTextOut(&cv,(PCHAR)&b,1);                  return CommTextOut(&cv,(PCHAR)&b,1);
805      else          else
806        return 1;                  return 1;
807    }          }
808    
809    int FSEcho1(BYTE b)  int FSEcho1(BYTE b)
810    {  {
811      if (ts.TransBin > 0)          if (ts.TransBin > 0)
812        return CommBinaryEcho(&cv,(PCHAR)&b,1);                  return CommBinaryEcho(&cv,(PCHAR)&b,1);
813      else          else
814        return CommTextEcho(&cv,(PCHAR)&b,1);                  return CommTextEcho(&cv,(PCHAR)&b,1);
815    }          }
816  }  }
817    
818  extern "C" {  extern "C" {
819  void FileSend()  void FileSend()
820  {  {
821    WORD c, fc;          WORD c, fc;
822    LONG BCOld;          LONG BCOld;
823    
824            if ((SendDlg==NULL) ||
825                ((cv.FilePause & OpSendFile) !=0))
826                    return;
827    
828            BCOld = SendVar->ByteCount;
829    
830            if (FileRetrySend)
831            {
832                    FileRetryEcho = (ts.LocalEcho>0);
833                    c = FSOut1(FileByte);
834                    FileRetrySend = (c==0);
835                    if (FileRetrySend)
836                            return;
837            }
838    
839    if ((SendDlg==NULL) ||          if (FileRetryEcho)
840        ((cv.FilePause & OpSendFile) !=0)) return;          {
841                    c = FSEcho1(FileByte);
842                    FileRetryEcho = (c==0);
843                    if (FileRetryEcho)
844                            return;
845            }
846    
847    BCOld = SendVar->ByteCount;          do {
848                    fc = _lread(SendVar->FileHandle,&FileByte,1);
849                    SendVar->ByteCount = SendVar->ByteCount + fc;
850    
851    if (FileRetrySend)                  if (FileCRSend && (fc==1) && (FileByte==0x0A))
852    {                  {
853      FileRetryEcho = (ts.LocalEcho>0);                          fc = _lread(SendVar->FileHandle,&FileByte,1);
854      c = FSOut1(FileByte);                          SendVar->ByteCount = SendVar->ByteCount + fc;
855      FileRetrySend = (c==0);                  }
856      if (FileRetrySend) return;  
857    }                  if (fc!=0)
858                    {
859    if (FileRetryEcho)                          c = FSOut1(FileByte);
860    {                          FileCRSend = (ts.TransBin==0) && (FileByte==0x0D);
861      c = FSEcho1(FileByte);                          FileRetrySend = (c==0);
862      FileRetryEcho = (c==0);                          if (FileRetrySend)
863      if (FileRetryEcho) return;                          {
864    }                                  if (SendVar->ByteCount != BCOld)
865                                            SendDlg->RefreshNum();
866    do {                                  return;
867      fc = _lread(SendVar->FileHandle,&FileByte,1);                          }
868      SendVar->ByteCount = SendVar->ByteCount + fc;                          if (ts.LocalEcho>0)
869                            {
870      if (FileCRSend && (fc==1) && (FileByte==0x0A))                                  c = FSEcho1(FileByte);
871      {                                  FileRetryEcho = (c==0);
872        fc = _lread(SendVar->FileHandle,&FileByte,1);                                  if (FileRetryEcho)
873        SendVar->ByteCount = SendVar->ByteCount + fc;                                          return;
874      }                          }
875                    }
876      if (fc!=0)                  if ((fc==0) || (SendVar->ByteCount % 100 == 0))
877      {                  {
878        c = FSOut1(FileByte);                          SendDlg->RefreshNum();
879        FileCRSend = (ts.TransBin==0) && (FileByte==0x0D);                          BCOld = SendVar->ByteCount;
880        FileRetrySend = (c==0);                          if (fc!=0)
881        if (FileRetrySend)                                  return;
882        {                  }
883          if (SendVar->ByteCount != BCOld)          } while (fc!=0);
           SendDlg->RefreshNum();  
           return;  
       }  
       if (ts.LocalEcho>0)  
       {  
         c = FSEcho1(FileByte);  
         FileRetryEcho = (c==0);  
         if (FileRetryEcho) return;  
       }  
     }  
     if ((fc==0) || (SendVar->ByteCount % 100 == 0))  
     {  
       SendDlg->RefreshNum();  
       BCOld = SendVar->ByteCount;  
       if (fc!=0) return;  
     }  
   } while (fc!=0);  
884    
885    FileTransEnd(OpSendFile);          FileTransEnd(OpSendFile);
886  }  }
887  }  }
888    
889  extern "C" {  extern "C" {
890  void FLogChangeButton(BOOL Pause)  void FLogChangeButton(BOOL Pause)
891  {  {
892    if (FLogDlg!=NULL)          if (FLogDlg!=NULL)
893      FLogDlg->ChangeButton(Pause);                  FLogDlg->ChangeButton(Pause);
894  }  }
895  }  }
896    
897  extern "C" {  extern "C" {
898  void FLogRefreshNum()  void FLogRefreshNum()
899  {  {
900    if (FLogDlg!=NULL)          if (FLogDlg!=NULL)
901      FLogDlg->RefreshNum();                  FLogDlg->RefreshNum();
902  }  }
903  }  }
904    
905  BOOL OpenProtoDlg(PFileVar fv, int IdProto, int Mode, WORD Opt1, WORD Opt2)  BOOL OpenProtoDlg(PFileVar fv, int IdProto, int Mode, WORD Opt1, WORD Opt2)
906  {  {
907    int vsize;          int vsize;
908    PProtoDlg pd;          PProtoDlg pd;
909    HWND Hpd;          HWND Hpd;
910    char uimsg[MAX_UIMSG];          char uimsg[MAX_UIMSG];
911    
912    ProtoId = IdProto;          ProtoId = IdProto;
913    
914    switch (ProtoId) {          switch (ProtoId) {
915      case PROTO_KMT:                  case PROTO_KMT:
916        vsize = sizeof(TKmtVar);                          vsize = sizeof(TKmtVar);
917        break;                          break;
918      case PROTO_XM:                  case PROTO_XM:
919        vsize = sizeof(TXVar);                          vsize = sizeof(TXVar);
920        break;                          break;
921      case PROTO_ZM:                  case PROTO_ZM:
922        vsize = sizeof(TZVar);                          vsize = sizeof(TZVar);
923        break;                          break;
924      case PROTO_BP:                  case PROTO_BP:
925        vsize = sizeof(TBPVar);                          vsize = sizeof(TBPVar);
926        break;                          break;
927      case PROTO_QV:                  case PROTO_QV:
928        vsize = sizeof(TQVVar);                          vsize = sizeof(TQVVar);
929        break;                          break;
930    }          }
931    ProtoVar = (PCHAR)malloc(vsize);          ProtoVar = (PCHAR)malloc(vsize);
932    if (ProtoVar==NULL) return FALSE;          if (ProtoVar==NULL)
933                    return FALSE;
934    switch (ProtoId) {  
935      case PROTO_KMT:          switch (ProtoId) {
936        ((PKmtVar)ProtoVar)->KmtMode = Mode;                  case PROTO_KMT:
937        break;                          ((PKmtVar)ProtoVar)->KmtMode = Mode;
938      case PROTO_XM:                          break;
939        ((PXVar)ProtoVar)->XMode = Mode;                  case PROTO_XM:
940        ((PXVar)ProtoVar)->XOpt = Opt1;                          ((PXVar)ProtoVar)->XMode = Mode;
941        ((PXVar)ProtoVar)->TextFlag = 1 - (Opt2 & 1);                          ((PXVar)ProtoVar)->XOpt = Opt1;
942        break;                          ((PXVar)ProtoVar)->TextFlag = 1 - (Opt2 & 1);
943      case PROTO_ZM:                          break;
944        ((PZVar)ProtoVar)->BinFlag = (Opt1 & 1) != 0;                  case PROTO_ZM:
945        ((PZVar)ProtoVar)->ZMode = Mode;                          ((PZVar)ProtoVar)->BinFlag = (Opt1 & 1) != 0;
946        break;                          ((PZVar)ProtoVar)->ZMode = Mode;
947      case PROTO_BP:                          break;
948        ((PBPVar)ProtoVar)->BPMode = Mode;                  case PROTO_BP:
949        break;                          ((PBPVar)ProtoVar)->BPMode = Mode;
950      case PROTO_QV:                          break;
951        ((PQVVar)ProtoVar)->QVMode = Mode;                  case PROTO_QV:
952        break;                          ((PQVVar)ProtoVar)->QVMode = Mode;
953    }                          break;
954            }
   pd = new CProtoDlg();  
   if (pd==NULL)  
   {  
     free(ProtoVar);  
     ProtoVar = NULL;  
     return FALSE;  
   }  
   pd->Create(fv,&ts);  
   
   Hpd=pd->GetSafeHwnd();  
   
   GetDlgItemText(Hpd, IDC_PROT_FILENAME, uimsg, sizeof(uimsg));  
   get_lang_msg("DLG_PROT_FIELNAME", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);  
   SetDlgItemText(Hpd, IDC_PROT_FILENAME, ts.UIMsg);  
   GetDlgItemText(Hpd, IDC_PROT_PROT, uimsg, sizeof(uimsg));  
   get_lang_msg("DLG_PROT_PROTO", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);  
   SetDlgItemText(Hpd, IDC_PROT_PROT, ts.UIMsg);  
   GetDlgItemText(Hpd, IDC_PROT_PACKET, uimsg, sizeof(uimsg));  
   get_lang_msg("DLG_PROT_PACKET", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);  
   SetDlgItemText(Hpd, IDC_PROT_PACKET, ts.UIMsg);  
   GetDlgItemText(Hpd, IDC_PROT_TRANS, uimsg, sizeof(uimsg));  
   get_lang_msg("DLG_PROT_TRANS", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);  
   SetDlgItemText(Hpd, IDC_PROT_TRANS, ts.UIMsg);  
   GetDlgItemText(Hpd, IDCANCEL, uimsg, sizeof(uimsg));  
   get_lang_msg("BTN_CANCEL", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);  
   SetDlgItemText(Hpd, IDCANCEL, ts.UIMsg);  
955    
956    (*ProtoInit)(ProtoId,FileVar,ProtoVar,&cv,&ts);          pd = new CProtoDlg();
957            if (pd==NULL)
958            {
959                    free(ProtoVar);
960                    ProtoVar = NULL;
961                    return FALSE;
962            }
963            pd->Create(fv,&ts);
964    
965            Hpd=pd->GetSafeHwnd();
966    
967    PtDlg = pd;          GetDlgItemText(Hpd, IDC_PROT_FILENAME, uimsg, sizeof(uimsg));
968    return TRUE;          get_lang_msg("DLG_PROT_FIELNAME", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
969            SetDlgItemText(Hpd, IDC_PROT_FILENAME, ts.UIMsg);
970            GetDlgItemText(Hpd, IDC_PROT_PROT, uimsg, sizeof(uimsg));
971            get_lang_msg("DLG_PROT_PROTO", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
972            SetDlgItemText(Hpd, IDC_PROT_PROT, ts.UIMsg);
973            GetDlgItemText(Hpd, IDC_PROT_PACKET, uimsg, sizeof(uimsg));
974            get_lang_msg("DLG_PROT_PACKET", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
975            SetDlgItemText(Hpd, IDC_PROT_PACKET, ts.UIMsg);
976            GetDlgItemText(Hpd, IDC_PROT_TRANS, uimsg, sizeof(uimsg));
977            get_lang_msg("DLG_PROT_TRANS", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
978            SetDlgItemText(Hpd, IDC_PROT_TRANS, ts.UIMsg);
979            GetDlgItemText(Hpd, IDCANCEL, uimsg, sizeof(uimsg));
980            get_lang_msg("BTN_CANCEL", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
981            SetDlgItemText(Hpd, IDCANCEL, ts.UIMsg);
982    
983            (*ProtoInit)(ProtoId,FileVar,ProtoVar,&cv,&ts);
984    
985            PtDlg = pd;
986            return TRUE;
987  }  }
988    
989  extern "C" {  extern "C" {
990  void CloseProtoDlg()  void CloseProtoDlg()
991  {  {
992    if (PtDlg!=NULL)          if (PtDlg!=NULL)
993    {          {
994      PtDlg->DestroyWindow();                  PtDlg->DestroyWindow();
995      PtDlg = NULL;                  PtDlg = NULL;
996    
997      ::KillTimer(FileVar->HMainWin,IdProtoTimer);                  ::KillTimer(FileVar->HMainWin,IdProtoTimer);
998      if ((ProtoId==PROTO_QV) &&                  if ((ProtoId==PROTO_QV) &&
999          (((PQVVar)ProtoVar)->QVMode==IdQVSend))                      (((PQVVar)ProtoVar)->QVMode==IdQVSend))
1000        CommTextOut(&cv,"\015",1);                          CommTextOut(&cv,"\015",1);
1001      if (FileVar->LogFlag)                  if (FileVar->LogFlag)
1002        _lclose(FileVar->LogFile);                          _lclose(FileVar->LogFile);
1003      FileVar->LogFile = 0;                  FileVar->LogFile = 0;
1004      if (ProtoVar!=NULL)                  if (ProtoVar!=NULL)
1005      {                  {
1006        free(ProtoVar);                          free(ProtoVar);
1007        ProtoVar = NULL;                          ProtoVar = NULL;
1008      }                  }
1009    }          }
1010  }  }
1011  }  }
1012    
1013  BOOL ProtoStart()  BOOL ProtoStart()
1014  {  {
1015    if (cv.ProtoFlag) return FALSE;          if (cv.ProtoFlag)
1016    if (FSend)                  return FALSE;
1017    {          if (FSend)
1018      FreeFileVar(&FileVar);          {
1019      return FALSE;                  FreeFileVar(&FileVar);
1020    }                  return FALSE;
1021            }
1022    if (! LoadTTFILE()) return FALSE;  
1023    NewFileVar(&FileVar);          if (! LoadTTFILE())
1024                    return FALSE;
1025    if (FileVar==NULL)          NewFileVar(&FileVar);
1026    {  
1027      FreeTTFILE();          if (FileVar==NULL)
1028      return FALSE;          {
1029    }                  FreeTTFILE();
1030    cv.ProtoFlag = TRUE;                  return FALSE;
1031    return TRUE;          }
1032            cv.ProtoFlag = TRUE;
1033            return TRUE;
1034  }  }
1035    
1036  void ProtoEnd()  void ProtoEnd()
1037  {  {
1038    if (! cv.ProtoFlag) return;          if (! cv.ProtoFlag)
1039    cv.ProtoFlag = FALSE;                  return;
1040            cv.ProtoFlag = FALSE;
1041    
1042            /* Enable transmit delay (serial port) */
1043            cv.DelayFlag = TRUE;
1044            TalkStatus = IdTalkKeyb;
1045    
1046    /* Enable transmit delay (serial port) */          CloseProtoDlg();
   cv.DelayFlag = TRUE;  
   TalkStatus = IdTalkKeyb;  
   
   CloseProtoDlg();  
   
   if ((FileVar!=NULL) && FileVar->Success)  
     EndDdeCmnd(1);  
   else  
     EndDdeCmnd(0);  
1047    
1048    FreeTTFILE();          if ((FileVar!=NULL) && FileVar->Success)
1049    FreeFileVar(&FileVar);                  EndDdeCmnd(1);
1050            else
1051                    EndDdeCmnd(0);
1052    
1053            FreeTTFILE();
1054            FreeFileVar(&FileVar);
1055  }  }
1056    
1057  extern "C" {  extern "C" {
1058  int ProtoDlgParse()  int ProtoDlgParse()
1059  {  {
1060    int P;          int P;
1061    
1062    P = ActiveWin;          P = ActiveWin;
1063    if (PtDlg==NULL) return P;          if (PtDlg==NULL)
1064                    return P;
1065    
1066    if ((*ProtoParse)(ProtoId,FileVar,ProtoVar,&cv))          if ((*ProtoParse)(ProtoId,FileVar,ProtoVar,&cv))
1067      P = 0; /* continue */                  P = 0; /* continue */
1068    else {          else {
1069      CommSend(&cv);                  CommSend(&cv);
1070      ProtoEnd();                  ProtoEnd();
1071    }          }
1072    return P;          return P;
1073  }  }
1074  }  }
1075    
1076  extern "C" {  extern "C" {
1077  void ProtoDlgTimeOut()  void ProtoDlgTimeOut()
1078  {  {
1079    if (PtDlg!=NULL)          if (PtDlg!=NULL)
1080      (*ProtoTimeOutProc)(ProtoId,FileVar,ProtoVar,&cv);                  (*ProtoTimeOutProc)(ProtoId,FileVar,ProtoVar,&cv);
1081  }  }
1082  }  }
1083    
1084  extern "C" {  extern "C" {
1085  void ProtoDlgCancel()  void ProtoDlgCancel()
1086  {  {
1087    if ((PtDlg!=NULL) &&          if ((PtDlg!=NULL) &&
1088        (*ProtoCancel)(ProtoId,FileVar,ProtoVar,&cv))              (*ProtoCancel)(ProtoId,FileVar,ProtoVar,&cv))
1089      ProtoEnd();                  ProtoEnd();
1090  }  }
1091  }  }
1092    
1093  extern "C" {  extern "C" {
1094  void KermitStart(int mode)  void KermitStart(int mode)
1095  {  {
1096    WORD w;          WORD w;
1097    
1098    if (! ProtoStart()) return;          if (! ProtoStart())
1099                    return;
1100    
1101    switch (mode) {          switch (mode) {
1102      case IdKmtSend:                  case IdKmtSend:
1103        FileVar->OpId = OpKmtSend;                          FileVar->OpId = OpKmtSend;
1104        if (strlen(&(FileVar->FullName[FileVar->DirLen]))==0)                          if (strlen(&(FileVar->FullName[FileVar->DirLen]))==0)
1105        {                          {
1106          if (! (*GetMultiFname)(FileVar,ts.FileDir,GMF_KERMIT,&w) ||                                  if (! (*GetMultiFname)(FileVar,ts.FileDir,GMF_KERMIT,&w) ||
1107              (FileVar->NumFname==0))                                      (FileVar->NumFname==0))
1108          {                                  {
1109            ProtoEnd();                                          ProtoEnd();
1110            return;                                          return;
1111          }                                  }
1112        }                          }
1113        else                          else
1114          (*SetFileVar)(FileVar);                                  (*SetFileVar)(FileVar);
1115            break;                          break;
1116      case IdKmtReceive:                  case IdKmtReceive:
1117        FileVar->OpId = OpKmtRcv;                          FileVar->OpId = OpKmtRcv;
1118        break;                          break;
1119      case IdKmtGet:                  case IdKmtGet:
1120        FileVar->OpId = OpKmtSend;                          FileVar->OpId = OpKmtSend;
1121        if (strlen(&(FileVar->FullName[FileVar->DirLen]))==0)                          if (strlen(&(FileVar->FullName[FileVar->DirLen]))==0)
1122        {                          {
1123          if (! (*GetGetFname)(FileVar->HMainWin,FileVar) ||                                  if (! (*GetGetFname)(FileVar->HMainWin,FileVar) ||
1124            (strlen(FileVar->FullName)==0))                                      (strlen(FileVar->FullName)==0))
1125          {                                  {
1126            ProtoEnd();                                          ProtoEnd();
1127            return;                                          return;
1128          }                                  }
1129        }                          }
1130        else                          else
1131          (*SetFileVar)(FileVar);                                  (*SetFileVar)(FileVar);
1132            break;                          break;
1133      case IdKmtFinish:                  case IdKmtFinish:
1134        FileVar->OpId = OpKmtFin;                          FileVar->OpId = OpKmtFin;
1135        break;                          break;
1136      default:                  default:
1137        ProtoEnd();                          ProtoEnd();
1138        return;                          return;
1139    }          }
1140    TalkStatus = IdTalkQuiet;          TalkStatus = IdTalkQuiet;
1141    
1142    /* disable transmit delay (serial port) */          /* disable transmit delay (serial port) */
1143    cv.DelayFlag = FALSE;          cv.DelayFlag = FALSE;
1144    
1145    if (! OpenProtoDlg(FileVar,PROTO_KMT,mode,0,0))          if (! OpenProtoDlg(FileVar,PROTO_KMT,mode,0,0))
1146      ProtoEnd();                  ProtoEnd();
1147  }  }
1148  }  }
1149    
1150  extern "C" {  extern "C" {
1151  void XMODEMStart(int mode)  void XMODEMStart(int mode)
1152  {  {
1153    LONG Option;          LONG Option;
1154    
1155            if (! ProtoStart())
1156                    return;
1157    
1158            if (mode==IdXReceive)
1159                    FileVar->OpId = OpXRcv;
1160            else
1161                    FileVar->OpId = OpXSend;
1162    
1163            if (strlen(&(FileVar->FullName[FileVar->DirLen]))==0)
1164            {
1165                    Option = MAKELONG(ts.XmodemBin,ts.XmodemOpt);
1166                    if (! (*GetXFname)(FileVar->HMainWin,
1167                                       mode==IdXReceive,&Option,FileVar,ts.FileDir))
1168                    {
1169                            ProtoEnd();
1170                            return;
1171                    }
1172                    ts.XmodemOpt = HIWORD(Option);
1173                    ts.XmodemBin = LOWORD(Option);
1174            }
1175            else
1176                    (*SetFileVar)(FileVar);
1177    
1178            if (mode==IdXReceive)
1179                    FileVar->FileHandle = _lcreat(FileVar->FullName,0);
1180            else
1181                    FileVar->FileHandle = _lopen(FileVar->FullName,OF_READ);
1182    
1183            FileVar->FileOpen = FileVar->FileHandle>0;
1184            if (! FileVar->FileOpen)
1185            {
1186                    ProtoEnd();
1187                    return;
1188            }
1189            TalkStatus = IdTalkQuiet;
1190    
1191    if (! ProtoStart()) return;          /* disable transmit delay (serial port) */
1192            cv.DelayFlag = FALSE;
1193    
1194    if (mode==IdXReceive)          if (! OpenProtoDlg(FileVar,PROTO_XM,mode,
1195      FileVar->OpId = OpXRcv;                             ts.XmodemOpt,ts.XmodemBin))
1196    else                  ProtoEnd();
     FileVar->OpId = OpXSend;  
   
   if (strlen(&(FileVar->FullName[FileVar->DirLen]))==0)  
   {  
     Option = MAKELONG(ts.XmodemBin,ts.XmodemOpt);  
     if (! (*GetXFname)(FileVar->HMainWin,  
       mode==IdXReceive,&Option,FileVar,ts.FileDir))  
     {  
       ProtoEnd();  
       return;  
     }  
     ts.XmodemOpt = HIWORD(Option);  
     ts.XmodemBin = LOWORD(Option);  
   }  
   else  
     (*SetFileVar)(FileVar);  
   
   if (mode==IdXReceive)  
     FileVar->FileHandle = _lcreat(FileVar->FullName,0);  
   else  
     FileVar->FileHandle = _lopen(FileVar->FullName,OF_READ);  
   
   FileVar->FileOpen = FileVar->FileHandle>0;  
   if (! FileVar->FileOpen)  
   {  
     ProtoEnd();  
     return;  
   }  
   TalkStatus = IdTalkQuiet;  
   
   /* disable transmit delay (serial port) */  
   cv.DelayFlag = FALSE;  
   
   if (! OpenProtoDlg(FileVar,PROTO_XM,mode,  
                      ts.XmodemOpt,ts.XmodemBin))  
     ProtoEnd();  
1197  }  }
1198  }  }
1199    
1200  extern "C" {  extern "C" {
1201  void ZMODEMStart(int mode)  void ZMODEMStart(int mode)
1202  {  {
1203    WORD Opt;          WORD Opt;
1204    
1205    if (! ProtoStart()) return;          if (! ProtoStart())
1206                    return;
1207    
1208    if (mode==IdZSend)          if (mode==IdZSend)
1209    {          {
1210      Opt = ts.XmodemBin;                  Opt = ts.XmodemBin;
1211      FileVar->OpId = OpZSend;                  FileVar->OpId = OpZSend;
1212      if (strlen(&(FileVar->FullName[FileVar->DirLen]))==0)                  if (strlen(&(FileVar->FullName[FileVar->DirLen]))==0)
1213      {                  {
1214        if (! (*GetMultiFname)(FileVar,ts.FileDir,GMF_Z,&Opt) ||                          if (! (*GetMultiFname)(FileVar,ts.FileDir,GMF_Z,&Opt) ||
1215            (FileVar->NumFname==0))                              (FileVar->NumFname==0))
1216        {                          {
1217          ProtoEnd();                                  ProtoEnd();
1218          return;                                  return;
1219        }                          }
1220        ts.XmodemBin = Opt;                          ts.XmodemBin = Opt;
1221      }                  }
1222      else                  else
1223        (*SetFileVar)(FileVar);                  (*SetFileVar)(FileVar);
1224    }          }
1225    else /* IdZReceive or IdZAuto */          else /* IdZReceive or IdZAuto */
1226      FileVar->OpId = OpZRcv;                  FileVar->OpId = OpZRcv;
1227    
1228    TalkStatus = IdTalkQuiet;          TalkStatus = IdTalkQuiet;
1229    
1230    /* disable transmit delay (serial port) */          /* disable transmit delay (serial port) */
1231    cv.DelayFlag = FALSE;          cv.DelayFlag = FALSE;
1232    
1233    if (! OpenProtoDlg(FileVar,PROTO_ZM,mode,Opt,0))          if (! OpenProtoDlg(FileVar,PROTO_ZM,mode,Opt,0))
1234      ProtoEnd();                  ProtoEnd();
1235  }  }
1236  }  }
1237    
1238  extern "C" {  extern "C" {
1239  void BPStart(int mode)  void BPStart(int mode)
1240  {  {
1241    LONG Option;          LONG Option;
1242    
1243    if (! ProtoStart()) return;          if (! ProtoStart())
1244    if (mode==IdBPSend)                  return;
1245    {          if (mode==IdBPSend)
1246      FileVar->OpId = OpBPSend;          {
1247      if (strlen(&(FileVar->FullName[FileVar->DirLen]))==0)                  FileVar->OpId = OpBPSend;
1248      {                  if (strlen(&(FileVar->FullName[FileVar->DirLen]))==0)
1249            FileVar->FullName[0] = 0;                  {
1250        if (! (*GetTransFname)(FileVar, ts.FileDir, GTF_BP, &Option))                          FileVar->FullName[0] = 0;
1251            {                          if (! (*GetTransFname)(FileVar, ts.FileDir, GTF_BP, &Option))
1252          ProtoEnd();                          {
1253          return;                                  ProtoEnd();
1254        }                                  return;
1255      }                          }
1256      else                  }
1257        (*SetFileVar)(FileVar);                  else
1258    }                          (*SetFileVar)(FileVar);
1259    else /* IdBPReceive or IdBPAuto */          }
1260      FileVar->OpId = OpBPRcv;          else /* IdBPReceive or IdBPAuto */
1261                    FileVar->OpId = OpBPRcv;
1262    
1263    TalkStatus = IdTalkQuiet;          TalkStatus = IdTalkQuiet;
1264    
1265    /* disable transmit delay (serial port) */          /* disable transmit delay (serial port) */
1266    cv.DelayFlag = FALSE;          cv.DelayFlag = FALSE;
1267    
1268    if (! OpenProtoDlg(FileVar,PROTO_BP,mode,0,0))          if (! OpenProtoDlg(FileVar,PROTO_BP,mode,0,0))
1269      ProtoEnd();                  ProtoEnd();
1270  }  }
1271  }  }
1272    
1273  extern "C" {  extern "C" {
1274  void QVStart(int mode)  void QVStart(int mode)
1275  {  {
1276    WORD W;          WORD W;
1277    
1278    if (! ProtoStart()) return;          if (! ProtoStart())
1279                    return;
1280    
1281    if (mode==IdQVSend)          if (mode==IdQVSend)
1282    {          {
1283      FileVar->OpId = OpQVSend;                  FileVar->OpId = OpQVSend;
1284      if (strlen(&(FileVar->FullName[FileVar->DirLen]))==0)                  if (strlen(&(FileVar->FullName[FileVar->DirLen]))==0)
1285      {                  {
1286        if (! (*GetMultiFname)(FileVar,ts.FileDir,GMF_QV, &W) ||                          if (! (*GetMultiFname)(FileVar,ts.FileDir,GMF_QV, &W) ||
1287            (FileVar->NumFname==0))                              (FileVar->NumFname==0))
1288        {                          {
1289          ProtoEnd();                                  ProtoEnd();
1290          return;                                  return;
1291        }                          }
1292      }                  }
1293      else                  else
1294        (*SetFileVar)(FileVar);                          (*SetFileVar)(FileVar);
1295    }          }
1296    else          else
1297      FileVar->OpId = OpQVRcv;                  FileVar->OpId = OpQVRcv;
1298    
1299    TalkStatus = IdTalkQuiet;          TalkStatus = IdTalkQuiet;
1300    
1301    /* disable transmit delay (serial port) */          /* disable transmit delay (serial port) */
1302    cv.DelayFlag = FALSE;          cv.DelayFlag = FALSE;
1303    
1304    if (! OpenProtoDlg(FileVar,PROTO_QV,mode,0,0))          if (! OpenProtoDlg(FileVar,PROTO_QV,mode,0,0))
1305      ProtoEnd();                  ProtoEnd();
1306  }  }
1307  }  }

Legend:
Removed from v.1.20  
changed lines
  Added in v.1.21

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