From: Lennart Poettering Date: Wed, 18 Dec 2013 17:14:10 +0000 (+0100) Subject: ptyfwd: make master terminal attributes raw, too X-Git-Tag: v209~822 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=e7d43b3cc30764138c90eaaf95d3d8f49e448890 ptyfwd: make master terminal attributes raw, too --- diff --git a/src/shared/ptyfwd.c b/src/shared/ptyfwd.c index 72aa59efb..85fc8f1b3 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)