--- 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)