[PATCH] wpaspy: allow building with python3
Johannes Berg
johannes at sipsolutions.net
Sun Oct 11 04:20:51 EDT 2020
From: Johannes Berg <johannes.berg at intel.com>
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 at intel.com>
---
wpaspy/Makefile | 1 +
wpaspy/wpaspy.c | 37 +++++++++++++++++++++++++++++++++++--
2 files changed, 36 insertions(+), 2 deletions(-)
diff --git a/wpaspy/Makefile b/wpaspy/Makefile
index bc920e0cc503..6f720a9fe121 100644
--- a/wpaspy/Makefile
+++ b/wpaspy/Makefile
@@ -2,6 +2,7 @@ all: build
SRC=wpaspy.c
+.PHONY: build
build: $(SRC) setup.py
python setup.py build
diff --git a/wpaspy/wpaspy.c b/wpaspy/wpaspy.c
index 278089b48ada..718bdca3c792 100644
--- a/wpaspy/wpaspy.c
+++ b/wpaspy/wpaspy.c
@@ -44,8 +44,7 @@ static void wpaspy_close(struct wpaspy_obj *self)
self->ctrl = NULL;
}
- if (self->ob_type)
- self->ob_type->tp_free((PyObject *) self);
+ PyObject_Del(self);
}
@@ -193,6 +192,7 @@ static PyTypeObject wpaspy_ctrl = {
};
+#if PY_MAJOR_VERSION < 3
static PyMethodDef module_methods[] = {
{ NULL, NULL, 0, NULL }
};
@@ -212,3 +212,36 @@ PyMODINIT_FUNC initwpaspy(void)
PyModule_AddObject(mod, "Ctrl", (PyObject *) &wpaspy_ctrl);
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)
+ goto error;
+ if (PyModule_AddObject(mod, "error", wpaspy_error) < 0)
+ goto error;
+
+ return mod;
+error:
+ Py_DECREF(&wpaspy_ctrl);
+ Py_DECREF(wpaspy_error);
+ Py_DECREF(mod);
+ return NULL;
+}
+#endif
--
2.26.2
More information about the Hostap
mailing list