pager: introduce "jump to end" option
$ journalctl -be is what you want :) https://bugzilla.redhat.com/show_bug.cgi?id=867841
This commit is contained in:
committed by
Lennart Poettering
parent
6aa8d43ade
commit
1b12a7b589
@@ -162,6 +162,20 @@
|
||||
the journal.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>-e</option></term>
|
||||
<term><option>--pager-end</option></term>
|
||||
|
||||
<listitem><para>Immediately jump to
|
||||
the end of the journal inside the
|
||||
implied pager tool. Very useful in
|
||||
combination with the
|
||||
<option>-b</option> option. Note that
|
||||
this is only supported for the
|
||||
<citerefentry><refentrytitle>less</refentrytitle><manvolnum>1</manvolnum></citerefentry>
|
||||
pager.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>-n</option></term>
|
||||
<term><option>--lines=</option></term>
|
||||
|
||||
+1
-1
@@ -132,7 +132,7 @@ int main(int argc, char *argv[]) {
|
||||
}
|
||||
|
||||
if (!arg_no_pager) {
|
||||
r = pager_open();
|
||||
r = pager_open(false);
|
||||
if (r > 0) {
|
||||
if (arg_full == -1)
|
||||
arg_full = true;
|
||||
|
||||
+1
-1
@@ -454,7 +454,7 @@ int main(int argc, char *argv[]) {
|
||||
arg_flags |= SHOW_OVERRIDDEN;
|
||||
|
||||
if (!arg_no_pager)
|
||||
pager_open();
|
||||
pager_open(false);
|
||||
|
||||
if (optind < argc) {
|
||||
int i;
|
||||
|
||||
@@ -560,7 +560,7 @@ int main(int argc, char *argv[]) {
|
||||
|
||||
case ACTION_LIST:
|
||||
if (!arg_no_pager)
|
||||
pager_open();
|
||||
pager_open(false);
|
||||
|
||||
r = dump_list(j);
|
||||
break;
|
||||
|
||||
@@ -56,6 +56,7 @@
|
||||
#define DEFAULT_FSS_INTERVAL_USEC (15*USEC_PER_MINUTE)
|
||||
|
||||
static OutputMode arg_output = OUTPUT_SHORT;
|
||||
static bool arg_pager_end = false;
|
||||
static bool arg_follow = false;
|
||||
static bool arg_full = false;
|
||||
static bool arg_all = false;
|
||||
@@ -103,6 +104,7 @@ static int help(void) {
|
||||
" -u --unit=UNIT Show data only from the specified unit\n"
|
||||
" --user-unit=UNIT Show data only from the specified user session unit\n"
|
||||
" -p --priority=RANGE Show only messages within the specified priority range\n"
|
||||
" -e --pager-end Immediately jump to end of the journal in the pager\n"
|
||||
" -f --follow Follow journal\n"
|
||||
" -n --lines[=INTEGER] Number of journal entries to show\n"
|
||||
" --no-tail Show all lines, even in follow mode\n"
|
||||
@@ -163,6 +165,7 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
{ "help", no_argument, NULL, 'h' },
|
||||
{ "version" , no_argument, NULL, ARG_VERSION },
|
||||
{ "no-pager", no_argument, NULL, ARG_NO_PAGER },
|
||||
{ "pager-end", no_argument, NULL, 'e' },
|
||||
{ "follow", no_argument, NULL, 'f' },
|
||||
{ "output", required_argument, NULL, 'o' },
|
||||
{ "all", no_argument, NULL, 'a' },
|
||||
@@ -199,7 +202,7 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
assert(argc >= 0);
|
||||
assert(argv);
|
||||
|
||||
while ((c = getopt_long(argc, argv, "hfo:an::qmbD:p:c:u:F:xr", options, NULL)) >= 0) {
|
||||
while ((c = getopt_long(argc, argv, "hefo:an::qmbD:p:c:u:F:xr", options, NULL)) >= 0) {
|
||||
|
||||
switch (c) {
|
||||
|
||||
@@ -216,6 +219,10 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
arg_no_pager = true;
|
||||
break;
|
||||
|
||||
case 'e':
|
||||
arg_pager_end = true;
|
||||
break;
|
||||
|
||||
case 'f':
|
||||
arg_follow = true;
|
||||
break;
|
||||
@@ -1075,7 +1082,7 @@ int main(int argc, char *argv[]) {
|
||||
}
|
||||
|
||||
if (!arg_no_pager && !arg_follow)
|
||||
pager_open();
|
||||
pager_open(arg_pager_end);
|
||||
|
||||
if (!arg_quiet) {
|
||||
usec_t start, end;
|
||||
|
||||
@@ -53,7 +53,7 @@ static void pager_open_if_enabled(void) {
|
||||
if (arg_no_pager)
|
||||
return;
|
||||
|
||||
pager_open();
|
||||
pager_open(false);
|
||||
}
|
||||
|
||||
static void polkit_agent_open_if_enabled(void) {
|
||||
|
||||
@@ -58,7 +58,7 @@ static void pager_open_if_enabled(void) {
|
||||
if (arg_no_pager)
|
||||
return;
|
||||
|
||||
pager_open();
|
||||
pager_open(false);
|
||||
}
|
||||
|
||||
static void polkit_agent_open_if_enabled(void) {
|
||||
|
||||
+5
-2
@@ -44,7 +44,7 @@ _noreturn_ static void pager_fallback(void) {
|
||||
_exit(EXIT_SUCCESS);
|
||||
}
|
||||
|
||||
int pager_open(void) {
|
||||
int pager_open(bool jump_to_end) {
|
||||
int fd[2];
|
||||
const char *pager;
|
||||
pid_t parent_pid;
|
||||
@@ -85,7 +85,10 @@ int pager_open(void) {
|
||||
dup2(fd[0], STDIN_FILENO);
|
||||
close_pipe(fd);
|
||||
|
||||
setenv("LESS", "FRSXK", 0);
|
||||
if (jump_to_end)
|
||||
setenv("LESS", "FRSXK+G", 0);
|
||||
else
|
||||
setenv("LESS", "FRSXK", 0);
|
||||
|
||||
/* Make sure the pager goes away when the parent dies */
|
||||
if (prctl(PR_SET_PDEATHSIG, SIGTERM) < 0)
|
||||
|
||||
+1
-1
@@ -23,6 +23,6 @@
|
||||
|
||||
#include <stdbool.h>
|
||||
|
||||
int pager_open(void);
|
||||
int pager_open(bool jump_to_end);
|
||||
void pager_close(void);
|
||||
bool pager_have(void);
|
||||
|
||||
@@ -136,7 +136,7 @@ static void pager_open_if_enabled(void) {
|
||||
if (arg_no_pager)
|
||||
return;
|
||||
|
||||
pager_open();
|
||||
pager_open(false);
|
||||
}
|
||||
|
||||
static void ask_password_agent_open_if_enabled(void) {
|
||||
|
||||
@@ -51,7 +51,7 @@ static void pager_open_if_enabled(void) {
|
||||
if (arg_no_pager)
|
||||
return;
|
||||
|
||||
pager_open();
|
||||
pager_open(false);
|
||||
}
|
||||
|
||||
static void polkit_agent_open_if_enabled(void) {
|
||||
|
||||
Reference in New Issue
Block a user