blob: 9f2d9b65d88007a488d0c9a95635d5e3954da284 [file] [log] [blame]
b.liue9582032025-04-17 19:18:16 +08001--- a/libbb/lineedit.c
2+++ b/libbb/lineedit.c
3@@ -2467,6 +2467,7 @@ int FAST_FUNC read_line_input(line_input
4 #endif
5 struct termios initial_settings;
6 struct termios new_settings;
7+ struct termios tmp_settings;
8 char read_key_buffer[KEYCODE_BUFFER_SIZE];
9
10 INIT_S();
11@@ -3006,7 +3007,15 @@ int FAST_FUNC read_line_input(line_input
12 #endif
13
14 /* restore initial_settings */
15- tcsetattr_stdin_TCSANOW(&initial_settings);
16+ if (tcgetattr(STDIN_FILENO, &tmp_settings) < 0){
17+ tcsetattr_stdin_TCSANOW(&initial_settings);
18+ }else{
19+ tmp_settings.c_lflag |= (ICANON | ECHO | ECHONL | ISIG);
20+ tmp_settings.c_cc[VMIN] = initial_settings.c_cc[VMIN];
21+ tmp_settings.c_cc[VTIME] = initial_settings.c_cc[VTIME];
22+ tcsetattr_stdin_TCSANOW(&tmp_settings);
23+ }
24+
25 #if ENABLE_FEATURE_EDITING_WINCH
26 /* restore SIGWINCH handler */
27 sigaction_set(SIGWINCH, &S.SIGWINCH_handler);