# HG changeset patch # User Yuya Nishihara # Date 1443851844 -32400 # Node ID 1138e1d052071eb3775469aeaf5aa4e7a545fbe8 # Parent 89b7a7883aeed1bb7f0a595052e0022e61811934 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 -r 89b7a7883aee -r 1138e1d05207 mercurial/util.py --- a/mercurial/util.py Fri Oct 02 23:04:52 2015 -0700 +++ b/mercurial/util.py Sat Oct 03 14:57:24 2015 +0900 @@ -730,6 +730,10 @@ 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 @@ 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: