shared: leave output_journal() output in buffer (#6304)
authorVito Caputo <vcaputo@gnugeneration.com>
Fri, 7 Jul 2017 18:32:21 +0000 (11:32 -0700)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Fri, 7 Jul 2017 18:32:21 +0000 (14:32 -0400)
commitb1aa5ced45951ed470188b362c61827fb31da2ab
tree9dcd9c03a741d9da9ae7b311136eedcca097d9b2
parent85393d8f31196af01b2aa4e05836fca4b5d30b78
shared: leave output_journal() output in buffer (#6304)

e268b81e moved an fflush() from output_json() to the generic
output_journal(), when it probably should have deleted all fflush()
calls from logs-show.c altogether.

The caller supplies the FILE * to these functions, and should be in
charge of flushing as needed.  The current implementation essentially
defeats any buffering stdio was bringing to the table, resulting in
extraneous tiny write() calls in commands like `journalctl -b`.

This commit removes the fflush() call from output_journal(), and adds
them to journalctl before waiting for more entries and at completion.
This way in the hot path when journalctl loops on entries stdio can
combine multiple entries into bulkier write() calls.
src/journal/journalctl.c
src/shared/logs-show.c