util: unify usage of on_tty() in util.c

This commit is contained in:
Lennart Poettering 2012-10-18 23:59:41 +02:00
parent 28917d7dc7
commit 8481248b9f
8 changed files with 19 additions and 62 deletions

2
TODO
View File

@ -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

View File

@ -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;

View File

@ -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();

View File

@ -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;

View File

@ -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

View File

@ -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);

View File

@ -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);

View File

@ -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;