From 357b9a24a96478b7bcaaea8633f8f6a519f8903c Mon Sep 17 00:00:00 2001 From: Dave Reisner Date: Sat, 21 Jun 2014 08:44:01 -0400 Subject: cache terminal size, add SIGWINCH handler to reset Refactoring getcols, yet again. We do the following: 1) Introduce a static global in src/pacman/util.c 2) getcols always prefers this cached value, but will derive it from the COLUMNS environment var, the characteristics of stdout, or a sane default (in that order). 3) Introduce a SIGWINCH signal handler to reset the cached value, meaning we only call ioctl when we don't know the value. On my machine, pacman -Syy goes from ~4300 ioctl calls to 3. --- src/pacman/util.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/pacman/util.h') diff --git a/src/pacman/util.h b/src/pacman/util.h index 4a31e89a..b591fbaf 100644 --- a/src/pacman/util.h +++ b/src/pacman/util.h @@ -49,7 +49,8 @@ int trans_init(alpm_transflag_t flags, int check_valid); int trans_release(void); int needs_root(void); int check_syncdbs(size_t need_repos, int check_valid); -unsigned short getcols(int fd); +unsigned short getcols(void); +void columns_cache_reset(void); int rmrf(const char *path); void indentprint(const char *str, unsigned short indent, unsigned short cols); size_t strtrim(char *str); -- cgit v1.2.3-24-g4f1b