diff options
Diffstat (limited to 'sys-libs/readline/files/readline-6.3-read-eof.patch')
-rw-r--r-- | sys-libs/readline/files/readline-6.3-read-eof.patch | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/sys-libs/readline/files/readline-6.3-read-eof.patch b/sys-libs/readline/files/readline-6.3-read-eof.patch new file mode 100644 index 000000000000..f74aad63be1f --- /dev/null +++ b/sys-libs/readline/files/readline-6.3-read-eof.patch @@ -0,0 +1,54 @@ +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) |