summaryrefslogtreecommitdiffstats
path: root/src/pacman/package.c
diff options
context:
space:
mode:
authorDave Reisner <dreisner@archlinux.org>2014-06-21 14:44:01 +0200
committerAllan McRae <allan@archlinux.org>2014-06-29 03:04:17 +0200
commit357b9a24a96478b7bcaaea8633f8f6a519f8903c (patch)
tree28cdc687d3a12ab389d36758e828d17c1c13dde5 /src/pacman/package.c
parent07647d3d43d418f9efcf7c83a2079b9b673a7bfa (diff)
downloadpacman-357b9a24a96478b7bcaaea8633f8f6a519f8903c.tar.gz
pacman-357b9a24a96478b7bcaaea8633f8f6a519f8903c.tar.xz
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.
Diffstat (limited to 'src/pacman/package.c')
-rw-r--r--src/pacman/package.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/pacman/package.c b/src/pacman/package.c
index 3be996db..1ac0fcae 100644
--- a/src/pacman/package.c
+++ b/src/pacman/package.c
@@ -140,7 +140,7 @@ void dump_pkg_full(alpm_pkg_t *pkg, int extra)
optionalfor = alpm_pkg_compute_optionalfor(pkg);
}
- cols = getcols(fileno(stdout));
+ cols = getcols();
/* actual output */
if(from == ALPM_PKG_FROM_SYNCDB) {
@@ -404,7 +404,7 @@ int dump_pkg_search(alpm_db_t *db, alpm_list_t *targets, int show_status)
return 1;
}
- cols = getcols(fileno(stdout));
+ cols = getcols();
for(i = searchlist; i; i = alpm_list_next(i)) {
alpm_list_t *grp;
alpm_pkg_t *pkg = i->data;