Teach get_terminal_width_height to fall back to $LINES and $COLUMNS when
used via things like a serial console.
This commit is contained in:
@ -6,7 +6,7 @@
|
||||
* Copyright (C) 2006 Rob Landley
|
||||
* Copyright (C) 2006 Denis Vlasenko
|
||||
*
|
||||
* Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
|
||||
* Licensed under GPL version 2, see file LICENSE in this tarball for details.
|
||||
*/
|
||||
|
||||
#include "busybox.h"
|
||||
@ -494,3 +494,26 @@ void xstat(char *name, struct stat *stat_buf)
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef L_get_terminal_width_height
|
||||
/* It is perfectly ok to pass in a NULL for either width or for
|
||||
* * 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 };
|
||||
int ret = ioctl(fd, TIOCGWINSZ, &win);
|
||||
if (!win.ws_row) {
|
||||
char *s = getenv("LINES");
|
||||
if (s) win.ws_row = atoi(s);
|
||||
}
|
||||
if (win.ws_row <= 1) win.ws_row = 24;
|
||||
if (!win.ws_col) {
|
||||
char *s = getenv("COLUMNS");
|
||||
if (s) win.ws_col = atoi(s);
|
||||
}
|
||||
if (win.ws_col <= 1) win.ws_col = 80;
|
||||
if (height) *height = (int) win.ws_row;
|
||||
if (width) *width = (int) win.ws_col;
|
||||
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user