summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons/Util.py
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2004-04-04 10:40:32 (GMT)
committerSteven Knight <knight@baldmt.com>2004-04-04 10:40:32 (GMT)
commit7c4349c483afaf1c2399025a2850d2b486c20178 (patch)
treeefe6cfb4bc3433988545bf74ded85ebb6b4fc14b /src/engine/SCons/Util.py
parent3a0ca2e66fd1449d3a9b400aabe17fee0eb7f496 (diff)
downloadSCons-7c4349c483afaf1c2399025a2850d2b486c20178.zip
SCons-7c4349c483afaf1c2399025a2850d2b486c20178.tar.gz
SCons-7c4349c483afaf1c2399025a2850d2b486c20178.tar.bz2
Add a reject argument to the env.Whereis() method. (sam th)
Diffstat (limited to 'src/engine/SCons/Util.py')
-rw-r--r--src/engine/SCons/Util.py30
1 files changed, 24 insertions, 6 deletions
diff --git a/src/engine/SCons/Util.py b/src/engine/SCons/Util.py
index e07675c..d2e1d73 100644
--- a/src/engine/SCons/Util.py
+++ b/src/engine/SCons/Util.py
@@ -980,7 +980,7 @@ if can_read_reg:
if sys.platform == 'win32':
- def WhereIs(file, path=None, pathext=None):
+ def WhereIs(file, path=None, pathext=None, reject=[]):
if path is None:
path = os.environ['PATH']
if is_String(path):
@@ -996,17 +996,23 @@ if sys.platform == 'win32':
if string.lower(ext) == string.lower(file[-len(ext):]):
pathext = ['']
break
+ if not is_List(reject):
+ reject = [reject]
for dir in path:
f = os.path.join(dir, file)
for ext in pathext:
fext = f + ext
if os.path.isfile(fext):
- return os.path.normpath(fext)
+ try:
+ reject.index(fext)
+ except ValueError:
+ return os.path.normpath(fext)
+ continue
return None
elif os.name == 'os2':
- def WhereIs(file, path=None, pathext=None):
+ def WhereIs(file, path=None, pathext=None, reject=[]):
if path is None:
path = os.environ['PATH']
if is_String(path):
@@ -1017,21 +1023,29 @@ elif os.name == 'os2':
if string.lower(ext) == string.lower(file[-len(ext):]):
pathext = ['']
break
+ if not is_List(reject):
+ reject = [reject]
for dir in path:
f = os.path.join(dir, file)
for ext in pathext:
fext = f + ext
if os.path.isfile(fext):
- return os.path.normpath(fext)
+ try:
+ reject.index(fext)
+ except ValueError:
+ return os.path.normpath(fext)
+ continue
return None
else:
- def WhereIs(file, path=None, pathext=None):
+ def WhereIs(file, path=None, pathext=None, reject=[]):
if path is None:
path = os.environ['PATH']
if is_String(path):
path = string.split(path, os.pathsep)
+ if not is_List(reject):
+ reject = [reject]
for dir in path:
f = os.path.join(dir, file)
if os.path.isfile(f):
@@ -1040,7 +1054,11 @@ else:
except OSError:
continue
if stat.S_IMODE(st[stat.ST_MODE]) & 0111:
- return os.path.normpath(f)
+ try:
+ reject.index(f)
+ except ValueError:
+ return os.path.normpath(f)
+ continue
return None
def PrependPath(oldpath, newpath, sep = os.pathsep):