From: Victor Stinner Date: Fri, 16 Apr 2010 11:45:13 +0000 (+0000) Subject: Issue #8412: os.system() now accepts bytes, bytearray and str with X-Git-Tag: v3.2a1~1144 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=cfa72789c4c38620f05170694ebc21bb61837155;p=python Issue #8412: os.system() now accepts bytes, bytearray and str with surrogates. --- diff --git a/Misc/NEWS b/Misc/NEWS index 7465609d4a..18d7ca9bb7 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -312,6 +312,9 @@ C-API Library ------- +- Issue #8412: os.system() now accepts bytes, bytearray and str with + surrogates. + - Issue #2987: RFC2732 support for urlparse (IPv6 addresses). Patch by Tony Locke and Hans Ulrich Niedermann. diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index e6ef4107a1..fb22eb6bec 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -2688,18 +2688,23 @@ posix_system(PyObject *self, PyObject *args) wchar_t *command; if (!PyArg_ParseTuple(args, "u:system", &command)) return NULL; + + Py_BEGIN_ALLOW_THREADS + sts = _wsystem(command); + Py_END_ALLOW_THREADS #else + PyObject *command_obj; char *command; - if (!PyArg_ParseTuple(args, "s:system", &command)) + if (!PyArg_ParseTuple(args, "O&:system", + PyUnicode_FSConverter, &command_obj)) return NULL; -#endif + + command = bytes2str(command_obj, 1); Py_BEGIN_ALLOW_THREADS -#ifdef MS_WINDOWS - sts = _wsystem(command); -#else sts = system(command); -#endif Py_END_ALLOW_THREADS + release_bytes(command_obj); +#endif return PyLong_FromLong(sts); } #endif