• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #include "parts.h"
2 #include "util.h"
3 
4 
5 static PyObject *
sys_getobject(PyObject * Py_UNUSED (module),PyObject * arg)6 sys_getobject(PyObject *Py_UNUSED(module), PyObject *arg)
7 {
8     const char *name;
9     Py_ssize_t size;
10     if (!PyArg_Parse(arg, "z#", &name, &size)) {
11         return NULL;
12     }
13     PyObject *result = PySys_GetObject(name);
14     if (result == NULL) {
15         result = PyExc_AttributeError;
16     }
17     return Py_NewRef(result);
18 }
19 
20 static PyObject *
sys_setobject(PyObject * Py_UNUSED (module),PyObject * args)21 sys_setobject(PyObject *Py_UNUSED(module), PyObject *args)
22 {
23     const char *name;
24     Py_ssize_t size;
25     PyObject *value;
26     if (!PyArg_ParseTuple(args, "z#O", &name, &size, &value)) {
27         return NULL;
28     }
29     NULLABLE(value);
30     RETURN_INT(PySys_SetObject(name, value));
31 }
32 
33 static PyObject *
sys_getxoptions(PyObject * Py_UNUSED (module),PyObject * Py_UNUSED (ignored))34 sys_getxoptions(PyObject *Py_UNUSED(module), PyObject *Py_UNUSED(ignored))
35 {
36     PyObject *result = PySys_GetXOptions();
37     return Py_XNewRef(result);
38 }
39 
40 
41 static PyMethodDef test_methods[] = {
42     {"sys_getobject", sys_getobject, METH_O},
43     {"sys_setobject", sys_setobject, METH_VARARGS},
44     {"sys_getxoptions", sys_getxoptions, METH_NOARGS},
45     {NULL},
46 };
47 
48 int
_PyTestLimitedCAPI_Init_Sys(PyObject * m)49 _PyTestLimitedCAPI_Init_Sys(PyObject *m)
50 {
51     if (PyModule_AddFunctions(m, test_methods) < 0) {
52         return -1;
53     }
54 
55     return 0;
56 }
57