1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
diff -uNr ssh-3.2.9.1.orig/lib/sshreadline/sshreadline.c ssh-3.2.9.1/lib/sshreadline/sshreadline.c
--- ssh-3.2.9.1.orig/lib/sshreadline/sshreadline.c 2003-12-03 08:17:20.000000000 -0500
+++ ssh-3.2.9.1/lib/sshreadline/sshreadline.c 2004-02-02 11:18:46.000000000 -0500
@@ -500,8 +500,9 @@
new_term.c_lflag &= ~(ECHO | ICANON);
new_term.c_cc[VMIN] = 1;
new_term.c_cc[VTIME] = 1;
- if (tcsetattr(fd, TCSAFLUSH, &new_term) < 0)
+ fast: if (tcsetattr(fd, TCSAFLUSH, &new_term) < 0)
{
+ if (EINTR == errno) goto fast;
ssh_warning("tcsetattr failed in ssh_rl_set_tty_modes_for_fd: "
"fd %d: %.200s", fd, strerror(errno));
return -1;
@@ -561,8 +562,9 @@
{
fcntl(fd, F_SETFL, fcntl_flags);
- if (tcsetattr(fd, TCSAFLUSH, saved_tio) < 0)
+ fast1: if (tcsetattr(fd, TCSAFLUSH, saved_tio) < 0)
{
+ if (EINTR == errno) goto fast1;
ssh_warning("tcsetattr failed in ssh_rl_restore_tty_modes_for_fd: "
"fd %d: %.200s", fd, strerror(errno));
return -1;
--
|