From: Lennart Poettering Date: Thu, 18 Oct 2012 21:59:41 +0000 (+0200) Subject: util: unify usage of on_tty() in util.c X-Git-Tag: v195~48 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=8481248b9fbddc6d5e6ff26eb23505ef13dc85f7;hp=28917d7dc711746795f7e6468c06c1983a5cdf53;ds=sidebyside util: unify usage of on_tty() in util.c --- diff --git a/TODO b/TODO index bb7d8eea2..1c33ead22 100644 --- a/TODO +++ b/TODO @@ -19,6 +19,8 @@ F18: Features: +* drop --follow from systemctl + * don't show cgroup in "systemctl status" if empty/non-existant, especially for foreign .mount units * timedated: export boolean that clarifies whether NTP is even available diff --git a/src/journal/journal-verify.c b/src/journal/journal-verify.c index 551f04af3..1a67d5a04 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 d6f19e900..f4b651855 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 97c6617d7..24941fef3 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 6799787e8..488a12c76 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 462b541b4..527a5800f 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 662c3d1f3..e19f76c1e 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 82c801e4d..d77d534e0 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;