]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
dmesg: Keep error messages in parent's stderr
authorTobias Stoeckmann <tobias@stoeckmann.org>
Mon, 16 Feb 2026 20:53:02 +0000 (21:53 +0100)
committerTobias Stoeckmann <tobias@stoeckmann.org>
Mon, 16 Feb 2026 20:53:02 +0000 (21:53 +0100)
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>
sys-utils/dmesg.c

index 64c3fd5c32f9377ddc1b1c48bcd8849125a7045b..854786554ac27deb8447fec3fd72670a87808f21 100644 (file)
@@ -1928,11 +1928,14 @@ int main(int argc, char *argv[])
 
                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"));