summaryrefslogtreecommitdiff
path: root/bin/tools/misc.py
diff options
context:
space:
mode:
authorChristophe Simonis <christophe@tinyerp.com>2008-09-05 01:50:01 +0200
committerChristophe Simonis <christophe@tinyerp.com>2008-09-05 01:50:01 +0200
commit6fbedbf2e57b67e45eeff902db4bba2a48d9b695 (patch)
tree7276ae40d7d2e3d9d211d644306b747c47020a23 /bin/tools/misc.py
parente1c774f5db7467500c8bce05444a82afc8c3bc4c (diff)
add (and use) method tools.oswalksymlinks
bzr revid: christophe@tinyerp.com-20080904235001-3ix8x19mcdobihwo
Diffstat (limited to 'bin/tools/misc.py')
-rw-r--r--bin/tools/misc.py16
1 files changed, 16 insertions, 0 deletions
diff --git a/bin/tools/misc.py b/bin/tools/misc.py
index 32d58ff5ae1..cbca190fd04 100644
--- a/bin/tools/misc.py
+++ b/bin/tools/misc.py
@@ -256,6 +256,22 @@ def file_open(name, mode="r", subdir='addons', pathinfo=False):
raise IOError, 'File not found : '+str(name)
+def oswalksymlinks(top, topdown=True, onerror=None):
+ """
+ same as os.walk but follow symlinks
+ """
+ for dirpath, dirnames, filenames in os.walk(top, topdown, onerror):
+ symlinks = filter(lambda dirname: os.path.islink(os.path.join(dirpath, dirname)), dirnames)
+ if not topdown:
+ for s in symlinks:
+ for x in oswalksymlinks(os.path.join(dirpath, s), topdown, onerror):
+ yield x
+ yield dirpath, dirnames, filenames
+ if topdown:
+ for s in symlinks:
+ for x in oswalksymlinks(os.path.join(dirpath, s), topdown, onerror):
+ yield x
+
#----------------------------------------------------------
# iterables
#----------------------------------------------------------