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