osutil.py
42 lines
| 1.2 KiB
| text/x-python
|
PythonLexer
/ mercurial / osutil.py
|
r7057 | import os | ||
import stat as _stat | ||||
|
r5396 | |||
def _mode_to_kind(mode): | ||||
|
r7057 | if _stat.S_ISREG(mode): return _stat.S_IFREG | ||
if _stat.S_ISDIR(mode): return _stat.S_IFDIR | ||||
if _stat.S_ISLNK(mode): return _stat.S_IFLNK | ||||
if _stat.S_ISBLK(mode): return _stat.S_IFBLK | ||||
if _stat.S_ISCHR(mode): return _stat.S_IFCHR | ||||
if _stat.S_ISFIFO(mode): return _stat.S_IFIFO | ||||
if _stat.S_ISSOCK(mode): return _stat.S_IFSOCK | ||||
|
r5396 | return mode | ||
|
r7034 | def listdir(path, stat=False, skip=None): | ||
|
r5396 | '''listdir(path, stat=False) -> list_of_tuples | ||
Return a sorted list containing information about the entries | ||||
in the directory. | ||||
If stat is True, each element is a 3-tuple: | ||||
(name, type, stat object) | ||||
Otherwise, each element is a 2-tuple: | ||||
(name, type) | ||||
''' | ||||
result = [] | ||||
|
r7301 | prefix = path | ||
if not prefix.endswith(os.sep): | ||||
prefix += os.sep | ||||
|
r5396 | names = os.listdir(path) | ||
names.sort() | ||||
for fn in names: | ||||
st = os.lstat(prefix + fn) | ||||
|
r7057 | if fn == skip and _stat.S_ISDIR(st.st_mode): | ||
|
r7034 | return [] | ||
|
r5396 | if stat: | ||
result.append((fn, _mode_to_kind(st.st_mode), st)) | ||||
else: | ||||
result.append((fn, _mode_to_kind(st.st_mode))) | ||||
return result | ||||