From 50a279f85783375416dacae7dafbcbbcd2765962 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Wed, 20 Mar 2013 18:30:10 -0400 Subject: [PATCH 1/1] systemd-python: export sd_journal_get_usage --- TODO | 1 - man/sd_journal_get_usage.xml | 12 ++++++------ src/python-systemd/_reader.c | 35 +++++++++++++++++++++++++++++------ 3 files changed, 35 insertions(+), 13 deletions(-) diff --git a/TODO b/TODO index 19154121c..2be45038b 100644 --- a/TODO +++ b/TODO @@ -586,7 +586,6 @@ Features: * systemd-python: - allow reading of only select fields in systemd.journal._reader.Reader - export sd_journal_test_cursor in systemd.journal._reader.Reader - - export sd_journal_get_usage in systemd.journal._reader.Reader - figure out a simple way to wait for journal events in a way that works with ^C - add documentation to systemd.daemon diff --git a/man/sd_journal_get_usage.xml b/man/sd_journal_get_usage.xml index 14eb1e2b7..a2b868f21 100644 --- a/man/sd_journal_get_usage.xml +++ b/man/sd_journal_get_usage.xml @@ -64,12 +64,12 @@ Description sd_journal_get_usage() - determines the total disk space currently used up by - journal files. If - SD_JOURNAL_LOCAL_ONLY has been - passed when opening the journal files this value will - only reflect the size of journal files of the local - host, otherwise of all hosts. + determines the total disk space currently used by + journal files (in bytes). If + SD_JOURNAL_LOCAL_ONLY was passed + when opening the journal this value will only reflect + the size of journal files of the local host, otherwise + of all hosts. diff --git a/src/python-systemd/_reader.c b/src/python-systemd/_reader.c index 908d91129..17c001530 100644 --- a/src/python-systemd/_reader.c +++ b/src/python-systemd/_reader.c @@ -130,12 +130,12 @@ PyDoc_STRVAR(Reader_fileno__doc__, "See man:sd_journal_get_fd(3)."); static PyObject* Reader_fileno(Reader *self, PyObject *args) { - int r; - r = sd_journal_get_fd(self->j); - set_error(r, NULL, NULL); - if (r < 0) + int fd; + fd = sd_journal_get_fd(self->j); + set_error(fd, NULL, NULL); + if (fd < 0) return NULL; - return long_FromLong(r); + return long_FromLong(fd); } @@ -171,6 +171,29 @@ static PyObject* Reader_close(Reader *self, PyObject *args) } +PyDoc_STRVAR(Reader_get_usage__doc__, + "get_usage() -> int\n\n" + "Returns the total disk space currently used by journal" + "files (in bytes). If `SD_JOURNAL_LOCAL_ONLY` was" + "passed when opening the journal this value will only reflect" + "the size of journal files of the local host, otherwise" + "of all hosts.\n\n" + "This method invokes sd_journal_get_usage().\n" + "See man:sd_journal_get_usage(3)."); +static PyObject* Reader_get_usage(Reader *self, PyObject *args) +{ + int r; + uint64_t bytes; + + r = sd_journal_get_usage(self->j, &bytes); + if (set_error(r, NULL, NULL)) + return NULL; + + assert_cc(sizeof(unsigned long long) == sizeof(bytes)); + return PyLong_FromUnsignedLongLong(bytes); +} + + PyDoc_STRVAR(Reader___enter____doc__, "__enter__() -> self\n\n" "Part of the context manager protocol.\n" @@ -770,9 +793,9 @@ static PyMethodDef Reader_methods[] = { {"fileno", (PyCFunction) Reader_fileno, METH_NOARGS, Reader_fileno__doc__}, {"reliable_fd", (PyCFunction) Reader_reliable_fd, METH_NOARGS, Reader_reliable_fd__doc__}, {"close", (PyCFunction) Reader_close, METH_NOARGS, Reader_close__doc__}, + {"get_usage", (PyCFunction) Reader_get_usage, METH_NOARGS, Reader_get_usage__doc__}, {"__enter__", (PyCFunction) Reader___enter__, METH_NOARGS, Reader___enter____doc__}, {"__exit__", (PyCFunction) Reader___exit__, METH_VARARGS, Reader___exit____doc__}, - {"close", (PyCFunction) Reader_close, METH_NOARGS, Reader_close__doc__}, {"get_next", (PyCFunction) Reader_get_next, METH_VARARGS, Reader_get_next__doc__}, {"get_previous", (PyCFunction) Reader_get_previous, METH_VARARGS, Reader_get_previous__doc__}, {"add_match", (PyCFunction) Reader_add_match, METH_VARARGS|METH_KEYWORDS, Reader_add_match__doc__}, -- 2.30.2