blob: ad51e5c64184ca039aee43a0b738bccc98e44409 (
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
|
--- lib/readline/input.c
+++ lib/readline/input.c Mon Mar 17 19:03:51 2003
@@ -415,6 +415,8 @@
return (c);
}
+extern int _rl_read_zero_char_from_tty;
+
int
rl_getc (stream)
FILE *stream;
@@ -432,7 +434,10 @@
/* 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)
--- lib/readline/readline.c
+++ lib/readline/readline.c Mon Mar 17 19:02:52 2003
@@ -387,6 +387,9 @@
return (eof ? (char *)NULL : savestring (the_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 ()
@@ -421,6 +424,10 @@
RL_SETSTATE(RL_STATE_READCMD);
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);
/* EOF typed to a non-blank line is a <NL>. */
if (c == EOF && rl_end)
|