| http://lists.gnu.org/archive/html/bug-bash/2014-12/msg00152.html |
| |
| *** ../bash-4.3-patched/lib/readline/readline.c 2014-10-01 13:08:28.000000000 -0400 |
| --- lib/readline/readline.c 2014-12-20 22:37:28.000000000 -0500 |
| *************** |
| *** 580,592 **** |
| } |
| |
| ! /* EOF typed to a non-blank line is a <NL>. If we want to change this, |
| ! to force any existing line to be ignored when read(2) reads EOF, |
| ! for example, this is the place to change. */ |
| if (c == EOF && rl_end) |
| ! c = NEWLINE; |
| |
| /* The character _rl_eof_char typed to blank line, and not as the |
| ! previous character is interpreted as EOF. */ |
| ! if (((c == _rl_eof_char && lastc != c) || c == EOF) && !rl_end) |
| { |
| #if defined (READLINE_CALLBACKS) |
| --- 587,620 ---- |
| } |
| |
| ! /* EOF typed to a non-blank line is ^D the first time, EOF the second |
| ! time in a row. This won't return any partial line read from the tty. |
| ! If we want to change this, to force any existing line to be returned |
| ! when read(2) reads EOF, for example, this is the place to change. */ |
| if (c == EOF && rl_end) |
| ! { |
| ! if (RL_SIG_RECEIVED ()) |
| ! { |
| ! RL_CHECK_SIGNALS (); |
| ! if (rl_signal_event_hook) |
| ! (*rl_signal_event_hook) (); /* XXX */ |
| ! } |
| ! |
| ! /* XXX - reading two consecutive EOFs returns EOF */ |
| ! if (RL_ISSTATE (RL_STATE_TERMPREPPED)) |
| ! { |
| ! if (lastc == _rl_eof_char || lastc == EOF) |
| ! rl_end = 0; |
| ! else |
| ! c = _rl_eof_char; |
| ! } |
| ! else |
| ! c = NEWLINE; |
| ! } |
| |
| /* The character _rl_eof_char typed to blank line, and not as the |
| ! previous character is interpreted as EOF. This doesn't work when |
| ! READLINE_CALLBACKS is defined, so hitting a series of ^Ds will |
| ! erase all the chars on the line and then return EOF. */ |
| ! if (((c == _rl_eof_char && lastc != c) || c == EOF) && rl_end == 0) |
| { |
| #if defined (READLINE_CALLBACKS) |