diff options
author | Denis Vlasenko | 2009-03-19 02:35:44 +0000 |
---|---|---|
committer | Denis Vlasenko | 2009-03-19 02:35:44 +0000 |
commit | 5981ba5843ee0696c3fc7ecc192ff09e63e848f8 (patch) | |
tree | a5f560fa0534d91c34d59a2e4f93c2606249e694 /init | |
parent | 5c2b81470d0d2e0734866c57b29c2e2fa3e3bc13 (diff) | |
download | busybox-5981ba5843ee0696c3fc7ecc192ff09e63e848f8.zip busybox-5981ba5843ee0696c3fc7ecc192ff09e63e848f8.tar.gz |
init: test for vt terminal with VT_OPENQRY,
assume that anything else is TERM=vt102, not TERM=linux.
(Serial console test is less correct)
Tentatively closes bug 195.
function old new delta
init_main 946 919 -27
Diffstat (limited to 'init')
-rw-r--r-- | init/init.c | 32 |
1 files changed, 5 insertions, 27 deletions
diff --git a/init/init.c b/init/init.c index 5c344cb..ce26428 100644 --- a/init/init.c +++ b/init/init.c @@ -14,6 +14,7 @@ #include <paths.h> #include <sys/reboot.h> #include <sys/resource.h> +#include <linux/vt.h> /* Was a CONFIG_xxx option. A lot of people were building @@ -161,33 +162,9 @@ static void message(int where, const char *fmt, ...) } } -/* From <linux/serial.h> */ -struct serial_struct { - int type; - int line; - unsigned int port; - int irq; - int flags; - int xmit_fifo_size; - int custom_divisor; - int baud_base; - unsigned short close_delay; - char io_type; - char reserved_char[1]; - int hub6; - unsigned short closing_wait; /* time to wait before closing */ - unsigned short closing_wait2; /* no longer used... */ - unsigned char *iomem_base; - unsigned short iomem_reg_shift; - unsigned int port_high; - unsigned long iomap_base; /* cookie passed into ioremap */ - int reserved[1]; - /* Paranoia (imagine 64bit kernel overwriting 32bit userspace stack) */ - uint32_t bbox_reserved[16]; -}; static void console_init(void) { - struct serial_struct sr; + int vtno; char *s; s = getenv("CONSOLE"); @@ -211,8 +188,9 @@ static void console_init(void) } s = getenv("TERM"); - if (ioctl(STDIN_FILENO, TIOCGSERIAL, &sr) == 0) { - /* Force the TERM setting to vt102 for serial console + if (ioctl(STDIN_FILENO, VT_OPENQRY, &vtno) != 0) { + /* Not a linux terminal, probably serial console. + * Force the TERM setting to vt102 * if TERM is set to linux (the default) */ if (!s || strcmp(s, "linux") == 0) putenv((char*)"TERM=vt102"); |