diff options
author | Boris Egorov | 2016-01-05 17:17:58 +0100 |
---|---|---|
committer | Karel Zak | 2016-01-06 12:22:07 +0100 |
commit | 43b4f7ea5f96f861787c30fdd6933daf472fcc02 (patch) | |
tree | ae4b3fab8219c501b5216fbfcca394cf74b1c406 | |
parent | mount.8: Add documentation of overlay mount options (diff) | |
download | kernel-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.c | 4 | ||||
-rw-r--r-- | include/ttyutils.h | 2 | ||||
-rw-r--r-- | lib/ttyutils.c | 50 | ||||
-rw-r--r-- | libsmartcols/src/table_print.c | 4 | ||||
-rw-r--r-- | misc-utils/blkid.c | 6 | ||||
-rw-r--r-- | misc-utils/kill.c | 6 | ||||
-rw-r--r-- | text-utils/column.c | 4 |
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) |