From 0a2240ed70edc769891cb5155aeb99405ceeb7f4 Mon Sep 17 00:00:00 2001 From: Yuri Date: Wed, 1 Aug 2018 00:43:52 -0700 Subject: [PATCH] FreeBSD compatibility patch --- src/Xrd/XrdLink.cc | 6 ++++++ src/XrdCeph/XrdCephPosix.cc | 2 ++ src/XrdCks/XrdCksManager.cc | 4 ++++ src/XrdFfs/XrdFfsPosix.cc | 2 +- src/XrdFrc/XrdFrcXAttr.hh | 1 + src/XrdNet/XrdNetAddr.cc | 2 +- src/XrdNet/XrdNetAddrInfo.cc | 2 +- src/XrdOss/XrdOssCopy.cc | 4 ++++ src/XrdOuc/XrdOucStream.cc | 2 +- src/XrdPosix/XrdPosix.cc | 4 ++-- src/XrdSys/XrdSysPlatform.hh | 5 +++++ 11 files changed, 28 insertions(+), 6 deletions(-) diff --git a/src/Xrd/XrdLink.cc b/src/Xrd/XrdLink.cc index 72464bbf4ef..7347b57fa96 100644 --- a/src/Xrd/XrdLink.cc +++ b/src/Xrd/XrdLink.cc @@ -44,7 +44,13 @@ #ifdef HAVE_SENDFILE #ifndef __APPLE__ +#if !defined(__FreeBSD__) #include +#else +#include +#include +#include +#endif #endif #endif diff --git a/src/XrdCeph/XrdCephPosix.cc b/src/XrdCeph/XrdCephPosix.cc index bd39816dade..a7778b0422d 100644 --- a/src/XrdCeph/XrdCephPosix.cc +++ b/src/XrdCeph/XrdCephPosix.cc @@ -38,7 +38,9 @@ #include #include #include +#if !defined(__FreeBSD__) #include +#endif #include #include #include diff --git a/src/XrdCks/XrdCksManager.cc b/src/XrdCks/XrdCksManager.cc index fda2512fb39..e6fae4a4748 100644 --- a/src/XrdCks/XrdCksManager.cc +++ b/src/XrdCks/XrdCksManager.cc @@ -173,7 +173,11 @@ int XrdCksManager::Calc(const char *Pfn, time_t &MTime, XrdCksCalc *csP) ioSize = (fileSize < (off_t)segSize ? fileSize : segSize); rc = 0; while(calcSize) {if ((inBuff = (char *)mmap(0, ioSize, PROT_READ, +#if defined(__FreeBSD__) + MAP_RESERVED0040|MAP_PRIVATE, In.FD, Offset)) == MAP_FAILED) +#else MAP_NORESERVE|MAP_PRIVATE, In.FD, Offset)) == MAP_FAILED) +#endif {rc = errno; eDest->Emsg("Cks", rc, "memory map", Pfn); break;} madvise(inBuff, ioSize, MADV_SEQUENTIAL); csP->Update(inBuff, ioSize); diff --git a/src/XrdFfs/XrdFfsPosix.cc b/src/XrdFfs/XrdFfsPosix.cc index d93b10cf3b4..96ea9dcde23 100644 --- a/src/XrdFfs/XrdFfsPosix.cc +++ b/src/XrdFfs/XrdFfsPosix.cc @@ -33,7 +33,7 @@ #include #include -#if !defined(__solaris__) +#if !defined(__solaris__) && !defined(__FreeBSD__) #include #endif diff --git a/src/XrdFrc/XrdFrcXAttr.hh b/src/XrdFrc/XrdFrcXAttr.hh index 6a567ae8075..09e5f250356 100644 --- a/src/XrdFrc/XrdFrcXAttr.hh +++ b/src/XrdFrc/XrdFrcXAttr.hh @@ -34,6 +34,7 @@ #include #include #include +#include #include "XrdSys/XrdSysPlatform.hh" diff --git a/src/XrdNet/XrdNetAddr.cc b/src/XrdNet/XrdNetAddr.cc index 10920b22e3c..029a38a0548 100644 --- a/src/XrdNet/XrdNetAddr.cc +++ b/src/XrdNet/XrdNetAddr.cc @@ -50,7 +50,7 @@ #ifndef s6_addr32 #if defined(__solaris__) #define s6_addr32 _S6_un._S6_u32 -#elif defined(__APPLE__) +#elif defined(__APPLE__) || defined(__FreeBSD__) #define s6_addr32 __u6_addr.__u6_addr32 #endif #endif diff --git a/src/XrdNet/XrdNetAddrInfo.cc b/src/XrdNet/XrdNetAddrInfo.cc index a4f6c7b38bf..5fc0fd31fe9 100644 --- a/src/XrdNet/XrdNetAddrInfo.cc +++ b/src/XrdNet/XrdNetAddrInfo.cc @@ -48,7 +48,7 @@ #ifndef s6_addr32 #if defined(__solaris__) #define s6_addr32 _S6_un._S6_u32 -#elif defined(__APPLE__) +#elif defined(__APPLE__) || defined(__FreeBSD__) #define s6_addr32 __u6_addr.__u6_addr32 #endif #endif diff --git a/src/XrdOss/XrdOssCopy.cc b/src/XrdOss/XrdOssCopy.cc index 11da7c03c6c..1b0846896f4 100644 --- a/src/XrdOss/XrdOssCopy.cc +++ b/src/XrdOss/XrdOssCopy.cc @@ -107,7 +107,11 @@ off_t XrdOssCopy::Copy(const char *inFn, const char *outFn, int outFD) ioSize = (fileSize < (off_t)segSize ? fileSize : segSize); while(copySize) {if ((inBuff = (char *)mmap(0, ioSize, PROT_READ, +#if defined(__FreeBSD__) + MAP_RESERVED0040|MAP_PRIVATE, In.FD, Offset)) == MAP_FAILED) +#else MAP_NORESERVE|MAP_PRIVATE, In.FD, Offset)) == MAP_FAILED) +#endif {OssEroute.Emsg("Copy", errno, "memory map", inFn); break;} if (Write(outFn, Out.FD, inBuff, ioSize, Offset) < 0) break; copySize -= ioSize; Offset += ioSize; diff --git a/src/XrdOuc/XrdOucStream.cc b/src/XrdOuc/XrdOucStream.cc index 537c9c74f9a..4417e40a1e7 100644 --- a/src/XrdOuc/XrdOucStream.cc +++ b/src/XrdOuc/XrdOucStream.cc @@ -44,7 +44,7 @@ #include #endif #include -#include +#include #include #include #else // WIN32 diff --git a/src/XrdPosix/XrdPosix.cc b/src/XrdPosix/XrdPosix.cc index 25e48bca5b7..290f9fe7314 100644 --- a/src/XrdPosix/XrdPosix.cc +++ b/src/XrdPosix/XrdPosix.cc @@ -313,7 +313,7 @@ size_t XrdPosix_Fread(void *ptr, size_t size, size_t nitems, FILE *stream) #if defined(__linux__) else if (bytes < 0) stream->_flags |= _IO_ERR_SEEN; else stream->_flags |= _IO_EOF_SEEN; -#elif defined(__APPLE__) +#elif defined(__APPLE__) || defined(__FreeBSD__) else if (bytes < 0) stream->_flags |= __SEOF; else stream->_flags |= __SERR; #else @@ -479,7 +479,7 @@ size_t XrdPosix_Fwrite(const void *ptr, size_t size, size_t nitems, FILE *stream #ifndef SUNX86 #if defined(__linux__) else stream->_flags |= _IO_ERR_SEEN; -#elif defined(__APPLE__) +#elif defined(__APPLE__) || defined(__FreeBSD__) else stream->_flags |= __SERR; #else else stream->_flag |= _IOERR; diff --git a/src/XrdSys/XrdSysPlatform.hh b/src/XrdSys/XrdSysPlatform.hh index 30f54be13dd..9d36022720d 100644 --- a/src/XrdSys/XrdSysPlatform.hh +++ b/src/XrdSys/XrdSysPlatform.hh @@ -72,7 +72,9 @@ #define S_IAMB 0x1FF /* access mode bits */ +#if !defined(__FreeBSD__) #define F_DUP2FD F_DUPFD +#endif #define STATFS statfs #define STATFS_BUFF struct statfs @@ -260,6 +262,9 @@ extern "C" #define MAXPATHLEN 1024 #else #include +#if defined(__FreeBSD__) +#define MAXNAMELEN 256 +#endif #endif // The following gets arround a relative new gcc compiler bug //