1
0
mirror of https://github.com/systemd/systemd.git synced 2024-12-27 07:22:31 +03:00

pager: also redirect stderr

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.
This commit is contained in:
Lennart Poettering 2015-08-28 00:13:34 +02:00
parent 6a7c676c54
commit 8b5264aa65

View 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;