Commit | Line | Data |
---|---|---|
86530b38 AT |
1 | """Constants/functions for interpreting results of os.stat() and os.lstat(). |
2 | ||
3 | Suggested usage: from stat import * | |
4 | """ | |
5 | ||
6 | # XXX Strictly spoken, this module may have to be adapted for each POSIX | |
7 | # implementation; in practice, however, the numeric constants used by | |
8 | # stat() are almost universal (even for stat() emulations on non-UNIX | |
9 | # systems like MS-DOS). | |
10 | ||
11 | # Indices for stat struct members in tuple returned by os.stat() | |
12 | ||
13 | ST_MODE = 0 | |
14 | ST_INO = 1 | |
15 | ST_DEV = 2 | |
16 | ST_NLINK = 3 | |
17 | ST_UID = 4 | |
18 | ST_GID = 5 | |
19 | ST_SIZE = 6 | |
20 | ST_ATIME = 7 | |
21 | ST_MTIME = 8 | |
22 | ST_CTIME = 9 | |
23 | ||
24 | # Extract bits from the mode | |
25 | ||
26 | def S_IMODE(mode): | |
27 | return mode & 07777 | |
28 | ||
29 | def S_IFMT(mode): | |
30 | return mode & 0170000 | |
31 | ||
32 | # Constants used as S_IFMT() for various file types | |
33 | # (not all are implemented on all systems) | |
34 | ||
35 | S_IFDIR = 0040000 | |
36 | S_IFCHR = 0020000 | |
37 | S_IFBLK = 0060000 | |
38 | S_IFREG = 0100000 | |
39 | S_IFIFO = 0010000 | |
40 | S_IFLNK = 0120000 | |
41 | S_IFSOCK = 0140000 | |
42 | ||
43 | # Functions to test for each file type | |
44 | ||
45 | def S_ISDIR(mode): | |
46 | return S_IFMT(mode) == S_IFDIR | |
47 | ||
48 | def S_ISCHR(mode): | |
49 | return S_IFMT(mode) == S_IFCHR | |
50 | ||
51 | def S_ISBLK(mode): | |
52 | return S_IFMT(mode) == S_IFBLK | |
53 | ||
54 | def S_ISREG(mode): | |
55 | return S_IFMT(mode) == S_IFREG | |
56 | ||
57 | def S_ISFIFO(mode): | |
58 | return S_IFMT(mode) == S_IFIFO | |
59 | ||
60 | def S_ISLNK(mode): | |
61 | return S_IFMT(mode) == S_IFLNK | |
62 | ||
63 | def S_ISSOCK(mode): | |
64 | return S_IFMT(mode) == S_IFSOCK | |
65 | ||
66 | # Names for permission bits | |
67 | ||
68 | S_ISUID = 04000 | |
69 | S_ISGID = 02000 | |
70 | S_ENFMT = S_ISGID | |
71 | S_ISVTX = 01000 | |
72 | S_IREAD = 00400 | |
73 | S_IWRITE = 00200 | |
74 | S_IEXEC = 00100 | |
75 | S_IRWXU = 00700 | |
76 | S_IRUSR = 00400 | |
77 | S_IWUSR = 00200 | |
78 | S_IXUSR = 00100 | |
79 | S_IRWXG = 00070 | |
80 | S_IRGRP = 00040 | |
81 | S_IWGRP = 00020 | |
82 | S_IXGRP = 00010 | |
83 | S_IRWXO = 00007 | |
84 | S_IROTH = 00004 | |
85 | S_IWOTH = 00002 | |
86 | S_IXOTH = 00001 |