| 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 "<sys/stat.h>" 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 <sys/stat.h> and <unistd.h> for these |
| cdef extern from "<unistd.h>" 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 |
|
|