blob: 9f2d9b65d88007a488d0c9a95635d5e3954da284 [file] [log] [blame]
--- a/libbb/lineedit.c
+++ b/libbb/lineedit.c
@@ -2467,6 +2467,7 @@ int FAST_FUNC read_line_input(line_input
#endif
struct termios initial_settings;
struct termios new_settings;
+ struct termios tmp_settings;
char read_key_buffer[KEYCODE_BUFFER_SIZE];
INIT_S();
@@ -3006,7 +3007,15 @@ int FAST_FUNC read_line_input(line_input
#endif
/* restore initial_settings */
- tcsetattr_stdin_TCSANOW(&initial_settings);
+ if (tcgetattr(STDIN_FILENO, &tmp_settings) < 0){
+ tcsetattr_stdin_TCSANOW(&initial_settings);
+ }else{
+ tmp_settings.c_lflag |= (ICANON | ECHO | ECHONL | ISIG);
+ tmp_settings.c_cc[VMIN] = initial_settings.c_cc[VMIN];
+ tmp_settings.c_cc[VTIME] = initial_settings.c_cc[VTIME];
+ tcsetattr_stdin_TCSANOW(&tmp_settings);
+ }
+
#if ENABLE_FEATURE_EDITING_WINCH
/* restore SIGWINCH handler */
sigaction_set(SIGWINCH, &S.SIGWINCH_handler);