summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenis Vlasenko2009-03-19 02:35:44 +0000
committerDenis Vlasenko2009-03-19 02:35:44 +0000
commit5981ba5843ee0696c3fc7ecc192ff09e63e848f8 (patch)
treea5f560fa0534d91c34d59a2e4f93c2606249e694
parent5c2b81470d0d2e0734866c57b29c2e2fa3e3bc13 (diff)
downloadbusybox-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
-rw-r--r--init/init.c32
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");