New version of the patch:
- factorize code between execve(), spawnve() and spawnvpe()
- support also surrogates in environment variable names
- support bytes and bytearray (bytearray cannot be used as a dictionary key, but my patch supports it)
- remove unrelated fix (my first patch contains a fix for os.system(), also about surrogates)
Because of the factorization, the error messages doesn't contain the function name anymore. spawnve() and spawnvpe() omit BEGINLIBPATH and ENDLIBPATH, as execve(): "that Would Confuse Programs if Passed On". I suppose that if execve() ignore them, spawn*e() should also ignore them.
I don't have an OS/2, so I'm unable to test my patch on this OS :-/
Note: The patch fixes also subprocess to support bytes and bytearray in the environment dictionary. |