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...)
This commit was genuinely broken at the time (not related to our build system): scripts/config/mkconfigs.c (2005-08-01 - 2006-10-05 arasi) uretilen bbconfigopts.h icine .config satirlarini kacissiz, ham newline'larla gömüyordu - gecerli C degildi, busybox'un kendi bb_mkdep araci bile parse edemiyordu (7d219aab7 ile duzeltildi, mkconfigs shell scripte cevrildi)
No binary (build failed)
—
(log yok)
| @@ -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); | |
| @@ -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 */ | |