diff options
Diffstat (limited to 'lib/macglob.py')
| -rw-r--r-- | lib/macglob.py | 64 |
1 files changed, 32 insertions, 32 deletions
diff --git a/lib/macglob.py b/lib/macglob.py index cad2c79..f18c396 100644 --- a/lib/macglob.py +++ b/lib/macglob.py @@ -8,39 +8,39 @@ import macpath import fnmatch def glob(pathname): - if not has_magic(pathname): return [pathname] - dirname, basename = macpath.split(pathname) - if has_magic(dirname): - if dirname[-1:] = ':': dirname = dirname[:-1] - list = glob(dirname) - else: - list = [dirname] - if not has_magic(basename): - result = [] - for dirname in list: - if basename or macpath.isdir(dirname): - name = macpath.cat(dirname, basename) - if macpath.exists(name): - result.append(name) - else: - result = [] - for dirname in list: - sublist = glob1(dirname, basename) - for name in sublist: - result.append(macpath.cat(dirname, name)) - return result + if not has_magic(pathname): return [pathname] + dirname, basename = macpath.split(pathname) + if has_magic(dirname): + if dirname[-1:] = ':': dirname = dirname[:-1] + list = glob(dirname) + else: + list = [dirname] + if not has_magic(basename): + result = [] + for dirname in list: + if basename or macpath.isdir(dirname): + name = macpath.cat(dirname, basename) + if macpath.exists(name): + result.append(name) + else: + result = [] + for dirname in list: + sublist = glob1(dirname, basename) + for name in sublist: + result.append(macpath.cat(dirname, name)) + return result def glob1(dirname, pattern): - if not dirname: dirname = ':' - try: - names = mac.listdir(dirname) - except mac.error: - return [] - result = [] - for name in names: - if name[0] <> '.' or pattern[0] = '.': - if fnmatch.fnmatch(name, pattern): result.append(name) - return result + if not dirname: dirname = ':' + try: + names = mac.listdir(dirname) + except mac.error: + return [] + result = [] + for name in names: + if name[0] <> '.' or pattern[0] = '.': + if fnmatch.fnmatch(name, pattern): result.append(name) + return result def has_magic(s): - return '*' in s or '?' in s or '[' in s + return '*' in s or '?' in s or '[' in s |
