diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2019-12-02 16:39:54 +0100 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2019-12-02 16:39:54 +0100 |
commit | 113c776f4d2ce4ead7c2d11a3ca62adeec9a2e34 (patch) | |
tree | 86ebfbdf565a9c2fe07b564c6e7e565281426b5a /init | |
parent | 259747caa7d86a5a46013b80a19b2ee2d4e0a73b (diff) | |
download | busybox-w32-113c776f4d2ce4ead7c2d11a3ca62adeec9a2e34.tar.gz busybox-w32-113c776f4d2ce4ead7c2d11a3ca62adeec9a2e34.tar.bz2 busybox-w32-113c776f4d2ce4ead7c2d11a3ca62adeec9a2e34.zip |
init: if tcgetattr() fails, don't even try to tcsetattr()
function old new delta
set_sane_term 111 114 +3
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'init')
-rw-r--r-- | init/init.c | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/init/init.c b/init/init.c index 0f3c5fa4d..db1d99add 100644 --- a/init/init.c +++ b/init/init.c | |||
@@ -145,13 +145,6 @@ | |||
145 | # include <sys/ucontext.h> | 145 | # include <sys/ucontext.h> |
146 | #endif | 146 | #endif |
147 | 147 | ||
148 | /* Used only for sanitizing purposes in set_sane_term() below. On systems where | ||
149 | * the baud rate is stored in a separate field, we can safely disable them. */ | ||
150 | #ifndef CBAUD | ||
151 | # define CBAUD 0 | ||
152 | # define CBAUDEX 0 | ||
153 | #endif | ||
154 | |||
155 | /* Was a CONFIG_xxx option. A lot of people were building | 148 | /* Was a CONFIG_xxx option. A lot of people were building |
156 | * not fully functional init by switching it on! */ | 149 | * not fully functional init by switching it on! */ |
157 | #define DEBUG_INIT 0 | 150 | #define DEBUG_INIT 0 |
@@ -347,7 +340,8 @@ static void set_sane_term(void) | |||
347 | { | 340 | { |
348 | struct termios tty; | 341 | struct termios tty; |
349 | 342 | ||
350 | tcgetattr(STDIN_FILENO, &tty); | 343 | if (tcgetattr(STDIN_FILENO, &tty) != 0) |
344 | return; | ||
351 | 345 | ||
352 | /* set control chars */ | 346 | /* set control chars */ |
353 | tty.c_cc[VINTR] = 3; /* C-c */ | 347 | tty.c_cc[VINTR] = 3; /* C-c */ |
@@ -365,10 +359,15 @@ static void set_sane_term(void) | |||
365 | #endif | 359 | #endif |
366 | 360 | ||
367 | /* Make it be sane */ | 361 | /* Make it be sane */ |
362 | /* On systems where the baud rate is stored in a separate field, we can safely disable these. */ | ||
363 | #ifndef CBAUD | ||
364 | # define CBAUD 0 | ||
365 | # define CBAUDEX 0 | ||
366 | #endif | ||
367 | /* Added CRTSCTS to fix Debian bug 528560 */ | ||
368 | #ifndef CRTSCTS | 368 | #ifndef CRTSCTS |
369 | # define CRTSCTS 0 | 369 | # define CRTSCTS 0 |
370 | #endif | 370 | #endif |
371 | /* added CRTSCTS to fix Debian bug 528560 */ | ||
372 | tty.c_cflag &= CBAUD | CBAUDEX | CSIZE | CSTOPB | PARENB | PARODD | CRTSCTS; | 371 | tty.c_cflag &= CBAUD | CBAUDEX | CSIZE | CSTOPB | PARENB | PARODD | CRTSCTS; |
373 | tty.c_cflag |= CREAD | HUPCL | CLOCAL; | 372 | tty.c_cflag |= CREAD | HUPCL | CLOCAL; |
374 | 373 | ||