diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/pacman/callback.c | 18 | ||||
-rw-r--r-- | src/pacman/util.c | 22 | ||||
-rw-r--r-- | src/pacman/util.h | 2 |
3 files changed, 22 insertions, 20 deletions
diff --git a/src/pacman/callback.c b/src/pacman/callback.c index d3dc7440..f1c314f0 100644 --- a/src/pacman/callback.c +++ b/src/pacman/callback.c @@ -351,7 +351,9 @@ void cb_trans_progress(pmtransprog_t event, const char *pkgname, int percent, int len, wclen, wcwid, padwid; wchar_t *wcstr; - if(config->noprogressbar) { + const int cols = getcols(0); + + if(config->noprogressbar || cols == 0) { return; } @@ -397,7 +399,7 @@ void cb_trans_progress(pmtransprog_t event, const char *pkgname, int percent, return; } - infolen = getcols() * 6 / 10; + infolen = cols * 6 / 10; if(infolen < 50) { infolen = 50; } @@ -454,7 +456,7 @@ void cb_trans_progress(pmtransprog_t event, const char *pkgname, int percent, free(wcstr); /* call refactored fill progress function */ - fill_progress(percent, percent, getcols() - infolen); + fill_progress(percent, percent, cols - infolen); if(percent == 100) { alpm_list_t *i = NULL; @@ -498,7 +500,9 @@ void cb_dl_progress(const char *filename, off_t file_xfered, off_t file_total) const char *rate_label, *xfered_label; int file_percent = 0, total_percent = 0; - if(config->noprogressbar || file_total == -1) { + const int cols = getcols(0); + + if(config->noprogressbar || cols == 0 || file_total == -1) { if(file_xfered == 0) { printf(_("downloading %s...\n"), filename); fflush(stdout); @@ -506,7 +510,7 @@ void cb_dl_progress(const char *filename, off_t file_xfered, off_t file_total) return; } - infolen = getcols() * 6 / 10; + infolen = cols * 6 / 10; if(infolen < 50) { infolen = 50; } @@ -639,9 +643,9 @@ void cb_dl_progress(const char *filename, off_t file_xfered, off_t file_total) free(wcfname); if(totaldownload) { - fill_progress(file_percent, total_percent, getcols() - infolen); + fill_progress(file_percent, total_percent, cols - infolen); } else { - fill_progress(file_percent, file_percent, getcols() - infolen); + fill_progress(file_percent, file_percent, cols - infolen); } return; } diff --git a/src/pacman/util.c b/src/pacman/util.c index bfc707ca..3233f5f7 100644 --- a/src/pacman/util.c +++ b/src/pacman/util.c @@ -115,7 +115,7 @@ static int flush_term_input(void) { } /* gets the current screen column width */ -int getcols(void) +int getcols(int def) { #ifdef TIOCGSIZE struct ttysize win; @@ -128,7 +128,7 @@ int getcols(void) return win.ws_col; } #endif - return 0; + return def; } /* does the same thing as 'rm -rf' */ @@ -223,14 +223,13 @@ void indentprint(const char *str, int indent) { wchar_t *wcstr; const wchar_t *p; - int len, cidx, cols; + int len, cidx; + const int cols = getcols(0); if(!str) { return; } - cols = getcols(); - /* if we're not a tty, print without indenting */ if(cols == 0) { printf("%s", str); @@ -439,8 +438,6 @@ static int string_length(const char *s) void string_display(const char *title, const char *string) { - int len = 0; - if(title) { printf("%s ", title); } @@ -448,7 +445,7 @@ void string_display(const char *title, const char *string) printf(_("None")); } else { /* compute the length of title + a space */ - len = string_length(title) + 1; + int len = string_length(title) + 1; indentprint(string, len); } printf("\n"); @@ -516,7 +513,7 @@ static alpm_list_t *table_create_format(const alpm_list_t *header, alpm_list_free(longest_strs); /* return NULL if terminal is not wide enough */ - if(totalwidth > getcols()) { + if(totalwidth > getcols(80)) { fprintf(stderr, _("insufficient columns available for table display\n")); FREELIST(formats); return(NULL); @@ -568,7 +565,7 @@ int table_display(const char *title, const alpm_list_t *header, void list_display(const char *title, const alpm_list_t *list) { const alpm_list_t *i; - int cols, len = 0; + int len = 0; if(title) { len = string_length(title) + 1; @@ -578,11 +575,12 @@ void list_display(const char *title, const alpm_list_t *list) if(!list) { printf("%s\n", _("None")); } else { + int cols; + const int maxcols = getcols(80); for(i = list, cols = len; i; i = alpm_list_next(i)) { char *str = alpm_list_getdata(i); int s = string_length(str); - int maxcols = getcols(); - if(maxcols > 0 && (cols + s + 2) >= maxcols) { + if(cols + s + 2 >= maxcols) { int j; cols = len; printf("\n"); diff --git a/src/pacman/util.h b/src/pacman/util.h index d8ae7d80..95c1ce92 100644 --- a/src/pacman/util.h +++ b/src/pacman/util.h @@ -42,7 +42,7 @@ int trans_init(pmtransflag_t flags); int trans_release(void); int needs_root(void); -int getcols(void); +int getcols(int def); int rmrf(const char *path); const char *mbasename(const char *path); char *mdirname(const char *path); |