summaryrefslogtreecommitdiffstats
path: root/lib/ttyutils.c
diff options
context:
space:
mode:
authorBoris Egorov2016-01-05 17:17:58 +0100
committerKarel Zak2016-01-06 12:22:07 +0100
commit43b4f7ea5f96f861787c30fdd6933daf472fcc02 (patch)
treeae4b3fab8219c501b5216fbfcca394cf74b1c406 /lib/ttyutils.c
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>
Diffstat (limited to 'lib/ttyutils.c')
-rw-r--r--lib/ttyutils.c50
1 files changed, 25 insertions, 25 deletions
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;
}