summaryrefslogtreecommitdiffstats
path: root/SOURCES/readline-4.3-input.dif
blob: 5abe76e0f2be6c7a02819c261eb632de697af6c8 (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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
Index: lib/readline/input.c
===================================================================
--- lib/readline/input.c.orig
+++ lib/readline/input.c
@@ -459,6 +459,8 @@ rl_read_key ()
   return (c);
 }
 
+extern int _rl_read_zero_char_from_tty;
+
 int
 rl_getc (stream)
      FILE *stream;
@@ -482,7 +484,10 @@ rl_getc (stream)
       /* If zero characters are returned, then the file that we are
 	 reading from is empty!  Return EOF in that case. */
       if (result == 0)
-	return (EOF);
+	{
+	  _rl_read_zero_char_from_tty = 1;
+	  return (EOF);
+	}
 
 #if defined (__BEOS__)
       if (errno == EINTR)
Index: lib/readline/readline.c
===================================================================
--- lib/readline/readline.c.orig
+++ lib/readline/readline.c
@@ -469,6 +469,9 @@ _rl_internal_char_cleanup ()
     _rl_erase_entire_line ();
 }
 
+/* Catch EOF from tty, do not return command line */
+int _rl_read_zero_char_from_tty = 0;
+
 STATIC_CALLBACK int
 #if defined (READLINE_CALLBACKS)
 readline_internal_char ()
@@ -513,6 +516,10 @@ readline_internal_charloop ()
       c = rl_read_key ();
       RL_UNSETSTATE(RL_STATE_READCMD);
 
+      /* Return here if terminal is closed */
+      if (c == EOF && _rl_read_zero_char_from_tty)
+	return (rl_done = 1);
+
       /* look at input.c:rl_getc() for the circumstances under which this will
 	 be returned; punt immediately on read error without converting it to
 	 a newline. */