]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
pager: also redirect stderr 1061/head
authorLennart Poettering <lennart@poettering.net>
Thu, 27 Aug 2015 22:13:34 +0000 (00:13 +0200)
committerLennart Poettering <lennart@poettering.net>
Fri, 28 Aug 2015 00:05:58 +0000 (02:05 +0200)
It's really confusing if stdout goes to the pager, but stderr is written
directly to the screen. Hence, make sure both stdout and stderr are
passed to the pager when doing autopaging.

src/shared/pager.c

index a5454e377ddcdea4c951dd989d0741db8ad1868c..85f8fa5b398453a12f6165e5ffd085ffe9deef83 100644 (file)
@@ -129,6 +129,8 @@ int pager_open(bool jump_to_end) {
         /* Return in the parent */
         if (dup2(fd[1], STDOUT_FILENO) < 0)
                 return log_error_errno(errno, "Failed to duplicate pager pipe: %m");
+        if (dup2(fd[1], STDERR_FILENO) < 0)
+                return log_error_errno(errno, "Failed to duplicate pager pipe: %m");
 
         safe_close_pair(fd);
         return 1;
@@ -141,6 +143,11 @@ void pager_close(void) {
 
         /* Inform pager that we are done */
         fclose(stdout);
+        stdout = NULL;
+
+        fclose(stderr);
+        stderr = NULL;
+
         kill(pager_pid, SIGCONT);
         (void) wait_for_terminate(pager_pid, NULL);
         pager_pid = 0;