From e0537f6194cf37651c6e7ac3033226f09dab7557 Mon Sep 17 00:00:00 2001 From: Rob Landley Date: Thu, 1 Sep 2005 02:57:45 +0000 Subject: Bernhard Fischer suggested that get_terminal_width_height() should return the result of the ioctl so callers can tell if we have a tty. (0 means we have a tty, nonzero means the ioctl couldn't find size info and we fake 80x24. Really we should fake 80x25, but oh well...) --- include/libbb.h | 2 +- libbb/get_terminal_width_height.c | 29 +++++++---------------------- 2 files changed, 8 insertions(+), 23 deletions(-) diff --git a/include/libbb.h b/include/libbb.h index 14670f0..077b310 100644 --- a/include/libbb.h +++ b/include/libbb.h @@ -474,7 +474,7 @@ extern void print_login_prompt(void); extern void vfork_daemon_rexec(int nochdir, int noclose, int argc, char **argv, char *foreground_opt); -extern void get_terminal_width_height(int fd, int *width, int *height); +extern int get_terminal_width_height(int fd, int *width, int *height); extern unsigned long get_ug_id(const char *s, long (*my_getxxnam)(const char *)); extern void xregcomp(regex_t *preg, const char *regex, int cflags); diff --git a/libbb/get_terminal_width_height.c b/libbb/get_terminal_width_height.c index 7a1af6d..ce3e83c 100644 --- a/libbb/get_terminal_width_height.c +++ b/libbb/get_terminal_width_height.c @@ -29,30 +29,15 @@ #include "busybox.h" /* It is perfectly ok to pass in a NULL for either width or for - * height, in which case that value will not be set. It is also - * perfectly ok to have CONFIG_FEATURE_AUTOWIDTH disabled, in - * which case you will always get 80x24 */ -void get_terminal_width_height(int fd, int *width, int *height) + * height, in which case that value will not be set. */ +int get_terminal_width_height(int fd, int *width, int *height) { struct winsize win = { 0, 0, 0, 0 }; -#ifdef CONFIG_FEATURE_AUTOWIDTH - if (ioctl(fd, TIOCGWINSZ, &win) != 0) { - win.ws_row = 24; - win.ws_col = 80; - } -#endif - if (win.ws_row <= 1) { - win.ws_row = 24; - } - if (win.ws_col <= 1) { - win.ws_col = 80; - } - if (height) { - *height = (int) win.ws_row; - } - if (width) { - *width = (int) win.ws_col; - } + int ret = ioctl(fd, TIOCGWINSZ, &win); + if (win.ws_row <= 1) win.ws_row = 24; + if (win.ws_col <= 1) win.ws_col = 80; + if (height) *height = (int) win.ws_row; + if (width) *width = (int) win.ws_col; } /* END CODE */ -- cgit v1.1