SF bug #417176 (Martijn Pieters): MultiFile.read() includes CRLF
boundary.

Fixed by keeping a readahead buffer containing the next line.

XXX We have no test suite for this.  Maybe the new email package will
help?
diff --git a/Lib/multifile.py b/Lib/multifile.py
index 74c35f0..47e2346 100644
--- a/Lib/multifile.py
+++ b/Lib/multifile.py
@@ -41,6 +41,7 @@
         self.stack = [] # Grows down
         self.level = 0
         self.last = 0
+        self.readahead = ""
         if seekable:
             self.seekable = 1
             self.start = self.fp.tell()
@@ -49,7 +50,7 @@
     def tell(self):
         if self.level > 0:
             return self.lastpos
-        return self.fp.tell() - self.start
+        return self.fp.tell() - len(self.readahead) - self.start
 
     def seek(self, pos, whence=0):
         here = self.tell()
@@ -67,8 +68,19 @@
         self.fp.seek(pos + self.start)
         self.level = 0
         self.last = 0
+        self.readahead = ""
 
     def readline(self):
+        if not self.readahead:
+            self.readahead = self._readline()
+        line = self.readahead
+        if line:
+            self.readahead = self._readline()
+            if not self.readahead and line[-1:] == "\n":
+                line = line[:-1]
+        return line
+
+    def _readline(self):
         if self.level > 0:
             return ''
         line = self.fp.readline()