- raw_attr = saved_attr;
- cfmakeraw(&raw_attr);
- raw_attr.c_lflag &= ~ECHO;
-
- tcsetattr(STDIN_FILENO, TCSANOW, &raw_attr);
+ raw_stdin_attr = saved_stdin_attr;
+ cfmakeraw(&raw_stdin_attr);
+ raw_stdin_attr.c_oflag = saved_stdin_attr.c_oflag;
+ tcsetattr(STDIN_FILENO, TCSANOW, &raw_stdin_attr);
+ }
+ if (tcgetattr(STDOUT_FILENO, &saved_stdout_attr) >= 0) {
+ saved_stdout = true;
+
+ raw_stdout_attr = saved_stdout_attr;
+ cfmakeraw(&raw_stdout_attr);
+ raw_stdout_attr.c_iflag = saved_stdout_attr.c_iflag;
+ raw_stdout_attr.c_lflag = saved_stdout_attr.c_lflag;
+ tcsetattr(STDOUT_FILENO, TCSANOW, &raw_stdout_attr);