aboutsummaryrefslogtreecommitdiff
path: root/init/init.c
diff options
context:
space:
mode:
Diffstat (limited to 'init/init.c')
-rw-r--r--init/init.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/init/init.c b/init/init.c
index 2eb8f1a54..1388c75cc 100644
--- a/init/init.c
+++ b/init/init.c
@@ -14,11 +14,19 @@
14#include <paths.h> 14#include <paths.h>
15#include <sys/reboot.h> 15#include <sys/reboot.h>
16#include <sys/resource.h> 16#include <sys/resource.h>
17#ifdef __linux__
17#include <linux/vt.h> 18#include <linux/vt.h>
19#endif
18#if ENABLE_FEATURE_UTMP 20#if ENABLE_FEATURE_UTMP
19# include <utmp.h> /* DEAD_PROCESS */ 21# include <utmp.h> /* DEAD_PROCESS */
20#endif 22#endif
21 23
24/* Used only for sanitizing purposes in set_sane_term() below. On systems where
25 * the baud rate is stored in a separate field, we can safely disable them. */
26#ifndef CBAUD
27# define CBAUD 0
28# define CBAUDEX 0
29#endif
22 30
23/* Was a CONFIG_xxx option. A lot of people were building 31/* Was a CONFIG_xxx option. A lot of people were building
24 * not fully functional init by switching it on! */ 32 * not fully functional init by switching it on! */
@@ -166,7 +174,9 @@ static void message(int where, const char *fmt, ...)
166 174
167static void console_init(void) 175static void console_init(void)
168{ 176{
177#ifdef VT_OPENQRY
169 int vtno; 178 int vtno;
179#endif
170 char *s; 180 char *s;
171 181
172 s = getenv("CONSOLE"); 182 s = getenv("CONSOLE");
@@ -190,6 +200,7 @@ static void console_init(void)
190 } 200 }
191 201
192 s = getenv("TERM"); 202 s = getenv("TERM");
203#ifdef VT_OPENQRY
193 if (ioctl(STDIN_FILENO, VT_OPENQRY, &vtno) != 0) { 204 if (ioctl(STDIN_FILENO, VT_OPENQRY, &vtno) != 0) {
194 /* Not a linux terminal, probably serial console. 205 /* Not a linux terminal, probably serial console.
195 * Force the TERM setting to vt102 206 * Force the TERM setting to vt102
@@ -198,7 +209,9 @@ static void console_init(void)
198 putenv((char*)"TERM=vt102"); 209 putenv((char*)"TERM=vt102");
199 if (!ENABLE_FEATURE_INIT_SYSLOG) 210 if (!ENABLE_FEATURE_INIT_SYSLOG)
200 log_console = NULL; 211 log_console = NULL;
201 } else if (!s) 212 } else
213#endif
214 if (!s)
202 putenv((char*)"TERM=linux"); 215 putenv((char*)"TERM=linux");
203} 216}
204 217
@@ -220,8 +233,10 @@ static void set_sane_term(void)
220 tty.c_cc[VSTOP] = 19; /* C-s */ 233 tty.c_cc[VSTOP] = 19; /* C-s */
221 tty.c_cc[VSUSP] = 26; /* C-z */ 234 tty.c_cc[VSUSP] = 26; /* C-z */
222 235
236#ifdef __linux__
223 /* use line discipline 0 */ 237 /* use line discipline 0 */
224 tty.c_line = 0; 238 tty.c_line = 0;
239#endif
225 240
226 /* Make it be sane */ 241 /* Make it be sane */
227 tty.c_cflag &= CBAUD | CBAUDEX | CSIZE | CSTOPB | PARENB | PARODD; 242 tty.c_cflag &= CBAUD | CBAUDEX | CSIZE | CSTOPB | PARENB | PARODD;