]> git.apps.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>
Fri, 27 Sep 2019 19:59:08 +0000 (21:59 +0200)
FreeBSD dirent{} does not have d_off

Signed-off-by: Willem Jan Withagen <wjw@digiware.nl>
src/pybind/cephfs/cephfs.pyx

index a1a621b6c45a95533930eac4147f46a985674643..978b318c5c1a446948fb17572fb58f71ce4cb8f3 100644 (file)
@@ -51,13 +51,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":
@@ -318,11 +326,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: