Mad readfile() read the file in one fell swoop.
diff --git a/Lib/commands.py b/Lib/commands.py
index c96953c..dc46740 100644
--- a/Lib/commands.py
+++ b/Lib/commands.py
@@ -41,7 +41,17 @@
 # Return a string containing a file's contents.
 #
 def readfile(fn):
-	return open(fn, 'r').read(posix.stat(fn)[stat.ST_SIZE])
+	st = posix.stat(fn)
+	size = st[stat.ST_SIZE]
+	if not size: return ''
+	try:
+		fp = open(fn, 'r')
+	except:
+		raise posix.error, 'readfile(' + fn + '): open failed'
+	try:
+		return fp.read(size)
+	except:
+		raise posix.error, 'readfile(' + fn + '): read failed'
 
 
 # Make command argument from directory and pathname (prefix space, add quotes).