From a08828a1d322df2b52ed4d59bb9a335c1190e5dc Mon Sep 17 00:00:00 2001 From: Miroslav Lichvar Date: Tue, 14 Jul 2009 16:46:14 +0000 Subject: [PATCH] - update to 6.0 - include patches 001, 002, 003 --- .cvsignore | 2 +- readline-5.2-001.patch | 30 --- readline-5.2-002.patch | 49 ----- readline-5.2-003.patch | 37 ---- readline-5.2-004.patch | 70 ------ readline-5.2-005.patch | 328 ---------------------------- readline-5.2-006.patch | 62 ------ readline-5.2-007.patch | 65 ------ readline-5.2-008.patch | 70 ------ readline-5.2-009.patch | 45 ---- readline-5.2-010.patch | 47 ---- readline-5.2-011.patch | 32 --- readline-5.2-redisplay-sigint.patch | 164 -------------- readline-5.2-shlib.patch | 38 ---- readline-6.0-shlib.patch | 41 ++++ readline.spec | 46 ++-- readline60-001 | 79 +++++++ readline60-002 | 44 ++++ readline60-003 | 58 +++++ sources | 2 +- 20 files changed, 241 insertions(+), 1068 deletions(-) delete mode 100644 readline-5.2-001.patch delete mode 100644 readline-5.2-002.patch delete mode 100644 readline-5.2-003.patch delete mode 100644 readline-5.2-004.patch delete mode 100644 readline-5.2-005.patch delete mode 100644 readline-5.2-006.patch delete mode 100644 readline-5.2-007.patch delete mode 100644 readline-5.2-008.patch delete mode 100644 readline-5.2-009.patch delete mode 100644 readline-5.2-010.patch delete mode 100644 readline-5.2-011.patch delete mode 100644 readline-5.2-redisplay-sigint.patch delete mode 100644 readline-5.2-shlib.patch create mode 100644 readline-6.0-shlib.patch create mode 100644 readline60-001 create mode 100644 readline60-002 create mode 100644 readline60-003 diff --git a/.cvsignore b/.cvsignore index a376f3a..e8503fb 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1 +1 @@ -readline-5.2.tar.gz +readline-6.0.tar.gz diff --git a/readline-5.2-001.patch b/readline-5.2-001.patch deleted file mode 100644 index 0bec9a2..0000000 --- a/readline-5.2-001.patch +++ /dev/null @@ -1,30 +0,0 @@ - READLINE PATCH REPORT - ===================== - -Readline-Release: 5.2 -Patch-ID: readline52-001 - -Bug-Reported-by: ebb9@byu.net -Bug-Reference-ID: <45540862.9030900@byu.net> -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-11/msg00017.html - http://lists.gnu.org/archive/html/bug-bash/2006-11/msg00016.html - -Bug-Description: - -In some cases, code that is intended to be used in the presence of multibyte -characters is called when no such characters are present, leading to incorrect -display position calculations and incorrect redisplay. - -Patch: - -*** ../readline-5.2/display.c Thu Sep 14 14:20:12 2006 ---- display.c Mon Nov 13 17:55:57 2006 -*************** -*** 2381,2384 **** ---- 2409,2414 ---- - if (end <= start) - return 0; -+ if (MB_CUR_MAX == 1 || rl_byte_oriented) -+ return (end - start); - - memset (&ps, 0, sizeof (mbstate_t)); diff --git a/readline-5.2-002.patch b/readline-5.2-002.patch deleted file mode 100644 index b0d8c92..0000000 --- a/readline-5.2-002.patch +++ /dev/null @@ -1,49 +0,0 @@ - READLINE PATCH REPORT - ===================== - -Readline-Release: 5.2 -Patch-ID: readline52-002 - -Bug-Reported-by: Magnus Svensson -Bug-Reference-ID: <45BDC44D.80609@mysql.com> -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-readline/2007-01/msg00002.html - -Bug-Description: - -Readline neglects to reallocate the array it uses to keep track of wrapped -screen lines when increasing its size. This will eventually result in -segmentation faults when given sufficiently long input. - -Patch: - -*** ../readline-5.2-patched/display.c Thu Sep 14 14:20:12 2006 ---- display.c Fri Feb 2 20:23:17 2007 -*************** -*** 561,574 **** ---- 561,586 ---- - wrap_offset = prompt_invis_chars_first_line = 0; - } - -+ #if defined (HANDLE_MULTIBYTE) - #define CHECK_INV_LBREAKS() \ - do { \ - if (newlines >= (inv_lbsize - 2)) \ - { \ - inv_lbsize *= 2; \ - inv_lbreaks = (int *)xrealloc (inv_lbreaks, inv_lbsize * sizeof (int)); \ -+ _rl_wrapped_line = (int *)xrealloc (_rl_wrapped_line, inv_lbsize * sizeof (int)); \ - } \ - } while (0) -+ #else -+ #define CHECK_INV_LBREAKS() \ -+ do { \ -+ if (newlines >= (inv_lbsize - 2)) \ -+ { \ -+ inv_lbsize *= 2; \ -+ inv_lbreaks = (int *)xrealloc (inv_lbreaks, inv_lbsize * sizeof (int)); \ -+ } \ -+ } while (0) -+ #endif /* HANDLE_MULTIBYTE */ - - #if defined (HANDLE_MULTIBYTE) - #define CHECK_LPOS() \ diff --git a/readline-5.2-003.patch b/readline-5.2-003.patch deleted file mode 100644 index 06916b3..0000000 --- a/readline-5.2-003.patch +++ /dev/null @@ -1,37 +0,0 @@ - READLINE PATCH REPORT - ===================== - -Readline-Release: 5.2 -Patch-ID: readline52-003 - -Bug-Reported-by: Peter Volkov -Bug-Reference-ID: <1171795523.8021.18.camel@localhost> -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2007-02/msg00054.html - -Bug-Description: - -When moving the cursor, bash sometimes misplaces the cursor when the prompt -contains two or more multibyte characters. The particular circumstance that -uncovered the problem was having the (multibyte) current directory name in -the prompt string. - -Patch: - -*** ../readline-5.2.2/display.c Fri Jan 19 13:34:50 2007 ---- display.c Sat Mar 10 17:25:44 2007 -*************** -*** 1745,1749 **** - { - dpos = _rl_col_width (data, 0, new); -! if (dpos > prompt_last_invisible) /* XXX - don't use woff here */ - { - dpos -= woff; ---- 1745,1752 ---- - { - dpos = _rl_col_width (data, 0, new); -! /* Use NEW when comparing against the last invisible character in the -! prompt string, since they're both buffer indices and DPOS is a -! desired display position. */ -! if (new > prompt_last_invisible) /* XXX - don't use woff here */ - { - dpos -= woff; diff --git a/readline-5.2-004.patch b/readline-5.2-004.patch deleted file mode 100644 index b165ad9..0000000 --- a/readline-5.2-004.patch +++ /dev/null @@ -1,70 +0,0 @@ - READLINE PATCH REPORT - ===================== - -Readline-Release: 5.2 -Patch-ID: readline52-004 - -Bug-Reported-by: Peter Volkov -Bug-Reference-ID: <1173636022.7039.36.camel@localhost> -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2007-03/msg00039.html - -Bug-Description: - -When restoring the original prompt after finishing an incremental search, -bash sometimes places the cursor incorrectly if the primary prompt contains -invisible characters. - -Patch: - -*** ../readline-5.2.3/display.c Fri Apr 20 13:30:16 2007 ---- display.c Fri Apr 20 15:17:01 2007 -*************** -*** 1599,1604 **** - if (temp > 0) - { - _rl_output_some_chars (nfd, temp); -! _rl_last_c_pos += _rl_col_width (nfd, 0, temp);; - } - } ---- 1599,1618 ---- - if (temp > 0) - { -+ /* If nfd begins at the prompt, or before the invisible -+ characters in the prompt, we need to adjust _rl_last_c_pos -+ in a multibyte locale to account for the wrap offset and -+ set cpos_adjusted accordingly. */ - _rl_output_some_chars (nfd, temp); -! if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) -! { -! _rl_last_c_pos += _rl_col_width (nfd, 0, temp); -! if (current_line == 0 && wrap_offset && ((nfd - new) <= prompt_last_invisible)) -! { -! _rl_last_c_pos -= wrap_offset; -! cpos_adjusted = 1; -! } -! } -! else -! _rl_last_c_pos += temp; - } - } -*************** -*** 1608,1613 **** ---- 1622,1639 ---- - if (temp > 0) - { -+ /* If nfd begins at the prompt, or before the invisible -+ characters in the prompt, we need to adjust _rl_last_c_pos -+ in a multibyte locale to account for the wrap offset and -+ set cpos_adjusted accordingly. */ - _rl_output_some_chars (nfd, temp); - _rl_last_c_pos += col_temp; /* XXX */ -+ if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) -+ { -+ if (current_line == 0 && wrap_offset && ((nfd - new) <= prompt_last_invisible)) -+ { -+ _rl_last_c_pos -= wrap_offset; -+ cpos_adjusted = 1; -+ } -+ } - } - lendiff = (oe - old) - (ne - new); diff --git a/readline-5.2-005.patch b/readline-5.2-005.patch deleted file mode 100644 index d192ac1..0000000 --- a/readline-5.2-005.patch +++ /dev/null @@ -1,328 +0,0 @@ - READLINE PATCH REPORT - ===================== - -Readline-Release: 5.2 -Patch-ID: readline52-005 - -Bug-Reported-by: Thomas Loeber -Bug-Reference-ID: <200703082223.08919.ifp@loeber1.de> -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2007-03/msg00036.html - -Bug-Description: - -When rl_read_key returns -1, indicating that readline's controlling terminal -has been invalidated for some reason (e.g., receiving a SIGHUP), the error -status was not reported correctly to the caller. This could cause input -loops. - -Patch: - -*** ../readline-5.2/complete.c Fri Jul 28 11:35:49 2006 ---- complete.c Tue Mar 13 08:50:16 2007 -*************** -*** 429,433 **** - if (c == 'n' || c == 'N' || c == RUBOUT) - return (0); -! if (c == ABORT_CHAR) - _rl_abort_internal (); - if (for_pager && (c == NEWLINE || c == RETURN)) ---- 440,444 ---- - if (c == 'n' || c == 'N' || c == RUBOUT) - return (0); -! if (c == ABORT_CHAR || c < 0) - _rl_abort_internal (); - if (for_pager && (c == NEWLINE || c == RETURN)) -*** ../readline-5.2/input.c Wed Aug 16 15:15:16 2006 ---- input.c Wed May 2 16:07:59 2007 -*************** -*** 514,518 **** - int size; - { -! int mb_len = 0; - size_t mbchar_bytes_length; - wchar_t wc; ---- 522,526 ---- - int size; - { -! int mb_len, c; - size_t mbchar_bytes_length; - wchar_t wc; -*************** -*** 521,531 **** - memset(&ps, 0, sizeof (mbstate_t)); - memset(&ps_back, 0, sizeof (mbstate_t)); -! - while (mb_len < size) - { - RL_SETSTATE(RL_STATE_MOREINPUT); -! mbchar[mb_len++] = rl_read_key (); - RL_UNSETSTATE(RL_STATE_MOREINPUT); - - mbchar_bytes_length = mbrtowc (&wc, mbchar, mb_len, &ps); - if (mbchar_bytes_length == (size_t)(-1)) ---- 529,545 ---- - memset(&ps, 0, sizeof (mbstate_t)); - memset(&ps_back, 0, sizeof (mbstate_t)); -! -! mb_len = 0; - while (mb_len < size) - { - RL_SETSTATE(RL_STATE_MOREINPUT); -! c = rl_read_key (); - RL_UNSETSTATE(RL_STATE_MOREINPUT); - -+ if (c < 0) -+ break; -+ -+ mbchar[mb_len++] = c; -+ - mbchar_bytes_length = mbrtowc (&wc, mbchar, mb_len, &ps); - if (mbchar_bytes_length == (size_t)(-1)) -*************** -*** 565,569 **** - c = first; - memset (mb, 0, mlen); -! for (i = 0; i < mlen; i++) - { - mb[i] = (char)c; ---- 579,583 ---- - c = first; - memset (mb, 0, mlen); -! for (i = 0; c >= 0 && i < mlen; i++) - { - mb[i] = (char)c; -*** ../readline-5.2/isearch.c Mon Dec 26 17:18:53 2005 ---- isearch.c Fri Mar 9 14:30:59 2007 -*************** -*** 328,333 **** - - f = (rl_command_func_t *)NULL; -! -! /* Translate the keys we do something with to opcodes. */ - if (c >= 0 && _rl_keymap[c].type == ISFUNC) - { ---- 328,340 ---- - - f = (rl_command_func_t *)NULL; -! -! if (c < 0) -! { -! cxt->sflags |= SF_FAILED; -! cxt->history_pos = cxt->last_found_line; -! return -1; -! } -! -! /* Translate the keys we do something with to opcodes. */ - if (c >= 0 && _rl_keymap[c].type == ISFUNC) - { -*** ../readline-5.2/misc.c Mon Dec 26 17:20:46 2005 ---- misc.c Fri Mar 9 14:44:11 2007 -*************** -*** 147,150 **** ---- 147,152 ---- - rl_clear_message (); - RL_UNSETSTATE(RL_STATE_NUMERICARG); -+ if (key < 0) -+ return -1; - return (_rl_dispatch (key, _rl_keymap)); - } -*** ../readline-5.2/readline.c Wed Aug 16 15:00:36 2006 ---- readline.c Fri Mar 9 14:47:24 2007 -*************** -*** 646,649 **** ---- 669,677 ---- - { - nkey = _rl_subseq_getchar (cxt->okey); -+ if (nkey < 0) -+ { -+ _rl_abort_internal (); -+ return -1; -+ } - r = _rl_dispatch_subseq (nkey, cxt->dmap, cxt->subseq_arg); - cxt->flags |= KSEQ_DISPATCHED; -*** ../readline-5.2/text.c Fri Jul 28 11:55:27 2006 ---- text.c Sun Mar 25 13:41:38 2007 -*************** -*** 858,861 **** ---- 864,870 ---- - RL_UNSETSTATE(RL_STATE_MOREINPUT); - -+ if (c < 0) -+ return -1; -+ - #if defined (HANDLE_SIGNALS) - if (RL_ISSTATE (RL_STATE_CALLBACK) == 0) -*************** -*** 1521,1524 **** ---- 1530,1536 ---- - mb_len = _rl_read_mbchar (mbchar, MB_LEN_MAX); - -+ if (mb_len <= 0) -+ return -1; -+ - if (count < 0) - return (_rl_char_search_internal (-count, bdir, mbchar, mb_len)); -*************** -*** 1537,1540 **** ---- 1549,1555 ---- - RL_UNSETSTATE(RL_STATE_MOREINPUT); - -+ if (c < 0) -+ return -1; -+ - if (count < 0) - return (_rl_char_search_internal (-count, bdir, c)); -*** ../readline-5.2/vi_mode.c Sat Jul 29 16:42:28 2006 ---- vi_mode.c Fri Mar 9 15:02:11 2007 -*************** -*** 887,890 **** ---- 887,897 ---- - c = rl_read_key (); - RL_UNSETSTATE(RL_STATE_MOREINPUT); -+ -+ if (c < 0) -+ { -+ *nextkey = 0; -+ return -1; -+ } -+ - *nextkey = c; - -*************** -*** 903,906 **** ---- 910,918 ---- - c = rl_read_key (); /* real command */ - RL_UNSETSTATE(RL_STATE_MOREINPUT); -+ if (c < 0) -+ { -+ *nextkey = 0; -+ return -1; -+ } - *nextkey = c; - } -*************** -*** 1225,1236 **** - _rl_callback_generic_arg *data; - { - #if defined (HANDLE_MULTIBYTE) -! _rl_vi_last_search_mblen = _rl_read_mbchar (_rl_vi_last_search_mbchar, MB_LEN_MAX); - #else - RL_SETSTATE(RL_STATE_MOREINPUT); -! _rl_vi_last_search_char = rl_read_key (); - RL_UNSETSTATE(RL_STATE_MOREINPUT); - #endif - - _rl_callback_func = 0; - _rl_want_redisplay = 1; ---- 1243,1262 ---- - _rl_callback_generic_arg *data; - { -+ int c; - #if defined (HANDLE_MULTIBYTE) -! c = _rl_vi_last_search_mblen = _rl_read_mbchar (_rl_vi_last_search_mbchar, MB_LEN_MAX); - #else - RL_SETSTATE(RL_STATE_MOREINPUT); -! c = rl_read_key (); - RL_UNSETSTATE(RL_STATE_MOREINPUT); - #endif - -+ if (c <= 0) -+ return -1; -+ -+ #if !defined (HANDLE_MULTIBYTE) -+ _rl_vi_last_search_char = c; -+ #endif -+ - _rl_callback_func = 0; - _rl_want_redisplay = 1; -*************** -*** 1248,1251 **** ---- 1274,1278 ---- - int count, key; - { -+ int c; - #if defined (HANDLE_MULTIBYTE) - static char *target; -*************** -*** 1294,1302 **** - { - #if defined (HANDLE_MULTIBYTE) -! _rl_vi_last_search_mblen = _rl_read_mbchar (_rl_vi_last_search_mbchar, MB_LEN_MAX); - #else - RL_SETSTATE(RL_STATE_MOREINPUT); -! _rl_vi_last_search_char = rl_read_key (); - RL_UNSETSTATE(RL_STATE_MOREINPUT); - #endif - } ---- 1321,1335 ---- - { - #if defined (HANDLE_MULTIBYTE) -! c = _rl_read_mbchar (_rl_vi_last_search_mbchar, MB_LEN_MAX); -! if (c <= 0) -! return -1; -! _rl_vi_last_search_mblen = c; - #else - RL_SETSTATE(RL_STATE_MOREINPUT); -! c = rl_read_key (); - RL_UNSETSTATE(RL_STATE_MOREINPUT); -+ if (c < 0) -+ return -1; -+ _rl_vi_last_search_char = c; - #endif - } -*************** -*** 1468,1471 **** ---- 1501,1507 ---- - RL_UNSETSTATE(RL_STATE_MOREINPUT); - -+ if (c < 0) -+ return -1; -+ - #if defined (HANDLE_MULTIBYTE) - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) -*************** -*** 1486,1489 **** ---- 1522,1528 ---- - _rl_vi_last_replacement = c = _rl_vi_callback_getchar (mb, MB_LEN_MAX); - -+ if (c < 0) -+ return -1; -+ - _rl_callback_func = 0; - _rl_want_redisplay = 1; -*************** -*** 1517,1520 **** ---- 1556,1562 ---- - _rl_vi_last_replacement = c = _rl_vi_callback_getchar (mb, MB_LEN_MAX); - -+ if (c < 0) -+ return -1; -+ - return (_rl_vi_change_char (count, c, mb)); - } -*************** -*** 1651,1655 **** - RL_UNSETSTATE(RL_STATE_MOREINPUT); - -! if (ch < 'a' || ch > 'z') - { - rl_ding (); ---- 1693,1697 ---- - RL_UNSETSTATE(RL_STATE_MOREINPUT); - -! if (ch < 0 || ch < 'a' || ch > 'z') /* make test against 0 explicit */ - { - rl_ding (); -*************** -*** 1703,1707 **** - return 0; - } -! else if (ch < 'a' || ch > 'z') - { - rl_ding (); ---- 1745,1749 ---- - return 0; - } -! else if (ch < 0 || ch < 'a' || ch > 'z') /* make test against 0 explicit */ - { - rl_ding (); diff --git a/readline-5.2-006.patch b/readline-5.2-006.patch deleted file mode 100644 index d739143..0000000 --- a/readline-5.2-006.patch +++ /dev/null @@ -1,62 +0,0 @@ - READLINE PATCH REPORT - ===================== - -Readline-Release: 5.2 -Patch-ID: readline52-006 - -Bug-Reported-by: Peter Volkov -Bug-Reference-ID: <1178376645.9063.25.camel@localhost> -Bug-Reference-URL: http://bugs.gentoo.org/177095 - -Bug-Description: - -The readline display code miscalculated the screen position when performing -a redisplay in which the new text occupies more screen space that the old, -but takes fewer bytes to do so (e.g., when replacing a shorter string -containing multibyte characters with a longer one containing only ASCII). - -Patch: - -*** ../readline-5.2/display.c Thu Apr 26 11:38:22 2007 ---- display.c Thu Jul 12 23:10:10 2007 -*************** -*** 1519,1527 **** - /* Non-zero if we're increasing the number of lines. */ - int gl = current_line >= _rl_vis_botlin && inv_botlin > _rl_vis_botlin; - /* Sometimes it is cheaper to print the characters rather than - use the terminal's capabilities. If we're growing the number - of lines, make sure we actually cause the new line to wrap - around on auto-wrapping terminals. */ -! if (_rl_terminal_can_insert && ((2 * col_temp) >= col_lendiff || _rl_term_IC) && (!_rl_term_autowrap || !gl)) - { - /* If lendiff > prompt_visible_length and _rl_last_c_pos == 0 and ---- 1568,1596 ---- - /* Non-zero if we're increasing the number of lines. */ - int gl = current_line >= _rl_vis_botlin && inv_botlin > _rl_vis_botlin; -+ /* If col_lendiff is > 0, implying that the new string takes up more -+ screen real estate than the old, but lendiff is < 0, meaning that it -+ takes fewer bytes, we need to just output the characters starting -+ from the first difference. These will overwrite what is on the -+ display, so there's no reason to do a smart update. This can really -+ only happen in a multibyte environment. */ -+ if (lendiff < 0) -+ { -+ _rl_output_some_chars (nfd, temp); -+ _rl_last_c_pos += _rl_col_width (nfd, 0, temp); -+ /* If nfd begins before any invisible characters in the prompt, -+ adjust _rl_last_c_pos to account for wrap_offset and set -+ cpos_adjusted to let the caller know. */ -+ if (current_line == 0 && wrap_offset && ((nfd - new) <= prompt_last_invisible)) -+ { -+ _rl_last_c_pos -= wrap_offset; -+ cpos_adjusted = 1; -+ } -+ return; -+ } - /* Sometimes it is cheaper to print the characters rather than - use the terminal's capabilities. If we're growing the number - of lines, make sure we actually cause the new line to wrap - around on auto-wrapping terminals. */ -! else if (_rl_terminal_can_insert && ((2 * col_temp) >= col_lendiff || _rl_term_IC) && (!_rl_term_autowrap || !gl)) - { - /* If lendiff > prompt_visible_length and _rl_last_c_pos == 0 and diff --git a/readline-5.2-007.patch b/readline-5.2-007.patch deleted file mode 100644 index f75f53f..0000000 --- a/readline-5.2-007.patch +++ /dev/null @@ -1,65 +0,0 @@ - READLINE PATCH REPORT - ===================== - -Readline-Release: 5.2 -Patch-ID: readline52-007 - -Bug-Reported-by: Tom Bjorkholm -Bug-Reference-ID: -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-readline/2007-04/msg00004.html - - -Bug-Description: - -An off-by-one error in readline's input buffering caused readline to drop -each 511th character of buffered input (e.g., when pasting a large amount -of data into a terminal window). - -Patch: - -*** ../readline-5.2/input.c Wed Aug 16 15:15:16 2006 ---- input.c Tue Jul 17 09:24:21 2007 -*************** -*** 134,139 **** - - *key = ibuffer[pop_index++]; -! - if (pop_index >= ibuffer_len) - pop_index = 0; - ---- 134,142 ---- - - *key = ibuffer[pop_index++]; -! #if 0 - if (pop_index >= ibuffer_len) -+ #else -+ if (pop_index > ibuffer_len) -+ #endif - pop_index = 0; - -*************** -*** 251,255 **** - { - k = (*rl_getc_function) (rl_instream); -! rl_stuff_char (k); - if (k == NEWLINE || k == RETURN) - break; ---- 254,259 ---- - { - k = (*rl_getc_function) (rl_instream); -! if (rl_stuff_char (k) == 0) -! break; /* some problem; no more room */ - if (k == NEWLINE || k == RETURN) - break; -*************** -*** 374,378 **** ---- 378,386 ---- - } - ibuffer[push_index++] = key; -+ #if 0 - if (push_index >= ibuffer_len) -+ #else -+ if (push_index > ibuffer_len) -+ #endif - push_index = 0; - diff --git a/readline-5.2-008.patch b/readline-5.2-008.patch deleted file mode 100644 index 1d7f327..0000000 --- a/readline-5.2-008.patch +++ /dev/null @@ -1,70 +0,0 @@ - READLINE PATCH REPORT - ===================== - -Readline-Release: 5.2 -Patch-ID: readline52-008 - -Bug-Reported-by: dAniel hAhler -Bug-Reference-ID: <4702ED8A.5000503@thequod.de> -Bug-Reference-URL: https://bugs.launchpad.net/ubuntu/+source/bash/+bug/119938 - -Bug-Description: - -When updating the display after displaying, for instance, a list of possible -completions, readline will place the cursor at the wrong position if the -prompt contains invisible characters and a newline. - -Patch: - -*** ../readline-5.2-patched/display.c Mon Aug 6 14:26:29 2007 ---- display.c Wed Oct 10 22:43:58 2007 -*************** -*** 1049,1053 **** - else - tx = nleft; -! if (_rl_last_c_pos > tx) - { - _rl_backspace (_rl_last_c_pos - tx); /* XXX */ ---- 1049,1053 ---- - else - tx = nleft; -! if (tx >= 0 && _rl_last_c_pos > tx) - { - _rl_backspace (_rl_last_c_pos - tx); /* XXX */ -*************** -*** 1205,1209 **** - { - register char *ofd, *ols, *oe, *nfd, *nls, *ne; -! int temp, lendiff, wsatend, od, nd; - int current_invis_chars; - int col_lendiff, col_temp; ---- 1205,1209 ---- - { - register char *ofd, *ols, *oe, *nfd, *nls, *ne; -! int temp, lendiff, wsatend, od, nd, o_cpos; - int current_invis_chars; - int col_lendiff, col_temp; -*************** -*** 1466,1469 **** ---- 1466,1471 ---- - } - -+ o_cpos = _rl_last_c_pos; -+ - /* When this function returns, _rl_last_c_pos is correct, and an absolute - cursor postion in multibyte mode, but a buffer index when not in a -*************** -*** 1475,1479 **** - invisible characters in the prompt string. Let's see if setting this when - we make sure we're at the end of the drawn prompt string works. */ -! if (current_line == 0 && MB_CUR_MAX > 1 && rl_byte_oriented == 0 && _rl_last_c_pos == prompt_physical_chars) - cpos_adjusted = 1; - #endif ---- 1477,1483 ---- - invisible characters in the prompt string. Let's see if setting this when - we make sure we're at the end of the drawn prompt string works. */ -! if (current_line == 0 && MB_CUR_MAX > 1 && rl_byte_oriented == 0 && -! (_rl_last_c_pos > 0 || o_cpos > 0) && -! _rl_last_c_pos == prompt_physical_chars) - cpos_adjusted = 1; - #endif diff --git a/readline-5.2-009.patch b/readline-5.2-009.patch deleted file mode 100644 index af9e381..0000000 --- a/readline-5.2-009.patch +++ /dev/null @@ -1,45 +0,0 @@ - READLINE PATCH REPORT - ===================== - -Readline-Release: 5.2 -Patch-ID: readline52-009 - -Bug-Reported-by: dAniel hAhler -Bug-Reference-ID: -Bug-Reference-URL: - -Bug-Description: - -Under some circumstances, readline will incorrectly display a prompt string -containing invisible characters after the final newline. - -Patch: - -*** ../readline-5.2-patched/display.c 2007-08-25 13:47:08.000000000 -0400 ---- display.c 2007-11-10 17:51:29.000000000 -0500 -*************** -*** 392,396 **** - local_prompt = expand_prompt (p, &prompt_visible_length, - &prompt_last_invisible, -! (int *)NULL, - &prompt_physical_chars); - c = *t; *t = '\0'; ---- 420,424 ---- - local_prompt = expand_prompt (p, &prompt_visible_length, - &prompt_last_invisible, -! &prompt_invis_chars_first_line, - &prompt_physical_chars); - c = *t; *t = '\0'; -*************** -*** 399,403 **** - local_prompt_prefix = expand_prompt (prompt, &prompt_prefix_length, - (int *)NULL, -! &prompt_invis_chars_first_line, - (int *)NULL); - *t = c; ---- 427,431 ---- - local_prompt_prefix = expand_prompt (prompt, &prompt_prefix_length, - (int *)NULL, -! (int *)NULL, - (int *)NULL); - *t = c; diff --git a/readline-5.2-010.patch b/readline-5.2-010.patch deleted file mode 100644 index ee5c026..0000000 --- a/readline-5.2-010.patch +++ /dev/null @@ -1,47 +0,0 @@ - READLINE PATCH REPORT - ===================== - -Readline-Release: 5.2 -Patch-ID: readline52-010 - -Bug-Reported-by: Miroslav Lichvar -Bug-Reference-ID: Fri, 02 Nov 2007 14:07:45 +0100 -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-readline/2007-11/msg00000.html - -Bug-Description: - -In certain cases when outputting characters at the end of the line, -e.g., when displaying the prompt string, readline positions the cursor -incorrectly if the prompt string contains invisible characters and the -text being drawn begins before the last invisible character in the line. - -Patch: - -*** ../readline-5.2-patched/display.c 2007-08-25 13:47:08.000000000 -0400 ---- display.c 2007-11-10 17:51:29.000000000 -0500 -*************** -*** 1566,1574 **** - else - { -- /* We have horizontal scrolling and we are not inserting at -- the end. We have invisible characters in this line. This -- is a dumb update. */ - _rl_output_some_chars (nfd, temp); - _rl_last_c_pos += col_temp; - return; - } ---- 1619,1632 ---- - else - { - _rl_output_some_chars (nfd, temp); - _rl_last_c_pos += col_temp; -+ /* If nfd begins before any invisible characters in the prompt, -+ adjust _rl_last_c_pos to account for wrap_offset and set -+ cpos_adjusted to let the caller know. */ -+ if (current_line == 0 && wrap_offset && ((nfd - new) <= prompt_last_invisible)) -+ { -+ _rl_last_c_pos -= wrap_offset; -+ cpos_adjusted = 1; -+ } - return; - } diff --git a/readline-5.2-011.patch b/readline-5.2-011.patch deleted file mode 100644 index a1197ed..0000000 --- a/readline-5.2-011.patch +++ /dev/null @@ -1,32 +0,0 @@ - READLINE PATCH REPORT - ===================== - -Readline-Release: 5.2 -Patch-ID: readline52-011 - -Bug-Reported-by: Uwe Doering -Bug-Reference-ID: <46F3DD72.2090801@geminix.org> -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2007-09/msg00102.html - -Bug-Description: - -There is an off-by-one error in the code that buffers characters received -very quickly in succession, causing characters to be dropped. - -Patch: - -*** ../readline-5.2-patched/input.c 2007-08-25 13:47:10.000000000 -0400 ---- input.c 2007-10-12 22:55:25.000000000 -0400 -*************** -*** 155,159 **** - pop_index--; - if (pop_index < 0) -! pop_index = ibuffer_len - 1; - ibuffer[pop_index] = key; - return (1); ---- 155,159 ---- - pop_index--; - if (pop_index < 0) -! pop_index = ibuffer_len; - ibuffer[pop_index] = key; - return (1); diff --git a/readline-5.2-redisplay-sigint.patch b/readline-5.2-redisplay-sigint.patch deleted file mode 100644 index c1c48b2..0000000 --- a/readline-5.2-redisplay-sigint.patch +++ /dev/null @@ -1,164 +0,0 @@ -GDB PR 544: gdb.cp/annota2.exp and gdb.cp/annota3.exp sometimes FAIL with: - FAIL: gdb.cp/annota3.exp: annotate-quit (pattern 1) - -One can put `sleep (1)' at the end of _RL_OUTPUT_SOME_CHARS and type - p 1 -to abort the prompt printing. Before the patch: - (gdb) p 1 - $1 = 1 - Quit) (gdb) - (gdb) _ -After the patch: - [bash]jkratoch@host0.dyn.jankratochvil.net:/home/jkratoch/redhat/sources/readline# ../gdb/gdb -nx -silent(gdb) p 1 - $1 = 1 - (gdb) Quit - (gdb) _ - -The readline patch posted upstream: - http://sourceware.org/ml/gdb-patches/2008-03/msg00317.html - -On Fri, 21 Mar 2008 19:37:31 +0100, Chet Ramey wrote: -> I will add something like your block_sigint/release_sigint changes around -> the guts of rl_redisplay. That's the right thing to do anyway. It will -> probably not come out as a patch for readline-5.2; you can use your -> current patch (though the names will change to _rl_block_sigint and -> _rl_release_sigint -- fair warning). - -Application cannot easily supply its own RL_REDISPLAY_FUNCTION as a custom -function there changes the readline behavior: - http://sourceware.org/ml/gdb-patches/2008-03/msg00340.html - -BLOCK_SIGINT / RELEASE_SIGINT: Make it public and prefix it by `_rl_'. -RL_REDISPLAY: Wrap it by _RL_BLOCK_SIGINT / _RL_RELEASE_SIGINT. - ---- readline-5.2-orig/display.c 2008-03-23 20:52:12.000000000 +0100 -+++ readline-5.2/display.c 2008-03-23 20:56:58.000000000 +0100 -@@ -472,6 +472,10 @@ rl_redisplay () - if (!readline_echoing_p) - return; - -+ /* Signals are blocked through this function as the global data structures -+ could get corrupted upon modifications from an invoked signal handler. */ -+ _rl_block_sigint (); -+ - if (!rl_display_prompt) - rl_display_prompt = ""; - -@@ -1180,6 +1184,8 @@ rl_redisplay () - else - visible_wrap_offset = wrap_offset; - } -+ -+ _rl_release_sigint (); - } - - /* PWP: update_line() is based on finding the middle difference of each ---- readline-5.2-orig/rltty.c 2005-12-26 23:21:50.000000000 +0100 -+++ readline-5.2/rltty.c 2008-03-23 20:57:26.000000000 +0100 -@@ -52,8 +52,8 @@ extern int errno; - rl_vintfunc_t *rl_prep_term_function = rl_prep_terminal; - rl_voidfunc_t *rl_deprep_term_function = rl_deprep_terminal; - --static void block_sigint PARAMS((void)); --static void release_sigint PARAMS((void)); -+void _rl_block_sigint PARAMS((void)); -+void _rl_release_sigint PARAMS((void)); - - static void set_winsize PARAMS((int)); - -@@ -74,9 +74,9 @@ static int sigint_oldmask; - static int sigint_blocked; - - /* Cause SIGINT to not be delivered until the corresponding call to -- release_sigint(). */ --static void --block_sigint () -+ _rl_release_sigint(). */ -+void -+_rl_block_sigint () - { - if (sigint_blocked) - return; -@@ -100,8 +100,8 @@ block_sigint () - } - - /* Allow SIGINT to be delivered. */ --static void --release_sigint () -+void -+_rl_release_sigint () - { - if (sigint_blocked == 0) - return; -@@ -663,7 +663,7 @@ rl_prep_terminal (meta_flag) - return; - - /* Try to keep this function from being INTerrupted. */ -- block_sigint (); -+ _rl_block_sigint (); - - tty = fileno (rl_instream); - -@@ -676,7 +676,7 @@ rl_prep_terminal (meta_flag) - if (errno == ENOTTY) - #endif - readline_echoing_p = 1; /* XXX */ -- release_sigint (); -+ _rl_release_sigint (); - return; - } - -@@ -711,7 +711,7 @@ rl_prep_terminal (meta_flag) - - if (set_tty_settings (tty, &tio) < 0) - { -- release_sigint (); -+ _rl_release_sigint (); - return; - } - -@@ -722,7 +722,7 @@ rl_prep_terminal (meta_flag) - terminal_prepped = 1; - RL_SETSTATE(RL_STATE_TERMPREPPED); - -- release_sigint (); -+ _rl_release_sigint (); - } - - /* Restore the terminal's normal settings and modes. */ -@@ -735,7 +735,7 @@ rl_deprep_terminal () - return; - - /* Try to keep this function from being interrupted. */ -- block_sigint (); -+ _rl_block_sigint (); - - tty = fileno (rl_instream); - -@@ -746,14 +746,14 @@ rl_deprep_terminal () - - if (set_tty_settings (tty, &otio) < 0) - { -- release_sigint (); -+ _rl_release_sigint (); - return; - } - - terminal_prepped = 0; - RL_UNSETSTATE(RL_STATE_TERMPREPPED); - -- release_sigint (); -+ _rl_release_sigint (); - } - #endif /* !NO_TTY_DRIVER */ - ---- readline-5.2-orig/rltty.h 2003-02-01 04:43:11.000000000 +0100 -+++ readline-5.2/rltty.h 2008-03-23 20:57:30.000000000 +0100 -@@ -79,4 +79,7 @@ typedef struct _rl_tty_chars { - unsigned char t_status; - } _RL_TTY_CHARS; - -+extern void _rl_block_sigint PARAMS((void)); -+extern void _rl_release_sigint PARAMS((void)); -+ - #endif /* _RLTTY_H_ */ diff --git a/readline-5.2-shlib.patch b/readline-5.2-shlib.patch deleted file mode 100644 index f97fa17..0000000 --- a/readline-5.2-shlib.patch +++ /dev/null @@ -1,38 +0,0 @@ ---- readline-5.2/support/shlib-install.shlib 2006-01-03 20:06:27.000000000 +0100 -+++ readline-5.2/support/shlib-install 2006-11-13 13:51:02.000000000 +0100 -@@ -71,7 +71,7 @@ - case "$host_os" in - hpux*|darwin*|macosx*|linux*) - if [ -z "$uninstall" ]; then -- chmod 555 ${INSTALLDIR}/${LIBNAME} -+ chmod 755 ${INSTALLDIR}/${LIBNAME} - fi ;; - cygwin*) - IMPLIBNAME=`echo ${LIBNAME} \ ---- readline-5.2/support/shobj-conf.shlib 2006-04-11 15:15:43.000000000 +0200 -+++ readline-5.2/support/shobj-conf 2007-03-15 14:11:36.000000000 +0100 -@@ -108,10 +108,11 @@ - linux*-*|gnu*-*|k*bsd*-gnu-*) - SHOBJ_CFLAGS=-fPIC - SHOBJ_LD='${CC}' -- SHOBJ_LDFLAGS='-shared -Wl,-soname,$@' -+ SHOBJ_LDFLAGS='$(CFLAGS) -shared -Wl,-soname,$@' - -- SHLIB_XLDFLAGS='-Wl,-rpath,$(libdir) -Wl,-soname,`basename $@ $(SHLIB_MINOR)`' -+ SHLIB_XLDFLAGS='-Wl,-soname,`basename $@ $(SHLIB_MINOR)`' - SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)' -+ SHLIB_LIBS='-ltinfo' - ;; - - freebsd2* | netbsd*) ---- readline-5.2/shlib/Makefile.in.shlib 2005-08-12 05:56:10.000000000 +0200 -+++ readline-5.2/shlib/Makefile.in 2007-11-05 18:59:14.000000000 +0100 -@@ -168,7 +168,7 @@ $(SHARED_READLINE): $(SHARED_OBJ) - - $(SHARED_HISTORY): $(SHARED_HISTOBJ) xmalloc.so - $(RM) $@ -- $(SHOBJ_LD) ${SHOBJ_LDFLAGS} ${SHLIB_XLDFLAGS} -o $@ $(SHARED_HISTOBJ) xmalloc.so $(SHLIB_LIBS) -+ $(SHOBJ_LD) ${SHOBJ_LDFLAGS} ${SHLIB_XLDFLAGS} -o $@ $(SHARED_HISTOBJ) xmalloc.so - - # Since tilde.c is shared between readline and bash, make sure we compile - # it with the right flags when it's built as part of readline diff --git a/readline-6.0-shlib.patch b/readline-6.0-shlib.patch new file mode 100644 index 0000000..dc3debf --- /dev/null +++ b/readline-6.0-shlib.patch @@ -0,0 +1,41 @@ +diff -up readline-6.0/shlib/Makefile.in.shlib readline-6.0/shlib/Makefile.in +--- readline-6.0/shlib/Makefile.in.shlib 2009-01-06 18:03:22.000000000 +0100 ++++ readline-6.0/shlib/Makefile.in 2009-07-02 14:36:15.000000000 +0200 +@@ -169,7 +169,7 @@ $(SHARED_READLINE): $(SHARED_OBJ) + + $(SHARED_HISTORY): $(SHARED_HISTOBJ) xmalloc.so + $(RM) $@ +- $(SHOBJ_LD) ${SHOBJ_LDFLAGS} ${SHLIB_XLDFLAGS} -o $@ $(SHARED_HISTOBJ) xmalloc.so $(SHLIB_LIBS) ++ $(SHOBJ_LD) ${SHOBJ_LDFLAGS} ${SHLIB_XLDFLAGS} -o $@ $(SHARED_HISTOBJ) xmalloc.so + + # Since tilde.c is shared between readline and bash, make sure we compile + # it with the right flags when it's built as part of readline +diff -up readline-6.0/support/shlib-install.shlib readline-6.0/support/shlib-install +--- readline-6.0/support/shlib-install.shlib 2008-07-20 01:16:05.000000000 +0200 ++++ readline-6.0/support/shlib-install 2009-07-02 14:37:59.000000000 +0200 +@@ -71,7 +71,7 @@ fi + case "$host_os" in + hpux*|darwin*|macosx*|linux*) + if [ -z "$uninstall" ]; then +- chmod 555 ${INSTALLDIR}/${LIBNAME} ++ chmod 755 ${INSTALLDIR}/${LIBNAME} + fi ;; + cygwin*|mingw*) + IMPLIBNAME=`echo ${LIBNAME} \ +diff -up readline-6.0/support/shobj-conf.shlib readline-6.0/support/shobj-conf +--- readline-6.0/support/shobj-conf.shlib 2009-01-04 20:32:42.000000000 +0100 ++++ readline-6.0/support/shobj-conf 2009-07-02 14:40:06.000000000 +0200 +@@ -112,10 +112,11 @@ sunos5*|solaris2*) + linux*-*|gnu*-*|k*bsd*-gnu-*) + SHOBJ_CFLAGS=-fPIC + SHOBJ_LD='${CC}' +- SHOBJ_LDFLAGS='-shared -Wl,-soname,$@' ++ SHOBJ_LDFLAGS='$(CFLAGS) -shared -Wl,-soname,$@' + +- SHLIB_XLDFLAGS='-Wl,-rpath,$(libdir) -Wl,-soname,`basename $@ $(SHLIB_MINOR)`' ++ SHLIB_XLDFLAGS='-Wl,-soname,`basename $@ $(SHLIB_MINOR)`' + SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)' ++ SHLIB_LIBS='-ltinfo' + ;; + + freebsd2*) diff --git a/readline.spec b/readline.spec index 7e81857..070a551 100644 --- a/readline.spec +++ b/readline.spec @@ -1,24 +1,16 @@ Summary: A library for editing typed command lines Name: readline -Version: 5.2 -Release: 14%{?dist} -License: GPLv2+ +Version: 6.0 +Release: 1%{?dist} +License: GPLv3+ Group: System Environment/Libraries URL: http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html Source: ftp://ftp.gnu.org/gnu/readline/readline-%{version}.tar.gz -Patch1: readline-5.2-shlib.patch -Patch2: readline-5.2-001.patch -Patch3: readline-5.2-002.patch -Patch4: readline-5.2-003.patch -Patch5: readline-5.2-004.patch -Patch6: readline-5.2-005.patch -Patch7: readline-5.2-006.patch -Patch8: readline-5.2-007.patch -Patch9: readline-5.2-008.patch -Patch10: readline-5.2-009.patch -Patch11: readline-5.2-010.patch -Patch12: readline-5.2-011.patch -Patch13: readline-5.2-redisplay-sigint.patch +Patch1: ftp://ftp.gnu.org/gnu/readline/readline-6.0-patches/readline60-001 +Patch2: ftp://ftp.gnu.org/gnu/readline/readline-6.0-patches/readline60-002 +Patch3: ftp://ftp.gnu.org/gnu/readline/readline-6.0-patches/readline60-003 +# fix file permissions, remove RPATH, use CFLAGS +Patch20: readline-6.0-shlib.patch Requires(post): /sbin/install-info Requires(preun): /sbin/install-info BuildRequires: ncurses-devel @@ -57,19 +49,10 @@ library. %prep %setup -q -%patch1 -p1 -b .shlib -%patch2 -p0 -b .001 -%patch3 -p0 -b .002 -%patch4 -p0 -b .003 -%patch5 -p0 -b .004 -%patch6 -p0 -b .005 -%patch7 -p0 -b .006 -%patch8 -p0 -b .007 -%patch9 -p0 -b .008 -%patch10 -p0 -b .009 -%patch11 -p0 -b .010 -%patch12 -p0 -b .011 -%patch13 -p1 -b .redisplay-sigint +%patch1 -p0 -b .001 +%patch2 -p0 -b .002 +%patch3 -p0 -b .003 +%patch20 -p1 -b .shlib pushd examples rm -f rlfe/configure @@ -95,6 +78,7 @@ for l in $RPM_BUILD_ROOT%{_libdir}/libreadline.so; do sed 's,\(^/\|\)[^/][^/]*,..,g')/%{_lib}/$(readlink $l) $l done +rm -rf $RPM_BUILD_ROOT%{_datadir}/readline rm -f $RPM_BUILD_ROOT%{_infodir}/dir %clean @@ -146,6 +130,10 @@ fi %{_libdir}/lib*.a %changelog +* Tue Jul 14 2009 Miroslav Lichvar 6.0-1 +- update to 6.0 +- include patches 001, 002, 003 + * Wed Feb 25 2009 Fedora Release Engineering - 5.2-14 - Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild diff --git a/readline60-001 b/readline60-001 new file mode 100644 index 0000000..6774b72 --- /dev/null +++ b/readline60-001 @@ -0,0 +1,79 @@ + READLINE PATCH REPORT + ===================== + +Readline-Release: 6.0 +Patch-ID: readline60-001 + +Bug-Reported-by: Nicolai Lissner +Bug-Reference-ID: <20090412020510.GA29658@lilith> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2009-04/msg00104.html + +Bug-Description: + +If a SIGWINCH arrives while bash is performing redisplay, multi-line prompts +are displayed incorrectly due to the display code being called recursively. + +Patch: + +*** ../readline-6.0/readline.h 2009-01-04 14:32:33.000000000 -0500 +--- readline.h 2009-04-13 08:47:00.000000000 -0400 +*************** +*** 815,820 **** + #define RL_STATE_MULTIKEY 0x200000 /* reading multiple-key command */ + #define RL_STATE_VICMDONCE 0x400000 /* entered vi command mode at least once */ + +! #define RL_STATE_DONE 0x800000 /* done; accepted line */ + + #define RL_SETSTATE(x) (rl_readline_state |= (x)) +--- 815,821 ---- + #define RL_STATE_MULTIKEY 0x200000 /* reading multiple-key command */ + #define RL_STATE_VICMDONCE 0x400000 /* entered vi command mode at least once */ ++ #define RL_STATE_REDISPLAYING 0x800000 /* updating terminal display */ + +! #define RL_STATE_DONE 0x1000000 /* done; accepted line */ + + #define RL_SETSTATE(x) (rl_readline_state |= (x)) +*** ../readline-6.0/display.c 2009-01-04 14:32:32.000000000 -0500 +--- display.c 2009-04-13 08:29:54.000000000 -0400 +*************** +*** 513,516 **** +--- 513,517 ---- + data structures. */ + _rl_block_sigint (); ++ RL_SETSTATE (RL_STATE_REDISPLAYING); + + if (!rl_display_prompt) +*************** +*** 1237,1240 **** +--- 1238,1242 ---- + } + ++ RL_UNSETSTATE (RL_STATE_REDISPLAYING); + _rl_release_sigint (); + } +*** ../readline-6.0/terminal.c 2009-01-04 14:32:34.000000000 -0500 +--- terminal.c 2009-04-13 08:43:00.000000000 -0400 +*************** +*** 356,360 **** + if (CUSTOM_REDISPLAY_FUNC ()) + rl_forced_update_display (); +! else + _rl_redisplay_after_sigwinch (); + } +--- 356,360 ---- + if (CUSTOM_REDISPLAY_FUNC ()) + rl_forced_update_display (); +! else if (RL_ISSTATE(RL_STATE_REDISPLAYING) == 0) + _rl_redisplay_after_sigwinch (); + } +*** ../readline-6.0/patchlevel 2008-11-18 11:01:14.000000000 -0500 +--- patchlevel 2009-05-09 12:01:06.000000000 -0400 +*************** +*** 1,3 **** + # Do not edit -- exists only for use by patch + +! 0 +--- 1,3 ---- + # Do not edit -- exists only for use by patch + +! 1 diff --git a/readline60-002 b/readline60-002 new file mode 100644 index 0000000..605c41e --- /dev/null +++ b/readline60-002 @@ -0,0 +1,44 @@ + READLINE PATCH REPORT + ===================== + +Readline-Release: 6.0 +Patch-ID: readline60-002 + +Bug-Reported-by: Matt Zyzik +Bug-Reference-ID: <20090319015542.696F62B8E8@ice.filescope.com> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2009-03/msg00149.html + +Bug-Description: + +When not in a locale supporting multibyte characters, readline will occasionally +not erase characters between the cursor position and the end of the line +when killing text backwards. + +Patch: + +*** ../readline-6.0/display.c 2009-01-04 14:32:32.000000000 -0500 +--- display.c 2009-04-14 14:00:18.000000000 -0400 +*************** +*** 1775,1779 **** + adjust col_lendiff based on the difference between _rl_last_c_pos + and _rl_screenwidth */ +! if (col_lendiff && (_rl_last_c_pos < _rl_screenwidth)) + #endif + { +--- 1775,1779 ---- + adjust col_lendiff based on the difference between _rl_last_c_pos + and _rl_screenwidth */ +! if (col_lendiff && ((MB_CUR_MAX == 1 || rl_byte_oriented) || (_rl_last_c_pos < _rl_screenwidth))) + #endif + { +*** ../readline-6.0/patchlevel 2008-11-18 11:01:14.000000000 -0500 +--- patchlevel 2009-05-09 12:01:06.000000000 -0400 +*************** +*** 1,3 **** + # Do not edit -- exists only for use by patch + +! 1 +--- 1,3 ---- + # Do not edit -- exists only for use by patch + +! 2 diff --git a/readline60-003 b/readline60-003 new file mode 100644 index 0000000..e4a58ab --- /dev/null +++ b/readline60-003 @@ -0,0 +1,58 @@ + READLINE PATCH REPORT + ===================== + +Readline-Release: 6.0 +Patch-ID: readline60-003 + +Bug-Reported-by: Andreas Schwab +Bug-Reference-ID: +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2009-04/msg00160.html + +Bug-Description: + +If the prompt length exactly matches the screen width, and the prompt ends +with invisible characters, readline positions the cursor incorrectly. + +Patch: + +*** ../readline-6.0/display.c 2009-01-04 14:32:32.000000000 -0500 +--- display.c 2009-04-25 21:42:18.000000000 -0400 +*************** +*** 1895,1898 **** +--- 1897,1904 ---- + woff = WRAP_OFFSET (_rl_last_v_pos, wrap_offset); + cpos = _rl_last_c_pos; ++ ++ if (cpos == 0 && cpos == new) ++ return; ++ + #if defined (HANDLE_MULTIBYTE) + /* If we have multibyte characters, NEW is indexed by the buffer point in +*************** +*** 1908,1914 **** + desired display position. */ + if ((new > prompt_last_invisible) || /* XXX - don't use woff here */ +! (prompt_physical_chars > _rl_screenwidth && + _rl_last_v_pos == prompt_last_screen_line && +! wrap_offset >= woff && + new > (prompt_last_invisible-(_rl_screenwidth*_rl_last_v_pos)-wrap_offset))) + /* XXX last comparison might need to be >= */ +--- 1914,1920 ---- + desired display position. */ + if ((new > prompt_last_invisible) || /* XXX - don't use woff here */ +! (prompt_physical_chars >= _rl_screenwidth && + _rl_last_v_pos == prompt_last_screen_line && +! wrap_offset >= woff && dpos >= woff && + new > (prompt_last_invisible-(_rl_screenwidth*_rl_last_v_pos)-wrap_offset))) + /* XXX last comparison might need to be >= */ +*** ../readline-6.0/patchlevel 2008-11-18 11:01:14.000000000 -0500 +--- patchlevel 2009-05-09 12:01:06.000000000 -0400 +*************** +*** 1,3 **** + # Do not edit -- exists only for use by patch + +! 2 +--- 1,3 ---- + # Do not edit -- exists only for use by patch + +! 3 diff --git a/sources b/sources index 0a164e3..da8223c 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -e39331f32ad14009b9ff49cc10c5e751 readline-5.2.tar.gz +b7f65a48add447693be6e86f04a63019 readline-6.0.tar.gz