util: concentrate quoting knowledge to windows.py quotecommand()

This fixes all callers of util.quotecommand() and place special knowledge
of the bugfix in 2.7.1 in a single platform specific place.
This commit is contained in:
Steve Borho 2010-12-22 13:25:00 -06:00
parent 64de41cf08
commit 8562094eb1
2 changed files with 5 additions and 6 deletions

View File

@ -391,9 +391,7 @@ def system(cmd, environ={}, cwd=None, onerr=None, errprefix=None, out=None):
return '1'
return str(val)
origcmd = cmd
if os.name == 'nt' and sys.version_info < (2, 7, 1):
# Python versions since 2.7.1 do this extra quoting themselves
cmd = '"%s"' % cmd
cmd = quotecommand(cmd)
env = dict(os.environ)
env.update((k, py2shell(v)) for k, v in environ.iteritems())
env['HG'] = hgexecutable()

View File

@ -160,9 +160,10 @@ def shellquote(s):
def quotecommand(cmd):
"""Build a command string suitable for os.popen* calls."""
# The extra quotes are needed because popen* runs the command
# through the current COMSPEC. cmd.exe suppress enclosing quotes.
return '"' + cmd + '"'
if sys.version_info < (2, 7, 1):
# Python versions since 2.7.1 do this extra quoting themselves
return '"' + cmd + '"'
return cmd
def popen(command, mode='r'):
# Work around "popen spawned process may not write to stdout