[Python-checkins] cpython: Issue #20152: Port the spwd module to Argument Clinic.

brett.cannon python-checkins at python.org
Fri Aug 22 19:59:31 CEST 2014


http://hg.python.org/cpython/rev/b3aa30f474c4
changeset:   92190:b3aa30f474c4
user:        Brett Cannon <brett at python.org>
date:        Fri Aug 22 13:59:24 2014 -0400
summary:
  Issue #20152: Port the spwd module to Argument Clinic.

files:
  Modules/clinic/spwdmodule.c.h |  70 +++++++++++++++++++++++
  Modules/spwdmodule.c          |  47 +++++++++-----
  2 files changed, 100 insertions(+), 17 deletions(-)


diff --git a/Modules/clinic/spwdmodule.c.h b/Modules/clinic/spwdmodule.c.h
new file mode 100644
--- /dev/null
+++ b/Modules/clinic/spwdmodule.c.h
@@ -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]*/
diff --git a/Modules/spwdmodule.c b/Modules/spwdmodule.c
--- a/Modules/spwdmodule.c
+++ b/Modules/spwdmodule.c
@@ -10,6 +10,11 @@
 #include <shadow.h>
 #endif
 
+/*[clinic input]
+output preset file
+module spwd
+[clinic start generated code]*/
+/*[clinic end generated code: output=da39a3ee5e6b4b0d input=b3464a3667278fae]*/
 
 PyDoc_STRVAR(spwd__doc__,
 "This module provides access to the Unix shadow password database.\n\
@@ -107,20 +112,25 @@
 
 #ifdef HAVE_GETSPNAM
 
-PyDoc_STRVAR(spwd_getspnam__doc__,
-"getspnam(name) -> (sp_namp, sp_pwdp, sp_lstchg, sp_min, sp_max,\n\
-                    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.");
+/*[clinic input]
+spwd.getspnam
 
-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;
     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)
         return NULL;
     if (PyBytes_AsStringAndSize(bytes, &name, NULL) == -1)
@@ -139,14 +149,17 @@
 
 #ifdef HAVE_GETSPENT
 
-PyDoc_STRVAR(spwd_getspall__doc__,
-"getspall() -> list_of_entries\n\
-Return a list of all available shadow password database entries, \
-in arbitrary order.\n\
-See spwd.__doc__ for more on shadow password database entries.");
+/*[clinic input]
+spwd.getspall
+
+Return a list of all available shadow password database entries, in arbitrary order.
+
+See `help(spwd)` for more on shadow password database entries.
+[clinic start generated code]*/
 
 static PyObject *
-spwd_getspall(PyObject *self, PyObject *args)
+spwd_getspall_impl(PyModuleDef *module)
+/*[clinic end generated code: output=b12d8ec7bdb29612 input=b2c84b7857d622bd]*/
 {
     PyObject *d;
     struct spwd *p;
@@ -171,10 +184,10 @@
 
 static PyMethodDef spwd_methods[] = {
 #ifdef HAVE_GETSPNAM
-    {"getspnam",        spwd_getspnam, METH_VARARGS, spwd_getspnam__doc__},
+    SPWD_GETSPNAM_METHODDEF
 #endif
 #ifdef HAVE_GETSPENT
-    {"getspall",        spwd_getspall, METH_NOARGS, spwd_getspall__doc__},
+    SPWD_GETSPALL_METHODDEF
 #endif
     {NULL,              NULL}           /* sentinel */
 };

-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list