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.
--- a/mercurial/util.py Mon Dec 20 15:26:36 2010 -0600
+++ b/mercurial/util.py Wed Dec 22 13:25:00 2010 -0600
@@ -391,9 +391,7 @@
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()
--- a/mercurial/windows.py Mon Dec 20 15:26:36 2010 -0600
+++ b/mercurial/windows.py Wed Dec 22 13:25:00 2010 -0600
@@ -160,9 +160,10 @@
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