67 lines
1.9 KiB
Diff
67 lines
1.9 KiB
Diff
|
From bc97851fdbee84af1eb19a987b9bc08167b8d6f7 Mon Sep 17 00:00:00 2001
|
||
|
From: Juan RP <xtraeme@voidlinux.eu>
|
||
|
Date: Wed, 15 Apr 2015 18:40:34 +0200
|
||
|
Subject: [PATCH] xbps-query(8): do not truncate output if stdout is not a tty.
|
||
|
|
||
|
---
|
||
|
NEWS | 4 ++++
|
||
|
bin/xbps-install/util.c | 14 ++++++++++----
|
||
|
bin/xbps-query/list.c | 2 +-
|
||
|
bin/xbps-query/search.c | 2 +-
|
||
|
4 files changed, 16 insertions(+), 6 deletions(-)
|
||
|
|
||
|
diff --git a/bin/xbps-install/util.c b/bin/xbps-install/util.c
|
||
|
index 1ce45d8..3c05738 100644
|
||
|
--- bin/xbps-install/util.c
|
||
|
+++ bin/xbps-install/util.c
|
||
|
@@ -41,10 +41,16 @@ get_maxcols(void)
|
||
|
{
|
||
|
struct winsize ws;
|
||
|
|
||
|
- if (ioctl(STDOUT_FILENO, TIOCGWINSZ, &ws) == 0)
|
||
|
- return ws.ws_col ? ws.ws_col : 80;
|
||
|
-
|
||
|
- return 80;
|
||
|
+ if (!isatty(STDOUT_FILENO) && errno == ENOTTY) {
|
||
|
+ /* not a TTY, don't use any limit */
|
||
|
+ return 0;
|
||
|
+ }
|
||
|
+ if (ioctl(STDOUT_FILENO, TIOCGWINSZ, &ws) == -1) {
|
||
|
+ /* 80x24 terminal */
|
||
|
+ return 80;
|
||
|
+ }
|
||
|
+ /* TTY columns */
|
||
|
+ return ws.ws_col;
|
||
|
}
|
||
|
|
||
|
void
|
||
|
diff --git a/bin/xbps-query/list.c b/bin/xbps-query/list.c
|
||
|
index 45e0f07..542b870 100644
|
||
|
--- bin/xbps-query/list.c
|
||
|
+++ bin/xbps-query/list.c
|
||
|
@@ -72,7 +72,7 @@ list_pkgs_in_dict(struct xbps_handle *xhp _unused,
|
||
|
|
||
|
tmp[i] = '\0';
|
||
|
len = strlen(tmp) + strlen(short_desc) + 2;
|
||
|
- if (len > lpc->maxcols) {
|
||
|
+ if (lpc->maxcols && len > lpc->maxcols) {
|
||
|
out = malloc(lpc->maxcols+1);
|
||
|
assert(out);
|
||
|
snprintf(out, lpc->maxcols - 3,
|
||
|
diff --git a/bin/xbps-query/search.c b/bin/xbps-query/search.c
|
||
|
index c41ef5e..c07f84c 100644
|
||
|
--- bin/xbps-query/search.c
|
||
|
+++ bin/xbps-query/search.c
|
||
|
@@ -80,7 +80,7 @@ print_results(struct xbps_handle *xhp, struct search_data *sd)
|
||
|
inststr = "[-]";
|
||
|
|
||
|
len = strlen(inststr) + strlen(tmp) + strlen(desc) + 3;
|
||
|
- if ((int)len > sd->maxcols) {
|
||
|
+ if (sd->maxcols && (int)len > sd->maxcols) {
|
||
|
out = malloc(sd->maxcols+1);
|
||
|
assert(out);
|
||
|
snprintf(out, sd->maxcols-3, "%s %s %s",
|
||
|
--
|
||
|
2.3.5
|
||
|
|