mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 03:44:55 +00:00 
			
		
		
		
	Issue #20152: Port the spwd module to Argument Clinic.
This commit is contained in:
		
							parent
							
								
									04bb443eb6
								
							
						
					
					
						commit
						20cf6ddfa2
					
				
					 2 changed files with 100 additions and 17 deletions
				
			
		
							
								
								
									
										70
									
								
								Modules/clinic/spwdmodule.c.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								Modules/clinic/spwdmodule.c.h
									
										
									
									
									
										Normal 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]*/
 | 
				
			||||||
| 
						 | 
					@ -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 */
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue