chiark / gitweb /
systemd-python: export sd_journal_get_usage
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Wed, 20 Mar 2013 22:30:10 +0000 (18:30 -0400)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Fri, 22 Mar 2013 02:39:24 +0000 (22:39 -0400)
TODO
man/sd_journal_get_usage.xml
src/python-systemd/_reader.c

diff --git a/TODO b/TODO
index 19154121c7ad6dad678fd6286553df4674946f32..2be45038bb9b59dcfa266a872ea981ab53d83453 100644 (file)
--- 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
index 14eb1e2b79b4ae2a9c14680a0100acbf35b16e78..a2b868f218dababa994c90e79d1a79d6f3af0873 100644 (file)
                 <title>Description</title>
 
                 <para><function>sd_journal_get_usage()</function>
-                determines the total disk space currently used up by
-                journal files. If
-                <literal>SD_JOURNAL_LOCAL_ONLY</literal> 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.</para>
+                determines the total disk space currently used by
+                journal files (in bytes). If
+                <literal>SD_JOURNAL_LOCAL_ONLY</literal> was passed
+                when opening the journal this value will only reflect
+                the size of journal files of the local host, otherwise
+                of all hosts.</para>
         </refsect1>
 
         <refsect1>
index 908d911298963b2167612cee392e18ca79efe9fb..17c001530fda0bc4313e7f225bfea2dcaf6b774f 100644 (file)
@@ -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__},