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.1.1.1 by yutakakn, Mon Nov 15 14:43:41 2004 UTC revision 1.9 by maya, Sun Jan 21 16:18:35 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 224  void FreeFileVar(PFileVar *fv) Line 254  void FreeFileVar(PFileVar *fv)
254  extern "C" {  extern "C" {
255  void LogStart()  void LogStart()
256  {  {
257    LONG Option;          LONG Option;
258    
259    if ((FileLog) || (BinLog)) return;          if ((FileLog) || (BinLog)) return;
260    
261    if (! LoadTTFILE()) return;          if (! LoadTTFILE()) return;
262    if (! NewFileVar(&LogVar))          if (! NewFileVar(&LogVar))
263    {          {
264      FreeTTFILE();                  FreeTTFILE();
265      return;                  return;
266    }          }
267    LogVar->OpId = OpLog;          LogVar->OpId = OpLog;
268    
269    if (strlen(&(LogVar->FullName[LogVar->DirLen]))==0)          if (strlen(&(LogVar->FullName[LogVar->DirLen]))==0)
270    {          {
271      Option = MAKELONG(ts.TransBin,ts.Append);                  // LOWORD
272      if (! (*GetTransFname)(LogVar, ts.FileDir, GTF_LOG, &Option))                  // 0x0001 = Binary
273      {                  // HIWORD
274        FreeFileVar(&LogVar);                  // 0x0001 = Append
275        FreeTTFILE();                  // 0x1000 = plain text (2005.2.20 yutaka)
276        return;                  // 0x2000 = timestamp (2006.7.23 maya)
277      }                  // teraterm.iniの設定を見てからデフォルトオプションを決める。(2005.5.7 yutaka)
278      ts.TransBin = LOWORD(Option);                  Option = MAKELONG(ts.TransBin,ts.Append |
279      ts.Append = HIWORD(Option);                                                    (0x1000 * ts.LogTypePlainText) |
280    }                                                    (0x2000 * ts.LogTimestamp));
281    else  
282      (*SetFileVar)(LogVar);                  // ログのデフォルトファイル名を設定 (2006.8.28 maya)
283                    strncat(LogVar->FullName, ts.LogDefaultName, sizeof(LogVar->FullName));
284                    ParseStrftimeFileName(LogVar->FullName);
285    
286    if (ts.TransBin > 0)                  if (! (*GetTransFname)(LogVar, ts.FileDir, GTF_LOG, &Option))
287    {                  {
288      BinLog = TRUE;                          FreeFileVar(&LogVar);
289      FileLog = FALSE;                          FreeTTFILE();
290      if (! CreateBinBuf())                          return;
291      {                  }
292        FileTransEnd(OpLog);                  ts.TransBin = LOWORD(Option);
293        return;                  ts.Append = HIWORD(Option);
     }  
   }  
   else {  
     BinLog = FALSE;  
     FileLog = TRUE;  
     if (! CreateLogBuf())  
     {  
       FileTransEnd(OpLog);  
       return;  
     }  
   }  
   cv.LStart = cv.LogPtr;  
   cv.LCount = 0;  
294    
295    HelpId = HlpFileLog;                  if (ts.Append & 0x1000) {
296    if (ts.Append > 0)                          ts.LogTypePlainText = 1;
297    {                  } else {
298      LogVar->FileHandle = _lopen(LogVar->FullName,OF_WRITE);                          ts.LogTypePlainText = 0;
299      if (LogVar->FileHandle>0)                  }
300        _llseek(LogVar->FileHandle,0,2);  
301      else                  if (ts.Append & 0x2000) {
302        LogVar->FileHandle = _lcreat(LogVar->FullName,0);                          ts.LogTimestamp = 1;
303    }                  }
304    else                  else {
305      LogVar->FileHandle = _lcreat(LogVar->FullName,0);                          ts.LogTimestamp = 0;
306    LogVar->FileOpen = (LogVar->FileHandle>0);                  }
307    if (! LogVar->FileOpen)  
308    {                  ts.Append &= 0x1; // 1bitにマスクする
309      FileTransEnd(OpLog);  
310      return;          }
311    }          else
312    LogVar->ByteCount = 0;                  (*SetFileVar)(LogVar);
313    
314    if (! OpenFTDlg(LogVar))          if (ts.TransBin > 0)
315      FileTransEnd(OpLog);          {
316                    BinLog = TRUE;
317                    FileLog = FALSE;
318                    if (! CreateBinBuf())
319                    {
320                            FileTransEnd(OpLog);
321                            return;
322                    }
323            }
324            else {
325                    BinLog = FALSE;
326                    FileLog = TRUE;
327                    if (! CreateLogBuf())
328                    {
329                            FileTransEnd(OpLog);
330                            return;
331                    }
332            }
333            cv.LStart = cv.LogPtr;
334            cv.LCount = 0;
335    
336            HelpId = HlpFileLog;
337            if (ts.Append > 0)
338            {
339                    LogVar->FileHandle = _lopen(LogVar->FullName,OF_WRITE);
340                    if (LogVar->FileHandle>0)
341                            _llseek(LogVar->FileHandle,0,2);
342                    else
343                            LogVar->FileHandle = _lcreat(LogVar->FullName,0);
344            }
345            else
346                    LogVar->FileHandle = _lcreat(LogVar->FullName,0);
347            LogVar->FileOpen = (LogVar->FileHandle>0);
348            if (! LogVar->FileOpen)
349            {
350                    FileTransEnd(OpLog);
351                    return;
352            }
353            LogVar->ByteCount = 0;
354    
355            if (! OpenFTDlg(LogVar))
356                    FileTransEnd(OpLog);
357  }  }
358  }  }
359    
# Line 326  void LogPut1(BYTE b) Line 386  void LogPut1(BYTE b)
386      }      }
387      else cv.DCount++;      else cv.DCount++;
388    }    }
389    else    else {
390      cv.DCount = 0;      cv.DCount = 0;
391            // ログ採取中にマクロがストールする問題への修正。
392            // ログ採取中に一度マクロを止めると、バッファのインデックスが同期取れなくなり、
393            // 再度マクロを流しても正しいデータが送れないのが原因。
394            // マクロを停止させた状態でもインデックスの同期を取るようにした。
395            // (2006.12.26 yutaka)
396        cv.DStart = cv.LogPtr;
397      }
398  }  }
399    
400  void Log1Byte(BYTE b)  void Log1Byte(BYTE b)
# Line 378  void CommentLogToFile(char *buf, int siz Line 445  void CommentLogToFile(char *buf, int siz
445          DWORD wrote;          DWORD wrote;
446    
447          if (LogVar == NULL || !LogVar->FileOpen) {          if (LogVar == NULL || !LogVar->FileOpen) {
448    #ifdef I18N
449                    char uimsg[MAX_UIMSG];
450                    strcpy(uimsg, "ERROR");
451                    get_lang_msg("MSG_ERROR", uimsg, ts.UILanguageFile);
452                    strcpy(ts.UIMsg, "It is not opened by the log file yet.");
453                    get_lang_msg("MSG_COMMENT_LOG_OPEN_ERROR", ts.UIMsg, ts.UILanguageFile);
454                    ::MessageBox(NULL, ts.UIMsg, uimsg, MB_OK|MB_ICONEXCLAMATION);
455    #else
456                  ::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);
457    #endif
458                  return;                  return;
459          }          }
460    
# Line 420  void LogToFile() Line 496  void LogToFile()
496          {          {
497                  if (((cv.FilePause & OpLog)==0) && (! cv.ProtoFlag))                  if (((cv.FilePause & OpLog)==0) && (! cv.ProtoFlag))
498                  {                  {
499                            // 時刻を書き出す(2006.7.23 maya)
500                            // 日付フォーマットを日本ではなく世界標準に変更した (2006.7.23 yutaka)
501                            if (ts.LogTimestamp &&
502                                    (Start == 1 || Buf[Start-2] == 0x0a)) {
503    #if 0
504                                    SYSTEMTIME      LocalTime;
505                                    GetLocalTime(&LocalTime);
506                                    char strtime[27];
507    
508                                    // format time
509                                    sprintf(strtime, "[%04d/%02d/%02d %02d:%02d:%02d.%03d] ",
510                                                    LocalTime.wYear, LocalTime.wMonth,LocalTime.wDay,
511                                                    LocalTime.wHour, LocalTime.wMinute, LocalTime.wSecond,
512                                                    LocalTime.wMilliseconds);
513    #else
514                                            time_t tick = time(NULL);
515                                            char *strtime = ctime(&tick);
516    #endif
517    
518                                    // write to file
519                                    if (Start == 1 && ts.Append) {
520                                            _lwrite(LogVar->FileHandle,"\r\n",strlen("\r\n"));
521                                    }
522                                    _lwrite(LogVar->FileHandle,"[",1);
523                                    // 変換した文字列の終端に \n が含まれているので取り除く。
524                                    _lwrite(LogVar->FileHandle, strtime, strlen(strtime) - 1);
525                                    _lwrite(LogVar->FileHandle,"] ",2);
526                            }
527    
528                          _lwrite(LogVar->FileHandle,(PCHAR)&b,1);                          _lwrite(LogVar->FileHandle,(PCHAR)&b,1);
529                          (LogVar->ByteCount)++;                          (LogVar->ByteCount)++;
530                  }                  }
# Line 520  void FileSendStart() Line 625  void FileSendStart()
625    if (strlen(&(SendVar->FullName[SendVar->DirLen]))==0)    if (strlen(&(SendVar->FullName[SendVar->DirLen]))==0)
626    {    {
627      Option = MAKELONG(ts.TransBin,0);      Option = MAKELONG(ts.TransBin,0);
628            SendVar->FullName[0] = 0;
629      if (! (*GetTransFname)(SendVar, ts.FileDir, GTF_SEND, &Option))      if (! (*GetTransFname)(SendVar, ts.FileDir, GTF_SEND, &Option))
630      {          {
631        FileTransEnd(OpSendFile);        FileTransEnd(OpSendFile);
632        return;        return;
633      }      }
# Line 694  BOOL OpenProtoDlg(PFileVar fv, int IdPro Line 800  BOOL OpenProtoDlg(PFileVar fv, int IdPro
800  {  {
801    int vsize;    int vsize;
802    PProtoDlg pd;    PProtoDlg pd;
803    #ifdef I18N
804      HWND Hpd;
805    #endif
806    
807    ProtoId = IdProto;    ProtoId = IdProto;
808    
# Line 745  BOOL OpenProtoDlg(PFileVar fv, int IdPro Line 854  BOOL OpenProtoDlg(PFileVar fv, int IdPro
854      ProtoVar = NULL;      ProtoVar = NULL;
855      return FALSE;      return FALSE;
856    }    }
857    #ifdef I18N
858      pd->Create(fv,&ts);
859    #else
860    pd->Create(fv);    pd->Create(fv);
861    #endif
862    
863    #ifdef I18N
864      Hpd=pd->GetSafeHwnd();
865    
866      GetDlgItemText(Hpd, IDC_PROT_FILENAME, ts.UIMsg, sizeof(ts.UIMsg));
867      get_lang_msg("DLG_PROT_FIELNAME", ts.UIMsg, ts.UILanguageFile);
868      SetDlgItemText(Hpd, IDC_PROT_FILENAME, ts.UIMsg);
869      GetDlgItemText(Hpd, IDC_PROT_PROT, ts.UIMsg, sizeof(ts.UIMsg));
870      get_lang_msg("DLG_PROT_PROTO", ts.UIMsg, ts.UILanguageFile);
871      SetDlgItemText(Hpd, IDC_PROT_PROT, ts.UIMsg);
872      GetDlgItemText(Hpd, IDC_PROT_PACKET, ts.UIMsg, sizeof(ts.UIMsg));
873      get_lang_msg("DLG_PROT_PACKET", ts.UIMsg, ts.UILanguageFile);
874      SetDlgItemText(Hpd, IDC_PROT_PACKET, ts.UIMsg);
875      GetDlgItemText(Hpd, IDC_PROT_TRANS, ts.UIMsg, sizeof(ts.UIMsg));
876      get_lang_msg("DLG_PROT_TRANS", ts.UIMsg, ts.UILanguageFile);
877      SetDlgItemText(Hpd, IDC_PROT_TRANS, ts.UIMsg);
878      GetDlgItemText(Hpd, IDCANCEL, ts.UIMsg, sizeof(ts.UIMsg));
879      get_lang_msg("BTN_CANCEL", ts.UIMsg, ts.UILanguageFile);
880      SetDlgItemText(Hpd, IDCANCEL, ts.UIMsg);
881    #endif
882        
883    (*ProtoInit)(ProtoId,FileVar,ProtoVar,&cv,&ts);    (*ProtoInit)(ProtoId,FileVar,ProtoVar,&cv,&ts);
884    
# Line 874  void KermitStart(int mode) Line 1007  void KermitStart(int mode)
1007        }        }
1008        else        else
1009          (*SetFileVar)(FileVar);          (*SetFileVar)(FileVar);
1010        break;            break;
1011      case IdKmtReceive:      case IdKmtReceive:
1012        FileVar->OpId = OpKmtRcv;        FileVar->OpId = OpKmtRcv;
1013        break;        break;
# Line 891  void KermitStart(int mode) Line 1024  void KermitStart(int mode)
1024        }        }
1025        else        else
1026          (*SetFileVar)(FileVar);          (*SetFileVar)(FileVar);
1027        break;            break;
1028      case IdKmtFinish:      case IdKmtFinish:
1029        FileVar->OpId = OpKmtFin;        FileVar->OpId = OpKmtFin;
1030        break;        break;
# Line 1006  void BPStart(int mode) Line 1139  void BPStart(int mode)
1139      FileVar->OpId = OpBPSend;      FileVar->OpId = OpBPSend;
1140      if (strlen(&(FileVar->FullName[FileVar->DirLen]))==0)      if (strlen(&(FileVar->FullName[FileVar->DirLen]))==0)
1141      {      {
1142              FileVar->FullName[0] = 0;
1143        if (! (*GetTransFname)(FileVar, ts.FileDir, GTF_BP, &Option))        if (! (*GetTransFname)(FileVar, ts.FileDir, GTF_BP, &Option))
1144        {            {
1145          ProtoEnd();          ProtoEnd();
1146          return;          return;
1147        }        }
1148      }      }
1149      else      else
1150        (*SetFileVar)(FileVar);        (*SetFileVar)(FileVar);
   
