from posix.types cimport (blkcnt_t, blksize_t, dev_t, gid_t, ino_t, mode_t, nlink_t, off_t, time_t, uid_t) cdef extern from "" nogil: cdef struct struct_stat "stat": dev_t st_dev ino_t st_ino mode_t st_mode nlink_t st_nlink uid_t st_uid gid_t st_gid dev_t st_rdev off_t st_size blksize_t st_blksize blkcnt_t st_blocks time_t st_atime time_t st_mtime time_t st_ctime # st_birthtime exists on *BSD and OS X. # Under Linux, defining it here does not hurt. Compilation under Linux # will only (and rightfully) fail when attempting to use the field. time_t st_birthtime # POSIX prescribes including both and for these cdef extern from "" nogil: int fchmod(int, mode_t) int chmod(const char *, mode_t) int fstat(int, struct_stat *) int lstat(const char *, struct_stat *) int stat(const char *, struct_stat *) # Macros for st_mode mode_t S_ISREG(mode_t) mode_t S_ISDIR(mode_t) mode_t S_ISCHR(mode_t) mode_t S_ISBLK(mode_t) mode_t S_ISFIFO(mode_t) mode_t S_ISLNK(mode_t) mode_t S_ISSOCK(mode_t) mode_t S_IFMT mode_t S_IFREG mode_t S_IFDIR mode_t S_IFCHR mode_t S_IFBLK mode_t S_IFIFO mode_t S_IFLNK mode_t S_IFSOCK # Permissions mode_t S_ISUID mode_t S_ISGID mode_t S_ISVTX mode_t S_IRWXU mode_t S_IRUSR mode_t S_IWUSR mode_t S_IXUSR mode_t S_IRWXG mode_t S_IRGRP mode_t S_IWGRP mode_t S_IXGRP mode_t S_IRWXO mode_t S_IROTH mode_t S_IWOTH mode_t S_IXOTH