]> granicus.if.org Git - python/commitdiff
Back out multifile.py 1.19 and 1.20. Fixes #514676.
authorMartin v. Löwis <martin@v.loewis.de>
Sun, 22 Sep 2002 09:01:08 +0000 (09:01 +0000)
committerMartin v. Löwis <martin@v.loewis.de>
Sun, 22 Sep 2002 09:01:08 +0000 (09:01 +0000)
Lib/multifile.py
Lib/test/test_multifile.py [new file with mode: 0644]

index 4ef364451dbd1e7ce60086c2e4b89cf8c0a561f2..23d9d317193969e960a74f3356b5a0716fffe6b8 100644 (file)
@@ -41,7 +41,6 @@ class MultiFile:
         self.stack = [] # Grows down
         self.level = 0
         self.last = 0
-        self.readahead = ""
         if seekable:
             self.seekable = 1
             self.start = self.fp.tell()
@@ -50,7 +49,7 @@ class MultiFile:
     def tell(self):
         if self.level > 0:
             return self.lastpos
-        return self.fp.tell() - len(self.readahead) - self.start
+        return self.fp.tell() - self.start
 
     def seek(self, pos, whence=0):
         here = self.tell()
@@ -68,22 +67,8 @@ class MultiFile:
         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:
-                if line[-2:] == "\r\n":
-                    line = line[:-2]
-                elif line[-1:] == "\n":
-                    line = line[:-1]
-        return line
-
-    def _readline(self):
         if self.level > 0:
             return ''
         line = self.fp.readline()
diff --git a/Lib/test/test_multifile.py b/Lib/test/test_multifile.py
new file mode 100644 (file)
index 0000000..8f70347
--- /dev/null
@@ -0,0 +1,66 @@
+import mimetools
+import multifile
+import cStringIO
+
+msg = """Mime-Version: 1.0
+Content-Type: multipart/mixed;
+       boundary="=====================_590453667==_"
+X-OriginalArrivalTime: 05 Feb 2002 03:43:23.0310 (UTC) FILETIME=[42D88CE0:01C1ADF7]
+
+--=====================_590453667==_
+Content-Type: multipart/alternative;
+       boundary="=====================_590453677==_.ALT"
+
+--=====================_590453677==_.ALT
+Content-Type: text/plain; charset="us-ascii"; format=flowed
+
+test A
+--=====================_590453677==_.ALT
+Content-Type: text/html; charset="us-ascii"
+
+<html>
+<b>test B</font></b></html>
+
+--=====================_590453677==_.ALT--
+
+--=====================_590453667==_
+Content-Type: text/plain; charset="us-ascii"
+Content-Disposition: attachment; filename="att.txt"
+
+Attached Content.
+Attached Content.
+Attached Content.
+Attached Content.
+
+--=====================_590453667==_--
+
+"""
+
+boundaries = 0
+linecount = 0
+
+def getMIMEMsg(mf):
+    global boundaries, linecount
+    msg = mimetools.Message(mf)
+
+    #print "TYPE: %s" % msg.gettype()
+    if msg.getmaintype() == 'multipart':
+        boundary = msg.getparam("boundary")
+        boundaries += 1
+
+        mf.push(boundary)
+        while mf.next(): 
+            getMIMEMsg(mf)     
+        mf.pop()
+    else:
+        lines = mf.readlines()
+        linecount += len(lines)
+
+def main():
+    f = cStringIO.StringIO(msg)
+    getMIMEMsg(multifile.MultiFile(f))
+    assert boundaries == 2
+    assert linecount == 9
+
+if __name__ == '__main__':
+    main()