From: Jean-Paul Calderone Date: Fri, 18 Jun 2010 20:03:54 +0000 (+0000) Subject: Merged revisions 82075 via svnmerge from X-Git-Tag: v3.2a1~497 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1ddd4075bf65abb6b0b768774babdd6cc2a88ca1;p=python Merged revisions 82075 via svnmerge from svn+ssh://pythondev@svn.python.org/python/trunk ........ r82075 | jean-paul.calderone | 2010-06-18 16:00:17 -0400 (Fri, 18 Jun 2010) | 12 lines Revert r60115 This revision introduced quoting for strings containing | based on a misunderstanding of the commonly used quoting rules used on Windows. | is interpreted by cmd.exe, not by the MS C runtime argv initializer. It only needs to be quoted if it is part of an argument passed through cmd.exe. See issue1300, issue7839, and issue8972. ........ --- diff --git a/Lib/subprocess.py b/Lib/subprocess.py index ad6fd1f7a5..c2621ea6a7 100644 --- a/Lib/subprocess.py +++ b/Lib/subprocess.py @@ -500,8 +500,8 @@ def list2cmdline(seq): 2) A string surrounded by double quotation marks is interpreted as a single argument, regardless of white space - or pipe characters contained within. A quoted string can be - embedded in an argument. + contained within. A quoted string can be embedded in an + argument. 3) A double quotation mark preceded by a backslash is interpreted as a literal double quotation mark. @@ -529,7 +529,7 @@ def list2cmdline(seq): if result: result.append(' ') - needquote = (" " in arg) or ("\t" in arg) or ("|" in arg) or not arg + needquote = (" " in arg) or ("\t" in arg) or not arg if needquote: result.append('"') diff --git a/Lib/test/test_subprocess.py b/Lib/test/test_subprocess.py index 0dd5da4399..84694496cd 100644 --- a/Lib/test/test_subprocess.py +++ b/Lib/test/test_subprocess.py @@ -478,8 +478,6 @@ class ProcessTestCase(BaseTestCase): '"a\\\\b\\ c" d e') self.assertEqual(subprocess.list2cmdline(['ab', '']), 'ab ""') - self.assertEqual(subprocess.list2cmdline(['echo', 'foo|bar']), - 'echo "foo|bar"') def test_poll(self):