]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
cephfs: Create a separate dirent{} for FreeBSD
authorWillem Jan Withagen <wjw@digiware.nl>
Sat, 21 Sep 2019 12:40:00 +0000 (14:40 +0200)
committerWillem Jan Withagen <wjw@digiware.nl>
Thu, 24 Oct 2019 20:18:07 +0000 (22:18 +0200)
FreeBSD dirent{} does not have d_off

Signed-off-by: Willem Jan Withagen <wjw@digiware.nl>
(cherry picked from commit 56e81aef3e26e0125683e3dd629dd36c0693eff5)

src/pybind/cephfs/cephfs.pyx

index 8e7b43b25e12ce54ad7eaca27c07c4f2fa8c100d..00f81aadc2a75253ae6fcf3ed8759918f1adf101 100644 (file)
@@ -49,13 +49,21 @@ cdef extern from "sys/statvfs.h":
         unsigned long int f_padding[32]
 
 
-cdef extern from "dirent.h":
-    cdef struct dirent:
-        long int d_ino
-        unsigned long int d_off
-        unsigned short int d_reclen
-        unsigned char d_type
-        char d_name[256]
+IF UNAME_SYSNAME == "FreeBSD":
+    cdef extern from "dirent.h":
+        cdef struct dirent:
+            long int d_ino
+            unsigned short int d_reclen
+            unsigned char d_type
+            char d_name[256]
+ELSE:
+    cdef extern from "dirent.h":
+        cdef struct dirent:
+            long int d_ino
+            unsigned long int d_off
+            unsigned short int d_reclen
+            unsigned char d_type
+            char d_name[256]
 
 
 cdef extern from "time.h":
@@ -310,11 +318,18 @@ cdef class DirResult(object):
         if not dirent:
             return None
 
-        return DirEntry(d_ino=dirent.d_ino,
-                        d_off=dirent.d_off,
-                        d_reclen=dirent.d_reclen,
-                        d_type=dirent.d_type,
-                        d_name=dirent.d_name)
+        IF UNAME_SYSNAME == "FreeBSD":
+            return DirEntry(d_ino=dirent.d_ino,
+                            d_off=0,
+                            d_reclen=dirent.d_reclen,
+                            d_type=dirent.d_type,
+                            d_name=dirent.d_name)
+        ELSE:
+             return DirEntry(d_ino=dirent.d_ino,
+                            d_off=dirent.d_off,
+                            d_reclen=dirent.d_reclen,
+                            d_type=dirent.d_type,
+                            d_name=dirent.d_name)
 
     def close(self):
         if self.handle: