Optimized the hell out of listmessages().
Changed numericprog regexpr to make it faster to check.
Removed now unnecessary checks for os.curdir, os.pardir.
diff --git a/Lib/mhlib.py b/Lib/mhlib.py
index dd38762..990cd9a 100644
--- a/Lib/mhlib.py
+++ b/Lib/mhlib.py
@@ -140,7 +140,6 @@
 		folders = []
 		path = self.getpath()
 		for name in os.listdir(path):
-			if name in (os.curdir, os.pardir): continue
 			fullname = os.path.join(path, name)
 			if os.path.isdir(fullname):
 				folders.append(name)
@@ -160,7 +159,6 @@
 		subfolders = []
 		subnames = os.listdir(fullname)
 		for subname in subnames:
-			if subname in (os.curdir, os.pardir): continue
 			fullsubname = os.path.join(fullname, subname)
 			if os.path.isdir(fullsubname):
 				name_subname = os.path.join(name, subname)
@@ -189,7 +187,6 @@
 		subfolders = []
 		subnames = os.listdir(fullname)
 		for subname in subnames:
-			if subname in (os.curdir, os.pardir): continue
 			if subname[0] == ',' or isnumeric(subname): continue
 			fullsubname = os.path.join(fullname, subname)
 			if os.path.isdir(fullsubname):
@@ -227,7 +224,6 @@
 	def deletefolder(self, name):
 		fullname = os.path.join(self.getpath(), name)
 		for subname in os.listdir(fullname):
-			if subname in (os.curdir, os.pardir): continue
 			fullsubname = os.path.join(fullname, subname)
 			try:
 				os.unlink(fullsubname)
@@ -239,9 +235,9 @@
 
 # Class representing a particular folder
 
-numericprog = regex.compile('[1-9][0-9]*')
+numericprog = regex.compile('^[1-9][0-9]*$')
 def isnumeric(str):
-	return numericprog.match(str) == len(str)
+	return numericprog.match(str) >= 0
 
 class Folder:
 
@@ -284,13 +280,15 @@
 	# As a side effect, set self.last to the last message (or 0)
 	def listmessages(self):
 		messages = []
+		match = numericprog.match
+		append = messages.append
 		for name in os.listdir(self.getfullname()):
-			if name[0] != "," and \
-			   numericprog.match(name) == len(name):
-				messages.append(string.atoi(name))
+			if match(name) >= 0:
+				append(name)
+		messages = map(string.atoi, messages)
 		messages.sort()
 		if messages:
-			self.last = max(messages)
+			self.last = messages[-1]
 		else:
 			self.last = 0
 		return messages