diff --git a/Lib/stat.py b/Lib/stat.py --- a/Lib/stat.py +++ b/Lib/stat.py @@ -108,15 +108,17 @@ SF_NOUNLINK = 0x00100000 # file may not be renamed or deleted SF_SNAPSHOT = 0x00200000 # file is a snapshot file +_filetype_table = { + S_IFDIR: 'd', + S_IFCHR: 'c', + S_IFBLK: 'b', + S_IFREG: '-', + S_IFIFO: 'p', + S_IFLNK: 'l', + S_IFSOCK: 's', +} _filemode_table = ( - ((S_IFLNK, "l"), - (S_IFREG, "-"), - (S_IFBLK, "b"), - (S_IFDIR, "d"), - (S_IFCHR, "c"), - (S_IFIFO, "p")), - ((S_IRUSR, "r"),), ((S_IWUSR, "w"),), ((S_IXUSR|S_ISUID, "s"), @@ -139,6 +141,7 @@ def filemode(mode): """Convert a file's mode to a string of the form '-rwxrwxrwx'.""" perm = [] + perm.append(_filetype_table.get(S_IFMT(mode), '?')) for table in _filemode_table: for bit, char in table: if mode & bit == bit: