Blob Blame History Raw
From 0b99a31c5813a34ea3a09c067203f7802291b42e Mon Sep 17 00:00:00 2001
From: Mattias Ellert <mattias.ellert@physics.uu.se>
Date: Sat, 16 Mar 2024 21:43:38 +0100
Subject: [PATCH] Fixes for 64 bit time_t on 32 bit systems

---
 src/XrdApps/Xrdadler32.cc          | 2 +-
 src/XrdBwm/XrdBwmLogger.cc         | 5 +++--
 src/XrdHttp/XrdHttpReq.cc          | 2 +-
 src/XrdPfc/XrdPfcConfiguration.cc  | 2 +-
 src/XrdPosix/XrdPosixPreload32.cc  | 4 ++++
 src/XrdSecsss/XrdSecsssKT.cc       | 5 +++--
 src/XrdXrootd/XrdXrootdPrepare.cc  | 3 ++-
 src/XrdXrootd/XrdXrootdProtocol.cc | 9 +++++----
 8 files changed, 20 insertions(+), 12 deletions(-)

diff --git a/src/XrdApps/Xrdadler32.cc b/src/XrdApps/Xrdadler32.cc
index 4c4e0068b..ab333656e 100644
--- a/src/XrdApps/Xrdadler32.cc
+++ b/src/XrdApps/Xrdadler32.cc
@@ -88,7 +88,7 @@ int fGetXattrAdler32(int fd, const char* attr, char *value)
     int rc;
 
     if (fstat(fd, &st)) return 0;
-    sprintf(mtime, "%ld", st.st_mtime);
+    sprintf(mtime, "%lld", (long long) st.st_mtime);
 
 #if defined(__linux__) || defined(__GNU__) || (defined(__FreeBSD_kernel__) && defined(__GLIBC__))
     rc = fgetxattr(fd, attr, attr_val, 25);
diff --git a/src/XrdBwm/XrdBwmLogger.cc b/src/XrdBwm/XrdBwmLogger.cc
index 0064f8b7e..ee0788396 100644
--- a/src/XrdBwm/XrdBwmLogger.cc
+++ b/src/XrdBwm/XrdBwmLogger.cc
@@ -146,11 +146,12 @@ void XrdBwmLogger::Event(Info &eInfo)
    tp->Tlen = snprintf(tp->Text, XrdBwmLoggerMsg::msgSize,
                     "<stats id=\"bwm\"><tid>%s</tid><lfn>%s</lfn>"
                     "<lcl>%s</lcl><rmt>%s</rmt><flow>%c</flow>"
-                    "<at>%ld</at><bt>%ld</bt><ct>%ld</ct>"
+                    "<at>%lld</at><bt>%lld</bt><ct>%lld</ct>"
                     "<iq>%d</iq><oq>%d</oq><xq>%d</xq>"
                     "<sz>%lld<sz><esec>%d</esec></stats>%c",
                     eInfo.Tident, eInfo.Lfn, eInfo.lclNode, eInfo.rmtNode,
-                    eInfo.Flow, eInfo.ATime, eInfo.BTime, eInfo.CTime,
+                    eInfo.Flow, (long long) eInfo.ATime,
+                    (long long) eInfo.BTime, (long long) eInfo.CTime,
                     eInfo.numqIn, eInfo.numqOut, eInfo.numqXeq, eInfo.Size,
                     eInfo.ESec, theEOL);
 
