summaryrefslogtreecommitdiff
path: root/src/journal/journalctl.c
diff options
context:
space:
mode:
authorDavid Herrmann <dh.herrmann@googlemail.com>2013-01-13 12:28:38 +0100
committerLennart Poettering <lennart@poettering.net>2013-01-15 20:59:10 +0100
commit244692cbfb46df5ff79d07da8fb848a1165bd2fb (patch)
tree91c99d6e42a050c9fdd744da5cec8a5791bc9c74 /src/journal/journalctl.c
parent8e417f59b668b1e5cbf6c1ff305595a6ffe56fba (diff)
downloadsystemd-244692cbfb46df5ff79d07da8fb848a1165bd2fb.tar.gz
journalctl: quit on I/O error
This makes journalctl quit on ferror() conditions on stdout. It fixes an annoying bug if you pipe its output through 'less' and press 'q'. Without this fix journalctl will continue reading all journal data until EOF which can take quite some time. For instance on my machine: david-nb ~ # time journalctl | wc -l 327240 real 1m13.039s user 1m0.217s sys 0m10.467s However, expected behavior is journalctl to quit when its pager closed the output pipe. Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
Diffstat (limited to 'src/journal/journalctl.c')
-rw-r--r--src/journal/journalctl.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c
index a74d43be7f..45543a5013 100644
--- a/src/journal/journalctl.c
+++ b/src/journal/journalctl.c
@@ -1077,7 +1077,7 @@ int main(int argc, char *argv[]) {
arg_catalog * OUTPUT_CATALOG;
r = output_journal(stdout, j, arg_output, 0, flags);
- if (r < 0)
+ if (r < 0 || ferror(stdout))
goto finish;
need_seek = true;