| """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&07777 |
| |
| def S_IFMT(mode): |
| return mode&0170000 |
| |
| # Constants used as S_IFMT() for various file types |
| # (not all are implemented on all systems) |
| |
| S_IFDIR=0040000 |
| S_IFCHR=0020000 |
| S_IFBLK=0060000 |
| S_IFREG=0100000 |
| S_IFIFO=0010000 |
| S_IFLNK=0120000 |
| S_IFSOCK=0140000 |
| |
| # 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=04000 |
| S_ISGID=02000 |
| S_ENFMT= S_ISGID |
| S_ISVTX=01000 |
| S_IREAD=00400 |
| S_IWRITE=00200 |
| S_IEXEC=00100 |
| S_IRWXU=00700 |
| S_IRUSR=00400 |
| S_IWUSR=00200 |
| S_IXUSR=00100 |
| S_IRWXG=00070 |
| S_IRGRP=00040 |
| S_IWGRP=00020 |
| S_IXGRP=00010 |
| S_IRWXO=00007 |
| S_IROTH=00004 |
| S_IWOTH=00002 |
| S_IXOTH=00001 |