summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Misc/NEWS3
-rw-r--r--Modules/posixmodule.c17
2 files changed, 14 insertions, 6 deletions
diff --git a/Misc/NEWS b/Misc/NEWS
index 7465609..18d7ca9 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 e6ef410..fb22eb6 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