Patch by Lars Wirzenius to allow f.readline(length).
diff --git a/Lib/StringIO.py b/Lib/StringIO.py
index bbd9428..dba38e4 100644
--- a/Lib/StringIO.py
+++ b/Lib/StringIO.py
@@ -64,7 +64,7 @@
 		r = self.buf[self.pos:newpos]
 		self.pos = newpos
 		return r
-	def readline(self):
+	def readline(self, length=None):
 		if self.buflist:
 			self.buf = self.buf + string.joinfields(self.buflist, '')
 			self.buflist = []
@@ -73,6 +73,9 @@
 			newpos = self.len
 		else:
 			newpos = i+1
+		if length is not None:
+			if self.pos + length < newpos:
+				newpos = self.pos + length
 		r = self.buf[self.pos:newpos]
 		self.pos = newpos
 		return r