wpaspy: Allow building with python3

Add the necessary modified module registration code to allow building
wpaspy with python3. Also clean up the wpaspy_close() function to not
poke into the python version specific details.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
Johannes Berg 2020-10-11 10:20:51 +02:00 committed by Jouni Malinen
parent 45a1bfd956
commit 27fb429e95
2 changed files with 34 additions and 2 deletions

View file

@ -2,6 +2,7 @@ all: build
SRC=wpaspy.c SRC=wpaspy.c
.PHONY: build
build: $(SRC) setup.py build: $(SRC) setup.py
python setup.py build python setup.py build

View file

@ -44,8 +44,7 @@ static void wpaspy_close(struct wpaspy_obj *self)
self->ctrl = NULL; self->ctrl = NULL;
} }
if (self->ob_type) PyObject_Del(self);
self->ob_type->tp_free((PyObject *) self);
} }
@ -193,6 +192,7 @@ static PyTypeObject wpaspy_ctrl = {
}; };
#if PY_MAJOR_VERSION < 3
static PyMethodDef module_methods[] = { static PyMethodDef module_methods[] = {
{ NULL, NULL, 0, NULL } { NULL, NULL, 0, NULL }
}; };
@ -212,3 +212,34 @@ PyMODINIT_FUNC initwpaspy(void)
PyModule_AddObject(mod, "Ctrl", (PyObject *) &wpaspy_ctrl); PyModule_AddObject(mod, "Ctrl", (PyObject *) &wpaspy_ctrl);
PyModule_AddObject(mod, "error", wpaspy_error); PyModule_AddObject(mod, "error", wpaspy_error);
} }
#else
static struct PyModuleDef wpaspy_def = {
PyModuleDef_HEAD_INIT,
"wpaspy",
};
PyMODINIT_FUNC initwpaspy(void)
{
PyObject *mod;
mod = PyModule_Create(&wpaspy_def);
if (!mod)
return NULL;
wpaspy_error = PyErr_NewException("wpaspy.error", NULL, NULL);
Py_INCREF(&wpaspy_ctrl);
Py_INCREF(wpaspy_error);
if (PyModule_AddObject(mod, "Ctrl", (PyObject *) &wpaspy_ctrl) < 0 ||
PyModule_AddObject(mod, "error", wpaspy_error) < 0) {
Py_DECREF(&wpaspy_ctrl);
Py_DECREF(wpaspy_error);
Py_DECREF(mod);
mod = NULL;
}
return mod;
}
#endif