Fix issue 1300: Quote command line arguments that contain a '|' character in

subprocess.list2cmdline (windows).
This commit is contained in:
Gregory P. Smith 2008-01-19 22:49:37 +00:00
parent 92ffc634e4
commit 70eb2f91b4
2 changed files with 5 additions and 3 deletions

View File

@ -471,8 +471,8 @@ def list2cmdline(seq):
2) A string surrounded by double quotation marks is
interpreted as a single argument, regardless of white space
contained within. A quoted string can be embedded in an
argument.
or pipe characters 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.
@ -498,7 +498,7 @@ def list2cmdline(seq):
if result:
result.append(' ')
needquote = (" " in arg) or ("\t" in arg) or not arg
needquote = (" " in arg) or ("\t" in arg) or ("|" in arg) or not arg
if needquote:
result.append('"')

View File

@ -434,6 +434,8 @@ def test_list2cmdline(self):
'"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):