[PATCH 3 of 4 py3] config: open config files as binary explicitly all the time

Yuya Nishihara yuya at tcha.org
Thu Nov 10 08:25:16 EST 2016


On Wed, 9 Nov 2016 11:29:26 -0500, Augie Fackler wrote:
> > On Nov 9, 2016, at 11:23, Augie Fackler <raf at durin42.com> wrote:
> > # HG changeset patch
> > # User Augie Fackler <augie at google.com>
> > # Date 1476019794 14400
> > #      Sun Oct 09 09:29:54 2016 -0400
> > # Node ID 5f29fffcc722d8993fda4155884c1aae4469d2f3
> > # Parent  576e4c82886c7e5cf59f7b95b38e0f3c29932581
> > config: open config files as binary explicitly all the time
> > 
> > We had been getting lucky that on posix-like systems the default for
> > files in Python 2 is binary IO, but now we're explicitly using binary
> > IO all the time.
> > 
> > diff --git a/mercurial/config.py b/mercurial/config.py
> > --- a/mercurial/config.py
> > +++ b/mercurial/config.py
> > @@ -169,5 +169,5 @@ class config(object):
> > 
> >     def read(self, path, fp=None, sections=None, remap=None):
> >         if not fp:
> > -            fp = util.posixfile(path)
> > +            fp = util.posixfile(path, r'rb')
> 
> I just realized I missed some feedback on this: this mode should be b'' rather than r'' since this is a util.posixfile, right?

Yes. And we can wrap posix.posixfile() to add 'b' automatically. Windows'
posixfile() is our code, which won't become a text IO on Python 3.

Furthermore, we could force pycompat.open() to open files in binary mode,
but I'm not sure if we have no open() calls which expect CR+LF translation.


More information about the Mercurial-devel mailing list