From 3bc034bb7982078514acb829dcd95ffe67ea2d48 Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Tue, 31 Mar 1992 19:03:19 +0000 Subject: Use bitwise ops instead of %; added some warnings and comments --- Lib/stat.py | 29 +++++++++++++++++++---------- 1 file 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 -# 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 -- cgit v0.12