summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>1992-03-31 19:03:19 (GMT)
committerGuido van Rossum <guido@python.org>1992-03-31 19:03:19 (GMT)
commit3bc034bb7982078514acb829dcd95ffe67ea2d48 (patch)
tree6723087478a7df3dbf41d8b5cf51d4d94eddc9cd /Lib
parente58f98bfcf3dbaa73bc113ff9980c1d4afd83e23 (diff)
downloadcpython-3bc034bb7982078514acb829dcd95ffe67ea2d48.zip
cpython-3bc034bb7982078514acb829dcd95ffe67ea2d48.tar.gz
cpython-3bc034bb7982078514acb829dcd95ffe67ea2d48.tar.bz2
Use bitwise ops instead of %; added some warnings and comments
Diffstat (limited to 'Lib')
-rw-r--r--Lib/stat.py29
1 files changed, 19 insertions, 10 deletions
diff --git a/Lib/stat.py b/Lib/stat.py
index 3682b20..afb9a05 100644
--- a/Lib/stat.py
+++ b/Lib/stat.py
@@ -1,15 +1,16 @@
# Module 'stat'
-
+#
# Defines constants and functions for interpreting stat/lstat struct
-# as returned by posix.stat() and posix.lstat() (if it exists).
-
-# XXX This module may have to be adapted for UNIXoid systems whose
-# <sys/stat.h> deviates from AT&T or BSD UNIX; their S_IF* constants
-# may differ.
-
+# as returned by os.stat() and os.lstat() (if it exists).
+#
# 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 Macintosh or MS-DOS).
-# Tuple indices for stat struct members
+# Indices for stat struct members in tuple returned by os.stat()
ST_MODE = 0
ST_INO = 1
@@ -22,10 +23,16 @@ ST_ATIME = 7
ST_MTIME = 8
ST_CTIME = 9
+# Extract bits from the mode
+
def S_IMODE(mode):
- return mode%4096
+ return mode & 07777
+
def S_IFMT(mode):
- return mode - mode%4096
+ return mode & ~07777
+
+# Constants used as S_IFMT() for various file types
+# (not all are implemented on all systems)
S_IFDIR = 0040000
S_IFCHR = 0020000
@@ -35,6 +42,8 @@ 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