X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fpython-systemd%2F_reader.c;h=160ab69a3caa5c13f80f9e2bb10de0eeb1dbb8e3;hb=946f1825751919a176cd0039002a514de0c9c70f;hp=c435dadecfab5c5fcd6a1a849bd4c1c1783c5f38;hpb=f2e82cd5add31d704b39a91d570ab6649653fa49;p=elogind.git diff --git a/src/python-systemd/_reader.c b/src/python-systemd/_reader.c index c435dadec..160ab69a3 100644 --- a/src/python-systemd/_reader.c +++ b/src/python-systemd/_reader.c @@ -64,7 +64,7 @@ static int set_error(int r, const char* path, const char* invalid_message) { errno = -r; PyErr_SetFromErrnoWithFilename(PyExc_OSError, path); } - return 1; + return -1; } #if PY_MAJOR_VERSION >= 3 @@ -94,25 +94,34 @@ static void Reader_dealloc(Reader* self) } PyDoc_STRVAR(Reader__doc__, - "Reader([flags][,path]) -> ...\n\n" + "Reader([flags | path]) -> ...\n\n" "Reader allows filtering and retrieval of Journal entries.\n" + "Note: this is a low-level interface, and probably not what you\n" + "want, use systemd.journal.Reader instead.\n\n" "Argument `flags` sets open flags of the journal, which can be one\n" "of, or ORed combination of constants: LOCAL_ONLY (default) opens\n" "journal on local machine only; RUNTIME_ONLY opens only\n" "volatile journal files; and SYSTEM_ONLY opens only\n" - "journal files of system services and the kernel.\n" + "journal files of system services and the kernel.\n\n" "Argument `path` is the directory of journal files. Note that\n" - "currently flags are ignored when `path` is present as they are\n" - "not relevant."); + "`flags` and `path` are exclusive.\n"); static int Reader_init(Reader *self, PyObject *args, PyObject *keywds) { - int flags = SD_JOURNAL_LOCAL_ONLY, r; + int flags = 0, r; char *path = NULL; static const char* const kwlist[] = {"flags", "path", NULL}; if (!PyArg_ParseTupleAndKeywords(args, keywds, "|iz", (char**) kwlist, &flags, &path)) - return 1; + return -1; + + if (!flags) + flags = SD_JOURNAL_LOCAL_ONLY; + else + if (path) { + PyErr_SetString(PyExc_ValueError, "cannot use both flags and path"); + return -1; + } Py_BEGIN_ALLOW_THREADS if (path) @@ -155,13 +164,14 @@ static PyObject* Reader_reliable_fd(Reader *self, PyObject *args) } PyDoc_STRVAR(Reader_close__doc__, - "reliable_fd() -> None\n\n" + "close() -> None\n\n" "Free resources allocated by this Reader object.\n" "This method invokes sd_journal_close().\n" "See man:sd_journal_close(3)."); static PyObject* Reader_close(Reader *self, PyObject *args) { sd_journal_close(self->j); + self->j = NULL; Py_RETURN_NONE; } @@ -419,7 +429,7 @@ static PyObject* Reader_seek_head(Reader *self, PyObject *args) PyDoc_STRVAR(Reader_seek_tail__doc__, "seek_tail() -> None\n\n" - "Jump to the beginning of the journal.\n" + "Jump to the end 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)