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.4 by maya, Sat Jul 22 16:15:54 2006 UTC revision 1.10 by maya, Mon May 14 13:29:58 2007 UTC
# Line 165  static PProtoDlg PtDlg = NULL; Line 165  static PProtoDlg PtDlg = NULL;
165  BOOL OpenFTDlg(PFileVar fv)  BOOL OpenFTDlg(PFileVar fv)
166  {  {
167    PFileTransDlg FTDlg;    PFileTransDlg FTDlg;
168    #ifdef I18N
169      HWND HFTDlg;
170    #endif
171    
172    FTDlg = new CFileTransDlg();    FTDlg = new CFileTransDlg();
173        
174    if (FTDlg!=NULL)    if (FTDlg!=NULL)
175    {    {
176    #ifdef I18N
177        FTDlg->Create(fv, &cv, &ts);
178    #else
179      FTDlg->Create(fv, &cv);      FTDlg->Create(fv, &cv);
180    #endif
181      FTDlg->RefreshNum();      FTDlg->RefreshNum();
182      if (fv->OpId == OpLog)      if (fv->OpId == OpLog)
183        FTDlg->ShowWindow(SW_MINIMIZE);        FTDlg->ShowWindow(SW_MINIMIZE);
# Line 181  BOOL OpenFTDlg(PFileVar fv) Line 188  BOOL OpenFTDlg(PFileVar fv)
188    else    else
189      SendDlg = FTDlg; /* File send */      SendDlg = FTDlg; /* File send */
190    
191    #ifdef I18N
192      HFTDlg=FTDlg->GetSafeHwnd();
193    
194      GetDlgItemText(HFTDlg, IDC_TRANS_FILENAME, ts.UIMsg, sizeof(ts.UIMsg));
195      get_lang_msg("DLG_FILETRANS_FILENAME", ts.UIMsg, ts.UILanguageFile);
196      SetDlgItemText(HFTDlg, IDC_TRANS_FILENAME, ts.UIMsg);
197      GetDlgItemText(HFTDlg, IDC_FULLPATH_LABEL, ts.UIMsg, sizeof(ts.UIMsg));
198      get_lang_msg("DLG_FILETRANS_FULLPATH", ts.UIMsg, ts.UILanguageFile);
199      SetDlgItemText(HFTDlg, IDC_FULLPATH_LABEL, ts.UIMsg);
200      GetDlgItemText(HFTDlg, IDC_TRANS_TRANS, ts.UIMsg, sizeof(ts.UIMsg));
201      get_lang_msg("DLG_FILETRANS_TRNAS", ts.UIMsg, ts.UILanguageFile);
202      SetDlgItemText(HFTDlg, IDC_TRANS_TRANS, ts.UIMsg);
203      GetDlgItemText(HFTDlg, IDCANCEL, ts.UIMsg, sizeof(ts.UIMsg));
204      get_lang_msg("BTN_CANCEL", ts.UIMsg, ts.UILanguageFile);
205      SetDlgItemText(HFTDlg, IDCANCEL, ts.UIMsg);
206      GetDlgItemText(HFTDlg, IDC_TRANSPAUSESTART, ts.UIMsg, sizeof(ts.UIMsg));
207      get_lang_msg("DLG_FILETRANS_PAUSE", ts.UIMsg, ts.UILanguageFile);
208      SetDlgItemText(HFTDlg, IDC_TRANSPAUSESTART, ts.UIMsg);
209      GetDlgItemText(HFTDlg, IDC_TRANSHELP, ts.UIMsg, sizeof(ts.UIMsg));
210      get_lang_msg("BTN_HELP", ts.UIMsg, ts.UILanguageFile);
211      SetDlgItemText(HFTDlg, IDC_TRANSHELP, ts.UIMsg);
212    #endif
213    
214    return (FTDlg!=NULL);    return (FTDlg!=NULL);
215  }  }
216    
# Line 221  void FreeFileVar(PFileVar *fv) Line 251  void FreeFileVar(PFileVar *fv)
251    }    }
252  }  }
253    
254    // &h をホスト名に置換 (2007.5.14)
255    void ConvertLogname(char *c)
256    {
257      char buf[MAXPATHLEN], buf2[MAXPATHLEN], *p = c;
258    
259      while(*p != '\0') {
260        if (*p == '&' && *(p+1) != '\0') {
261          switch (*(p+1)) {
262            case 'h':
263              if (cv.Open) {
264                if (cv.PortType == IdTCPIP) {
265                  _snprintf(buf2, sizeof(buf2), "%s%s", buf, ts.HostName);
266                  strncpy(buf, buf2, sizeof(buf)-strlen(buf)-1);
267                }
268                else if (cv.PortType == IdSerial) {
269                  _snprintf(buf2, sizeof(buf2), "%sCOM%d", buf, ts.ComPort);
270                  strncpy(buf, buf2, sizeof(buf)-strlen(buf)-1);
271                }
272              }
273              break;
274            default:
275              if (strlen(buf) < sizeof(buf)-3) {
276                strncat(buf, p, 2);
277              }
278          }
279          p++;
280        }
281        else {
282              if (strlen(buf) < sizeof(buf)-2) {
283                strncat(buf, p, 1);
284              }
285        }
286        p++;
287      }
288      strcpy(c, buf);
289    }
290    
291  extern "C" {  extern "C" {
292  void LogStart()  void LogStart()
293  {  {
# Line 248  void LogStart() Line 315  void LogStart()
315                  Option = MAKELONG(ts.TransBin,ts.Append |                  Option = MAKELONG(ts.TransBin,ts.Append |
316                                                    (0x1000 * ts.LogTypePlainText) |                                                    (0x1000 * ts.LogTypePlainText) |
317                                                    (0x2000 * ts.LogTimestamp));                                                    (0x2000 * ts.LogTimestamp));
318    
319                    // ログのデフォルトファイル名を設定 (2006.8.28 maya)
320                    strncat(LogVar->FullName, ts.LogDefaultName, sizeof(LogVar->FullName));
321                    ParseStrftimeFileName(LogVar->FullName);
322    
323                    // &h をホスト名に置換 (2007.5.14)
324                    ConvertLogname(LogVar->FullName);
325    
326                  if (! (*GetTransFname)(LogVar, ts.FileDir, GTF_LOG, &Option))                  if (! (*GetTransFname)(LogVar, ts.FileDir, GTF_LOG, &Option))
327                  {                  {
328                          FreeFileVar(&LogVar);                          FreeFileVar(&LogVar);
# Line 273  void LogStart() Line 348  void LogStart()
348                  ts.Append &= 0x1; // 1bitにマスクする                  ts.Append &= 0x1; // 1bitにマスクする
349    
350          }          }
351          else          else {
352                    // &h をホスト名に置換 (2007.5.14)
353                    ConvertLogname(LogVar->FullName);
354                  (*SetFileVar)(LogVar);                  (*SetFileVar)(LogVar);
355            }
356    
357          if (ts.TransBin > 0)          if (ts.TransBin > 0)
358          {          {
# Line 351  void LogPut1(BYTE b) Line 429  void LogPut1(BYTE b)
429      }      }
430      else cv.DCount++;      else cv.DCount++;
431    }    }
432    else    else {
433      cv.DCount = 0;      cv.DCount = 0;
434            // ログ採取中にマクロがストールする問題への修正。
435            // ログ採取中に一度マクロを止めると、バッファのインデックスが同期取れなくなり、
436            // 再度マクロを流しても正しいデータが送れないのが原因。
437            // マクロを停止させた状態でもインデックスの同期を取るようにした。
438            // (2006.12.26 yutaka)
439        cv.DStart = cv.LogPtr;
440      }
441  }  }
442    
443  void Log1Byte(BYTE b)  void Log1Byte(BYTE b)
# Line 403  void CommentLogToFile(char *buf, int siz Line 488  void CommentLogToFile(char *buf, int siz
488          DWORD wrote;          DWORD wrote;
489    
490          if (LogVar == NULL || !LogVar->FileOpen) {          if (LogVar == NULL || !LogVar->FileOpen) {
491    #ifdef I18N
492                    char uimsg[MAX_UIMSG];
493                    strcpy(uimsg, "ERROR");
494                    get_lang_msg("MSG_ERROR", uimsg, ts.UILanguageFile);
495                    strcpy(ts.UIMsg, "It is not opened by the log file yet.");
496                    get_lang_msg("MSG_COMMENT_LOG_OPEN_ERROR", ts.UIMsg, ts.UILanguageFile);
497                    ::MessageBox(NULL, ts.UIMsg, uimsg, MB_OK|MB_ICONEXCLAMATION);
498    #else
499                  ::MessageBox(NULL, "It is not opened by the log file yet.", "ERROR", MB_OK|MB_ICONEXCLAMATION);                  ::MessageBox(NULL, "It is not opened by the log file yet.", "ERROR", MB_OK|MB_ICONEXCLAMATION);
500    #endif
501                  return;                  return;
502          }          }
503    
# Line 446  void LogToFile() Line 540  void LogToFile()
540                  if (((cv.FilePause & OpLog)==0) && (! cv.ProtoFlag))                  if (((cv.FilePause & OpLog)==0) && (! cv.ProtoFlag))
541                  {                  {
542                          // 時刻を書き出す(2006.7.23 maya)                          // 時刻を書き出す(2006.7.23 maya)
543                            // 日付フォーマットを日本ではなく世界標準に変更した (2006.7.23 yutaka)
544                          if (ts.LogTimestamp &&                          if (ts.LogTimestamp &&
545                                  (Start == 1 || Buf[Start-2] == 0x0a)) {                                  (Start == 1 || Buf[Start-2] == 0x0a)) {
546    #if 0
547                                  SYSTEMTIME      LocalTime;                                  SYSTEMTIME      LocalTime;
548                                  GetLocalTime(&LocalTime);                                  GetLocalTime(&LocalTime);
549                                  char strtime[27];                                  char strtime[27];
# Line 457  void LogToFile() Line 553  void LogToFile()
553                                                  LocalTime.wYear, LocalTime.wMonth,LocalTime.wDay,                                                  LocalTime.wYear, LocalTime.wMonth,LocalTime.wDay,
554                                                  LocalTime.wHour, LocalTime.wMinute, LocalTime.wSecond,                                                  LocalTime.wHour, LocalTime.wMinute, LocalTime.wSecond,
555                                                  LocalTime.wMilliseconds);                                                  LocalTime.wMilliseconds);
556    #else
557                                            time_t tick = time(NULL);
558                                            char *strtime = ctime(&tick);
559    #endif
560    
561                                  // write to file                                  // write to file
562                                  if (Start == 1 && ts.Append) {                                  if (Start == 1 && ts.Append) {
563                                          _lwrite(LogVar->FileHandle,"\r\n",strlen("\r\n"));                                          _lwrite(LogVar->FileHandle,"\r\n",strlen("\r\n"));
564                                  }                                  }
565                                  _lwrite(LogVar->FileHandle,strtime,strlen(strtime));                                  _lwrite(LogVar->FileHandle,"[",1);
566                                    // 変換した文字列の終端に \n が含まれているので取り除く。
567                                    _lwrite(LogVar->FileHandle, strtime, strlen(strtime) - 1);
568                                    _lwrite(LogVar->FileHandle,"] ",2);
569                          }                          }
570    
571                          _lwrite(LogVar->FileHandle,(PCHAR)&b,1);                          _lwrite(LogVar->FileHandle,(PCHAR)&b,1);
# Line 565  void FileSendStart() Line 668  void FileSendStart()
668    if (strlen(&(SendVar->FullName[SendVar->DirLen]))==0)    if (strlen(&(SendVar->FullName[SendVar->DirLen]))==0)
669    {    {
670      Option = MAKELONG(ts.TransBin,0);      Option = MAKELONG(ts.TransBin,0);
671            SendVar->FullName[0] = 0;
672      if (! (*GetTransFname)(SendVar, ts.FileDir, GTF_SEND, &Option))      if (! (*GetTransFname)(SendVar, ts.FileDir, GTF_SEND, &Option))
673      {          {
674        FileTransEnd(OpSendFile);        FileTransEnd(OpSendFile);
675        return;        return;
676      }      }
# Line 739  BOOL OpenProtoDlg(PFileVar fv, int IdPro Line 843  BOOL OpenProtoDlg(PFileVar fv, int IdPro
843  {  {
844    int vsize;    int vsize;
845    PProtoDlg pd;    PProtoDlg pd;
846    #ifdef I18N
847      HWND Hpd;
848    #endif
849    
850    ProtoId = IdProto;    ProtoId = IdProto;
851    
# Line 790  BOOL OpenProtoDlg(PFileVar fv, int IdPro Line 897  BOOL OpenProtoDlg(PFileVar fv, int IdPro
897      ProtoVar = NULL;      ProtoVar = NULL;
898      return FALSE;      return FALSE;
899    }    }
900    #ifdef I18N
901      pd->Create(fv,&ts);
902    #else
903    pd->Create(fv);    pd->Create(fv);
904    #endif
905    
906    #ifdef I18N
907      Hpd=pd->GetSafeHwnd();
908    
909      GetDlgItemText(Hpd, IDC_PROT_FILENAME, ts.UIMsg, sizeof(ts.UIMsg));
910      get_lang_msg("DLG_PROT_FIELNAME", ts.UIMsg, ts.UILanguageFile);
911      SetDlgItemText(Hpd, IDC_PROT_FILENAME, ts.UIMsg);
912      GetDlgItemText(Hpd, IDC_PROT_PROT, ts.UIMsg, sizeof(ts.UIMsg));
913      get_lang_msg("DLG_PROT_PROTO", ts.UIMsg, ts.UILanguageFile);
914      SetDlgItemText(Hpd, IDC_PROT_PROT, ts.UIMsg);
915      GetDlgItemText(Hpd, IDC_PROT_PACKET, ts.UIMsg, sizeof(ts.UIMsg));
916      get_lang_msg("DLG_PROT_PACKET", ts.UIMsg, ts.UILanguageFile);
917      SetDlgItemText(Hpd, IDC_PROT_PACKET, ts.UIMsg);
918      GetDlgItemText(Hpd, IDC_PROT_TRANS, ts.UIMsg, sizeof(ts.UIMsg));
919      get_lang_msg("DLG_PROT_TRANS", ts.UIMsg, ts.UILanguageFile);
920      SetDlgItemText(Hpd, IDC_PROT_TRANS, ts.UIMsg);
921      GetDlgItemText(Hpd, IDCANCEL, ts.UIMsg, sizeof(ts.UIMsg));
922      get_lang_msg("BTN_CANCEL", ts.UIMsg, ts.UILanguageFile);
923      SetDlgItemText(Hpd, IDCANCEL, ts.UIMsg);
924    #endif
925        
926    (*ProtoInit)(ProtoId,FileVar,ProtoVar,&cv,&ts);    (*ProtoInit)(ProtoId,FileVar,ProtoVar,&cv,&ts);
927    
# Line 919  void KermitStart(int mode) Line 1050  void KermitStart(int mode)
1050        }        }
1051        else        else
1052          (*SetFileVar)(FileVar);          (*SetFileVar)(FileVar);
1053        break;            break;
1054      case IdKmtReceive:      case IdKmtReceive:
1055        FileVar->OpId = OpKmtRcv;        FileVar->OpId = OpKmtRcv;
1056        break;        break;
# Line 936  void KermitStart(int mode) Line 1067  void KermitStart(int mode)
1067        }        }
1068        else        else
1069          (*SetFileVar)(FileVar);          (*SetFileVar)(FileVar);
1070        break;            break;
1071      case IdKmtFinish:      case IdKmtFinish:
1072        FileVar->OpId = OpKmtFin;        FileVar->OpId = OpKmtFin;
1073        break;        break;
# Line 1051  void BPStart(int mode) Line 1182  void BPStart(int mode)
1182      FileVar->OpId = OpBPSend;      FileVar->OpId = OpBPSend;
1183      if (strlen(&(FileVar->FullName[FileVar->DirLen]))==0)      if (strlen(&(FileVar->FullName[FileVar->DirLen]))==0)
1184      {      {
1185              FileVar->FullName[0] = 0;
1186        if (! (*GetTransFname)(FileVar, ts.FileDir, GTF_BP, &Option))        if (! (*GetTransFname)(FileVar, ts.FileDir, GTF_BP, &Option))
1187        {            {
1188          ProtoEnd();          ProtoEnd();
1189          return;          return;
1190        }        }
1191      }      }
1192      else      else
1193        (*SetFileVar)(FileVar);        (*SetFileVar)(FileVar);
   
