[Python-checkins] cpython (3.2): #11062: Fix universal newline support in Babyl._install_message()
petri.lehtinen
python-checkins at python.org
Thu Aug 16 06:30:14 CEST 2012
http://hg.python.org/cpython/rev/770ffc91a82e
changeset: 78608:770ffc91a82e
branch: 3.2
parent: 78606:8ff172a1b679
user: Petri Lehtinen <petri at digip.org>
date: Thu Aug 16 07:22:15 2012 +0300
summary:
#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.
files:
Lib/mailbox.py | 13 ++++++++++---
1 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/Lib/mailbox.py b/Lib/mailbox.py
--- a/Lib/mailbox.py
+++ b/Lib/mailbox.py
@@ -1450,10 +1450,17 @@
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()
--
Repository URL: http://hg.python.org/cpython
More information about the Python-checkins
mailing list