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>
#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;
" -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"
{ "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' },
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) {
arg_no_pager = true;
break;
+ case 'e':
+ arg_pager_end = true;
+ break;
+
case 'f':
arg_follow = true;
break;
}
if (!arg_no_pager && !arg_follow)
- pager_open();
+ pager_open(arg_pager_end);
if (!arg_quiet) {
usec_t start, end;
_exit(EXIT_SUCCESS);
}
-int pager_open(void) {
+int pager_open(bool jump_to_end) {
int fd[2];
const char *pager;
pid_t parent_pid;
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)