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 is contained in:
parent
37adefc670
commit
e0537f6194
@ -474,7 +474,7 @@ extern void print_login_prompt(void);
|
|||||||
|
|
||||||
extern void vfork_daemon_rexec(int nochdir, int noclose,
|
extern void vfork_daemon_rexec(int nochdir, int noclose,
|
||||||
int argc, char **argv, char *foreground_opt);
|
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 unsigned long get_ug_id(const char *s, long (*my_getxxnam)(const char *));
|
||||||
extern void xregcomp(regex_t *preg, const char *regex, int cflags);
|
extern void xregcomp(regex_t *preg, const char *regex, int cflags);
|
||||||
|
|
||||||
|
@ -29,30 +29,15 @@
|
|||||||
#include "busybox.h"
|
#include "busybox.h"
|
||||||
|
|
||||||
/* It is perfectly ok to pass in a NULL for either width or for
|
/* 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
|
* height, in which case that value will not be set. */
|
||||||
* perfectly ok to have CONFIG_FEATURE_AUTOWIDTH disabled, in
|
int get_terminal_width_height(int fd, int *width, int *height)
|
||||||
* which case you will always get 80x24 */
|
|
||||||
void get_terminal_width_height(int fd, int *width, int *height)
|
|
||||||
{
|
{
|
||||||
struct winsize win = { 0, 0, 0, 0 };
|
struct winsize win = { 0, 0, 0, 0 };
|
||||||
#ifdef CONFIG_FEATURE_AUTOWIDTH
|
int ret = ioctl(fd, TIOCGWINSZ, &win);
|
||||||
if (ioctl(fd, TIOCGWINSZ, &win) != 0) {
|
if (win.ws_row <= 1) win.ws_row = 24;
|
||||||
win.ws_row = 24;
|
if (win.ws_col <= 1) win.ws_col = 80;
|
||||||
win.ws_col = 80;
|
if (height) *height = (int) win.ws_row;
|
||||||
}
|
if (width) *width = (int) win.ws_col;
|
||||||
#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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* END CODE */
|
/* END CODE */
|
||||||
|
Loading…
Reference in New Issue
Block a user