return 1;
}
+static bool on_tty(void) {
+ static int t = -1;
+
+ /* Note that this is invoked relatively early, before we start
+ * the pager. That means the value we return reflects whether
+ * we originally were started on a tty, not if we currently
+ * are. But this is intended, since we want colour and so on
+ * when run in our own pager. */
+
+ if (_unlikely_(t < 0))
+ t = isatty(STDOUT_FILENO) > 0;
+
+ return t;
+}
+
static int generate_new_id128(void) {
sd_id128_t id;
int r;
t = strappend("_EXE=", path);
if (!t) {
free(p);
- log_error("Out of memory");
- return -ENOMEM;
+ return log_oom();
}
r = sd_journal_add_match(j, t, 0);
bool need_seek = false;
sd_id128_t previous_boot_id;
bool previous_boot_id_valid = false;
+ bool have_pager;
log_parse_environment();
log_open();
goto finish;
}
- if (!arg_no_pager && !arg_follow) {
- columns();
- pager_open();
- }
+ on_tty();
+ have_pager = !arg_no_pager && !arg_follow && pager_open();
if (arg_output == OUTPUT_JSON) {
fputc('[', stdout);
for (;;) {
for (;;) {
sd_id128_t boot_id;
+ int flags =
+ arg_show_all * OUTPUT_SHOW_ALL |
+ have_pager * OUTPUT_FULL_WIDTH |
+ on_tty() * OUTPUT_COLOR;
if (need_seek) {
r = sd_journal_next(j);
line ++;
- r = output_journal(j, arg_output, line, 0, arg_show_all);
+ r = output_journal(j, arg_output, line, 0, flags);
if (r < 0)
goto finish;