Blob Blame History Raw
diff -ur root-6.22.00.orig/io/io/src/RRawFileUnix.cxx root-6.22.00/io/io/src/RRawFileUnix.cxx
--- root-6.22.00.orig/io/io/src/RRawFileUnix.cxx	2020-06-14 17:51:48.000000000 +0200
+++ root-6.22.00/io/io/src/RRawFileUnix.cxx	2020-07-02 09:02:48.202677798 +0200
@@ -9,6 +9,8 @@
  * For the list of contributors see $ROOTSYS/README/CREDITS.             *
  *************************************************************************/
 
+#include "ROOT/RConfig.hxx"
+
 #include "ROOT/RRawFileUnix.hxx"
 #include "ROOT/RMakeUnique.hxx"
 
@@ -47,8 +49,13 @@
 
 std::uint64_t ROOT::Internal::RRawFileUnix::GetSizeImpl()
 {
+#ifdef R__SEEK64
+   struct stat64 info;
+   int res = fstat64(fFileDes, &info);
+#else
    struct stat info;
    int res = fstat(fFileDes, &info);
+#endif
    if (res != 0)
       throw std::runtime_error("Cannot call fstat on '" + fUrl + "', error: " + std::string(strerror(errno)));
    return info.st_size;
@@ -68,7 +75,11 @@
 
 void ROOT::Internal::RRawFileUnix::OpenImpl()
 {
+#ifdef R__SEEK64
+   fFileDes = open64(GetLocation(fUrl).c_str(), O_RDONLY);
+#else
    fFileDes = open(GetLocation(fUrl).c_str(), O_RDONLY);
+#endif
    if (fFileDes < 0) {
       throw std::runtime_error("Cannot open '" + fUrl + "', error: " + std::string(strerror(errno)));
    }
@@ -76,8 +87,13 @@
    if (fOptions.fBlockSize >= 0)
       return;
 
+#ifdef R__SEEK64
+   struct stat64 info;
+   int res = fstat64(fFileDes, &info);
+#else
    struct stat info;
    int res = fstat(fFileDes, &info);
+#endif
    if (res != 0) {
       throw std::runtime_error("Cannot call fstat on '" + fUrl + "', error: " + std::string(strerror(errno)));
    }
@@ -92,7 +108,11 @@
 {
    size_t total_bytes = 0;
    while (nbytes) {
+#ifdef R__SEEK64
+      ssize_t res = pread64(fFileDes, buffer, nbytes, offset);
+#else
       ssize_t res = pread(fFileDes, buffer, nbytes, offset);
+#endif
       if (res < 0) {
          if (errno == EINTR)
             continue;
diff -ur root-6.22.00.orig/tree/ntuple/v7/src/RMiniFile.cxx root-6.22.00/tree/ntuple/v7/src/RMiniFile.cxx
--- root-6.22.00.orig/tree/ntuple/v7/src/RMiniFile.cxx	2020-06-14 17:51:48.000000000 +0200
+++ root-6.22.00/tree/ntuple/v7/src/RMiniFile.cxx	2020-07-02 10:06:55.066204147 +0200
@@ -13,6 +13,8 @@
  * For the list of contributors see $ROOTSYS/README/CREDITS.             *
  *************************************************************************/
 
+#include <ROOT/RConfig.hxx>
+
 #include "ROOT/RMiniFile.hxx"
 
 #include <ROOT/RRawFile.hxx>
@@ -999,7 +1001,11 @@
    R__ASSERT(fFile);
    size_t retval;
    if ((offset >= 0) && (static_cast<std::uint64_t>(offset) != fFilePos)) {
+#ifdef R__SEEK64
+      retval = fseeko64(fFile, offset, SEEK_SET);
+#else
       retval = fseek(fFile, offset, SEEK_SET);
+#endif
       R__ASSERT(retval == 0);
       fFilePos = offset;
    }
@@ -1099,7 +1105,11 @@
    if (idxDirSep != std::string::npos) {
       fileName.erase(0, idxDirSep + 1);
    }
+#ifdef R__SEEK64
+   FILE *fileStream = fopen64(std::string(path.data(), path.size()).c_str(), "wb");
+#else
    FILE *fileStream = fopen(std::string(path.data(), path.size()).c_str(), "wb");
+#endif
    R__ASSERT(fileStream);
 
    auto writer = new RNTupleFileWriter(ntupleName);
@@ -1319,7 +1329,11 @@
    fFileSimple.Write(&strEmpty, strEmpty.GetSize());
    fFileSimple.Write(&fileRoot, fileRoot.GetSize());
    fFileSimple.fFilePos = tail;
+#ifdef R__SEEK64
+   auto retval = fseeko64(fFileSimple.fFile, tail, SEEK_SET);
+#else
    auto retval = fseek(fFileSimple.fFile, tail, SEEK_SET);
+#endif
    R__ASSERT(retval == 0);
    fFileSimple.fFilePos = tail;
 }
diff -ur root-6.22.00.orig/tree/ntuple/v7/test/ntuple.cxx root-6.22.00/tree/ntuple/v7/test/ntuple.cxx
--- root-6.22.00.orig/tree/ntuple/v7/test/ntuple.cxx	2020-06-14 17:51:48.000000000 +0200
+++ root-6.22.00/tree/ntuple/v7/test/ntuple.cxx	2020-07-02 10:10:54.409737807 +0200
@@ -1,3 +1,5 @@
+#include <ROOT/RConfig.hxx>
+
 #include <ROOT/RColumnModel.hxx>
 #include <ROOT/RDataFrame.hxx>
 #include <ROOT/RNTuple.hxx>
@@ -891,10 +893,17 @@
          ntuple->Fill();
       }
    }
+#ifdef R__SEEK64
+   FILE *file = fopen64(fileGuard.GetPath().c_str(), "rb");
+   ASSERT_TRUE(file != nullptr);
+   EXPECT_EQ(0, fseeko64(file, 0, SEEK_END));
+   EXPECT_GT(ftello64(file), 2048LL * 1024LL * 1024LL);
+#else
    FILE *file = fopen(fileGuard.GetPath().c_str(), "rb");
    ASSERT_TRUE(file != nullptr);
    EXPECT_EQ(0, fseek(file, 0, SEEK_END));
    EXPECT_GT(ftell(file), 2048LL * 1024LL * 1024LL);
+#endif
    fclose(file);
 
    auto ntuple = RNTupleReader::Open("myNTuple", fileGuard.GetPath());