#691291: codecs.open() should not convert end of lines on reading and writing.
diff --git a/Lib/codecs.py b/Lib/codecs.py
index 557ccf7..a67240a 100644
--- a/Lib/codecs.py
+++ b/Lib/codecs.py
@@ -858,10 +858,15 @@
parameter.
"""
- if encoding is not None and \
- 'b' not in mode:
- # Force opening of the file in binary mode
- mode = mode + 'b'
+ if encoding is not None:
+ if 'U' in mode:
+ # No automatic conversion of '\n' is done on reading and writing
+ mode = mode.strip().replace('U', '')
+ if mode[:1] not in set('rwa'):
+ mode = 'r' + mode
+ if 'b' not in mode:
+ # Force opening of the file in binary mode
+ mode = mode + 'b'
file = __builtin__.open(filename, mode, buffering)
if encoding is None:
return file