Develop and Download Open Source Software

Browse Subversion Repository

Diff of /trunk/teraterm/teraterm/filesys_log.cpp

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

revision 5164 by yutakapon, Sat Mar 23 09:03:14 2013 UTC revision 5165 by yutakapon, Sat Mar 23 10:39:50 2013 UTC
# Line 655  void CommentLogToFile(char *buf, int siz Line 655  void CommentLogToFile(char *buf, int siz
655  // (2013.3.21 yutaka)  // (2013.3.21 yutaka)
656  static void LogRotate(void)  static void LogRotate(void)
657  {  {
658          const int loopmax = 10000;  // XXX          int loopmax = 10000;  // XXX
659          char filename[1024];          char filename[1024];
660          int i;          char newfile[1024], oldfile[1024];
661            int i, k;
662          int dwShareMode = 0;          int dwShareMode = 0;
663    
664          if (! LogVar->FileOpen) return;          if (! LogVar->FileOpen) return;
# Line 680  static void LogRotate(void) Line 681  static void LogRotate(void)
681          // いったん今のファイルをクローズして、別名のファイルをオープンする。          // いったん今のファイルをクローズして、別名のファイルをオープンする。
682          _lclose(LogVar->FileHandle);          _lclose(LogVar->FileHandle);
683    
684          for (i = 1 ; i < loopmax ; i++) {          // 世代ローテーションのステップ数の指定があるか
685            if (LogVar->RotateStep > 0)
686                    loopmax = LogVar->RotateStep;
687    
688            for (i = 1 ; i <= loopmax ; i++) {
689                  _snprintf_s(filename, sizeof(filename), _TRUNCATE, "%s.%d", LogVar->FullName, i);                  _snprintf_s(filename, sizeof(filename), _TRUNCATE, "%s.%d", LogVar->FullName, i);
690                  if (_access_s(filename, 0) != 0)                  if (_access_s(filename, 0) != 0)
691                          break;                          break;
692          }          }
693          if (i >= loopmax) {          if (i > loopmax) {
694                  // TODO:                  // 世代がいっぱいになったら、最古のファイルから廃棄する。
695                    i = loopmax;
696          }          }
697    
698          // 別ファイルにリネーム。          // 別ファイルにリネーム。
699          rename(LogVar->FullName, filename);          for (k = i-1 ; k >= 0 ; k--) {
700                    if (k == 0)
701                            strncpy_s(oldfile, sizeof(oldfile), LogVar->FullName, _TRUNCATE);
702                    else
703                            _snprintf_s(oldfile, sizeof(oldfile), _TRUNCATE, "%s.%d", LogVar->FullName, k);
704                    _snprintf_s(newfile, sizeof(newfile), _TRUNCATE, "%s.%d", LogVar->FullName, k+1);
705                    remove(newfile);
706                    if (rename(oldfile, newfile) != 0) {
707                            OutputDebugPrintf("%s: rename %d\n", __FUNCTION__, errno);
708                    }
709            }
710    
711          // 再オープン          // 再オープン
712          if (ts.LogLockExclusive) {          if (ts.LogLockExclusive) {

Legend:
Removed from v.5164  
changed lines
  Added in v.5165

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