Issue #20152: Port the spwd module to Argument Clinic.

This commit is contained in:
Brett Cannon 2014-08-22 13:59:24 -04:00
parent 04bb443eb6
commit 20cf6ddfa2
2 changed files with 100 additions and 17 deletions

View File

@ -0,0 +1,70 @@
/*[clinic input]
preserve
[clinic start generated code]*/
#if defined(HAVE_GETSPNAM)
PyDoc_STRVAR(spwd_getspnam__doc__,
"getspnam($module, arg, /)\n"
"--\n"
"\n"
"Return the shadow password database entry for the given user name.\n"
"\n"
"See `help(spwd)` for more on shadow password database entries.");
#define SPWD_GETSPNAM_METHODDEF \
{"getspnam", (PyCFunction)spwd_getspnam, METH_VARARGS, spwd_getspnam__doc__},
static PyObject *
spwd_getspnam_impl(PyModuleDef *module, PyObject *arg);
static PyObject *
spwd_getspnam(PyModuleDef *module, PyObject *args)
{
PyObject *return_value = NULL;
PyObject *arg;
if (!PyArg_ParseTuple(args,
"U:getspnam",
&arg))
goto exit;
return_value = spwd_getspnam_impl(module, arg);
exit:
return return_value;
}
#endif /* defined(HAVE_GETSPNAM) */
#ifndef SPWD_GETSPNAM_METHODDEF
#define SPWD_GETSPNAM_METHODDEF
#endif /* !defined(SPWD_GETSPNAM_METHODDEF) */
#if defined(HAVE_GETSPENT)
PyDoc_STRVAR(spwd_getspall__doc__,
"getspall($module, /)\n"
"--\n"
"\n"
"Return a list of all available shadow password database entries, in arbitrary order.\n"
"\n"
"See `help(spwd)` for more on shadow password database entries.");
#define SPWD_GETSPALL_METHODDEF \
{"getspall", (PyCFunction)spwd_getspall, METH_NOARGS, spwd_getspall__doc__},
static PyObject *
spwd_getspall_impl(PyModuleDef *module);
static PyObject *
spwd_getspall(PyModuleDef *module, PyObject *Py_UNUSED(ignored))
{
return spwd_getspall_impl(module);
}
#endif /* defined(HAVE_GETSPENT) */
#ifndef SPWD_GETSPALL_METHODDEF
#define SPWD_GETSPALL_METHODDEF
#endif /* !defined(SPWD_GETSPALL_METHODDEF) */
/*[clinic end generated code: output=41fec4a15b0cd2a0 input=a9049054013a1b77]*/

View File

@ -10,6 +10,11 @@
#include <shadow.h> #include <shadow.h>
#endif #endif
/*[clinic input]
output preset file
module spwd
[clinic start generated code]*/
/*[clinic end generated code: output=da39a3ee5e6b4b0d input=b3464a3667278fae]*/
PyDoc_STRVAR(spwd__doc__, PyDoc_STRVAR(spwd__doc__,
"This module provides access to the Unix shadow password database.\n\ "This module provides access to the Unix shadow password database.\n\
@ -107,20 +112,25 @@ static PyObject *mkspent(struct spwd *p)
#ifdef HAVE_GETSPNAM #ifdef HAVE_GETSPNAM
PyDoc_STRVAR(spwd_getspnam__doc__, /*[clinic input]
"getspnam(name) -> (sp_namp, sp_pwdp, sp_lstchg, sp_min, sp_max,\n\ spwd.getspnam
sp_warn, sp_inact, sp_expire, sp_flag)\n\
Return the shadow password database entry for the given user name.\n\
See spwd.__doc__ for more on shadow password database entries.");
static PyObject* spwd_getspnam(PyObject *self, PyObject *args) arg: unicode
/
Return the shadow password database entry for the given user name.
See `help(spwd)` for more on shadow password database entries.
[clinic start generated code]*/
static PyObject *
spwd_getspnam_impl(PyModuleDef *module, PyObject *arg)
/*[clinic end generated code: output=9f6bbe51a4eb3b21 input=dd89429e6167a00f]*/
{ {
char *name; char *name;
struct spwd *p; struct spwd *p;
PyObject *arg, *bytes, *retval = NULL; PyObject *bytes, *retval = NULL;
if (!PyArg_ParseTuple(args, "U:getspnam", &arg))
return NULL;
if ((bytes = PyUnicode_EncodeFSDefault(arg)) == NULL) if ((bytes = PyUnicode_EncodeFSDefault(arg)) == NULL)
return NULL; return NULL;
if (PyBytes_AsStringAndSize(bytes, &name, NULL) == -1) if (PyBytes_AsStringAndSize(bytes, &name, NULL) == -1)
@ -139,14 +149,17 @@ out:
#ifdef HAVE_GETSPENT #ifdef HAVE_GETSPENT
PyDoc_STRVAR(spwd_getspall__doc__, /*[clinic input]
"getspall() -> list_of_entries\n\ spwd.getspall
Return a list of all available shadow password database entries, \
in arbitrary order.\n\ Return a list of all available shadow password database entries, in arbitrary order.
See spwd.__doc__ for more on shadow password database entries.");
See `help(spwd)` for more on shadow password database entries.
[clinic start generated code]*/
static PyObject * static PyObject *
spwd_getspall(PyObject *self, PyObject *args) spwd_getspall_impl(PyModuleDef *module)
/*[clinic end generated code: output=b12d8ec7bdb29612 input=b2c84b7857d622bd]*/
{ {
PyObject *d; PyObject *d;
struct spwd *p; struct spwd *p;
@ -171,10 +184,10 @@ spwd_getspall(PyObject *self, PyObject *args)
static PyMethodDef spwd_methods[] = { static PyMethodDef spwd_methods[] = {
#ifdef HAVE_GETSPNAM #ifdef HAVE_GETSPNAM
{"getspnam", spwd_getspnam, METH_VARARGS, spwd_getspnam__doc__}, SPWD_GETSPNAM_METHODDEF
#endif #endif
#ifdef HAVE_GETSPENT #ifdef HAVE_GETSPENT
{"getspall", spwd_getspall, METH_NOARGS, spwd_getspall__doc__}, SPWD_GETSPALL_METHODDEF
#endif #endif
{NULL, NULL} /* sentinel */ {NULL, NULL} /* sentinel */
}; };