[Python-checkins] CVS: python/dist/src/Lib multifile.py,1.18,1.19
Guido van Rossum
gvanrossum@users.sourceforge.net
Tue, 18 Sep 2001 07:34:08 -0700
Update of /cvsroot/python/python/dist/src/Lib
In directory usw-pr-cvs1:/tmp/cvs-serv31026
Modified Files:
multifile.py
Log Message:
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?
Index: multifile.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/multifile.py,v
retrieving revision 1.18
retrieving revision 1.19
diff -C2 -d -r1.18 -r1.19
*** multifile.py 2001/08/02 07:15:29 1.18
--- multifile.py 2001/09/18 14:34:06 1.19
***************
*** 42,45 ****
--- 42,46 ----
self.level = 0
self.last = 0
+ self.readahead = ""
if seekable:
self.seekable = 1
***************
*** 50,54 ****
if self.level > 0:
return self.lastpos
! return self.fp.tell() - self.start
def seek(self, pos, whence=0):
--- 51,55 ----
if self.level > 0:
return self.lastpos
! return self.fp.tell() - len(self.readahead) - self.start
def seek(self, pos, whence=0):
***************
*** 68,73 ****
--- 69,85 ----
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 ''