From 34673c266151a28a4aa8d76c7657ab55d12bc3c5 Mon Sep 17 00:00:00 2001
From: Jan David Mol <mol@astron.nl>
Date: Tue, 26 Apr 2011 13:20:38 +0000
Subject: [PATCH] bug 1362: more solid mktime() handling

---
 .../src/CEPlogProcessor/CEPlogProcessor.cc     | 18 +++++++++++++-----
 1 file changed, 13 insertions(+), 5 deletions(-)

diff --git a/MAC/APL/CEPCU/src/CEPlogProcessor/CEPlogProcessor.cc b/MAC/APL/CEPCU/src/CEPlogProcessor/CEPlogProcessor.cc
index ec82171cf76..1f32aaaf49f 100644
--- a/MAC/APL/CEPCU/src/CEPlogProcessor/CEPlogProcessor.cc
+++ b/MAC/APL/CEPCU/src/CEPlogProcessor/CEPlogProcessor.cc
@@ -463,8 +463,15 @@ time_t CEPlogProcessor::_parseDateTime(const char *datestr, const char *timestr)
   }
 
   if (validtime) {
+    tm.tm_isdst = 0; // UTC knows no daylight saving
+
     ts = mktime(&tm);
-  } else {
+
+    if (ts <= 0)
+      validtime = false;
+  }    
+
+  if (!validtime) {
     LOG_WARN_STR("Invalid timestamp: " << datestr << " " << timestr << "; using now()");
 
     ts = time(0L);
@@ -480,6 +487,10 @@ time_t CEPlogProcessor::_parseDateTime(const char *datestr, const char *timestr)
 //
 void CEPlogProcessor::_processLogLine(const char *cString)
 {
+    if (*cString == 0) {
+      return;
+    }
+
     // example log line:
     // Storage@00 09-12-10 11:33:13.240 DEBUG [obs 21855 output 1 subband 223] InputThread::~InputThread()
     unsigned bufsize = strlen( cString ) + 1;
@@ -487,10 +498,7 @@ void CEPlogProcessor::_processLogLine(const char *cString)
     vector<char> processName(bufsize), date(bufsize), time(bufsize), loglevel(bufsize), msg(bufsize);
     int processNr;
 
-    if (*cString == 0) {
-      return;
-    }
-
+    // TODO: support both exe@nr (IONProc@00) and exe@host (Storage_main@locus002)
     if (sscanf(cString, "%[^@]@%d %s %s %s %[^\n]",
       &processName[0],
       &processNr,
-- 
GitLab