summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBoris Egorov2016-01-05 17:17:58 +0100
committerKarel Zak2016-01-06 12:22:07 +0100
commit43b4f7ea5f96f861787c30fdd6933daf472fcc02 (patch)
treeae4b3fab8219c501b5216fbfcca394cf74b1c406
parentmount.8: Add documentation of overlay mount options (diff)
downloadkernel-qcow2-util-linux-43b4f7ea5f96f861787c30fdd6933daf472fcc02.tar.gz
kernel-qcow2-util-linux-43b4f7ea5f96f861787c30fdd6933daf472fcc02.tar.xz
kernel-qcow2-util-linux-43b4f7ea5f96f861787c30fdd6933daf472fcc02.zip
lib/tty: Pass default width to get_terminal_width()
Almost any code calling get_terminal_width() checks returned width for non-positive values and sets it to some default value (say, 80). So, let's pass this default value directly to the function. [kzak@redhat.com: - get_terminal_width() refactoring] Signed-off-by: Karel Zak <kzak@redhat.com>
-rw-r--r--disk-utils/fdisk-list.c4
-rw-r--r--include/ttyutils.h2
-rw-r--r--lib/ttyutils.c50
-rw-r--r--libsmartcols/src/table_print.c4
-rw-r--r--misc-utils/blkid.c6
-rw-r--r--misc-utils/kill.c6
-rw-r--r--text-utils/column.c4
7 files changed, 32 insertions, 44 deletions
diff --git a/disk-utils/fdisk-list.c b/disk-utils/fdisk-list.c
index 2e491ca41..604d94391 100644
--- a/disk-utils/fdisk-list.c
+++ b/disk-utils/fdisk-list.c
@@ -405,9 +405,7 @@ void list_available_columns(FILE *out)
if (!cxt)
return;
- termwidth = get_terminal_width();
- if (termwidth <= 0)
- termwidth = 80;
+ termwidth = get_terminal_width(80);
fprintf(out, _("\nAvailable columns (for -o):\n"));
diff --git a/include/ttyutils.h b/include/ttyutils.h
index e842f9f0d..200e9a565 100644
--- a/include/ttyutils.h
+++ b/include/ttyutils.h
@@ -50,7 +50,7 @@ struct chardata {
(ptr)->capslock = 0; \
} while (0)
-extern int get_terminal_width(void);
+extern int get_terminal_width(int default_width);
extern int get_terminal_name(int fd, const char **path, const char **name,
const char **number);
diff --git a/lib/ttyutils.c b/lib/ttyutils.c
index ea551e26c..1a1d8bc38 100644
--- a/lib/ttyutils.c
+++ b/lib/ttyutils.c
@@ -9,37 +9,37 @@
#include "c.h"
#include "ttyutils.h"
-int get_terminal_width(void)
+int get_terminal_width(int default_width)
{
-#ifdef TIOCGSIZE
- struct ttysize t_win;
-#endif
-#ifdef TIOCGWINSZ
- struct winsize w_win;
-#endif
- const char *cp;
+ int width = 0;
-#ifdef TIOCGSIZE
- if (ioctl (STDIN_FILENO, TIOCGSIZE, &t_win) == 0)
- return t_win.ts_cols;
-#endif
-#ifdef TIOCGWINSZ
+#if defined(TIOCGWINSZ)
+ struct winsize w_win;
if (ioctl (STDIN_FILENO, TIOCGWINSZ, &w_win) == 0)
- return w_win.ws_col;
+ width = w_win.ws_col;
+#elif defined(TIOCGSIZE)
+ struct ttysize t_win;
+ if (ioctl (STDIN_FILENO, TIOCGSIZE, &t_win) == 0)
+ width = t_win.ts_cols;
#endif
- cp = getenv("COLUMNS");
- if (cp) {
- char *end = NULL;
- long c;
- errno = 0;
- c = strtol(cp, &end, 10);
+ if (width <= 0) {
+ const char *cp = getenv("COLUMNS");
+
+ if (cp) {
+ char *end = NULL;
+ long c;
+
+ errno = 0;
+ c = strtol(cp, &end, 10);
- if (errno == 0 && end && *end == '\0' && end > cp &&
- c > 0 && c <= INT_MAX)
- return c;
+ if (errno == 0 && end && *end == '\0' && end > cp &&
+ c > 0 && c <= INT_MAX)
+ width = c;
+ }
}
- return 0;
+
+ return width > 0 ? width : default_width;
}
int get_terminal_name(int fd,
@@ -88,7 +88,7 @@ int main(void)
fprintf(stderr, "tty name: %s\n", name);
fprintf(stderr, "tty number: %s\n", num);
}
- fprintf(stderr, "tty width: %d\n", get_terminal_width());
+ fprintf(stderr, "tty width: %d\n", get_terminal_width(0));
return EXIT_SUCCESS;
}
diff --git a/libsmartcols/src/table_print.c b/libsmartcols/src/table_print.c
index eca61bc04..daab10a82 100644
--- a/libsmartcols/src/table_print.c
+++ b/libsmartcols/src/table_print.c
@@ -1009,9 +1009,7 @@ int scols_print_table(struct libscols_table *tb)
scols_table_set_symbols(tb, NULL); /* use default */
tb->is_term = isatty(STDOUT_FILENO) ? 1 : 0;
- tb->termwidth = tb->is_term ? get_terminal_width() : 0;
- if (tb->termwidth <= 0)
- tb->termwidth = 80;
+ tb->termwidth = tb->is_term ? get_terminal_width(80) : 0;
tb->termwidth -= tb->termreduce;
bufsz = tb->termwidth;
diff --git a/misc-utils/blkid.c b/misc-utils/blkid.c
index c0be45746..eca35aa88 100644
--- a/misc-utils/blkid.c
+++ b/misc-utils/blkid.c
@@ -154,9 +154,7 @@ static void pretty_print_line(const char *device, const char *fs_type,
int len, w;
if (term_width < 0) {
- term_width = get_terminal_width();
- if (term_width <= 0)
- term_width = 80;
+ term_width = get_terminal_width(80);
}
if (term_width > 80) {
term_width -= 80;
@@ -192,7 +190,7 @@ static void pretty_print_dev(blkid_dev dev)
if (dev == NULL) {
pretty_print_line("device", "fs_type", "label",
"mount point", "UUID");
- for (len=get_terminal_width()-1; len > 0; len--)
+ for (len=get_terminal_width(0)-1; len > 0; len--)
fputc('-', stdout);
fputc('\n', stdout);
return;
diff --git a/misc-utils/kill.c b/misc-utils/kill.c
index 01730dbc5..92b2ae9cb 100644
--- a/misc-utils/kill.c
+++ b/misc-utils/kill.c
@@ -218,11 +218,7 @@ static void print_all_signals(FILE *fp, int pretty)
}
/* pretty print */
- width = get_terminal_width();
- if (width == 0)
- width = KILL_OUTPUT_WIDTH;
- else
- width -= 1;
+ width = get_terminal_width(KILL_OUTPUT_WIDTH + 1) - 1;
for (n = 0; n < ARRAY_SIZE(sys_signame); n++)
pretty_print_signal(fp, width, &lpos,
sys_signame[n].val, sys_signame[n].name);
diff --git a/text-utils/column.c b/text-utils/column.c
index 60d123123..4411d2d26 100644
--- a/text-utils/column.c
+++ b/text-utils/column.c
@@ -142,9 +142,7 @@ int main(int argc, char **argv)
textdomain(PACKAGE);
atexit(close_stdout);
- termwidth = get_terminal_width();
- if (termwidth <= 0)
- termwidth = 80;
+ termwidth = get_terminal_width(80);
colsep = mbs_to_wcs(" ");
while ((ch = getopt_long(argc, argv, "hVc:s:txo:", longopts, NULL)) != -1)