commit:     b4e37543f21958c5e5981c2b3694213d150d5bcd
Author:     Fabian Groffen <grobian <AT> gentoo <DOT> org>
AuthorDate: Thu Jun 13 10:51:56 2019 +0000
Commit:     Fabian Groffen <grobian <AT> gentoo <DOT> org>
CommitDate: Thu Jun 13 10:51:56 2019 +0000
URL:        https://gitweb.gentoo.org/proj/portage-utils.git/commit/?id=b4e37543

main: disable word wrapping when stdout is not a terminal

Signed-off-by: Fabian Groffen <grobian <AT> gentoo.org>

 main.c      | 5 +++--
 qmanifest.c | 2 +-
 quse.c      | 8 ++++++--
 3 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/main.c b/main.c
index f5f7b57..f9dfb6d 100644
--- a/main.c
+++ b/main.c
@@ -778,7 +778,6 @@ int main(int argc, char **argv)
        struct winsize winsz;
 
        ioctl(0, TIOCGWINSZ, &winsz);
-       if (winsz.ws_col > 0)
        twidth = winsz.ws_col > 0 ? (int)winsz.ws_col : 80;
 
        warnout = stderr;
@@ -790,8 +789,10 @@ int main(int argc, char **argv)
        textdomain(argv0);
 
        if (fstat(fileno(stdout), &st) != -1)
-               if (!isatty(fileno(stdout)))
+               if (!isatty(fileno(stdout))) {
                        no_colors();
+                       twidth = 0;
+               }
        if ((getenv("TERM") == NULL) || (strcmp(getenv("TERM"), "dumb") == 0))
                no_colors();
 

diff --git a/qmanifest.c b/qmanifest.c
index 7ca2b40..21254c3 100644
--- a/qmanifest.c
+++ b/qmanifest.c
@@ -1505,7 +1505,7 @@ format_line(const char *pfx, const char *msg)
        if (*pfx == '-') {
                fprintf(stdout, "%s%s%s%s\n", pfx, RED, msg, NORM);
        } else {
-               if (!verbose && msglen > (size_t)twidth) {
+               if (!verbose && twidth > 0 && msglen > (size_t)twidth) {
                        int to_remove = 3 + (msglen - twidth);
                        int first_half = msglen / 2 - to_remove / 2;
                        int remainder = msglen / 2 + (to_remove + 1) / 2;

diff --git a/quse.c b/quse.c
index f1d52ae..8a9f78a 100644
--- a/quse.c
+++ b/quse.c
@@ -600,8 +600,12 @@ quse_results_cb(tree_pkg_ctx *pkg_ctx, void *priv)
                                        quse_search_profiles_desc(portdirfd, 
&us);
 
                        /* calculate available space in the terminal to print
-                        * descriptions */
-                       len = twidth - maxlen - 2 - 1 - 2;
+                        * descriptions, assume this makes sense from 10 chars 
*/
+                       if (twidth > maxlen + 2 + 1 + 2 + 10) {
+                               len = twidth - maxlen - 2 - 1 - 2;
+                       } else {
+                               len = 0;
+                       }
 
                        for (i = 0; i < cnt; i++) {
                                match = use != NULL && contains_set(us.argv[i], 
use);

Reply via email to