[PATCH 1 of 5] util.system: compare fileno to see if it needs stdout redirection
Yuya Nishihara
yuya at tcha.org
Sun Oct 4 06:08:02 UTC 2015
# HG changeset patch
# User Yuya Nishihara <yuya at tcha.org>
# Date 1443851844 -32400
# Sat Oct 03 14:57:24 2015 +0900
# Node ID 6567c8f93c6258de7101a4ebebfaf6239aa11d7c
# Parent d8e831ff6afa2b68d6f76617a66e2aadee010986
util.system: compare fileno to see if it needs stdout redirection
Future patches will reopen stdout to be line-buffered, so sys.stdout may
be different object than sys.__stdout__.
diff --git a/mercurial/util.py b/mercurial/util.py
--- a/mercurial/util.py
+++ b/mercurial/util.py
@@ -730,6 +730,10 @@ def _sethgexecutable(path):
global _hgexecutable
_hgexecutable = path
+def _isstdout(f):
+ fileno = getattr(f, 'fileno', None)
+ return fileno and fileno() == sys.__stdout__.fileno()
+
def system(cmd, environ=None, cwd=None, onerr=None, errprefix=None, out=None):
'''enhanced shell command execution.
run with environment maybe modified, maybe in different dir.
@@ -765,7 +769,7 @@ def system(cmd, environ=None, cwd=None,
env = dict(os.environ)
env.update((k, py2shell(v)) for k, v in environ.iteritems())
env['HG'] = hgexecutable()
- if out is None or out == sys.__stdout__:
+ if out is None or _isstdout(out):
rc = subprocess.call(cmd, shell=True, close_fds=closefds,
env=env, cwd=cwd)
else:
More information about the Mercurial-devel
mailing list