From: Zbigniew Jędrzejewski-Szmek Date: Wed, 20 Mar 2013 22:30:10 +0000 (-0400) Subject: systemd-python: export sd_journal_get_usage X-Git-Tag: v199~96 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=50a279f85783375416dacae7dafbcbbcd2765962 systemd-python: export sd_journal_get_usage --- 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__},