changeset 30509:fc0cfe6c87d7

py3: add os.getcwdb() to have bytes path Following the behaviour of Python 3, os.getcwd() return unicodes. We need bytes version as path variables are bytes in UNIX. Python 3 has os.getcwdb() which returns current working directory in bytes. Like rest of the things there in pycompat, like osname, ossep, we need to rewrite every instance of os.getcwd to pycompat.getcwd to make them work correctly on Python 3.
author Pulkit Goyal <7895pulkit@gmail.com>
date Tue, 22 Nov 2016 18:46:50 +0530
parents 22d05b53b0e8
children a87e469201f9
files mercurial/dispatch.py mercurial/pycompat.py
diffstat 2 files changed, 5 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/dispatch.py	Tue Nov 22 18:13:02 2016 -0800
+++ b/mercurial/dispatch.py	Tue Nov 22 18:46:50 2016 +0530
@@ -667,7 +667,7 @@
     """
     if wd is None:
         try:
-            wd = os.getcwd()
+            wd = pycompat.getcwd()
         except OSError as e:
             raise error.Abort(_("error getting current working directory: %s") %
                               e.strerror)
--- a/mercurial/pycompat.py	Tue Nov 22 18:13:02 2016 -0800
+++ b/mercurial/pycompat.py	Tue Nov 22 18:46:50 2016 +0530
@@ -43,6 +43,9 @@
     osname = os.name.encode('ascii')
     ospathsep = os.pathsep.encode('ascii')
     ossep = os.sep.encode('ascii')
+    # os.getcwd() on Python 3 returns string, but it has os.getcwdb() which
+    # returns bytes.
+    getcwd = os.getcwdb
 
     # TODO: .buffer might not exist if std streams were replaced; we'll need
     # a silly wrapper to make a bytes stream backed by a unicode one.
@@ -110,6 +113,7 @@
     stdout = sys.stdout
     stderr = sys.stderr
     sysargv = sys.argv
+    getcwd = os.getcwd
 
 stringio = io.StringIO
 empty = _queue.Empty