mirror of
https://github.com/systemd/systemd-stable.git
synced 2025-01-06 13:17:44 +03:00
systemd-python: split .seek() into .seek_head() and .seek_tail()
This way python code follows the original interface more closely. Also, .seek(0, journal.SEEK_END) was just to much to type.
This commit is contained in:
parent
aaf0806118
commit
5c1c14b3a0
@ -360,60 +360,34 @@ static PyObject* Reader_flush_matches(Reader *self, PyObject *args)
|
||||
Py_RETURN_NONE;
|
||||
}
|
||||
|
||||
PyDoc_STRVAR(Reader_seek__doc__,
|
||||
"seek(offset[, whence]) -> None\n\n"
|
||||
"Jump `offset` entries in the journal. Argument\n"
|
||||
"`whence` defines what the offset is relative to:\n"
|
||||
"os.SEEK_SET (default) from first match in journal;\n"
|
||||
"os.SEEK_CUR from current position in journal;\n"
|
||||
"and os.SEEK_END is from last match in journal.");
|
||||
static PyObject* Reader_seek(Reader *self, PyObject *args, PyObject *keywds)
|
||||
PyDoc_STRVAR(Reader_seek_head__doc__,
|
||||
"seek_head() -> None\n\n"
|
||||
"Jump to the beginning of the journal.\n"
|
||||
"This method invokes sd_journal_seek_head().\n"
|
||||
"See man:sd_journal_seek_head(3).");
|
||||
static PyObject* Reader_seek_head(Reader *self, PyObject *args)
|
||||
{
|
||||
int64_t offset;
|
||||
int whence = SEEK_SET;
|
||||
PyObject *result = NULL;
|
||||
|
||||
static const char* const kwlist[] = {"offset", "whence", NULL};
|
||||
if (!PyArg_ParseTupleAndKeywords(args, keywds, "L|i", (char**) kwlist,
|
||||
&offset, &whence))
|
||||
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;
|
||||
Py_RETURN_NONE;
|
||||
}
|
||||
|
||||
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))
|
||||
return NULL;
|
||||
Py_RETURN_NONE;
|
||||
}
|
||||
@ -644,7 +618,8 @@ static PyMethodDef Reader_methods[] = {
|
||||
{"add_match", (PyCFunction) Reader_add_match, METH_VARARGS|METH_KEYWORDS, Reader_add_match__doc__},
|
||||
{"add_disjunction", (PyCFunction) Reader_add_disjunction, METH_NOARGS, Reader_add_disjunction__doc__},
|
||||
{"flush_matches", (PyCFunction) Reader_flush_matches, METH_NOARGS, Reader_flush_matches__doc__},
|
||||
{"seek", (PyCFunction) Reader_seek, METH_VARARGS | METH_KEYWORDS, Reader_seek__doc__},
|
||||
{"seek_head", (PyCFunction) Reader_seek_head, METH_NOARGS, Reader_seek_head__doc__},
|
||||
{"seek_tail", (PyCFunction) Reader_seek_tail, METH_NOARGS, Reader_seek_tail__doc__},
|
||||
{"seek_realtime", (PyCFunction) Reader_seek_realtime, METH_VARARGS, Reader_seek_realtime__doc__},
|
||||
{"seek_monotonic", (PyCFunction) Reader_seek_monotonic, METH_VARARGS, Reader_seek_monotonic__doc__},
|
||||
{"wait", (PyCFunction) Reader_wait, METH_VARARGS, Reader_wait__doc__},
|
||||
|
@ -27,12 +27,7 @@ Accessing the Journal
|
||||
|
||||
.. autoattribute:: systemd.journal.DEFAULT_CONVERTERS
|
||||
|
||||
Whence constants
|
||||
~~~~~~~~~~~~~~~~
|
||||
|
||||
.. autoattribute:: systemd.journal.SEEK_SET
|
||||
.. autoattribute:: systemd.journal.SEEK_CUR
|
||||
.. autoattribute:: systemd.journal.SEEK_END
|
||||
|
||||
Journal access types
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
|
@ -27,7 +27,6 @@ import functools as _functools
|
||||
import uuid as _uuid
|
||||
import traceback as _traceback
|
||||
import os as _os
|
||||
from os import SEEK_SET, SEEK_CUR, SEEK_END
|
||||
import logging as _logging
|
||||
if _sys.version_info >= (3,):
|
||||
from collections import ChainMap as _ChainMap
|
||||
|
Loading…
Reference in New Issue
Block a user