| 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 <fcntl.h> |
| #include <sys/types.h> |
| #include <dirent.h> |
| """) |
| |
| if __name__ == '__main__': |
| ffi.compile() |