If dmesg uses a pager, some of its error messages end up in the pager
output. Use the pager only for data that is supposed to be paged and
print error messages before the pager is started or after it is shut
down again.
Signed-off-by: Tobias Stoeckmann <tobias@stoeckmann.org>
if (ctl.force_prefix && ctl.method != DMESG_METHOD_KMSG)
errx(EXIT_FAILURE, _("only kmsg supports multi-line messages"));
- if (ctl.pager)
- pager_redirect();
n = prepare_buffer(&ctl, &buf);
- if (n > 0)
+ if (n > 0) {
+ if (ctl.pager)
+ pager_open();
print_buffer(&ctl, buf, n);
+ if (ctl.pager)
+ pager_close();
+ }
release_buffer(&ctl, buf);
if (n < 0)
err(EXIT_FAILURE, _("read kernel buffer failed"));