#11062: Fix universal newline support in Babyl._install_message()
When adding a message from a binary file, \r\n was translated to \r\r\n in the message body.
This commit is contained in:
parent
573b1fd779
commit
88614948c0
|
@ -1450,10 +1450,17 @@ class Babyl(_singlefileMailbox):
|
||||||
else:
|
else:
|
||||||
break
|
break
|
||||||
while True:
|
while True:
|
||||||
buffer = message.read(4096) # Buffer size is arbitrary.
|
line = message.readline()
|
||||||
if not buffer:
|
if not line:
|
||||||
break
|
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:
|
else:
|
||||||
raise TypeError('Invalid message type: %s' % type(message))
|
raise TypeError('Invalid message type: %s' % type(message))
|
||||||
stop = self._file.tell()
|
stop = self._file.tell()
|
||||||
|
|
Loading…
Reference in New Issue