From 7271ca9934b1bc8dd8cd0be94fa4a92a471e95f5 Mon Sep 17 00:00:00 2001
From: Uwe Schulzweida <uwe.schulzweida@mpimet.mpg.de>
Date: Thu, 2 Jun 2022 10:00:07 +0200
Subject: [PATCH] CmpDateTime: changed type of member variables to int.

---
 src/datetime.h       | 10 +++++-----
 src/stream_cgribex.c | 20 ++++++++++----------
 src/stream_ext.c     |  6 +++---
 src/stream_gribapi.c | 22 +++++++++++-----------
 src/stream_ieg.c     |  6 +++---
 src/stream_srv.c     |  6 +++---
 6 files changed, 35 insertions(+), 35 deletions(-)

diff --git a/src/datetime.h b/src/datetime.h
index 9a8bb540f..13eb51ee9 100644
--- a/src/datetime.h
+++ b/src/datetime.h
@@ -3,14 +3,14 @@
 
 typedef struct
 {
-  long date;
-  long time;
-} DateTime;
+  int date;
+  int time;
+} CmpDateTime;
 
 static inline int
-datetimeDiffer(DateTime dt1, DateTime dt2)
+datetime_differ(CmpDateTime dt1, CmpDateTime dt2)
 {
-  return (2 * ((dt1.date > dt2.date) - (dt1.date < dt2.date)) + (dt1.time > dt2.time) - (dt1.time < dt2.time)) != 0;
+  return ((2 * ((dt1.date > dt2.date) - (dt1.date < dt2.date)) + (dt1.time > dt2.time) - (dt1.time < dt2.time)) != 0);
 }
 
 #endif
diff --git a/src/stream_cgribex.c b/src/stream_cgribex.c
index 78c8703d2..e8d66c532 100644
--- a/src/stream_cgribex.c
+++ b/src/stream_cgribex.c
@@ -767,7 +767,7 @@ cgribexScanTimestep1(stream_t *streamptr)
   void *gribbuffer = NULL;
   size_t buffersize = 0;
   int leveltype = 0, level1 = 0, level2 = 0;
-  DateTime datetime0 = { .date = 10101, .time = 0 };
+  CmpDateTime datetime0 = { .date = 10101, .time = 0 };
   unsigned recID;
   int nrecs_scanned = 0;
   bool warn_time = true;
@@ -829,7 +829,7 @@ cgribexScanTimestep1(stream_t *streamptr)
       int vdate, sdate;
       int vtime, stime;
       gribDateTimeX(isec1, &vdate, &vtime, &sdate, &stime);
