diff options
author | Anas Nashif <anas.nashif@intel.com> | 2012-11-07 06:48:00 -0800 |
---|---|---|
committer | Anas Nashif <anas.nashif@intel.com> | 2012-11-07 06:48:00 -0800 |
commit | d93d4f85e18e68d3ae5da2a0b1e85e275b898b44 (patch) | |
tree | 6f65a0cadcc93cac4e9ba52ca6e365f54d3b663b | |
parent | 166ad723228a76d62bdf8620f1c12fe185d4eb49 (diff) | |
download | readline-d93d4f85e18e68d3ae5da2a0b1e85e275b898b44.tar.gz readline-d93d4f85e18e68d3ae5da2a0b1e85e275b898b44.tar.bz2 readline-d93d4f85e18e68d3ae5da2a0b1e85e275b898b44.zip |
input
-rw-r--r-- | input.c | 7 | ||||
-rw-r--r-- | readline.c | 7 |
2 files changed, 13 insertions, 1 deletions
@@ -456,6 +456,8 @@ rl_read_key () return (c); } +extern int _rl_read_zero_char_from_tty; + int rl_getc (stream) FILE *stream; @@ -477,7 +479,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) @@ -440,6 +440,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 () @@ -484,6 +487,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. */ |