osutil.py
40 lines
| 1.1 KiB
| text/x-python
|
PythonLexer
/ mercurial / osutil.py
Benoit Boissinot
|
r7057 | import os | ||
import stat as _stat | ||||
Bryan O'Sullivan
|
r5396 | |||
def _mode_to_kind(mode): | ||||
Benoit Boissinot
|
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 | ||||
Bryan O'Sullivan
|
r5396 | return mode | ||
Matt Mackall
|
r7034 | def listdir(path, stat=False, skip=None): | ||
Bryan O'Sullivan
|
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 = [] | ||||
prefix = path + os.sep | ||||
names = os.listdir(path) | ||||
names.sort() | ||||
for fn in names: | ||||
st = os.lstat(prefix + fn) | ||||
Benoit Boissinot
|
r7057 | if fn == skip and _stat.S_ISDIR(st.st_mode): | ||
Matt Mackall
|
r7034 | return [] | ||
Bryan O'Sullivan
|
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 | ||||