From 5d30d61010dccd27a89099d3fd1806b44c28ff20 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Wed, 8 Apr 2009 03:11:01 +0000 Subject: 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 --- pym/portage/env/loaders.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'pym/portage/env') diff --git a/pym/portage/env/loaders.py b/pym/portage/env/loaders.py index e031ed60f..400797c0c 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 -- cgit v1.2.3-1-g7c22