CRUX-ARM : Home

Home :: Documentation :: Download :: Development :: Community :: Ports :: Packages :: Bugs :: Links :: About :: Donors
readline: updated to 6.0.4
authorJose V Beneyto <sepen@crux.nu>
Thu, 10 Dec 2009 14:27:31 +0000 (15:27 +0100)
committerJose V Beneyto <sepen@crux.nu>
Thu, 10 Dec 2009 14:27:31 +0000 (15:27 +0100)
readline/.footprint
readline/.md5sum
readline/Pkgfile
readline/readline-5.2-001-013.patch [deleted file]
readline/readline-6.0-001-004.patch [new file with mode: 0644]

index 85b1f404111c6139d8930207e121586f985d7afc..dbac4ed14c62e0d4f173b49b9222763bd6d5d13a 100644 (file)
@@ -13,14 +13,32 @@ drwxr-xr-x  root/root       usr/include/readline/
 -rw-r--r--     root/root       usr/include/readline/tilde.h
 drwxr-xr-x     root/root       usr/lib/
 -rw-r--r--     root/root       usr/lib/libhistory.a
-lrwxrwxrwx     root/root       usr/lib/libhistory.so -> libhistory.so.5
-lrwxrwxrwx     root/root       usr/lib/libhistory.so.5 -> libhistory.so.5.2
--r-xr-xr-x     root/root       usr/lib/libhistory.so.5.2
+lrwxrwxrwx     root/root       usr/lib/libhistory.so -> libhistory.so.6
+lrwxrwxrwx     root/root       usr/lib/libhistory.so.6 -> libhistory.so.6.0
+-r-xr-xr-x     root/root       usr/lib/libhistory.so.6.0
 -rw-r--r--     root/root       usr/lib/libreadline.a
-lrwxrwxrwx     root/root       usr/lib/libreadline.so -> libreadline.so.5
-lrwxrwxrwx     root/root       usr/lib/libreadline.so.5 -> libreadline.so.5.2
--r-xr-xr-x     root/root       usr/lib/libreadline.so.5.2
-drwxr-xr-x     root/root       usr/man/
-drwxr-xr-x     root/root       usr/man/man3/
--rw-r--r--     root/root       usr/man/man3/history.3.gz
--rw-r--r--     root/root       usr/man/man3/readline.3.gz
+lrwxrwxrwx     root/root       usr/lib/libreadline.so -> libreadline.so.6
+lrwxrwxrwx     root/root       usr/lib/libreadline.so.6 -> libreadline.so.6.0
+-r-xr-xr-x     root/root       usr/lib/libreadline.so.6.0
+drwxr-xr-x     root/root       usr/share/
+drwxr-xr-x     root/root       usr/share/info/
+-rw-r--r--     root/root       usr/share/info/dir
+-rw-r--r--     root/root       usr/share/info/history.info
+-rw-r--r--     root/root       usr/share/info/readline.info
+-rw-r--r--     root/root       usr/share/info/rluserman.info
+drwxr-xr-x     root/root       usr/share/man/
+drwxr-xr-x     root/root       usr/share/man/man3/
+-rw-r--r--     root/root       usr/share/man/man3/history.3.gz
+-rw-r--r--     root/root       usr/share/man/man3/readline.3.gz
+drwxr-xr-x     root/root       usr/share/readline/
+-rw-r--r--     root/root       usr/share/readline/excallback.c
+-rw-r--r--     root/root       usr/share/readline/fileman.c
+-rw-r--r--     root/root       usr/share/readline/histexamp.c
+-rw-r--r--     root/root       usr/share/readline/manexamp.c
+-rw-r--r--     root/root       usr/share/readline/rl-fgets.c
+-rw-r--r--     root/root       usr/share/readline/rl.c
+-rw-r--r--     root/root       usr/share/readline/rlcat.c
+-rw-r--r--     root/root       usr/share/readline/rlevent.c
+-rw-r--r--     root/root       usr/share/readline/rlptytest.c
+-rw-r--r--     root/root       usr/share/readline/rltest.c
+-rw-r--r--     root/root       usr/share/readline/rlversion.c
index 19b9962519f0f13fe0b0f2ecaf9f892d8b664cf2..55784c984e47f30f4bbe593ff0eac81b209cebc7 100644 (file)
@@ -1,3 +1,3 @@
 553cf04fdeec54dca12062864c3ffba3  inputrc
