From: Willem Jan Withagen Date: Sat, 21 Sep 2019 12:40:00 +0000 (+0200) Subject: cephfs: Create a separate dirent{} for FreeBSD X-Git-Tag: v14.2.5~37^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=d51a5bb1403f222a8c532075f98b6ea1d200bc59;p=ceph.git cephfs: Create a separate dirent{} for FreeBSD FreeBSD dirent{} does not have d_off Signed-off-by: Willem Jan Withagen (cherry picked from commit 56e81aef3e26e0125683e3dd629dd36c0693eff5) --- diff --git a/src/pybind/cephfs/cephfs.pyx b/src/pybind/cephfs/cephfs.pyx index 8e7b43b25e12..00f81aadc2a7 100644 --- a/src/pybind/cephfs/cephfs.pyx +++ b/src/pybind/cephfs/cephfs.pyx @@ -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: