- switch(whence) {
- case SEEK_SET: {
- int r;
- Py_BEGIN_ALLOW_THREADS
- r = sd_journal_seek_head(self->j);
- Py_END_ALLOW_THREADS
- if (set_error(r, NULL, NULL))
- return NULL;
-
- if (offset > 0LL)
- result = PyObject_CallMethod((PyObject *)self, (char*) "get_next",
- (char*) "L", offset);
- break;
- }
- case SEEK_CUR:
- result = PyObject_CallMethod((PyObject *)self, (char*) "get_next",
- (char*) "L", offset);
- break;
- case SEEK_END: {
- int r;
- Py_BEGIN_ALLOW_THREADS
- r = sd_journal_seek_tail(self->j);
- Py_END_ALLOW_THREADS
- if (set_error(r, NULL, NULL))
- return NULL;
-
- result = PyObject_CallMethod((PyObject *)self, (char*) "get_next",
- (char*) "L", offset < 0LL ? offset : -1LL);
- break;
- }
- default:
- PyErr_SetString(PyExc_ValueError, "Invalid value for whence");
- }
-
- Py_XDECREF(result);
- if (PyErr_Occurred())
+PyDoc_STRVAR(Reader_seek_tail__doc__,
+ "seek_tail() -> None\n\n"
+ "Jump to the beginning of the journal.\n"
+ "This method invokes sd_journal_seek_tail().\n"
+ "See man:sd_journal_seek_tail(3).");
+static PyObject* Reader_seek_tail(Reader *self, PyObject *args)
+{
+ int r;
+ Py_BEGIN_ALLOW_THREADS
+ r = sd_journal_seek_tail(self->j);
+ Py_END_ALLOW_THREADS
+ if (set_error(r, NULL, NULL))