mirror of
https://github.com/moparisthebest/pacman
synced 2024-11-16 06:15:08 -05:00
Fix list_display on non-ttys and other output fixes
commit c1f742d775
broke what was one of the tenants of out output-
if piping pacman output somewhere else, we shouldn't ever try to
line-wrap and indent print our output. This makes it easier for tools to
use output from pacman -Ss, -Qs, -Qi, etc. list_display() unfortunately
was given a default value of 80 rather than 0, so fix this.
Next, make some additional changes that ensure we don't insert an
unnecessary blank line if for some crazy reason the indent level (such
as on -Qi output) is greater than the number of columns. Accomplish this
by printing the first item unconditionally as we do in
list_display_linebreak().
Finally, teach indentprint to not wrap if the number of columns is less
than the indent level, this prevents some forms of ridiculous output
such as the following:
Install Date : Wed
08
Jun
2011
04:39:19
AM
CDT
Signed-off-by: Dan McGee <dan@archlinux.org>
This commit is contained in:
parent
b059040011
commit
895a888865
@ -216,8 +216,9 @@ void indentprint(const char *str, int indent)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* if we're not a tty, print without indenting */
|
/* if we're not a tty, or our tty is not wide enough that wrapping even makes
|
||||||
if(cols == 0) {
|
* sense, print without indenting */
|
||||||
|
if(cols == 0 || indent > cols) {
|
||||||
printf("%s", str);
|
printf("%s", str);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -450,12 +451,16 @@ void list_display(const char *title, const alpm_list_t *list)
|
|||||||
if(!list) {
|
if(!list) {
|
||||||
printf("%s\n", _("None"));
|
printf("%s\n", _("None"));
|
||||||
} else {
|
} else {
|
||||||
int cols;
|
const int maxcols = getcols(0);
|
||||||
const int maxcols = getcols(80);
|
int cols = len;
|
||||||
for(i = list, cols = len; i; i = alpm_list_next(i)) {
|
const char *str = alpm_list_getdata(list);
|
||||||
char *str = alpm_list_getdata(i);
|
printf("%s", str);
|
||||||
|
cols += string_length(str);
|
||||||
|
for(i = alpm_list_next(list), cols = len; i; i = alpm_list_next(i)) {
|
||||||
|
const char *str = alpm_list_getdata(i);
|
||||||
int s = string_length(str);
|
int s = string_length(str);
|
||||||
if(cols + s + 2 >= maxcols) {
|
/* wrap only if we have enough usable column space */
|
||||||
|
if(maxcols > len && cols + s + 2 >= maxcols) {
|
||||||
int j;
|
int j;
|
||||||
cols = len;
|
cols = len;
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
Loading…
Reference in New Issue
Block a user