#11062: Fix universal newline support in Babyl._install_message()

This commit is contained in:
Petri Lehtinen 2012-08-16 07:27:47 +03:00
commit 69a06dd59d
1 changed files with 10 additions and 3 deletions

View File

@ -1447,10 +1447,17 @@ class Babyl(_singlefileMailbox):
else:
break
while True:
buffer = message.read(4096) # Buffer size is arbitrary.
if not buffer:
line = message.readline()
if not line:
break
self._file.write(buffer.replace(b'\n', linesep))
# Universal newline support.
if line.endswith(b'\r\n'):
line = line[:-2] + linesep
elif line.endswith(b'\r'):
line = line[:-1] + linesep
elif line.endswith(b'\n'):
line = line[:-1] + linesep
self._file.write(line)
else:
raise TypeError('Invalid message type: %s' % type(message))
stop = self._file.tell()