]> granicus.if.org Git - python/commitdiff
Merged revisions 80105 via svnmerge from
authorVictor Stinner <victor.stinner@haypocalc.com>
Fri, 16 Apr 2010 12:47:52 +0000 (12:47 +0000)
committerVictor Stinner <victor.stinner@haypocalc.com>
Fri, 16 Apr 2010 12:47:52 +0000 (12:47 +0000)
svn+ssh://pythondev@svn.python.org/python/branches/py3k

........
  r80105 | victor.stinner | 2010-04-16 13:45:13 +0200 (ven., 16 avril 2010) | 3 lines

  Issue #8412: os.system() now accepts bytes, bytearray and str with
  surrogates.
........

Misc/NEWS
Modules/posixmodule.c

index 536ea43ed5a331f8a6937515156c2dd1a414dc79..1a6d17ade1ebe7d9238cafca7520dcef13497adf 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -184,6 +184,9 @@ Core and Builtins
 Library
 -------
 
+- Issue #8412: os.system() now accepts bytes, bytearray and str with
+  surrogates.
+
 - Issue #4282: Fix the main function of the profile module for a non-ASCII
   script, open the file in binary mode and not in text mode with the default
   (utf8) encoding.
index 502bf62a27de22a148b0801e64969a3fda5ef524..bba75aff486f99c39782721d816147b7c0533a93 100644 (file)
@@ -2814,18 +2814,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