--- 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 . */ if (c == EOF && rl_end)