--- /dev/null
+Fix possible mojibake in the error message of `pwd.getpwnam` and
+`grp.getgrnam`. Patch by William Grzybowski.
{"getpwuid", (PyCFunction)pwd_getpwuid, METH_O, pwd_getpwuid__doc__},
PyDoc_STRVAR(pwd_getpwnam__doc__,
-"getpwnam($module, arg, /)\n"
+"getpwnam($module, name, /)\n"
"--\n"
"\n"
"Return the password database entry for the given user name.\n"
{"getpwnam", (PyCFunction)pwd_getpwnam, METH_O, pwd_getpwnam__doc__},
static PyObject *
-pwd_getpwnam_impl(PyObject *module, PyObject *arg);
+pwd_getpwnam_impl(PyObject *module, PyObject *name);
static PyObject *
-pwd_getpwnam(PyObject *module, PyObject *arg_)
+pwd_getpwnam(PyObject *module, PyObject *arg)
{
PyObject *return_value = NULL;
- PyObject *arg;
+ PyObject *name;
- if (!PyArg_Parse(arg_, "U:getpwnam", &arg)) {
+ if (!PyArg_Parse(arg, "U:getpwnam", &name)) {
goto exit;
}
- return_value = pwd_getpwnam_impl(module, arg);
+ return_value = pwd_getpwnam_impl(module, name);
exit:
return return_value;
#ifndef PWD_GETPWALL_METHODDEF
#define PWD_GETPWALL_METHODDEF
#endif /* !defined(PWD_GETPWALL_METHODDEF) */
-/*[clinic end generated code: output=fc41d8d88ec206d8 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=3c93120d6dd86905 input=a9049054013a1b77]*/
PyErr_NoMemory();
}
else {
- PyErr_Format(PyExc_KeyError, "getgrnam(): name not found: %s", name_chars);
+ PyErr_Format(PyExc_KeyError, "getgrnam(): name not found: %S", name);
}
goto out;
}
/*[clinic input]
pwd.getpwnam
- arg: unicode
+ name: unicode
/
Return the password database entry for the given user name.
[clinic start generated code]*/
static PyObject *
-pwd_getpwnam_impl(PyObject *module, PyObject *arg)
-/*[clinic end generated code: output=6abeee92430e43d2 input=d5f7e700919b02d3]*/
+pwd_getpwnam_impl(PyObject *module, PyObject *name)
+/*[clinic end generated code: output=359ce1ddeb7a824f input=a6aeb5e3447fb9e0]*/
{
- char *buf = NULL, *buf2 = NULL, *name;
+ char *buf = NULL, *buf2 = NULL, *name_chars;
int nomem = 0;
struct passwd *p;
PyObject *bytes, *retval = NULL;
- if ((bytes = PyUnicode_EncodeFSDefault(arg)) == NULL)
+ if ((bytes = PyUnicode_EncodeFSDefault(name)) == NULL)
return NULL;
/* check for embedded null bytes */
- if (PyBytes_AsStringAndSize(bytes, &name, NULL) == -1)
+ if (PyBytes_AsStringAndSize(bytes, &name_chars, NULL) == -1)
goto out;
#ifdef HAVE_GETPWNAM_R
Py_BEGIN_ALLOW_THREADS
break;
}
buf = buf2;
- status = getpwnam_r(name, &pwd, buf, bufsize, &p);
+ status = getpwnam_r(name_chars, &pwd, buf, bufsize, &p);
if (status != 0) {
p = NULL;
}
Py_END_ALLOW_THREADS
#else
- p = getpwnam(name);
+ p = getpwnam(name_chars);
#endif
if (p == NULL) {
if (nomem == 1) {
}
else {
PyErr_Format(PyExc_KeyError,
- "getpwnam(): name not found: %s", name);
+ "getpwnam(): name not found: %S", name);
}
goto out;
}