X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fpython-systemd%2Fid128.c;h=a9611c4802bcd74ca7be1a5384a55d7235fe0fbc;hb=8411d2a2b15ec8020cd563162cf1b372d8c0319a;hp=f82b0afb9900766eb92affe5005fc817c792001e;hpb=927e96326c195ad39a45b091f98e9c635f400982;p=elogind.git
diff --git a/src/python-systemd/id128.c b/src/python-systemd/id128.c
index f82b0afb9..a9611c480 100644
--- a/src/python-systemd/id128.c
+++ b/src/python-systemd/id128.c
@@ -19,47 +19,42 @@
along with systemd; If not, see .
***/
+#include
+
#include
#include
-#define _cleanup_Py_DECREF_ __attribute__((cleanup(cleanup_Py_DECREFp)))
-
-static void cleanup_Py_DECREFp(PyObject **p) {
- if (!*p)
- return;
-
- Py_DECREF(*p);
-}
+#include "pyutil.h"
PyDoc_STRVAR(module__doc__,
"Python interface to the libsystemd-id128 library.\n\n"
"Provides SD_MESSAGE_* constants and functions to query and generate\n"
- "128bit unique identifiers."
+ "128-bit unique identifiers."
);
PyDoc_STRVAR(randomize__doc__,
"randomize() -> UUID\n\n"
- "Return a new random 128bit unique identifier.\n"
+ "Return a new random 128-bit unique identifier.\n"
"Wraps sd_id128_randomize(3)."
);
PyDoc_STRVAR(get_machine__doc__,
"get_machine() -> UUID\n\n"
- "Return a 128bit unique identifier for this machine.\n"
+ "Return a 128-bit unique identifier for this machine.\n"
"Wraps sd_id128_get_machine(3)."
);
PyDoc_STRVAR(get_boot__doc__,
"get_boot() -> UUID\n\n"
- "Return a 128bit unique identifier for this boot.\n"
+ "Return a 128-bit unique identifier for this boot.\n"
"Wraps sd_id128_get_boot(3)."
);
static PyObject* make_uuid(sd_id128_t id) {
PyObject _cleanup_Py_DECREF_
*uuid = NULL, *UUID = NULL, *bytes = NULL,
- *args = NULL, *kwargs = NULL, *obj = NULL;
+ *args = NULL, *kwargs = NULL;
uuid = PyImport_ImportModule("uuid");
if (!uuid)
@@ -106,13 +101,13 @@ static PyMethodDef methods[] = {
};
static int add_id(PyObject *module, const char* name, sd_id128_t id) {
- PyObject _cleanup_Py_DECREF_ *obj;
+ PyObject *obj;
obj = make_uuid(id);
if (!obj)
return -1;
- return PyObject_SetAttrString(module, name, obj);
+ return PyModule_AddObject(module, name, obj);
}
#pragma GCC diagnostic push
@@ -127,7 +122,10 @@ PyMODINIT_FUNC initid128(void) {
if (m == NULL)
return;
+ /* a series of lines like 'add_id() ;' follow */
+#define JOINER ;
#include "id128-constants.h"
+#undef JOINER
}
#else
@@ -136,7 +134,7 @@ static struct PyModuleDef module = {
PyModuleDef_HEAD_INIT,
"id128", /* name of module */
module__doc__, /* module documentation, may be NULL */
- 0, /* size of per-interpreter state of the module */
+ -1, /* size of per-interpreter state of the module */
methods
};
@@ -147,7 +145,14 @@ PyMODINIT_FUNC PyInit_id128(void) {
if (m == NULL)
return NULL;
+ if ( /* a series of lines like 'add_id() ||' follow */
+#define JOINER ||
#include "id128-constants.h"
+#undef JOINER
+ false) {
+ Py_DECREF(m);
+ return NULL;
+ }
return m;
}