diff options
author | Mark Hammond <mhammond@skippinet.com.au> | 2002-04-03 01:47:00 (GMT) |
---|---|---|
committer | Mark Hammond <mhammond@skippinet.com.au> | 2002-04-03 01:47:00 (GMT) |
commit | e7fefbf68dc3384b835d38bd8897657d7289f826 (patch) | |
tree | f147bacdfadf2f42b756d3962515b13225f3d27a /Modules | |
parent | b0aaec5706237c1086afbbbb9327be59509a6d83 (diff) | |
download | cpython-e7fefbf68dc3384b835d38bd8897657d7289f826.zip cpython-e7fefbf68dc3384b835d38bd8897657d7289f826.tar.gz cpython-e7fefbf68dc3384b835d38bd8897657d7289f826.tar.bz2 |
Fix bugs:
457466: popenx() argument mangling hangs python
226766: popen('python -c"...."') tends to hang
Fixes argument quoting in w9xpopen.exe for Windows 9x. w9xpopen.exe
also never attempts to display a MessageBox when not executed
interactively.
Added test_popen() test. This test currently just executes
"python -c ..." as a child process, and checks that the expected
arguments were all recieved correctly by the child process. This
test succeeds for me on Win9x, win2k and Linux, and I hope it does
for other popen supported platforms too :)
Diffstat (limited to 'Modules')
-rw-r--r-- | Modules/posixmodule.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index 46e145f..5b80479 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -3285,9 +3285,15 @@ _PyPopenCreateProcess(char *cmdstring, s2 = (char *)_alloca(x); ZeroMemory(s2, x); + /* To maintain correct argument passing semantics, + we pass the command-line as it stands, and allow + quoting to be applied. w9xpopen.exe will then + use its argv vector, and re-quote the necessary + args for the ultimate child process. + */ PyOS_snprintf( s2, x, - "%s \"%s%s%s\"", + "\"%s\" %s%s%s", modulepath, s1, s3, |