Commit a6beddef authored by Giampaolo Rodola's avatar Giampaolo Rodola

Issue 14800: add comments explaining stat.py constants + docstring for S_* functions.

parent 1b634c26
...@@ -19,78 +19,91 @@ ST_CTIME = 9 ...@@ -19,78 +19,91 @@ ST_CTIME = 9
# Extract bits from the mode # Extract bits from the mode
def S_IMODE(mode): def S_IMODE(mode):
"""Return the portion of the file's mode that can be set by
os.chmod().
"""
return mode & 0o7777 return mode & 0o7777
def S_IFMT(mode): def S_IFMT(mode):
"""Return the portion of the file's mode that describes the
file type.
"""
return mode & 0o170000 return mode & 0o170000
# Constants used as S_IFMT() for various file types # Constants used as S_IFMT() for various file types
# (not all are implemented on all systems) # (not all are implemented on all systems)
S_IFDIR = 0o040000 S_IFDIR = 0o040000 # directory
S_IFCHR = 0o020000 S_IFCHR = 0o020000 # character device
S_IFBLK = 0o060000 S_IFBLK = 0o060000 # block device
S_IFREG = 0o100000 S_IFREG = 0o100000 # regular file
S_IFIFO = 0o010000 S_IFIFO = 0o010000 # fifo (named pipe)
S_IFLNK = 0o120000 S_IFLNK = 0o120000 # symbolic link
S_IFSOCK = 0o140000 S_IFSOCK = 0o140000 # socket file
# Functions to test for each file type # Functions to test for each file type
def S_ISDIR(mode): def S_ISDIR(mode):
"""Return True if mode is from a directory."""
return S_IFMT(mode) == S_IFDIR return S_IFMT(mode) == S_IFDIR
def S_ISCHR(mode): def S_ISCHR(mode):
"""Return True if mode is from a character special device file."""
return S_IFMT(mode) == S_IFCHR return S_IFMT(mode) == S_IFCHR
def S_ISBLK(mode): def S_ISBLK(mode):
"""Return True if mode is from a block special device file."""
return S_IFMT(mode) == S_IFBLK return S_IFMT(mode) == S_IFBLK
def S_ISREG(mode): def S_ISREG(mode):
"""Return True if mode is from a regular file."""
return S_IFMT(mode) == S_IFREG return S_IFMT(mode) == S_IFREG
def S_ISFIFO(mode): def S_ISFIFO(mode):
"""Return True if mode is from a FIFO (named pipe)."""
return S_IFMT(mode) == S_IFIFO return S_IFMT(mode) == S_IFIFO
def S_ISLNK(mode): def S_ISLNK(mode):
"""Return True if mode is from a symbolic link."""
return S_IFMT(mode) == S_IFLNK return S_IFMT(mode) == S_IFLNK
def S_ISSOCK(mode): def S_ISSOCK(mode):
"""Return True if mode is from a socket."""
return S_IFMT(mode) == S_IFSOCK return S_IFMT(mode) == S_IFSOCK
# Names for permission bits # Names for permission bits
S_ISUID = 0o4000 S_ISUID = 0o4000 # set UID bit
S_ISGID = 0o2000 S_ISGID = 0o2000 # set GID bit
S_ENFMT = S_ISGID S_ENFMT = S_ISGID # file locking enforcement
S_ISVTX = 0o1000 S_ISVTX = 0o1000 # sticky bit
S_IREAD = 0o0400 S_IREAD = 0o0400 # Unix V7 synonym for S_IRUSR
S_IWRITE = 0o0200 S_IWRITE = 0o0200 # Unix V7 synonym for S_IWUSR
S_IEXEC = 0o0100 S_IEXEC = 0o0100 # Unix V7 synonym for S_IXUSR
S_IRWXU = 0o0700 S_IRWXU = 0o0700 # mask for owner permissions
S_IRUSR = 0o0400 S_IRUSR = 0o0400 # read by owner
S_IWUSR = 0o0200 S_IWUSR = 0o0200 # write by owner
S_IXUSR = 0o0100 S_IXUSR = 0o0100 # execute by owner
S_IRWXG = 0o0070 S_IRWXG = 0o0070 # mask for group permissions
S_IRGRP = 0o0040 S_IRGRP = 0o0040 # read by group
S_IWGRP = 0o0020 S_IWGRP = 0o0020 # write by group
S_IXGRP = 0o0010 S_IXGRP = 0o0010 # execute by group
S_IRWXO = 0o0007 S_IRWXO = 0o0007 # mask for others (not in group) permissions
S_IROTH = 0o0004 S_IROTH = 0o0004 # read by others
S_IWOTH = 0o0002 S_IWOTH = 0o0002 # write by others
S_IXOTH = 0o0001 S_IXOTH = 0o0001 # execute by others
# Names for file flags # Names for file flags
UF_NODUMP = 0x00000001 UF_NODUMP = 0x00000001 # do not dump file
UF_IMMUTABLE = 0x00000002 UF_IMMUTABLE = 0x00000002 # file may not be changed
UF_APPEND = 0x00000004 UF_APPEND = 0x00000004 # file may only be appended to
UF_OPAQUE = 0x00000008 UF_OPAQUE = 0x00000008 # directory is opaque when viewed through a union stack
UF_NOUNLINK = 0x00000010 UF_NOUNLINK = 0x00000010 # file may not be renamed or deleted
UF_COMPRESSED = 0x00000020 # OS X: file is hfs-compressed UF_COMPRESSED = 0x00000020 # OS X: file is hfs-compressed
UF_HIDDEN = 0x00008000 # OS X: file should not be displayed UF_HIDDEN = 0x00008000 # OS X: file should not be displayed
SF_ARCHIVED = 0x00010000 SF_ARCHIVED = 0x00010000 # file may be archived
SF_IMMUTABLE = 0x00020000 SF_IMMUTABLE = 0x00020000 # file may not be changed
SF_APPEND = 0x00040000 SF_APPEND = 0x00040000 # file may only be appended to
SF_NOUNLINK = 0x00100000 SF_NOUNLINK = 0x00100000 # file may not be renamed or deleted
SF_SNAPSHOT = 0x00200000 SF_SNAPSHOT = 0x00200000 # file is a snapshot file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment