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 8905 by zmatsuo, Tue Aug 18 15:31:25 2020 UTC revision 8906 by zmatsuo, Tue Aug 18 15:31:34 2020 UTC
# Line 106  static PFileVar LogVar = NULL; Line 106  static PFileVar LogVar = NULL;
106  static BOOL FileLog = FALSE;  static BOOL FileLog = FALSE;
107  static BOOL BinLog = FALSE;  static BOOL BinLog = FALSE;
108    
109    static PCHAR cv_LogBuf;
110    static int cv_LogPtr, cv_LStart, cv_LCount;
111    static PCHAR cv_BinBuf;
112    static int cv_BinPtr, cv_BStart, cv_BCount;
113    static int cv_BinSkip;
114    
115  // 遅延書き込み用スレッドのメッセージ  // 遅延書き込み用スレッドのメッセージ
116  #define WM_DPC_LOGTHREAD_SEND (WM_APP + 1)  #define WM_DPC_LOGTHREAD_SEND (WM_APP + 1)
117    
# Line 703  static BOOL LogStart(const wchar_t *fnam Line 709  static BOOL LogStart(const wchar_t *fnam
709                          return FALSE;                          return FALSE;
710                  }                  }
711          }          }
712          cv.LStart = cv.LogPtr;          cv_LStart = cv_LogPtr;
713          cv.LCount = 0;          cv_LCount = 0;
714    
715          OpenLogFile(fv);          OpenLogFile(fv);
716          if (LogVar->FileHandle == INVALID_HANDLE_VALUE) {          if (LogVar->FileHandle == INVALID_HANDLE_VALUE) {
# Line 803  static BOOL LogStart(const wchar_t *fnam Line 809  static BOOL LogStart(const wchar_t *fnam
809   */   */
810  void LogPut1(BYTE b)  void LogPut1(BYTE b)
811  {  {
812          cv.LogBuf[cv.LogPtr] = b;          cv_LogBuf[cv_LogPtr] = b;
813          cv.LogPtr++;          cv_LogPtr++;
814          if (cv.LogPtr>=InBuffSize)          if (cv_LogPtr>=InBuffSize)
815                  cv.LogPtr = cv.LogPtr-InBuffSize;                  cv_LogPtr = cv_LogPtr-InBuffSize;
816    
817          if (FileLog)          if (FileLog)
818          {          {
819                  if (cv.LCount>=InBuffSize)                  if (cv_LCount>=InBuffSize)
820                  {                  {
821                          cv.LCount = InBuffSize;                          cv_LCount = InBuffSize;
822                          cv.LStart = cv.LogPtr;                          cv_LStart = cv_LogPtr;
823                  }                  }
824                  else                  else
825                          cv.LCount++;                          cv_LCount++;
826          }          }
827          else          else
828                  cv.LCount = 0;                  cv_LCount = 0;
829  }  }
830    
831  static BOOL Get1(PCHAR Buf, int *Start, int *Count, PBYTE b)  static BOOL Get1(PCHAR Buf, int *Start, int *Count, PBYTE b)
# Line 936  static void LogToFile(void) Line 942  static void LogToFile(void)
942    
943          if (FileLog)          if (FileLog)
944          {          {
945                  Buf = cv.LogBuf;                  Buf = cv_LogBuf;
946                  Start = cv.LStart;                  Start = cv_LStart;
947                  Count = cv.LCount;                  Count = cv_LCount;
948          }          }
949          else if (BinLog)          else if (BinLog)
950          {          {
951                  Buf = cv.BinBuf;                  Buf = cv_BinBuf;
952                  Start = cv.BStart;                  Start = cv_BStart;
953                  Count = cv.BCount;                  Count = cv_BCount;
954          }          }
955          else          else
956                  return;                  return;
# Line 1059  static void LogToFile(void) Line 1065  static void LogToFile(void)
1065    
1066          if (FileLog)          if (FileLog)
1067          {          {
1068                  cv.LStart = Start;                  cv_LStart = Start;
1069                  cv.LCount = Count;                  cv_LCount = Count;
1070          }          }
1071          else {          else {
1072                  cv.BStart = Start;                  cv_BStart = Start;
1073                  cv.BCount = Count;                  cv_BCount = Count;
1074          }          }
1075          if (FLogIsPause() || cv.ProtoFlag) return;          if (FLogIsPause() || cv.ProtoFlag) return;
1076          LogVar->FLogDlg->RefreshNum(LogVar->StartTime, LogVar->FileSize, LogVar->ByteCount);          LogVar->FLogDlg->RefreshNum(LogVar->StartTime, LogVar->FileSize, LogVar->ByteCount);
# Line 1076  static void LogToFile(void) Line 1082  static void LogToFile(void)
1082    
1083  static BOOL CreateLogBuf(void)  static BOOL CreateLogBuf(void)
1084  {  {
1085          if (cv.HLogBuf==NULL)          if (cv_LogBuf==NULL)
1086          {          {
1087                  cv.HLogBuf = GlobalAlloc(GMEM_MOVEABLE,InBuffSize);                  cv_LogBuf = (char *)malloc(InBuffSize);
1088                  cv.LogBuf = NULL;                  cv_LogPtr = 0;
1089                  cv.LogPtr = 0;                  cv_LStart = 0;
1090                  cv.LStart = 0;                  cv_LCount = 0;
                 cv.LCount = 0;  
1091          }          }
1092          return (cv.HLogBuf!=NULL);          return (cv_LogBuf!=NULL);
1093  }  }
1094    
1095  static void FreeLogBuf(void)  static void FreeLogBuf(void)
1096  {  {
1097          if ((cv.HLogBuf==NULL) || FileLog)          free(cv_LogBuf);
1098                  return;          cv_LogBuf = NULL;
1099          if (cv.LogBuf!=NULL)          cv_LogPtr = 0;
1100                  GlobalUnlock(cv.HLogBuf);          cv_LStart = 0;
1101          GlobalFree(cv.HLogBuf);          cv_LCount = 0;
         cv.HLogBuf = NULL;  
         cv.LogBuf = NULL;  
         cv.LogPtr = 0;  
         cv.LStart = 0;  
         cv.LCount = 0;  
1102  }  }
1103    
1104  static BOOL CreateBinBuf(void)  static BOOL CreateBinBuf(void)
1105  {  {
1106          if (cv.HBinBuf==NULL)          if (cv_BinBuf==NULL)
1107          {          {
1108                  cv.HBinBuf = GlobalAlloc(GMEM_MOVEABLE,InBuffSize);                  cv_BinBuf = (PCHAR)malloc(InBuffSize);
1109                  cv.BinBuf = NULL;                  cv_BinPtr = 0;
1110                  cv.BinPtr = 0;                  cv_BStart = 0;
1111                  cv.BStart = 0;                  cv_BCount = 0;
                 cv.BCount = 0;  
1112          }          }
1113          return (cv.HBinBuf!=NULL);          return (cv_BinBuf!=NULL);
1114  }  }
1115    
1116  static void FreeBinBuf(void)  static void FreeBinBuf(void)
1117  {  {
1118          if ((cv.HBinBuf==NULL) || BinLog)          free(cv_BinBuf);
1119                  return;          cv_BinBuf = NULL;
1120          if (cv.BinBuf!=NULL)          cv_BinPtr = 0;
1121                  GlobalUnlock(cv.HBinBuf);          cv_BStart = 0;
1122          GlobalFree(cv.HBinBuf);          cv_BCount = 0;
         cv.HBinBuf = NULL;  
         cv.BinBuf = NULL;  
         cv.BinPtr = 0;  
         cv.BStart = 0;  
         cv.BCount = 0;  
1123  }  }
1124    
1125  static void FileTransEnd_(void)  static void FileTransEnd_(void)
# Line 1475  static void Log1Bin(BYTE b) Line 1469  static void Log1Bin(BYTE b)
1469          if (LogVar->IsPause || cv.ProtoFlag) {          if (LogVar->IsPause || cv.ProtoFlag) {
1470                  return;                  return;
1471          }          }
1472          if (cv.BinSkip > 0) {          if (cv_BinSkip > 0) {
1473                  cv.BinSkip--;                  cv_BinSkip--;
1474                  return;                  return;
1475          }          }
1476          cv.BinBuf[cv.BinPtr] = b;          cv_BinBuf[cv_BinPtr] = b;
1477          cv.BinPtr++;          cv_BinPtr++;
1478          if (cv.BinPtr>=InBuffSize) {          if (cv_BinPtr>=InBuffSize) {
1479                  cv.BinPtr = cv.BinPtr-InBuffSize;                  cv_BinPtr = cv_BinPtr-InBuffSize;
1480          }          }
1481          if (cv.BCount>=InBuffSize) {          if (cv_BCount>=InBuffSize) {
1482                  cv.BCount = InBuffSize;                  cv_BCount = InBuffSize;
1483                  cv.BStart = cv.BinPtr;                  cv_BStart = cv_BinPtr;
1484          }          }
1485          else {          else {
1486                  cv.BCount++;                  cv_BCount++;
1487          }          }
1488  }  }
1489    
1490  static void LogBinSkip(int add)  static void LogBinSkip(int add)
1491  {  {
1492          if (cv.HBinBuf!=0 ) {          if (cv_BinBuf != NULL) {
1493                  cv.BinSkip += add;                  cv_BinSkip += add;
1494          }          }
1495  }  }
1496    
# Line 1506  static void LogBinSkip(int add) Line 1500  static void LogBinSkip(int add)
1500  int FLogGetCount(void)  int FLogGetCount(void)
1501  {  {
1502          if (FileLog) {          if (FileLog) {
1503                  return cv.LCount;                  return cv_LCount;
1504          }          }
1505          if (BinLog) {          if (BinLog) {
1506                  return cv.BCount;                  return cv_BCount;
1507            }
1508            return 0;
1509    }
1510    
1511    /**
1512     *      ログバッファの空きバイト数を返す
1513     */
1514    int FLogGetFreeCount(void)
1515    {
1516            if (FileLog) {
1517                    return InBuffSize - cv_LCount;
1518            }
1519            if (BinLog) {
1520                    return InBuffSize - cv_BCount;
1521          }          }
1522          return 0;          return 0;
1523  }  }
# Line 1519  int FLogGetCount(void) Line 1527  int FLogGetCount(void)
1527   */   */
1528  void FLogWriteFile(void)  void FLogWriteFile(void)
1529  {  {
1530          if (cv.LogBuf!=NULL)          if (cv_LogBuf!=NULL)
1531          {          {
1532                  if (FileLog) {                  if (FileLog) {
1533                          LogToFile();                          LogToFile();
1534                  }                  }
                 GlobalUnlock(cv.HLogBuf);  
                 cv.LogBuf = NULL;  
1535          }          }
1536    
1537          if (cv.BinBuf!=NULL)          if (cv_BinBuf!=NULL)
1538          {          {
1539                  if (BinLog) {                  if (BinLog) {
1540                          LogToFile();                          LogToFile();
1541                  }                  }
1542                  GlobalUnlock(cv.HBinBuf);  //              GlobalUnlock(cv_HBinBuf);
1543                  cv.BinBuf = NULL;  //              cv_BinBuf = NULL;
1544          }          }
1545  }  }
1546    
# Line 1542  void FLogPutUTF32(unsigned int u32) Line 1548  void FLogPutUTF32(unsigned int u32)
1548  {  {
1549          PFileVar fv = LogVar;          PFileVar fv = LogVar;
1550          size_t i;          size_t i;
1551          BOOL log_available = (cv.HLogBuf != 0);          BOOL log_available = (cv_LogBuf != 0);
1552    
1553          if (!log_available) {          if (!log_available) {
1554                  // ログには出力しない                  // ログには出力しない
# Line 1585  void FLogPutUTF32(unsigned int u32) Line 1591  void FLogPutUTF32(unsigned int u32)
1591  void FLogOutputBOM(void)  void FLogOutputBOM(void)
1592  {  {
1593          PFileVar fv = LogVar;          PFileVar fv = LogVar;
         BOOL needs_unlock = FALSE;  
   
         if ((cv.HLogBuf!=NULL) && (cv.LogBuf==NULL)) {  
                 cv.LogBuf = (PCHAR)GlobalLock(cv.HLogBuf);  
                 needs_unlock = TRUE;  
         }  
1594    
1595          switch(fv->log_code) {          switch(fv->log_code) {
1596          case 0:          case 0:
# Line 1612  void FLogOutputBOM(void) Line 1612  void FLogOutputBOM(void)
1612          default:          default:
1613                  break;                  break;
1614          }          }
   
         if (needs_unlock) {  
                 GlobalUnlock(cv.HLogBuf);  
                 cv.LogBuf = NULL;  
         }  
1615  }  }
1616    
1617  void FLogSetCode(int code)  void FLogSetCode(int code)

Legend:
Removed from v.8905  
changed lines
  Added in v.8906

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