diff options
author | Lennart Poettering <lennart@poettering.net> | 2013-12-18 18:14:10 +0100 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2013-12-18 18:21:28 +0100 |
commit | e7d43b3cc30764138c90eaaf95d3d8f49e448890 (patch) | |
tree | ee10c7324ec7f699a584a2cc810e468a55f29fd5 /src | |
parent | ccf22d4a104e6ed2666d6c5b4031981a84787790 (diff) |
ptyfwd: make master terminal attributes raw, too
Diffstat (limited to 'src')
-rw-r--r-- | src/shared/ptyfwd.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/shared/ptyfwd.c b/src/shared/ptyfwd.c index 72aa59efb7..85fc8f1b34 100644 --- a/src/shared/ptyfwd.c +++ b/src/shared/ptyfwd.c @@ -343,8 +343,8 @@ static int process_pty_loop(int master, sigset_t *mask, pid_t kill_pid, int sign int process_pty(int master, sigset_t *mask, pid_t kill_pid, int signo) { struct termios saved_stdin_attr, raw_stdin_attr; struct termios saved_stdout_attr, raw_stdout_attr; - bool saved_stdin = false; - bool saved_stdout = false; + struct termios master_attr; + bool saved_stdin = false, saved_stdout = false; struct winsize ws; int r; @@ -369,6 +369,11 @@ int process_pty(int master, sigset_t *mask, pid_t kill_pid, int signo) { tcsetattr(STDOUT_FILENO, TCSANOW, &raw_stdout_attr); } + if (tcgetattr(master, &master_attr) >= 0) { + cfmakeraw(&master_attr); + tcsetattr(master, TCSANOW, &master_attr); + } + r = process_pty_loop(master, mask, kill_pid, signo); if (saved_stdout) |