Mercurial > hg
changeset 31778:ac69675fff1c
ui: use bytes IO and convert EOL manually in ui.editor()
Text IO sucks on Python 3 as it must be a unicode stream. We could introduce
a wrapper that converts unicode back to bytes, but it wouldn't be simple to
handle offsets transparently from/to underlying IOBase API.
Fortunately, we don't need to process huge text files, so let's stick to
bytes IO and convert EOL in memory.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Wed, 29 Mar 2017 21:43:38 +0900 |
parents | 6a5b69b0abec |
children | fd687ec5a643 |
files | mercurial/ui.py |
diffstat | 1 files changed, 5 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/ui.py Wed Mar 29 21:40:15 2017 +0900 +++ b/mercurial/ui.py Wed Mar 29 21:43:38 2017 +0900 @@ -1232,11 +1232,11 @@ if self.configbool('experimental', 'editortmpinhg'): rdir = repopath (fd, name) = tempfile.mkstemp(prefix='hg-' + extra['prefix'] + '-', - suffix=extra['suffix'], text=True, + suffix=extra['suffix'], dir=rdir) try: - f = os.fdopen(fd, pycompat.sysstr("w")) - f.write(encoding.strfromlocal(text)) + f = os.fdopen(fd, r'wb') + f.write(util.tonativeeol(text)) f.close() environ = {'HGUSER': user} @@ -1258,8 +1258,8 @@ onerr=error.Abort, errprefix=_("edit failed"), blockedtag='editor') - f = open(name) - t = encoding.strtolocal(f.read()) + f = open(name, r'rb') + t = util.fromnativeeol(f.read()) f.close() finally: os.unlink(name)