# module 'fnmatch' -- filename matching with shell patterns # XXX [] patterns are not supported (but recognized) def fnmatch(name, pat): if '*' in pat or '?' in pat or '[' in pat: return fnmatch1(name, pat) return name = pat def fnmatch1(name, pat): for i in range(len(pat)): c = pat[i] if c = '*': restpat = pat[i+1:] if '*' in restpat or '?' in restpat or '[' in restpat: for i in range(i, len(name)): if fnmatch1(name[i:], restpat): return 1 return 0 else: return name[len(name)-len(restpat):] = restpat elif c = '?': if len(name) <= i : return 0 elif c = '[': return 0 # XXX else: if name[i:i+1] <> c: return 0 return 1 def fnmatchlist(names, pat): res = [] for name in names: if fnmatch(name, pat): res.append(name) return res