spammify.c: Add the basic extension code
authorW. Trevor King <wking@tremily.us>
Wed, 17 Apr 2013 15:39:29 +0000 (11:39 -0400)
committerW. Trevor King <wking@tremily.us>
Wed, 17 Apr 2013 15:39:29 +0000 (11:39 -0400)
From http://docs.python.org/3/extending/extending.html

spammify.c [new file with mode: 0644]

diff --git a/spammify.c b/spammify.c
new file mode 100644 (file)
index 0000000..d586aac
--- /dev/null
@@ -0,0 +1,34 @@
+#include <Python.h>
+#include <stdlib.h>
+
+static PyObject *
+spam_system(PyObject *self, PyObject *args)
+{
+       const char *command;
+       int sts;
+
+       if (!PyArg_ParseTuple(args, "s", &command))
+               return NULL;
+       sts = system(command);
+       return PyLong_FromLong(sts);
+}
+
+static PyMethodDef SpamMethods[] = {
+       {"system",  spam_system, METH_VARARGS,
+        "Execute a shell command."},
+       {NULL, NULL, 0, NULL}        /* Sentinel */
+};
+
+static struct PyModuleDef spammodule = {
+       PyModuleDef_HEAD_INIT,
+       "spam",   /* name of module */
+       spam_doc, /* module documentation, may be NULL */
+       0,        /* size of per-interpreter state of the module */
+       SpamMethods
+};
+
+PyMODINIT_FUNC
+PyInit_spam(void)
+{
+       return PyModule_Create(&spammodule);
+}