summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/journal/journal-verify.c4
-rw-r--r--src/journal/journalctl.c21
-rw-r--r--src/login/loginctl.c17
-rw-r--r--src/shared/pager.c2
-rw-r--r--src/shared/util.c16
-rw-r--r--src/shared/util.h1
-rw-r--r--src/systemctl/systemctl.c18
7 files changed, 17 insertions, 62 deletions
diff --git a/src/journal/journal-verify.c b/src/journal/journal-verify.c
index 551f04af35..1a67d5a04b 100644
--- a/src/journal/journal-verify.c
+++ b/src/journal/journal-verify.c
@@ -178,7 +178,7 @@ static void draw_progress(uint64_t p, usec_t *last_usec) {
unsigned n, i, j, k;
usec_t z, x;
- if (!isatty(STDOUT_FILENO))
+ if (!on_tty())
return;
z = now(CLOCK_MONOTONIC);
@@ -212,7 +212,7 @@ static void draw_progress(uint64_t p, usec_t *last_usec) {
static void flush_progress(void) {
unsigned n, i;
- if (!isatty(STDOUT_FILENO))
+ if (!on_tty())
return;
n = (3 * columns()) / 4;
diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c
index d6f19e900a..f4b6518557 100644
--- a/src/journal/journalctl.c
+++ b/src/journal/journalctl.c
@@ -400,21 +400,6 @@ static int parse_argv(int argc, char *argv[]) {
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;
@@ -697,7 +682,7 @@ static int setup_keys(void) {
goto finish;
}
- if (isatty(STDOUT_FILENO)) {
+ if (on_tty()) {
fprintf(stderr,
"\n"
"The new key pair has been generated. The " ANSI_HIGHLIGHT_ON "secret sealing key" ANSI_HIGHLIGHT_OFF " has been written to\n"
@@ -719,7 +704,7 @@ static int setup_keys(void) {
printf("/%llx-%llx\n", (unsigned long long) n, (unsigned long long) arg_interval);
- if (isatty(STDOUT_FILENO)) {
+ if (on_tty()) {
char tsb[FORMAT_TIMESPAN_MAX], *hn;
fprintf(stderr,
@@ -982,8 +967,6 @@ int main(int argc, char *argv[]) {
goto finish;
}
- on_tty();
-
if (!arg_no_pager && !arg_follow)
pager_open();
diff --git a/src/login/loginctl.c b/src/login/loginctl.c
index 97c6617d7d..24941fef34 100644
--- a/src/login/loginctl.c
+++ b/src/login/loginctl.c
@@ -50,26 +50,9 @@ static enum transport {
static bool arg_ask_password = true;
static const char *arg_host = NULL;
-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 void pager_open_if_enabled(void) {
/* Cache result before we open the pager */
- on_tty();
-
if (arg_no_pager)
return;
diff --git a/src/shared/pager.c b/src/shared/pager.c
index 6799787e85..488a12c763 100644
--- a/src/shared/pager.c
+++ b/src/shared/pager.c
@@ -57,7 +57,7 @@ int pager_open(void) {
if (!*pager || streq(pager, "cat"))
return 0;
- if (isatty(STDOUT_FILENO) <= 0)
+ if (!on_tty())
return 0;
/* Determine and cache number of columns before we spawn the
diff --git a/src/shared/util.c b/src/shared/util.c
index 462b541b41..527a5800fe 100644
--- a/src/shared/util.c
+++ b/src/shared/util.c
@@ -2175,28 +2175,25 @@ int read_one_char(FILE *f, char *ret, usec_t t, bool *need_nl) {
}
int ask(char *ret, const char *replies, const char *text, ...) {
- bool on_tty;
assert(ret);
assert(replies);
assert(text);
- on_tty = isatty(STDOUT_FILENO);
-
for (;;) {
va_list ap;
char c;
int r;
bool need_nl = true;
- if (on_tty)
+ if (on_tty())
fputs(ANSI_HIGHLIGHT_ON, stdout);
va_start(ap, text);
vprintf(text, ap);
va_end(ap);
- if (on_tty)
+ if (on_tty())
fputs(ANSI_HIGHLIGHT_OFF, stdout);
fflush(stdout);
@@ -3820,6 +3817,15 @@ void columns_cache_reset(int signum) {
cached_columns = 0;
}
+bool on_tty(void) {
+ static int cached_on_tty = -1;
+
+ if (_unlikely_(cached_on_tty < 0))
+ cached_on_tty = isatty(STDOUT_FILENO) > 0;
+
+ return cached_on_tty;
+}
+
int fd_lines(int fd) {
struct winsize ws;
zero(ws);
diff --git a/src/shared/util.h b/src/shared/util.h
index 662c3d1f39..e19f76c1ea 100644
--- a/src/shared/util.h
+++ b/src/shared/util.h
@@ -385,6 +385,7 @@ int status_welcome(void);
int fd_columns(int fd);
unsigned columns(void);
void columns_cache_reset(int _unused_ signum);
+bool on_tty(void);
int fd_lines(int fd);
unsigned lines(void);
diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c
index 82c801e4d9..d77d534e0b 100644
--- a/src/systemctl/systemctl.c
+++ b/src/systemctl/systemctl.c
@@ -132,26 +132,8 @@ static bool private_bus = false;
static int daemon_reload(DBusConnection *bus, char **args);
static void halt_now(enum action a);
-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 void pager_open_if_enabled(void) {
- /* Cache result before we open the pager */
- on_tty();
-
if (arg_no_pager)
return;