Listing 2. Python Module Written in C
#include "Python.h"
#include <sys/types.h>
extern char * crypt();
static PyObject *
crypt_crypt(PyObject *self,
PyObject *args)
{
char *word, *salt;
// parse the incoming arguments
if (!PyArg_Parse(args, "(ss)", &word, &salt))
{
return NULL;
}
// return the hashed string
return PyString_FromString(crypt(word, salt));
}
// declare the methods that crypt module exports
static PyMethodDef
crypt_methods[] =
{
{"crypt", crypt_crypt},
{NULL, NULL}
};
// expose module entry point
DL_EXPORT(void)
initcrypt()
{
Py_InitModule("crypt", crypt_methods);
}