1151    }    }
1152    else /* IdBPReceive or IdBPAuto */    else /* IdBPReceive or IdBPAuto */
1153      FileVar->OpId = OpBPRcv;      FileVar->OpId = OpBPRcv;
# Line 1063  void QVStart(int mode) Line 1196  void QVStart(int mode)
1196      ProtoEnd();      ProtoEnd();
1197  }  }
1198  }  }
1199    
1200    /*
1201     * $Log$
1202     * Revision 1.9  2007/01/21 16:18:35  maya
1203     * 表示メッセージの読み込み対応
1204     *
1205     * Revision 1.8  2007/01/04 15:11:44  maya
1206     * 表示メッセージの読み込み対応
1207     *
1208     * Revision 1.7  2006/12/25 16:13:54  yutakapon
1209     * ログ採取中にマクロがストールする問題への修正。
1210     * ログ採取中に一度マクロを止めると、バッファのインデックスが同期取れなくなり、
1211     * 再度マクロを流しても正しいデータが送れないのが原因。
1212     * マクロを停止させた状態でもインデックスの同期を取るようにした。
1213     *
1214     * Revision 1.6  2006/08/28 12:27:16  maya
1215     * デフォルトのログファイル名を指定できるようにした。
1216     *   エディットコントロールを "Additional settings" ダイアログに追加した。
1217     *   teraterm.ini ファイルに LogDefaultName エントリを追加した。
1218     *   ファイル名に strftime のフォーマットを使えるようにした。
1219     *
1220     * Revision 1.5  2006/07/23 14:12:26  yutakakn
1221     * ログに含める日付フォーマットを世界標準書式に変更した。
1222     *
1223     * Revision 1.4  2006/07/22 16:15:54  maya
1224     * ログ記録時に時刻も書き込む機能を追加した。
1225     *
1226     * Revision 1.3  2005/05/07 09:49:24  yutakakn
1227     * teraterm.iniに LogTypePlainText を追加した。
1228     *
1229     * Revision 1.2  2005/02/20 14:51:29  yutakakn
1230     * ログファイルの種別に"plain text"を追加。このオプションが有効の場合は、ログファイルに
1231     * ASCII非表示文字の採取をしない。
1232     *
1233     * 現在、無視するキャラクタは以下のとおり。
1234     *  ・BS
1235     *  ・ASCII(0x00-0x1f)のうち非表示なもの
1236     *
1237     * ただし、例外として以下のものはログ採取対象。
1238     *  ・HT
1239     *  ・CR
1240     *  ・LF
1241     *
1242     */

Legend:
Removed from v.1.1.1.1  
changed lines
  Added in v.1.9

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