| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 | #if !defined(_WIN32)/* Disabled for Windows to avoid to link with the wrong library specified by * #pragma */#  define Py_LIMITED_API 3#endif#include <Python.h>static PyObject* spam_system(PyObject* self, PyObject* args){  char const* command;  int sts;  if (!PyArg_ParseTuple(args, "s", &command))    return NULL;  sts = system(command);  /* return PyLong_FromLong(sts); */  return Py_BuildValue("i", sts);}static PyMethodDef SpamMethods[] = {  { "system", spam_system, METH_VARARGS, "Execute a shell command." },  { NULL, NULL, 0, NULL } /* Sentinel */};#if defined(PYTHON2)PyMODINIT_FUNC initspam2(void){  (void)Py_InitModule("spam2", SpamMethods);}#endif#if defined(PYTHON3)static struct PyModuleDef spammodule = {  PyModuleDef_HEAD_INIT, "spam3", /* name of module */  NULL,                           /* module documentation, may be NULL */  -1, /* size of per-interpreter state of the module,         or -1 if the module keeps state in global variables. */  SpamMethods};PyMODINIT_FUNC PyInit_spam3(void){  return PyModule_Create(&spammodule);}#endif
 |