diff options
Diffstat (limited to 'Lib/fnmatch.py')
| -rw-r--r-- | Lib/fnmatch.py | 35 | 
1 files changed, 35 insertions, 0 deletions
diff --git a/Lib/fnmatch.py b/Lib/fnmatch.py new file mode 100644 index 0000000..c7caef6 --- /dev/null +++ b/Lib/fnmatch.py @@ -0,0 +1,35 @@ +# 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  | 
