diff options
author | Petri Lehtinen <petri@digip.org> | 2012-08-16 04:27:47 (GMT) |
---|---|---|
committer | Petri Lehtinen <petri@digip.org> | 2012-08-16 04:27:53 (GMT) |
commit | 69a06dd59defa8de0586eb751b6acbed50fddc3e (patch) | |
tree | e963d42c66793e9fa101310c0acb940529a0c683 | |
parent | 0e41628d3583c03a6078d88c91a4ac80482f060b (diff) | |
parent | 88614948c08aa583c41176d05eec5cf099c9d04d (diff) | |
download | cpython-69a06dd59defa8de0586eb751b6acbed50fddc3e.zip cpython-69a06dd59defa8de0586eb751b6acbed50fddc3e.tar.gz cpython-69a06dd59defa8de0586eb751b6acbed50fddc3e.tar.bz2 |
#11062: Fix universal newline support in Babyl._install_message()
-rw-r--r-- | Lib/mailbox.py | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/Lib/mailbox.py b/Lib/mailbox.py index 30877f1..1841b0f 100644 --- a/Lib/mailbox.py +++ b/Lib/mailbox.py @@ -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() |