Initial revision
diff --git a/Lib/glob.py b/Lib/glob.py
new file mode 100644
index 0000000..8a70f0e
--- /dev/null
+++ b/Lib/glob.py
@@ -0,0 +1,44 @@
+# Module 'glob' -- filename globbing.
+
+import posix
+import path
+import fnmatch
+
+def glob(pathname):
+	if not has_magic(pathname): return [pathname]
+	dirname, basename = path.split(pathname)
+	if dirname[-1:] = '/' and dirname <> '/':
+		dirname = dirname[:-1]
+	if has_magic(dirname):
+		list = glob(dirname)
+	else:
+		list = [dirname]
+	if not has_magic(basename):
+		result = []
+		for dirname in list:
+			if basename or path.isdir(dirname):
+				name = path.cat(dirname, basename)
+				if path.exists(name):
+					result.append(name)
+	else:
+		result = []
+		for dirname in list:
+			sublist = glob1(dirname, basename)
+			for name in sublist:
+				result.append(path.cat(dirname, name))
+	return result
+
+def glob1(dirname, pattern):
+	if not dirname: dirname = '.'
+	try:
+		names = posix.listdir(dirname)
+	except posix.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