diff --git a/src/XrdHttp/XrdHttpReq.cc b/src/XrdHttp/XrdHttpReq.cc
index 9a54293b5..b61587118 100644
--- a/src/XrdHttp/XrdHttpReq.cc
+++ b/src/XrdHttp/XrdHttpReq.cc
@@ -656,7 +656,7 @@ void XrdHttpReq::appendOpaque(XrdOucString &s, XrdSecEntity *secent, char *hash,
 
     s += "&xrdhttptime=";
     char buf[256];
-    sprintf(buf, "%ld", tnow);
+    sprintf(buf, "%lld", (long long) tnow);
     s += buf;
 
     if (secent) {
diff --git a/src/XrdPfc/XrdPfcConfiguration.cc b/src/XrdPfc/XrdPfcConfiguration.cc
index 8f4bcd064..2cdb58693 100644
--- a/src/XrdPfc/XrdPfcConfiguration.cc
+++ b/src/XrdPfc/XrdPfcConfiguration.cc
@@ -477,7 +477,7 @@ bool Cache::Config(const char *config_filename, const char *parameters)
       if (m_configuration.m_cs_UVKeep < 0)
          strcpy(uvk, "lru");
       else
-         sprintf(uvk, "%ld", m_configuration.m_cs_UVKeep);
+         sprintf(uvk, "%lld", (long long) m_configuration.m_cs_UVKeep);
       float rg = (m_configuration.m_RamAbsAvailable) / float(1024*1024*1024);
       loff = snprintf(buff, sizeof(buff), "Config effective %s pfc configuration:\n"
                       "       pfc.cschk %s uvkeep %s\n"
diff --git a/src/XrdPosix/XrdPosixPreload32.cc b/src/XrdPosix/XrdPosixPreload32.cc
index 3d99ba9d2..28c0cacef 100644
--- a/src/XrdPosix/XrdPosixPreload32.cc
+++ b/src/XrdPosix/XrdPosixPreload32.cc
@@ -44,6 +44,10 @@
 #ifdef  _FILE_OFFSET_BITS
 #undef  _FILE_OFFSET_BITS
 #endif
+
+#ifdef  _TIME_BITS
+#undef  _TIME_BITS
+#endif
 #endif
 
 #define XRDPOSIXPRELOAD32
diff --git a/src/XrdSecsss/XrdSecsssKT.cc b/src/XrdSecsss/XrdSecsssKT.cc
index 38b1ada15..0071b20f1 100644
--- a/src/XrdSecsss/XrdSecsssKT.cc
+++ b/src/XrdSecsss/XrdSecsssKT.cc
@@ -371,10 +371,11 @@ int XrdSecsssKT::Rewrite(int Keep, int &numKeys, int &numTot, int &numExp)
          if (ktP->Data.Exp && ktP->Data.Exp <= time(0)) {numExp++; continue;}
          if (!isKey(ktCurr, ktP, 0)) {ktCurr.NUG(ktP); numID = 0;}
             else if (Keep && numID >= Keep) continue;
-         n = sprintf(buff, "%s0 u:%s g:%s n:%s N:%lld c:%ld e:%ld f:%lld k:",
+         n = sprintf(buff, "%s0 u:%s g:%s n:%s N:%lld c:%lld e:%lld f:%lld k:",
                     (numKeys ? "\n" : ""),
                      ktP->Data.User,ktP->Data.Grup,ktP->Data.Name,ktP->Data.ID,
-                     ktP->Data.Crt, ktP->Data.Exp, ktP->Data.Flags);
+                     (long long) ktP->Data.Crt, (long long) ktP->Data.Exp,
+                     ktP->Data.Flags);
          numID++; numKeys++; keyB2X(ktP, kbuff);
          if (write(ktFD, buff, n) < 0
          ||  write(ktFD, kbuff, ktP->Data.Len*2) < 0) break;
diff --git a/src/XrdXrootd/XrdXrootdPrepare.cc b/src/XrdXrootd/XrdXrootdPrepare.cc
index 8ce494c07..947009362 100644
--- a/src/XrdXrootd/XrdXrootdPrepare.cc
+++ b/src/XrdXrootd/XrdXrootdPrepare.cc
@@ -129,7 +129,8 @@ int XrdXrootdPrepare::List(XrdXrootdPrepArgs &pargs, char *resp, int resplen)
             else continue;
          if ((up = (char *) index((const char *)(up+1), (int)'_'))) *up = ' ';
             else continue;
-         return snprintf(resp, resplen-1, "%s %ld", dp->d_name, buf.st_mtime);
+         return snprintf(resp, resplen-1, "%s %lld",
+                         dp->d_name, (long long) buf.st_mtime);
         }
 
 // Completed
diff --git a/src/XrdXrootd/XrdXrootdProtocol.cc b/src/XrdXrootd/XrdXrootdProtocol.cc
index e0e50e75d..ec98d7d1e 100644
--- a/src/XrdXrootd/XrdXrootdProtocol.cc
+++ b/src/XrdXrootd/XrdXrootdProtocol.cc
@@ -798,8 +798,8 @@ int XrdXrootdProtocol::StatGen(struct stat &buf, char *xxBuff, int xxLen,
 
 // Format the default response: <devid> <size> <flags> <mtime>
 //
-   m = snprintf(xxBuff, xxLen, "%lld %lld %d %ld",
-                Dev.uuid, fsz, flags, buf.st_mtime);
+   m = snprintf(xxBuff, xxLen, "%lld %lld %d %lld",
+                Dev.uuid, fsz, flags, (long long) buf.st_mtime);
 // if (!xtnd || m >= xxLen) return xxLen;
 //
 
@@ -808,8 +808,9 @@ int XrdXrootdProtocol::StatGen(struct stat &buf, char *xxBuff, int xxLen,
    char *origP = xxBuff;
    char *nullP = xxBuff + m++;
    xxBuff += m; xxLen -= m;
-   n = snprintf(xxBuff, xxLen, "%ld %ld %04o ",
-                buf.st_ctime, buf.st_atime, buf.st_mode&07777);
+   n = snprintf(xxBuff, xxLen, "%lld %lld %04o ",
+                (long long) buf.st_ctime, (long long) buf.st_atime,
+                buf.st_mode&07777);
    if (n >= xxLen) return m;
    xxBuff += n; xxLen -= n;
 
-- 
2.44.0