Branch data Line data Source code
1 : : /*[clinic input]
2 : : preserve
3 : : [clinic start generated code]*/
4 : :
5 : : #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
6 : : # include "pycore_gc.h" // PyGC_Head
7 : : # include "pycore_runtime.h" // _Py_ID()
8 : : #endif
9 : :
10 : :
11 : : PyDoc_STRVAR(grp_getgrgid__doc__,
12 : : "getgrgid($module, /, id)\n"
13 : : "--\n"
14 : : "\n"
15 : : "Return the group database entry for the given numeric group ID.\n"
16 : : "\n"
17 : : "If id is not valid, raise KeyError.");
18 : :
19 : : #define GRP_GETGRGID_METHODDEF \
20 : : {"getgrgid", _PyCFunction_CAST(grp_getgrgid), METH_FASTCALL|METH_KEYWORDS, grp_getgrgid__doc__},
21 : :
22 : : static PyObject *
23 : : grp_getgrgid_impl(PyObject *module, PyObject *id);
24 : :
25 : : static PyObject *
26 : 0 : grp_getgrgid(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
27 : : {
28 : 0 : PyObject *return_value = NULL;
29 : : #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
30 : :
31 : : #define NUM_KEYWORDS 1
32 : : static struct {
33 : : PyGC_Head _this_is_not_used;
34 : : PyObject_VAR_HEAD
35 : : PyObject *ob_item[NUM_KEYWORDS];
36 : : } _kwtuple = {
37 : : .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
38 : : .ob_item = { &_Py_ID(id), },
39 : : };
40 : : #undef NUM_KEYWORDS
41 : : #define KWTUPLE (&_kwtuple.ob_base.ob_base)
42 : :
43 : : #else // !Py_BUILD_CORE
44 : : # define KWTUPLE NULL
45 : : #endif // !Py_BUILD_CORE
46 : :
47 : : static const char * const _keywords[] = {"id", NULL};
48 : : static _PyArg_Parser _parser = {
49 : : .keywords = _keywords,
50 : : .fname = "getgrgid",
51 : : .kwtuple = KWTUPLE,
52 : : };
53 : : #undef KWTUPLE
54 : : PyObject *argsbuf[1];
55 : : PyObject *id;
56 : :
57 [ # # # # : 0 : args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf);
# # # # ]
58 [ # # ]: 0 : if (!args) {
59 : 0 : goto exit;
60 : : }
61 : 0 : id = args[0];
62 : 0 : return_value = grp_getgrgid_impl(module, id);
63 : :
64 : 0 : exit:
65 : 0 : return return_value;
66 : : }
67 : :
68 : : PyDoc_STRVAR(grp_getgrnam__doc__,
69 : : "getgrnam($module, /, name)\n"
70 : : "--\n"
71 : : "\n"
72 : : "Return the group database entry for the given group name.\n"
73 : : "\n"
74 : : "If name is not valid, raise KeyError.");
75 : :
76 : : #define GRP_GETGRNAM_METHODDEF \
77 : : {"getgrnam", _PyCFunction_CAST(grp_getgrnam), METH_FASTCALL|METH_KEYWORDS, grp_getgrnam__doc__},
78 : :
79 : : static PyObject *
80 : : grp_getgrnam_impl(PyObject *module, PyObject *name);
81 : :
82 : : static PyObject *
83 : 0 : grp_getgrnam(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
84 : : {
85 : 0 : PyObject *return_value = NULL;
86 : : #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
87 : :
88 : : #define NUM_KEYWORDS 1
89 : : static struct {
90 : : PyGC_Head _this_is_not_used;
91 : : PyObject_VAR_HEAD
92 : : PyObject *ob_item[NUM_KEYWORDS];
93 : : } _kwtuple = {
94 : : .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
95 : : .ob_item = { &_Py_ID(name), },
96 : : };
97 : : #undef NUM_KEYWORDS
98 : : #define KWTUPLE (&_kwtuple.ob_base.ob_base)
99 : :
100 : : #else // !Py_BUILD_CORE
101 : : # define KWTUPLE NULL
102 : : #endif // !Py_BUILD_CORE
103 : :
104 : : static const char * const _keywords[] = {"name", NULL};
105 : : static _PyArg_Parser _parser = {
106 : : .keywords = _keywords,
107 : : .fname = "getgrnam",
108 : : .kwtuple = KWTUPLE,
109 : : };
110 : : #undef KWTUPLE
111 : : PyObject *argsbuf[1];
112 : : PyObject *name;
113 : :
114 [ # # # # : 0 : args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf);
# # # # ]
115 [ # # ]: 0 : if (!args) {
116 : 0 : goto exit;
117 : : }
118 [ # # ]: 0 : if (!PyUnicode_Check(args[0])) {
119 : 0 : _PyArg_BadArgument("getgrnam", "argument 'name'", "str", args[0]);
120 : 0 : goto exit;
121 : : }
122 [ # # ]: 0 : if (PyUnicode_READY(args[0]) == -1) {
123 : 0 : goto exit;
124 : : }
125 : 0 : name = args[0];
126 : 0 : return_value = grp_getgrnam_impl(module, name);
127 : :
128 : 0 : exit:
129 : 0 : return return_value;
130 : : }
131 : :
132 : : PyDoc_STRVAR(grp_getgrall__doc__,
133 : : "getgrall($module, /)\n"
134 : : "--\n"
135 : : "\n"
136 : : "Return a list of all available group entries, in arbitrary order.\n"
137 : : "\n"
138 : : "An entry whose name starts with \'+\' or \'-\' represents an instruction\n"
139 : : "to use YP/NIS and may not be accessible via getgrnam or getgrgid.");
140 : :
141 : : #define GRP_GETGRALL_METHODDEF \
142 : : {"getgrall", (PyCFunction)grp_getgrall, METH_NOARGS, grp_getgrall__doc__},
143 : :
144 : : static PyObject *
145 : : grp_getgrall_impl(PyObject *module);
146 : :
147 : : static PyObject *
148 : 0 : grp_getgrall(PyObject *module, PyObject *Py_UNUSED(ignored))
149 : : {
150 : 0 : return grp_getgrall_impl(module);
151 : : }
152 : : /*[clinic end generated code: output=0916fdbcdeaf5d7d input=a9049054013a1b77]*/
|