1 """Constants/functions for interpreting results of os.stat() and os.lstat(). 2 3 Suggested usage: from stat import * 4 """ 5 6 # Indices for stat struct members in the tuple returned by os.stat() 7 8 ST_MODE = 0 9 ST_INO = 1 10 ST_DEV = 2 11 ST_NLINK = 3 12 ST_UID = 4 13 ST_GID = 5 14 ST_SIZE = 6 15 ST_ATIME = 7 16 ST_MTIME = 8 17 ST_CTIME = 9 18 19 # Extract bits from the mode 20 21 def S_IMODE(mode): 22 return mode & 07777 23 24 def S_IFMT(mode): 25 return mode & 0170000 26 27 # Constants used as S_IFMT() for various file types 28 # (not all are implemented on all systems) 29 30 S_IFDIR = 0040000 31 S_IFCHR = 0020000 32 S_IFBLK = 0060000 33 S_IFREG = 0100000 34 S_IFIFO = 0010000 35 S_IFLNK = 0120000 36 S_IFSOCK = 0140000 37 38 # Functions to test for each file type 39 40 def S_ISDIR(mode): 41 return S_IFMT(mode) == S_IFDIR 42 43 def S_ISCHR(mode): 44 return S_IFMT(mode) == S_IFCHR 45 46 def S_ISBLK(mode): 47 return S_IFMT(mode) == S_IFBLK 48 49 def S_ISREG(mode): 50 return S_IFMT(mode) == S_IFREG 51 52 def S_ISFIFO(mode): 53 return S_IFMT(mode) == S_IFIFO 54 55 def S_ISLNK(mode): 56 return S_IFMT(mode) == S_IFLNK 57 58 def S_ISSOCK(mode): 59 return S_IFMT(mode) == S_IFSOCK 60 61 # Names for permission bits 62 63 S_ISUID = 04000 64 S_ISGID = 02000 65 S_ENFMT = S_ISGID 66 S_ISVTX = 01000 67 S_IREAD = 00400 68 S_IWRITE = 00200 69 S_IEXEC = 00100 70 S_IRWXU = 00700 71 S_IRUSR = 00400 72 S_IWUSR = 00200 73 S_IXUSR = 00100 74 S_IRWXG = 00070 75 S_IRGRP = 00040 76 S_IWGRP = 00020 77 S_IXGRP = 00010 78 S_IRWXO = 00007 79 S_IROTH = 00004 80 S_IWOTH = 00002 81 S_IXOTH = 00001 82 83 # Names for file flags 84 85 UF_NODUMP = 0x00000001 86 UF_IMMUTABLE = 0x00000002 87 UF_APPEND = 0x00000004 88 UF_OPAQUE = 0x00000008 89 UF_NOUNLINK = 0x00000010 90 UF_COMPRESSED = 0x00000020 # OS X: file is hfs-compressed 91 UF_HIDDEN = 0x00008000 # OS X: file should not be displayed 92 SF_ARCHIVED = 0x00010000 93 SF_IMMUTABLE = 0x00020000 94 SF_APPEND = 0x00040000 95 SF_NOUNLINK = 0x00100000 96 SF_SNAPSHOT = 0x00200000 97