mirror of
https://github.com/python/cpython.git
synced 2025-10-17 20:28:43 +00:00
(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.
This commit is contained in:
commit
0b81111b18
3 changed files with 14 additions and 10 deletions
|
@ -103,6 +103,10 @@ Core and Builtins
|
||||||
Library
|
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 #18089: Implement importlib.abc.InspectLoader.load_module.
|
||||||
|
|
||||||
- Issue #18088: Introduce importlib.abc.Loader.init_module_attrs for setting
|
- Issue #18088: Introduce importlib.abc.Loader.init_module_attrs for setting
|
||||||
|
@ -416,7 +420,7 @@ IDLE
|
||||||
|
|
||||||
- Issue #15392: Create a unittest framework for IDLE.
|
- Issue #15392: Create a unittest framework for IDLE.
|
||||||
Initial patch by Rajagopalasarma Jayakrishnan.
|
Initial patch by Rajagopalasarma Jayakrishnan.
|
||||||
|
|
||||||
- Issue #14146: Highlight source line while debugging on Windows.
|
- Issue #14146: Highlight source line while debugging on Windows.
|
||||||
|
|
||||||
- Issue #17838: Allow sys.stdin to be reassigned.
|
- Issue #17838: Allow sys.stdin to be reassigned.
|
||||||
|
|
|
@ -4257,7 +4257,7 @@ posix_uname(PyObject *self, PyObject *noargs)
|
||||||
|
|
||||||
#define SET(i, field) \
|
#define SET(i, field) \
|
||||||
{ \
|
{ \
|
||||||
PyObject *o = PyUnicode_DecodeASCII(field, strlen(field), NULL); \
|
PyObject *o = PyUnicode_DecodeFSDefault(field); \
|
||||||
if (!o) { \
|
if (!o) { \
|
||||||
Py_DECREF(value); \
|
Py_DECREF(value); \
|
||||||
return NULL; \
|
return NULL; \
|
||||||
|
|
|
@ -1644,7 +1644,7 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef PF_SYSTEM
|
#ifdef PF_SYSTEM
|
||||||
case PF_SYSTEM:
|
case PF_SYSTEM:
|
||||||
switch (s->sock_proto) {
|
switch (s->sock_proto) {
|
||||||
|
@ -1652,10 +1652,10 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
|
||||||
case SYSPROTO_CONTROL:
|
case SYSPROTO_CONTROL:
|
||||||
{
|
{
|
||||||
struct sockaddr_ctl *addr;
|
struct sockaddr_ctl *addr;
|
||||||
|
|
||||||
addr = (struct sockaddr_ctl *)addr_ret;
|
addr = (struct sockaddr_ctl *)addr_ret;
|
||||||
addr->sc_family = AF_SYSTEM;
|
addr->sc_family = AF_SYSTEM;
|
||||||
addr->ss_sysaddr = AF_SYS_CONTROL;
|
addr->ss_sysaddr = AF_SYS_CONTROL;
|
||||||
|
|
||||||
if (PyUnicode_Check(args)) {
|
if (PyUnicode_Check(args)) {
|
||||||
struct ctl_info info;
|
struct ctl_info info;
|
||||||
|
@ -1681,17 +1681,17 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
|
||||||
"cannot find kernel control with provided name");
|
"cannot find kernel control with provided name");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
addr->sc_id = info.ctl_id;
|
addr->sc_id = info.ctl_id;
|
||||||
addr->sc_unit = 0;
|
addr->sc_unit = 0;
|
||||||
} else if (!PyArg_ParseTuple(args, "II",
|
} else if (!PyArg_ParseTuple(args, "II",
|
||||||
&(addr->sc_id), &(addr->sc_unit))) {
|
&(addr->sc_id), &(addr->sc_unit))) {
|
||||||
PyErr_SetString(PyExc_TypeError, "getsockaddrarg: "
|
PyErr_SetString(PyExc_TypeError, "getsockaddrarg: "
|
||||||
"expected str or tuple of two ints");
|
"expected str or tuple of two ints");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
*len_ret = sizeof(*addr);
|
*len_ret = sizeof(*addr);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -1808,7 +1808,7 @@ getsockaddrlen(PySocketSockObject *s, socklen_t *len_ret)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef PF_SYSTEM
|
#ifdef PF_SYSTEM
|
||||||
case PF_SYSTEM:
|
case PF_SYSTEM:
|
||||||
switch(s->sock_proto) {
|
switch(s->sock_proto) {
|
||||||
|
@ -4048,7 +4048,7 @@ socket_gethostname(PyObject *self, PyObject *unused)
|
||||||
if (res < 0)
|
if (res < 0)
|
||||||
return set_error();
|
return set_error();
|
||||||
buf[sizeof buf - 1] = '\0';
|
buf[sizeof buf - 1] = '\0';
|
||||||
return PyUnicode_FromString(buf);
|
return PyUnicode_DecodeFSDefault(buf);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue