mirror of
https://github.com/systemd/systemd-stable.git
synced 2024-12-24 21:34:08 +03:00
journalctl: fix ellipsization with PAGER=cat
There are other reasons for not opening the pager then the --no-pager or --follow options (described below). If the pager is not used, messages must be ellipsized. On Fri, Jul 20, 2012 at 05:42:44AM +0000, Shawn Landen wrote: > "Pager to use when --no-pager is not given; overrides $PAGER. > Setting this to an empty string or the value cat is equivalent to passing --no-pager."
This commit is contained in:
parent
f84b1a8c3a
commit
fafb6eccc2
@ -398,11 +398,7 @@ int main(int argc, char *argv[]) {
|
||||
goto finish;
|
||||
}
|
||||
|
||||
have_pager = !arg_no_pager && !arg_follow;
|
||||
if (have_pager) {
|
||||
columns();
|
||||
pager_open();
|
||||
}
|
||||
have_pager = !arg_no_pager && !arg_follow && pager_open();
|
||||
|
||||
if (arg_output == OUTPUT_JSON) {
|
||||
fputc('[', stdout);
|
||||
|
@ -44,20 +44,20 @@ _noreturn_ static void pager_fallback(void) {
|
||||
_exit(EXIT_SUCCESS);
|
||||
}
|
||||
|
||||
void pager_open(void) {
|
||||
bool pager_open(void) {
|
||||
int fd[2];
|
||||
const char *pager;
|
||||
pid_t parent_pid;
|
||||
|
||||
if (pager_pid > 0)
|
||||
return;
|
||||
return false;
|
||||
|
||||
if ((pager = getenv("SYSTEMD_PAGER")) || (pager = getenv("PAGER")))
|
||||
if (!*pager || streq(pager, "cat"))
|
||||
return;
|
||||
return false;
|
||||
|
||||
if (isatty(STDOUT_FILENO) <= 0)
|
||||
return;
|
||||
return false;
|
||||
|
||||
/* Determine and cache number of columns before we spawn the
|
||||
* pager so that we get the value from the actual tty */
|
||||
@ -65,7 +65,7 @@ void pager_open(void) {
|
||||
|
||||
if (pipe(fd) < 0) {
|
||||
log_error("Failed to create pager pipe: %m");
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
parent_pid = getpid();
|
||||
@ -74,7 +74,7 @@ void pager_open(void) {
|
||||
if (pager_pid < 0) {
|
||||
log_error("Failed to fork pager: %m");
|
||||
close_pipe(fd);
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
/* In the child start the pager */
|
||||
@ -115,10 +115,13 @@ void pager_open(void) {
|
||||
}
|
||||
|
||||
/* Return in the parent */
|
||||
if (dup2(fd[1], STDOUT_FILENO) < 0)
|
||||
if (dup2(fd[1], STDOUT_FILENO) < 0) {
|
||||
log_error("Failed to duplicate pager pipe: %m");
|
||||
return false;
|
||||
}
|
||||
|
||||
close_pipe(fd);
|
||||
return true;
|
||||
}
|
||||
|
||||
void pager_close(void) {
|
||||
|
@ -21,5 +21,7 @@
|
||||
along with systemd; If not, see <http://www.gnu.org/licenses/>.
|
||||
***/
|
||||
|
||||
void pager_open(void);
|
||||
#include <stdbool.h>
|
||||
|
||||
bool pager_open(void);
|
||||
void pager_close(void);
|
||||
|
Loading…
Reference in New Issue
Block a user