-29f4be6477c36217c52a2f647eacc054  readline-5.2-001-013.patch
-e39331f32ad14009b9ff49cc10c5e751  readline-5.2.tar.gz
+b2a2a4f5df2685d1e2ce3142fae0344d  readline-6.0-001-004.patch
+b7f65a48add447693be6e86f04a63019  readline-6.0.tar.gz
index 07d97f803ea461c23791f7258587a9481fb322e8..b35a136c66343f2c00976c11436c0c00f4c14c22 100644 (file)
@@ -5,14 +5,14 @@
 # Depends on:
 
 name=readline
-version=5.2.13
+version=6.0.4
 release=1
-source=(http://ftp.gnu.org/gnu/$name/$name-5.2.tar.gz \
-        $name-5.2-001-013.patch inputrc)
+source=(http://ftp.gnu.org/gnu/$name/$name-${version%.*}.tar.gz \
+        $name-6.0-001-004.patch inputrc)
 
 build() {
-  cd $name-5.2
-  patch -p0 -i $SRC/$name-5.2-001-013.patch
+  cd $name-${version%.*}
+  patch -p0 -i $SRC/$name-6.0-001-004.patch
   ./configure --build=$CHOST \
               --host=$CTARGET \
               --prefix=/usr
diff --git a/readline/readline-5.2-001-013.patch b/readline/readline-5.2-001-013.patch
deleted file mode 100644 (file)
index d88d9ad..0000000
+++ /dev/null
@@ -1,1131 +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));
-
-                          READLINE PATCH REPORT
-                          =====================
-
-Readline-Release: 5.2
-Patch-ID: readline52-002
-
-Bug-Reported-by: Magnus Svensson <msvensson@mysql.com>
-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() \
-
-                          READLINE PATCH REPORT
-                          =====================
-
-Readline-Release: 5.2
-Patch-ID: readline52-003
-
-Bug-Reported-by: Peter Volkov <torre_cremata@mail.ru>
-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;
-
-                          READLINE PATCH REPORT
-                          =====================
-
-Readline-Release: 5.2
-Patch-ID: readline52-004
-
-Bug-Reported-by: Peter Volkov <torre_cremata@mail.ru>
-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);
-
-                          READLINE PATCH REPORT
-                          =====================
-
-Readline-Release: 5.2
-Patch-ID: readline52-005
-
-Bug-Reported-by:        Thomas Loeber <ifp@loeber1.de>
-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 ();
-
-                          READLINE PATCH REPORT
-                          =====================
-
-Readline-Release: 5.2
-Patch-ID: readline52-006
-
-Bug-Reported-by:        Peter Volkov <torre_cremata@mail.ru>
-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
-
-                          READLINE PATCH REPORT
-                          =====================
-
-Readline-Release: 5.2
-Patch-ID: readline52-007
-
-Bug-Reported-by:        Tom Bjorkholm <tom.bjorkholm@ericsson.com>
-Bug-Reference-ID:       <AEA1A32F001C6B4F98614B5B80D7647D01C075E9@esealmw115.eemea.ericsson.se>
-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;
-  
-                          READLINE PATCH REPORT
-                          =====================
-
-Readline-Release: 5.2
-Patch-ID: readline52-008
-
-Bug-Reported-by:       dAniel hAhler <ubuntu@thequod.de>
-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
-
-                          READLINE PATCH REPORT
-                          =====================
-
-Readline-Release: 5.2
-Patch-ID: readline52-009
-
-Bug-Reported-by:       dAniel hAhler <ubuntu@thequod.de>
-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;
-
-                          READLINE PATCH REPORT
-                          =====================
-
-Readline-Release: 5.2
-Patch-ID: readline52-010
-
-Bug-Reported-by:       Miroslav Lichvar <mlichvar@redhat.com>
-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;
-           }
-
-                          READLINE PATCH REPORT
-                          =====================
-
-Readline-Release: 5.2
-Patch-ID: readline52-011
-
-Bug-Reported-by:       Uwe Doering <gemini@geminix.org>
-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);
-
-                          READLINE PATCH REPORT
-                          =====================
-
-Readline-Release: 5.2
-Patch-ID: readline52-012
-
-Bug-Reported-by:       Chet Ramey <chet.ramey@case.edu>
-Bug-Reference-ID:
-Bug-Reference-URL:
-
-Bug-Description:
-
-This updates the options required to create shared libraries on several
-systems, including Mac OS X 10.5 (darwin9.x), FreeBSD, NetBSD, OpenBSD,
-AIX, and HP/UX.
-
-Patch:
-
-*** ../readline-5.2-patched/support/shobj-conf 2006-04-11 09:15:43.000000000 -0400
---- support/shobj-conf 2007-12-06 23:46:41.000000000 -0500
-***************
-*** 11,15 ****
-  # chet@po.cwru.edu
-  
-! # Copyright (C) 1996-2002 Free Software Foundation, Inc.
-  #
-  # This program is free software; you can redistribute it and/or modify
---- 11,15 ----
-  # chet@po.cwru.edu
-  
-! # Copyright (C) 1996-2007 Free Software Foundation, Inc.
-  #
-  # This program is free software; you can redistribute it and/or modify
-***************
-*** 115,119 ****
-       ;;
-  
-! freebsd2* | netbsd*)
-       SHOBJ_CFLAGS=-fpic
-       SHOBJ_LD=ld
---- 115,119 ----
-       ;;
-  
-! freebsd2*)
-       SHOBJ_CFLAGS=-fpic
-       SHOBJ_LD=ld
-***************
-*** 126,130 ****
-  # FreeBSD-3.x ELF
-  freebsd[3-9]*|freebsdelf[3-9]*|freebsdaout[3-9]*|dragonfly*)
-!      SHOBJ_CFLAGS=-fpic
-       SHOBJ_LD='${CC}'
-  
---- 126,130 ----
-  # FreeBSD-3.x ELF
-  freebsd[3-9]*|freebsdelf[3-9]*|freebsdaout[3-9]*|dragonfly*)
-!      SHOBJ_CFLAGS=-fPIC
-       SHOBJ_LD='${CC}'
-  
-***************
-*** 143,147 ****
-  
-  # Darwin/MacOS X
-! darwin8*)
-       SHOBJ_STATUS=supported
-       SHLIB_STATUS=supported
---- 143,147 ----
-  
-  # Darwin/MacOS X
-! darwin[89]*)
-       SHOBJ_STATUS=supported
-       SHLIB_STATUS=supported
-***************
-*** 154,158 ****
-       SHLIB_LIBSUFF='dylib'
-  
-!      SHOBJ_LDFLAGS='-undefined dynamic_lookup'
-       SHLIB_XLDFLAGS='-dynamiclib -arch_only `/usr/bin/arch` -install_name $(libdir)/$@ -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v'
-  
---- 154,158 ----
-       SHLIB_LIBSUFF='dylib'
-  
-!      SHOBJ_LDFLAGS='-dynamiclib -dynamic -undefined dynamic_lookup -arch_only `/usr/bin/arch`'
-       SHLIB_XLDFLAGS='-dynamiclib -arch_only `/usr/bin/arch` -install_name $(libdir)/$@ -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v'
-  
-***************
-*** 172,176 ****
-  
-       case "${host_os}" in
-!      darwin[78]*)    SHOBJ_LDFLAGS=''
-                       SHLIB_XLDFLAGS='-dynamiclib -arch_only `/usr/bin/arch` -install_name $(libdir)/$@ -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v'
-                       ;;
---- 172,176 ----
-  
-       case "${host_os}" in
-!      darwin[789]*)   SHOBJ_LDFLAGS=''
-                       SHLIB_XLDFLAGS='-dynamiclib -arch_only `/usr/bin/arch` -install_name $(libdir)/$@ -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v'
-                       ;;
-***************
-*** 183,187 ****
-       ;;
-  
-! openbsd*)
-       SHOBJ_CFLAGS=-fPIC
-       SHOBJ_LD='${CC}'
---- 183,187 ----
-       ;;
-  
-! openbsd*|netbsd*)
-       SHOBJ_CFLAGS=-fPIC
-       SHOBJ_LD='${CC}'
-***************
-*** 248,252 ****
-       ;;
-  
-! aix4.[2-9]*-*gcc*)           # lightly tested by jik@cisco.com
-       SHOBJ_CFLAGS=-fpic
-       SHOBJ_LD='ld'
---- 248,252 ----
-       ;;
-  
-! aix4.[2-9]*-*gcc*|aix[5-9].*-*gcc*)          # lightly tested by jik@cisco.com
-       SHOBJ_CFLAGS=-fpic
-       SHOBJ_LD='ld'
-***************
-*** 259,263 ****
-       ;;
-  
-! aix4.[2-9]*)
-       SHOBJ_CFLAGS=-K
-       SHOBJ_LD='ld'
---- 259,263 ----
-       ;;
-  
-! aix4.[2-9]*|aix[5-9].*)
-       SHOBJ_CFLAGS=-K
-       SHOBJ_LD='ld'
-***************
-*** 330,334 ****
-       # if you have problems linking here, moving the `-Wl,+h,$@' from
-       # SHLIB_XLDFLAGS to SHOBJ_LDFLAGS has been reported to work
-!      SHOBJ_LDFLAGS='-shared -Wl,-b -Wl,+s'
-  
-       SHLIB_XLDFLAGS='-Wl,+h,$@ -Wl,+b,$(libdir)'
---- 330,334 ----
-       # if you have problems linking here, moving the `-Wl,+h,$@' from
-       # SHLIB_XLDFLAGS to SHOBJ_LDFLAGS has been reported to work
-!      SHOBJ_LDFLAGS='-shared -fpic -Wl,-b -Wl,+s'
-  
-       SHLIB_XLDFLAGS='-Wl,+h,$@ -Wl,+b,$(libdir)'
-
-                          READLINE PATCH REPORT
-                          =====================
-
-Readline-Release: 5.2
-Patch-ID: readline52-013
-
-Bug-Reported-by:       slinkp <stuff@slinkp.com>
-Bug-Reference-ID:      <da52a26a-9f38-4861-a918-14d3482b539d@c65g2000hsa.googlegroups.com>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2008-05/msg00085.html
-
-Bug-Description:
-
-The presence of invisible characters in a prompt longer than the screenwidth
-with invisible characters on the first and last prompt lines caused readline
-to place the cursor in the wrong physical location.
-
-Patch:
-
-*** ../readline-5.2-patched/display.c  2007-12-14 21:12:40.000000000 -0500
---- display.c  2008-10-23 09:39:46.000000000 -0400
-***************
-*** 911,914 ****
---- 944,951 ----
-            OFFSET (which has already been calculated above).  */
-  
-+ #define INVIS_FIRST()        (prompt_physical_chars > _rl_screenwidth ? prompt_invis_chars_first_line : wrap_offset)
-+ #define WRAP_OFFSET(line, offset)  ((line == 0) \
-+                                      ? (offset ? INVIS_FIRST() : 0) \
-+                                      : ((line == prompt_last_screen_line) ? wrap_offset-prompt_invis_chars_first_line : 0))
-  #define W_OFFSET(line, offset) ((line) == 0 ? offset : 0)
-  #define VIS_LLEN(l)  ((l) > _rl_vis_botlin ? 0 : (vis_lbreaks[l+1] - vis_lbreaks[l]))
-***************
-*** 945,949 ****
-                 _rl_last_c_pos > wrap_offset &&
-                 o_cpos < prompt_last_invisible)
-!              _rl_last_c_pos -= wrap_offset;
-                 
-             /* If this is the line with the prompt, we might need to
---- 982,992 ----
-                 _rl_last_c_pos > wrap_offset &&
-                 o_cpos < prompt_last_invisible)
-!              _rl_last_c_pos -= prompt_invis_chars_first_line;        /* XXX - was wrap_offset */
-!            else if (linenum == prompt_last_screen_line && prompt_physical_chars > _rl_screenwidth &&
-!                      (MB_CUR_MAX > 1 && rl_byte_oriented == 0) &&
-!                      cpos_adjusted == 0 &&
-!                      _rl_last_c_pos != o_cpos &&
-!                      _rl_last_c_pos > (prompt_last_invisible - _rl_screenwidth - prompt_invis_chars_first_line))
-!              _rl_last_c_pos -= (wrap_offset-prompt_invis_chars_first_line);
-                 
-             /* If this is the line with the prompt, we might need to
-***************
-*** 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;
---- 1264,1268 ----
-  {
-    register char *ofd, *ols, *oe, *nfd, *nls, *ne;
-!   int temp, lendiff, wsatend, od, nd, twidth, o_cpos;
-    int current_invis_chars;
-    int col_lendiff, col_temp;
-***************
-*** 1221,1225 ****
-      temp = _rl_last_c_pos;
-    else
-!     temp = _rl_last_c_pos - W_OFFSET(_rl_last_v_pos, visible_wrap_offset);
-    if (temp == _rl_screenwidth && _rl_term_autowrap && !_rl_horizontal_scroll_mode
-       && _rl_last_v_pos == current_line - 1)
---- 1280,1284 ----
-      temp = _rl_last_c_pos;
-    else
-!     temp = _rl_last_c_pos - WRAP_OFFSET (_rl_last_v_pos, visible_wrap_offset);
-    if (temp == _rl_screenwidth && _rl_term_autowrap && !_rl_horizontal_scroll_mode
-       && _rl_last_v_pos == current_line - 1)
-***************
-*** 1587,1599 ****
-           {
-             _rl_output_some_chars (nfd + lendiff, temp - lendiff);
-- #if 1
-            /* XXX -- this bears closer inspection.  Fixes a redisplay bug
-               reported against bash-3.0-alpha by Andreas Schwab involving
-               multibyte characters and prompt strings with invisible
-               characters, but was previously disabled. */
-!            _rl_last_c_pos += _rl_col_width (nfd+lendiff, 0, temp-col_lendiff);
-! #else
-!            _rl_last_c_pos += _rl_col_width (nfd+lendiff, 0, temp-lendiff);
-! #endif
-           }
-       }
---- 1648,1660 ----
-           {
-             _rl_output_some_chars (nfd + lendiff, temp - lendiff);
-            /* XXX -- this bears closer inspection.  Fixes a redisplay bug
-               reported against bash-3.0-alpha by Andreas Schwab involving
-               multibyte characters and prompt strings with invisible
-               characters, but was previously disabled. */
-!            if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
-!              twidth = _rl_col_width (nfd+lendiff, 0, temp-col_lendiff);
-!            else
-!              twidth = temp - lendiff;
-!            _rl_last_c_pos += twidth;
-           }
-       }
-***************
-*** 1789,1793 ****
-    int cpos, dpos;            /* current and desired cursor positions */
-  
-!   woff = W_OFFSET (_rl_last_v_pos, wrap_offset);
-    cpos = _rl_last_c_pos;
-  #if defined (HANDLE_MULTIBYTE)
---- 1850,1854 ----
-    int cpos, dpos;            /* current and desired cursor positions */
-  
-!   woff = WRAP_OFFSET (_rl_last_v_pos, wrap_offset);
-    cpos = _rl_last_c_pos;
-  #if defined (HANDLE_MULTIBYTE)
-***************
-*** 1803,1807 ****
-        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;
---- 1864,1872 ----
-        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 */
-!        (prompt_physical_chars > _rl_screenwidth &&
-!         _rl_last_v_pos == prompt_last_screen_line &&
-!         wrap_offset != woff &&
-!         new > (prompt_last_invisible-_rl_screenwidth-wrap_offset)))
-       {
-         dpos -= woff;
diff --git a/readline/readline-6.0-001-004.patch b/readline/readline-6.0-001-004.patch
new file mode 100644 (file)
index 0000000..d9e555f
--- /dev/null
@@ -0,0 +1,244 @@
+                          READLINE PATCH REPORT
+                          =====================
+
+Readline-Release: 6.0
+Patch-ID: readline60-001
+
+Bug-Reported-by: Nicolai Lissner <nlissne@linux01.org>
+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
+                          READLINE PATCH REPORT
+                          =====================
+
+Readline-Release: 6.0
+Patch-ID: readline60-002
+
+Bug-Reported-by:  Matt Zyzik <matt.zyzik@nyu.edu>
+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
+                          READLINE PATCH REPORT
+                          =====================
+
+Readline-Release: 6.0
+Patch-ID: readline60-003
+
+Bug-Reported-by: Andreas Schwab <schwab@linux-m68k.org>
+Bug-Reference-ID: <m21vrhhx08.fsf@igel.home>
+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
+                          READLINE PATCH REPORT
+                          =====================
+
+Readline-Release: 6.0
+Patch-ID: readline60-004
+
+Bug-Reported-by:       jim@jim.sh
+Bug-Reference-ID:      <200905262140.n4QLeO4X030664@psychosis.jim.sh>
+Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2009-05/msg00074.html
+
+Bug-Description:
+
+There are occasional cursor positioning errors when using readline's
+horizontal scroll mode.
+
+Patch:
+
+*** ../readline-6.0-patched/display.c  2009-05-22 12:32:25.000000000 -0400
+--- display.c  2009-05-29 23:32:20.000000000 -0400
+***************
+*** 1190,1196 ****
+       line[t - 1] = '>';
+  
+!       if (!rl_display_fixed || forced_display || lmargin != last_lmargin)
+       {
+         forced_display = 0;
+         update_line (&visible_line[last_lmargin],
+                      &invisible_line[lmargin],
+--- 1192,1200 ----
+       line[t - 1] = '>';
+  
+!       if (rl_display_fixed == 0 || forced_display || lmargin != last_lmargin)
+       {
+         forced_display = 0;
++        o_cpos = _rl_last_c_pos;
++        cpos_adjusted = 0;
+         update_line (&visible_line[last_lmargin],
+                      &invisible_line[lmargin],
+***************
+*** 1200,1203 ****
+--- 1204,1214 ----
+                      0);
+  
++        if ((MB_CUR_MAX > 1 && rl_byte_oriented == 0) &&
++            cpos_adjusted == 0 &&
++            _rl_last_c_pos != o_cpos &&
++            _rl_last_c_pos > wrap_offset &&
++            o_cpos < prompt_last_invisible)
++              _rl_last_c_pos -= prompt_invis_chars_first_line;        /* XXX - was wrap_offset */
++ 
+         /* If the visible new line is shorter than the old, but the number
+            of invisible characters is greater, and we are at the end of
+*** ../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
+  
+! 3
+--- 1,3 ----
+  # Do not edit -- exists only for use by patch
+  
+! 4