diff options
author | Victor Stinner <victor.stinner@gmail.com> | 2013-06-03 20:09:14 (GMT) |
---|---|---|
committer | Victor Stinner <victor.stinner@gmail.com> | 2013-06-03 20:09:14 (GMT) |
commit | 0b81111b18790e5d95cb84a09d15aadfb8a1dadf (patch) | |
tree | 221dc022b26c5cf993e825537aabfd7dab36adba | |
parent | 725e4212229bf68f87d4f66c1815d444ddfc7aa5 (diff) | |
parent | a534fc4b3bd4b731be9304be626bc161f53d7bfb (diff) | |
download | cpython-0b81111b18790e5d95cb84a09d15aadfb8a1dadf.zip cpython-0b81111b18790e5d95cb84a09d15aadfb8a1dadf.tar.gz cpython-0b81111b18790e5d95cb84a09d15aadfb8a1dadf.tar.bz2 |
(Merge 3.3) Close #18109: os.uname() now decodes fields from the locale
encoding, and socket.gethostname() now decodes the hostname from the locale
encoding, instead of using the UTF-8 encoding in strict mode.
-rw-r--r-- | Misc/NEWS | 6 | ||||
-rw-r--r-- | Modules/posixmodule.c | 2 | ||||
-rw-r--r-- | Modules/socketmodule.c | 16 |
3 files changed, 14 insertions, 10 deletions
@@ -103,6 +103,10 @@ Core and Builtins Library ------- +- Issue #18109: os.uname() now decodes fields from the locale encoding, and + socket.gethostname() now decodes the hostname from the locale encoding, + instead of using the UTF-8 encoding in strict mode. + - Issue #18089: Implement importlib.abc.InspectLoader.load_module. - Issue #18088: Introduce importlib.abc.Loader.init_module_attrs for setting @@ -416,7 +420,7 @@ IDLE - Issue #15392: Create a unittest framework for IDLE. Initial patch by Rajagopalasarma Jayakrishnan. - + - Issue #14146: Highlight source line while debugging on Windows. - Issue #17838: Allow sys.stdin to be reassigned. diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index 90bbb13..17a9611 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -4257,7 +4257,7 @@ posix_uname(PyObject *self, PyObject *noargs) #define SET(i, field) \ { \ - PyObject *o = PyUnicode_DecodeASCII(field, strlen(field), NULL); \ + PyObject *o = PyUnicode_DecodeFSDefault(field); \ if (!o) { \ Py_DECREF(value); \ return NULL; \ diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c index 846d659..efbde3a 100644 --- a/Modules/socketmodule.c +++ b/Modules/socketmodule.c @@ -1644,7 +1644,7 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args, return 0; } #endif - + #ifdef PF_SYSTEM case PF_SYSTEM: switch (s->sock_proto) { @@ -1652,10 +1652,10 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args, case SYSPROTO_CONTROL: { struct sockaddr_ctl *addr; - + addr = (struct sockaddr_ctl *)addr_ret; addr->sc_family = AF_SYSTEM; - addr->ss_sysaddr = AF_SYS_CONTROL; + addr->ss_sysaddr = AF_SYS_CONTROL; if (PyUnicode_Check(args)) { struct ctl_info info; @@ -1681,17 +1681,17 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args, "cannot find kernel control with provided name"); return 0; } - + addr->sc_id = info.ctl_id; addr->sc_unit = 0; } else if (!PyArg_ParseTuple(args, "II", &(addr->sc_id), &(addr->sc_unit))) { PyErr_SetString(PyExc_TypeError, "getsockaddrarg: " "expected str or tuple of two ints"); - + return 0; } - + *len_ret = sizeof(*addr); return 1; } @@ -1808,7 +1808,7 @@ getsockaddrlen(PySocketSockObject *s, socklen_t *len_ret) return 1; } #endif - + #ifdef PF_SYSTEM case PF_SYSTEM: switch(s->sock_proto) { @@ -4048,7 +4048,7 @@ socket_gethostname(PyObject *self, PyObject *unused) if (res < 0) return set_error(); buf[sizeof buf - 1] = '\0'; - return PyUnicode_FromString(buf); + return PyUnicode_DecodeFSDefault(buf); #endif } |