diff -r 0216232f21ab -r 6715e8035b4f mercurial/utils/procutil.py --- a/mercurial/utils/procutil.py Sun Mar 25 11:40:30 2018 +0900 +++ b/mercurial/utils/procutil.py Sun Mar 25 11:58:05 2018 +0900 @@ -9,6 +9,7 @@ from __future__ import absolute_import +import contextlib import imp import io import os @@ -240,6 +241,15 @@ os.dup2(f.fileno(), uif.fileno()) f.close() +@contextlib.contextmanager +def protectedstdio(uin, uout): + """Run code block with protected standard streams""" + fin, fout = protectstdio(uin, uout) + try: + yield fin, fout + finally: + restorestdio(uin, uout, fin, fout) + def shellenviron(environ=None): """return environ with optional override, useful for shelling out""" def py2shell(val):