from cffi import FFI ffi = FFI() ffi.cdef(""" typedef ... DIR; struct dirent { unsigned char d_type; /* type of file; not supported by all file system types */ char d_name[...]; /* filename */ ...; }; int readdir_r(DIR *dirp, struct dirent *entry, struct dirent **result); int openat(int dirfd, const char *pathname, int flags); DIR *fdopendir(int fd); int closedir(DIR *dirp); static const int DT_DIR; """) ffi.set_source("_readdir2_cffi", """ #ifndef _ATFILE_SOURCE # define _ATFILE_SOURCE #endif #ifndef _BSD_SOURCE # define _BSD_SOURCE #endif #include #include #include """) if __name__ == '__main__': ffi.compile()