# HG changeset patch # User Yuya Nishihara # Date 1415419062 -32400 # Node ID d9d8d2e0f701f67ca4f6e880994c2c847eab8f07 # Parent 0fd3862ef42509bf797366e29d28ed0ce54f816d ui: introduce util.system() wrapper to make sure ui.fout is used This change is intended to avoid future problem of data corruption under command server. out=ui.fout is mandatory as long as command server uses stdout as IPC channel. diff -r 0fd3862ef425 -r d9d8d2e0f701 mercurial/ui.py --- a/mercurial/ui.py Wed Nov 12 22:21:51 2014 +0900 +++ b/mercurial/ui.py Sat Nov 08 12:57:42 2014 +0900 @@ -814,10 +814,9 @@ editor = self.geteditor() - util.system("%s \"%s\"" % (editor, name), + self.system("%s \"%s\"" % (editor, name), environ=environ, - onerr=util.Abort, errprefix=_("edit failed"), - out=self.fout) + onerr=util.Abort, errprefix=_("edit failed")) f = open(name) t = f.read() @@ -827,6 +826,13 @@ return t + def system(self, cmd, environ={}, cwd=None, onerr=None, errprefix=None): + '''execute shell command with appropriate output stream. command + output will be redirected if fout is not stdout. + ''' + return util.system(cmd, environ=environ, cwd=cwd, onerr=onerr, + errprefix=errprefix, out=self.fout) + def traceback(self, exc=None, force=False): '''print exception traceback if traceback printing enabled or forced. only to call in exception handler. returns true if traceback