X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fpython-systemd%2Fid128.c;h=ec1d9fb4a2b530d6d7929bd0cf07356c40219108;hp=f82b0afb9900766eb92affe5005fc817c792001e;hb=925d98b3441881bad3a459cb5f7f3785bab40b5c;hpb=927e96326c195ad39a45b091f98e9c635f400982 diff --git a/src/python-systemd/id128.c b/src/python-systemd/id128.c index f82b0afb9..ec1d9fb4a 100644 --- a/src/python-systemd/id128.c +++ b/src/python-systemd/id128.c @@ -23,43 +23,36 @@ #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_ + _cleanup_Py_DECREF_ PyObject *uuid = NULL, *UUID = NULL, *bytes = NULL, - *args = NULL, *kwargs = NULL, *obj = NULL; + *args = NULL, *kwargs = NULL; uuid = PyImport_ImportModule("uuid"); if (!uuid) @@ -106,13 +99,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 +120,11 @@ PyMODINIT_FUNC initid128(void) { if (m == NULL) return; + /* a series of lines like 'add_id() ;' follow */ +#define JOINER ; #include "id128-constants.h" +#undef JOINER + PyModule_AddStringConstant(m, "__version__", PACKAGE_VERSION); } #else @@ -136,7 +133,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 +144,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 + PyModule_AddStringConstant(m, "__version__", PACKAGE_VERSION)) { + Py_DECREF(m); + return NULL; + } return m; }