From: Karel Zak Date: Thu, 2 Jun 2016 10:31:45 +0000 (+0200) Subject: lib/ttyutils: use stdout for get_terminal_width() X-Git-Tag: v2.29-rc1~209 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8f0ac5792191499292a2d23c8ebd743695af70b7;p=thirdparty%2Futil-linux.git lib/ttyutils: use stdout for get_terminal_width() We use the function to be sure with *output* width. Note that the current code (with STDIN) is broken because in some situations libsmartcols is not able to detect terminal width and fall back to default 80. Signed-off-by: Karel Zak --- diff --git a/lib/ttyutils.c b/lib/ttyutils.c index 1a1d8bc388..4e62c20d67 100644 --- a/lib/ttyutils.c +++ b/lib/ttyutils.c @@ -15,11 +15,11 @@ int get_terminal_width(int default_width) #if defined(TIOCGWINSZ) struct winsize w_win; - if (ioctl (STDIN_FILENO, TIOCGWINSZ, &w_win) == 0) + if (ioctl (STDOUT_FILENO, TIOCGWINSZ, &w_win) == 0) width = w_win.ws_col; #elif defined(TIOCGSIZE) struct ttysize t_win; - if (ioctl (STDIN_FILENO, TIOCGSIZE, &t_win) == 0) + if (ioctl (STDOUT_FILENO, TIOCGSIZE, &t_win) == 0) width = t_win.ts_cols; #endif diff --git a/libsmartcols/src/table_print.c b/libsmartcols/src/table_print.c index 20b015344f..8034a7834f 100644 --- a/libsmartcols/src/table_print.c +++ b/libsmartcols/src/table_print.c @@ -1255,7 +1255,7 @@ static int initialize_printing(struct libscols_table *tb, struct libscols_buffer if (tb->is_term) { tb->termwidth = get_terminal_width(80); - if (tb->termreduce < tb->termwidth) + if (tb->termreduce > 0 && tb->termreduce < tb->termwidth) tb->termwidth -= tb->termreduce; bufsz = tb->termwidth; } else