summaryrefslogtreecommitdiff
path: root/sys/src/cmd/hg/mercurial/pure/osutil.py
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@localhost>2011-05-03 11:25:13 +0000
committercinap_lenrek <cinap_lenrek@localhost>2011-05-03 11:25:13 +0000
commit458120dd40db6b4df55a4e96b650e16798ef06a0 (patch)
tree8f82685be24fef97e715c6f5ca4c68d34d5074ee /sys/src/cmd/hg/mercurial/pure/osutil.py
parent3a742c699f6806c1145aea5149bf15de15a0afd7 (diff)
add hg and python
Diffstat (limited to 'sys/src/cmd/hg/mercurial/pure/osutil.py')
-rw-r--r--sys/src/cmd/hg/mercurial/pure/osutil.py52
1 files changed, 52 insertions, 0 deletions
diff --git a/sys/src/cmd/hg/mercurial/pure/osutil.py b/sys/src/cmd/hg/mercurial/pure/osutil.py
new file mode 100644
index 000000000..86e8291f6
--- /dev/null
+++ b/sys/src/cmd/hg/mercurial/pure/osutil.py
@@ -0,0 +1,52 @@
+# osutil.py - pure Python version of osutil.c
+#
+# Copyright 2009 Matt Mackall <mpm@selenic.com> and others
+#
+# This software may be used and distributed according to the terms of the
+# GNU General Public License version 2, incorporated herein by reference.
+
+import os
+import stat as _stat
+
+posixfile = open
+
+def _mode_to_kind(mode):
+ 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
+ return mode
+
+def listdir(path, stat=False, skip=None):
+ '''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
+ if not prefix.endswith(os.sep):
+ prefix += os.sep
+ names = os.listdir(path)
+ names.sort()
+ for fn in names:
+ st = os.lstat(prefix + fn)
+ if fn == skip and _stat.S_ISDIR(st.st_mode):
+ return []
+ if stat:
+ result.append((fn, _mode_to_kind(st.st_mode), st))
+ else:
+ result.append((fn, _mode_to_kind(st.st_mode)))
+ return result
+