summaryrefslogtreecommitdiff
blob: d5422baf1d13f9dfbb3f4cad079ffaae3729b2e9 (plain)
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;

--