-      DateTime datetime = { .date = vdate, .time = vtime };
+      CmpDateTime datetime = { .date = vdate, .time = vtime };
 
       if (nrecs == 0)
         {
@@ -860,7 +860,7 @@ cgribexScanTimestep1(stream_t *streamptr)
             {
               if (recID < nrecs) break;
               if (warn_time)
-                if (datetimeDiffer(datetime, datetime0))
+                if (datetime_differ(datetime, datetime0))
                   {
                     gribWarning("Inconsistent verification time!", nrecs_scanned, tsID + 1, paramstr, level1, level2);
                     warn_time = false;
@@ -868,7 +868,7 @@ cgribexScanTimestep1(stream_t *streamptr)
             }
           else
             {
-              if (datetimeDiffer(datetime, datetime0)) break;
+              if (datetime_differ(datetime, datetime0)) break;
 
               if (recID < nrecs)
                 {
@@ -928,7 +928,7 @@ cgribexScanTimestep2(stream_t *streamptr)
   int lmv = 0, iret = 0;
   off_t recpos = 0;
   int leveltype = 0, level1 = 0, level2 = 0;
-  DateTime datetime0 = { LONG_MIN, LONG_MIN };
+  CmpDateTime datetime0 = { INT_MIN, INT_MIN };
   int recID = 0;
   bool warn_numavg = true;
   char paramstr[32];
@@ -989,7 +989,7 @@ cgribexScanTimestep2(stream_t *streamptr)
       int vdate, sdate;
       int vtime, stime;
       gribDateTimeX(isec1, &vdate, &vtime, &sdate, &stime);
-      DateTime datetime = { .date = vdate, .time = vtime };
+      CmpDateTime datetime = { .date = vdate, .time = vtime };
 
       if (rindex == 0)
         {
@@ -1057,7 +1057,7 @@ cgribexScanTimestep2(stream_t *streamptr)
         {
           if (records[recID].used)
             {
-              if (datetimeDiffer(datetime, datetime0)) break;
+              if (datetime_differ(datetime, datetime0)) break;
 
               gribWarning("Parameter already exist, skipped!", nrecs_scanned, tsID + 1, paramstr, level1, level2);
               continue;
@@ -1127,7 +1127,7 @@ cgribexScanTimestep(stream_t *streamptr)
   int lmv = 0, iret = 0;
   off_t recpos = 0;
   int leveltype = 0, level1 = 0, level2 = 0;
-  DateTime datetime0 = { LONG_MIN, LONG_MIN };
+  CmpDateTime datetime0 = { INT_MIN, INT_MIN };
   int vrecID, recID = 0;
   bool warn_numavg = true;
   int nrecs = 0;
@@ -1191,7 +1191,7 @@ cgribexScanTimestep(stream_t *streamptr)
           int vdate, sdate;
           int vtime, stime;
           gribDateTimeX(isec1, &vdate, &vtime, &sdate, &stime);
-          DateTime datetime = { .date = vdate, .time = vtime };
+          CmpDateTime datetime = { .date = vdate, .time = vtime };
 
           if (rindex == nrecs) break;
 
@@ -1264,7 +1264,7 @@ cgribexScanTimestep(stream_t *streamptr)
                   char paramstr_[32];
                   cdiParamToString(param, paramstr_, sizeof(paramstr_));
 
-                  if (datetimeDiffer(datetime, datetime0)) break;
+                  if (datetime_differ(datetime, datetime0)) break;
 
                   if (CDI_Debug)
                     gribWarning("Parameter already exist, skipped!", nrecs_scanned, tsID + 1, paramstr_, level1, level2);
diff --git a/src/stream_ext.c b/src/stream_ext.c
index 4b9f95cfb..49889d500 100644
--- a/src/stream_ext.c
+++ b/src/stream_ext.c
@@ -243,7 +243,7 @@ static void
 extScanTimestep1(stream_t *streamptr)
 {
   int header[4];
-  DateTime datetime0 = { LONG_MIN, LONG_MIN };
+  CmpDateTime datetime0 = { INT_MIN, INT_MIN };
   off_t recpos = 0;
   extrec_t *extp = (extrec_t *) streamptr->record->exsep;
 
@@ -275,7 +275,7 @@ extScanTimestep1(stream_t *streamptr)
       const int rlevel = header[2];
       const int rxysize = header[3];
       const int param = cdiEncodeParam(rcode, 255, 255);
-      DateTime datetime = { .date = vdate, .time = vtime };
+      CmpDateTime datetime = { .date = vdate, .time = vtime };
 
       if (nrecs == 0)
         {
@@ -288,7 +288,7 @@ extScanTimestep1(stream_t *streamptr)
           for (int recID = 0; recID < nrecs; recID++)
             if (param == records[recID].param && rlevel == records[recID].ilevel) goto tstepScanLoopFinished;
 
-          if (datetimeDiffer(datetime, datetime0)) Warning("Inconsistent verification time for code %d level %d", rcode, rlevel);
+          if (datetime_differ(datetime, datetime0)) Warning("Inconsistent verification time for code %d level %d", rcode, rlevel);
         }
 
       nrecs++;
diff --git a/src/stream_gribapi.c b/src/stream_gribapi.c
index f7a4e7586..775153649 100644
--- a/src/stream_gribapi.c
+++ b/src/stream_gribapi.c
@@ -929,7 +929,7 @@ typedef enum
 } checkTimeResult;
 
 static checkTimeResult
-checkTime(stream_t *streamptr, compvar2_t compVar, const DateTime *verificationTime, const DateTime *expectedVTime)
+checkTime(stream_t *streamptr, compvar2_t compVar, const CmpDateTime *verificationTime, const CmpDateTime *expectedVTime)
 {
   // First determine whether the current record exists already.
   int recID = 0;
@@ -1014,7 +1014,7 @@ fdbScanTimesteps(stream_t *streamptr)
   numTimesteps = remove_duplicate_timesteps(recordInfoList, numRecords, numTimesteps, timestepRecordOffset);
   if (CDI_Debug) Message("numRecords=%d  numTimesteps=%d", numRecords, numTimesteps);
 
-  DateTime datetime0 = { .date = 10101, .time = 0 };
+  CmpDateTime datetime0 = { .date = 10101, .time = 0 };
   int fcast = 0;
 
   streamptr->curTsID = 0;
@@ -1045,7 +1045,7 @@ fdbScanTimesteps(stream_t *streamptr)
       int vDate, sDate;
       int vTime, sTime;
       gribapiGetValidityDateTime(gh, &vDate, &vTime, &sDate, &sTime);
-      DateTime datetime = { .date = vDate, .time = vTime };
+      CmpDateTime datetime = { .date = vDate, .time = vTime };
 
       VarScanKeys scanKeys = gribapiGetScanKeys(gh);
 
@@ -1156,7 +1156,7 @@ gribapiScanTimestep1(stream_t *streamptr)
   off_t recpos = 0;
   void *gribbuffer = NULL;
   size_t buffersize = 0;
-  DateTime datetime0 = { .date = 10101, .time = 0 };
+  CmpDateTime datetime0 = { .date = 10101, .time = 0 };
   int nrecs_scanned = 0;  // Only used for debug output.
   bool warn_time = true;
   int fcast = 0;
@@ -1207,7 +1207,7 @@ gribapiScanTimestep1(stream_t *streamptr)
       int vDate, sDate;
       int vTime, sTime;
       gribapiGetValidityDateTime(gh, &vDate, &vTime, &sDate, &sTime);
-      DateTime datetime = { .date = vDate, .time = vTime };
+      CmpDateTime datetime = { .date = vDate, .time = vTime };
 
       VarScanKeys scanKeys = gribapiGetScanKeys(gh);
 
@@ -1302,7 +1302,7 @@ gribapiScanTimestep2(stream_t *streamptr)
 {
   int rstatus = 0;
   off_t recpos = 0;
-  DateTime datetime0 = { LONG_MIN, LONG_MIN };
+  CmpDateTime datetime0 = { INT_MIN, INT_MIN };
   // int gridID;
   int recID;
   grib_handle *gh = NULL;
@@ -1363,7 +1363,7 @@ gribapiScanTimestep2(stream_t *streamptr)
       int vDate, sDate;
       int vTime, sTime;
       gribapiGetValidityDateTime(gh, &vDate, &vTime, &sDate, &sTime);
-      DateTime datetime = { .date = vDate, .time = vTime };
+      CmpDateTime datetime = { .date = vDate, .time = vTime };
 
       if (rindex == 0)
         {
@@ -1425,7 +1425,7 @@ gribapiScanTimestep2(stream_t *streamptr)
             break;
           else
             {
-              if (datetimeDiffer(datetime, datetime0)) break;
+              if (datetime_differ(datetime, datetime0)) break;
 
               gribWarning("Parameter already exist, skipped!", nrecs_scanned, tsID + 1, varname, param, level1, level2);
               continue;
@@ -1516,7 +1516,7 @@ gribapiScanTimestep(stream_t *streamptr)
       int nrecs_scanned = streamptr->tsteps[0].nallrecs + streamptr->tsteps[1].nrecs * (tsID - 1);  // Only used for debug output.
       int rindex = 0;
       off_t recpos = 0;
-      DateTime datetime0 = { LONG_MIN, LONG_MIN };
+      CmpDateTime datetime0 = { INT_MIN, INT_MIN };
       grib_handle *gh = NULL;
       char varname[256];
       while (true)
@@ -1558,7 +1558,7 @@ gribapiScanTimestep(stream_t *streamptr)
           int vDate, sDate;
           int vTime, sTime;
           gribapiGetValidityDateTime(gh, &vDate, &vTime, &sDate, &sTime);
-          DateTime datetime = { .date = vDate, .time = vTime };
+          CmpDateTime datetime = { .date = vDate, .time = vTime };
 
           if (rindex == nrecs) break;
 
@@ -1624,7 +1624,7 @@ gribapiScanTimestep(stream_t *streamptr)
             {
               if (records[recID].used)
                 {
-                  if (datetimeDiffer(datetime, datetime0)) break;
+                  if (datetime_differ(datetime, datetime0)) break;
 
                   if (CDI_Debug)
                     gribWarning("Parameter already exist, skipped!", nrecs_scanned, tsID + 1, varname, param, level1, level2);
diff --git a/src/stream_ieg.c b/src/stream_ieg.c
index b011fe1c5..66afc327d 100644
--- a/src/stream_ieg.c
+++ b/src/stream_ieg.c
@@ -694,7 +694,7 @@ iegDateTime(int *pdb, int64_t *date, int *time)
 static void
 iegScanTimestep1(stream_t *streamptr)
 {
-  DateTime datetime0 = { LONG_MIN, LONG_MIN };
+  CmpDateTime datetime0 = { INT_MIN, INT_MIN };
   off_t recpos;
   iegrec_t *iegp = (iegrec_t *) streamptr->record->exsep;
 
@@ -729,7 +729,7 @@ iegScanTimestep1(stream_t *streamptr)
       int64_t vdate = 0;
       int vtime = 0;
       iegDateTime(iegp->ipdb, &vdate, &vtime);
-      DateTime datetime = { .date = vdate, .time = vtime };
+      CmpDateTime datetime = { .date = vdate, .time = vtime };
 
       if (nrecs == 0)
         {
@@ -742,7 +742,7 @@ iegScanTimestep1(stream_t *streamptr)
           for (int recID = 0; recID < nrecs; recID++)
             if (param == records[recID].param && rlevel == records[recID].ilevel) goto tstepScanLoopFinished;
 
-          if (datetimeDiffer(datetime, datetime0)) Warning("Inconsistent verification time for param %d level %d", param, rlevel);
+          if (datetime_differ(datetime, datetime0)) Warning("Inconsistent verification time for param %d level %d", param, rlevel);
         }
 
       nrecs++;
diff --git a/src/stream_srv.c b/src/stream_srv.c
index de4d1f9ab..6e3d1dab6 100644
--- a/src/stream_srv.c
+++ b/src/stream_srv.c
@@ -249,7 +249,7 @@ srv_add_record(stream_t *streamptr, int param, int level, size_t xsize, size_t y
 static void
 srvScanTimestep1(stream_t *streamptr)
 {
-  DateTime datetime0 = { LONG_MIN, LONG_MIN };
+  CmpDateTime datetime0 = { INT_MIN, INT_MIN };
   off_t recpos;
   srvrec_t *srvp = (srvrec_t *) streamptr->record->exsep;
 
@@ -284,7 +284,7 @@ srvScanTimestep1(stream_t *streamptr)
       const int rxsize = header[4];
       const int rysize = header[5];
       const int param = cdiEncodeParam(rcode, 255, 255);
-      DateTime datetime = { .date = vdate, .time = vtime };
+      CmpDateTime datetime = { .date = vdate, .time = vtime };
 
       if (nrecs == 0)
         {
@@ -297,7 +297,7 @@ srvScanTimestep1(stream_t *streamptr)
           for (int recID = 0; recID < nrecs; recID++)
             if (param == records[recID].param && rlevel == records[recID].ilevel) goto tstepScanLoopFinished;
 
-          if (datetimeDiffer(datetime, datetime0)) Warning("Inconsistent verification time for code %d level %d", rcode, rlevel);
+          if (datetime_differ(datetime, datetime0)) Warning("Inconsistent verification time for code %d level %d", rcode, rlevel);
         }
 
       nrecs++;
-- 
GitLab