mirror of https://github.com/python/cpython.git
Back out multifile.py 1.19 and 1.20. Fixes #514676.
This commit is contained in:
parent
4a38583456
commit
a6026c6a0f
|
@ -41,7 +41,6 @@ def __init__(self, fp, seekable=1):
|
|||
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 @@ def __init__(self, fp, seekable=1):
|
|||
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 @@ def seek(self, pos, whence=0):
|
|||
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()
|
||||
|
|
|
@ -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()
|
Loading…
Reference in New Issue