diff options
author | Lennart Poettering <lennart@poettering.net> | 2012-10-19 00:06:47 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2012-10-19 00:07:55 +0200 |
commit | ed757c0cb03eef50e8d9aeb4682401c3e9486f0b (patch) | |
tree | 3350f8e7efb3a713d23591983378b5fbebaea7f5 /src/shared/util.c | |
parent | 8481248b9fbddc6d5e6ff26eb23505ef13dc85f7 (diff) |
util: unify line caching and column caching
Diffstat (limited to 'src/shared/util.c')
-rw-r--r-- | src/shared/util.c | 50 |
1 files changed, 27 insertions, 23 deletions
diff --git a/src/shared/util.c b/src/shared/util.c index 527a5800fe..ef30cb2dab 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -73,6 +73,7 @@ int saved_argc = 0; char **saved_argv = NULL; static volatile unsigned cached_columns = 0; +static volatile unsigned cached_lines = 0; size_t page_size(void) { static __thread size_t pgsz = 0; @@ -3812,20 +3813,6 @@ unsigned columns(void) { return c; } -/* intended to be used as a SIGWINCH sighandler */ -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); @@ -3840,23 +3827,40 @@ int fd_lines(int fd) { } unsigned lines(void) { - static __thread int parsed_lines = 0; const char *e; + unsigned l; - if (_likely_(parsed_lines > 0)) - return parsed_lines; + if (_likely_(cached_lines > 0)) + return cached_lines; + l = 0; e = getenv("LINES"); if (e) - parsed_lines = atoi(e); + safe_atou(e, &l); - if (parsed_lines <= 0) - parsed_lines = fd_lines(STDOUT_FILENO); + if (l <= 0) + l = fd_lines(STDOUT_FILENO); - if (parsed_lines <= 0) - parsed_lines = 25; + if (l <= 0) + l = 24; - return parsed_lines; + cached_lines = l; + return cached_lines; +} + +/* intended to be used as a SIGWINCH sighandler */ +void columns_lines_cache_reset(int signum) { + cached_columns = 0; + cached_lines = 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 running_in_chroot(void) { |