diff options
Diffstat (limited to 'src/engine')
-rw-r--r-- | src/engine/SCons/Environment.xml | 2 | ||||
-rw-r--r-- | src/engine/SCons/Node/FS.py | 9 |
2 files changed, 6 insertions, 5 deletions
diff --git a/src/engine/SCons/Environment.xml b/src/engine/SCons/Environment.xml index 069ad87..b90f1d8 100644 --- a/src/engine/SCons/Environment.xml +++ b/src/engine/SCons/Environment.xml @@ -1813,7 +1813,7 @@ directory.) <para> The <varname>exclude</varname> -argument may be set to a list of patterns +argument may be set to a pattern or a list of patterns (following the same Unix shell semantics) which must be filtered out of returned elements. Elements matching a least one pattern of diff --git a/src/engine/SCons/Node/FS.py b/src/engine/SCons/Node/FS.py index 0156e27..eec4e42 100644 --- a/src/engine/SCons/Node/FS.py +++ b/src/engine/SCons/Node/FS.py @@ -2048,9 +2048,10 @@ class Dir(Base): The "strings" argument, when true, returns the matches as strings, not Nodes. The strings are path names relative to this directory. - The "exclude" argument, if not None, must be a list of patterns - following the same UNIX shell semantics. Elements matching a least - one pattern of this list will be excluded from the result. + The "exclude" argument, if not None, must be a pattern or a list + of patterns following the same UNIX shell semantics. + Elements matching a least one pattern of this list will be excluded + from the result. The underlying algorithm is adapted from the glob.glob() function in the Python library (but heavily modified), and uses fnmatch() @@ -2071,7 +2072,7 @@ class Dir(Base): r = [os.path.join(str(dir), x) for x in r] result.extend(r) if exclude: - result = filter(lambda x: not any(fnmatch.fnmatch(str(x), e) for e in exclude), result) + result = filter(lambda x: not any(fnmatch.fnmatch(str(x), e) for e in SCons.Util.flatten(exclude)), result) return sorted(result, key=lambda a: str(a)) def _glob1(self, pattern, ondisk=True, source=False, strings=False): |