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?
This commit is contained in:
Guido van Rossum 2001-09-18 14:34:06 +00:00
parent 555d12f986
commit 912e56c3ac
1 changed files with 13 additions and 1 deletions

View File

@ -41,6 +41,7 @@ class MultiFile:
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 @@ class MultiFile:
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 @@ 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 and line[-1:] == "\n":
line = line[:-1]
return line
def _readline(self):
if self.level > 0:
return ''
line = self.fp.readline()