You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
86 lines
1.7 KiB
86 lines
1.7 KiB
"""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
|
|
|