1194    }    }
1195    else /* IdBPReceive or IdBPAuto */    else /* IdBPReceive or IdBPAuto */
1196      FileVar->OpId = OpBPRcv;      FileVar->OpId = OpBPRcv;
# Line 1111  void QVStart(int mode) Line 1242  void QVStart(int mode)
1242    
1243  /*  /*
1244   * $Log$   * $Log$
1245     * Revision 1.10  2007/05/14 13:29:58  maya
1246     * ログファイル名中の &h を、接続中のホスト名に変換する機能を追加した。
1247     *
1248     * Revision 1.9  2007/01/21 16:18:35  maya
1249     * 表示メッセージの読み込み対応
1250     *
1251     * Revision 1.8  2007/01/04 15:11:44  maya
1252     * 表示メッセージの読み込み対応
1253     *
1254     * Revision 1.7  2006/12/25 16:13:54  yutakapon
1255     * ログ採取中にマクロがストールする問題への修正。
1256     * ログ採取中に一度マクロを止めると、バッファのインデックスが同期取れなくなり、
1257     * 再度マクロを流しても正しいデータが送れないのが原因。
1258     * マクロを停止させた状態でもインデックスの同期を取るようにした。
1259     *
1260     * Revision 1.6  2006/08/28 12:27:16  maya
1261     * デフォルトのログファイル名を指定できるようにした。
1262     *   エディットコントロールを "Additional settings" ダイアログに追加した。
1263     *   teraterm.ini ファイルに LogDefaultName エントリを追加した。
1264     *   ファイル名に strftime のフォーマットを使えるようにした。
1265     *
1266     * Revision 1.5  2006/07/23 14:12:26  yutakakn
1267     * ログに含める日付フォーマットを世界標準書式に変更した。
1268     *
1269   * Revision 1.4  2006/07/22 16:15:54  maya   * Revision 1.4  2006/07/22 16:15:54  maya
1270   * ログ記録時に時刻も書き込む機能を追加した。   * ログ記録時に時刻も書き込む機能を追加した。
1271   *   *

Legend:
Removed from v.1.4  
changed lines
  Added in v.1.10

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