| """Constants/functions for interpreting results of os.stat() and os.lstat(). |
| |
| Suggested usage: from stat import * |
| """ |
| |
| # XXX Strictly spoken, this module may have to be adapted for each POSIX |
| # implementation; in practice, however, the numeric constants used by |
| # stat() are almost universal (even for stat() emulations on non-UNIX |
| # systems like MS-DOS). |
| |
| # Indices for stat struct members in tuple returned by os.stat() |
| |
| ST_MODE = 0 |
| ST_INO = 1 |
| ST_DEV = 2 |
| ST_NLINK = 3 |
| ST_UID = 4 |
| ST_GID = 5 |
| ST_SIZE = 6 |
| ST_ATIME = 7 |
| ST_MTIME = 8 |
| ST_CTIME = 9 |
| |
| # Extract bits from the mode |
| |
| def S_IMODE(mode): |
| return mode & 0o7777 |
| |
| def S_IFMT(mode): |
| return mode & 0o170000 |
| |
| # Constants used as S_IFMT() for various file types |
| # (not all are implemented on all systems) |
| |
| S_IFDIR = 0o040000 |
| S_IFCHR = 0o020000 |
| S_IFBLK = 0o060000 |
| S_IFREG = 0o100000 |
| S_IFIFO = 0o010000 |
| S_IFLNK = 0o120000 |
| S_IFSOCK = 0o140000 |
| |
| # Functions to test for each file type |
| |
| def S_ISDIR(mode): |
| return S_IFMT(mode) == S_IFDIR |
| |
| def S_ISCHR(mode): |
| return S_IFMT(mode) == S_IFCHR |
| |
| def S_ISBLK(mode): |
| return S_IFMT(mode) == S_IFBLK |
| |
| def S_ISREG(mode): |
| return S_IFMT(mode) == S_IFREG |
| |
| def S_ISFIFO(mode): |
| return S_IFMT(mode) == S_IFIFO |
| |
| def S_ISLNK(mode): |
| return S_IFMT(mode) == S_IFLNK |
| |
| def S_ISSOCK(mode): |
| return S_IFMT(mode) == S_IFSOCK |
| |
| # Names for permission bits |
| |
| S_ISUID = 0o4000 |
| S_ISGID = 0o2000 |
| S_ENFMT = S_ISGID |
| S_ISVTX = 0o1000 |
| S_IREAD = 0o0400 |
| S_IWRITE = 0o0200 |
| S_IEXEC = 0o0100 |
| S_IRWXU = 0o0700 |
| S_IRUSR = 0o0400 |
| S_IWUSR = 0o0200 |
| S_IXUSR = 0o0100 |
| S_IRWXG = 0o0070 |
| S_IRGRP = 0o0040 |
| S_IWGRP = 0o0020 |
| S_IXGRP = 0o0010 |
| S_IRWXO = 0o0007 |
| S_IROTH = 0o0004 |
| S_IWOTH = 0o0002 |
| S_IXOTH = 0o0001 |
| |
| # Names for file flags |
| |
| UF_NODUMP = 0x00000001 |
| UF_IMMUTABLE = 0x00000002 |
| UF_APPEND = 0x00000004 |
| UF_OPAQUE = 0x00000008 |
| UF_NOUNLINK = 0x00000010 |
| SF_ARCHIVED = 0x00010000 |
| SF_IMMUTABLE = 0x00020000 |
| SF_APPEND = 0x00040000 |
| SF_NOUNLINK = 0x00100000 |
| SF_SNAPSHOT = 0x00200000 |