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() |