On Fri, Nov 4, 2016 at 9:07 AM, Yuya Nishihara <y...@tcha.org> wrote:
> On Thu, 03 Nov 2016 03:53:07 +0530, Pulkit Goyal wrote:
>> # HG changeset patch
>> # User Pulkit Goyal <7895pul...@gmail.com>
>> # Date 1478118344 -19800
>> #      Thu Nov 03 01:55:44 2016 +0530
>> # Node ID 6585e9c1d915818d5138f6cb4134707002d5d749
>> # Parent  e541b0e5839988f63446c88509db68772a55775b
>> py3: make sure osutil.listdir() returns what it gets
>>
>> osutil.listdir() on py3 was having problems with bytes. Since
>> os.sep is a str in Py3, we need to check if what passed is bytes and then
>> convert os.sep to bytes. On python 2, doing os.sep.encode() is okay.
>> After this patch, osutil.listdir() argument will return what is gets as an
>> argument on Python 3.5.
>>
>> diff -r e541b0e58399 -r 6585e9c1d915 mercurial/pure/osutil.py
>> --- a/mercurial/pure/osutil.py        Thu Nov 03 00:28:33 2016 +0530
>> +++ b/mercurial/pure/osutil.py        Thu Nov 03 01:55:44 2016 +0530
>> @@ -51,8 +51,11 @@
>>      '''
>>      result = []
>>      prefix = path
>> -    if not prefix.endswith(os.sep):
>> -        prefix += os.sep
>> +    sep = os.sep
>> +    if isinstance(path, bytes):
>> +        sep = sep.encode('ascii')
>> +    if not prefix.endswith(sep):
>> +        prefix += sep
>
> Suppose path must be bytes because osutil.listdir() is a Mercurial API, we
> can always use bytes variant of os.sep everywhere, which could be provided
> by pycompat.

osutil.listdir() is called from windows.py, scmwindows.py,
win32mbcs.py also and I am unsure about things being bytes there,
thats why I kept the function general. Other functions like scmposix.*
are meant for posix only. Will paths on windows will be bytes also?
_______________________________________________
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel

Reply via email to