summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2009-04-08 03:11:01 +0000
committerZac Medico <zmedico@gentoo.org>2009-04-08 03:11:01 +0000
commit5d30d61010dccd27a89099d3fd1806b44c28ff20 (patch)
tree6b46767e14d3ad30ee4584446f6b60047f454539
parentMake emerge --info <atom> display USE similarly to how they are displayed (diff)
downloadportage-multirepo-5d30d61010dccd27a89099d3fd1806b44c28ff20.tar.gz
portage-multirepo-5d30d61010dccd27a89099d3fd1806b44c28ff20.tar.bz2
portage-multirepo-5d30d61010dccd27a89099d3fd1806b44c28ff20.zip
Make RecursiveFileLoader skip hidden directories, and only use a single stat
call to check for existence and file type. svn path=/main/trunk/; revision=13298
-rw-r--r--pym/portage/env/loaders.py15
1 files changed, 10 insertions, 5 deletions
diff --git a/pym/portage/env/loaders.py b/pym/portage/env/loaders.py
index e031ed60..400797c0 100644
--- a/pym/portage/env/loaders.py
+++ b/pym/portage/env/loaders.py
@@ -4,6 +4,7 @@
# $Id$
import os
+import stat
class LoaderError(Exception):
@@ -36,14 +37,18 @@ def RecursiveFileLoader(filename):
@rtype: list
@returns: List of files to process
"""
- if not os.path.exists(filename):
+ try:
+ st = os.stat(filename)
+ except OSError:
return
- elif os.path.isdir(filename):
+ if stat.S_ISDIR(st.st_mode):
for root, dirs, files in os.walk(filename):
- if 'CVS' in dirs:
- dirs.remove('CVS')
- files = [f for f in files if not f.startswith('.') and not f.endswith('~')]
+ for d in list(dirs):
+ if d[:1] == '.' or d == 'CVS':
+ dirs.remove(d)
for f in files:
+ if f[:1] == '.' or f[-1:] == '~':
+ continue
yield os.path.join(root, f)
else:
yield filename