summaryrefslogtreecommitdiff
path: root/devel/readline
diff options
context:
space:
mode:
authorhe <he@pkgsrc.org>2008-08-13 11:11:38 +0000
committerhe <he@pkgsrc.org>2008-08-13 11:11:38 +0000
commit0ddfe907f8598526686f34c71f8d560fcaab073e (patch)
tree5e641b3b2752d358941ad77f8d02016cb859c17f /devel/readline
parent4cbe6d74002e417deec29078af66a982753f1f11 (diff)
downloadpkgsrc-0ddfe907f8598526686f34c71f8d560fcaab073e.tar.gz
Update from version 5.2nb1 to 5.2nb2.
This imports some fixes from Debian. First and foremost: http://lists.gnu.org/archive/html/bug-bash/2006-11/msg00017.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. 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. 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. ...all related to display.c. Also add include of <stdio.h> to two of the readline header files.
Diffstat (limited to 'devel/readline')
-rw-r--r--devel/readline/Makefile4
-rw-r--r--devel/readline/distinfo5
-rw-r--r--devel/readline/patches/patch-af124
-rw-r--r--devel/readline/patches/patch-ag12
-rw-r--r--devel/readline/patches/patch-ah12
5 files changed, 154 insertions, 3 deletions
diff --git a/devel/readline/Makefile b/devel/readline/Makefile
index dbd28dc81ac..ecc309672dc 100644
--- a/devel/readline/Makefile
+++ b/devel/readline/Makefile
@@ -1,8 +1,8 @@
-# $NetBSD: Makefile,v 1.45 2008/03/02 07:07:43 jlam Exp $
+# $NetBSD: Makefile,v 1.46 2008/08/13 11:11:38 he Exp $
#
DISTNAME= readline-5.2
-PKGREVISION= 1
+PKGREVISION= 2
CATEGORIES= devel
MASTER_SITES= ${MASTER_SITE_GNU:=readline/}
diff --git a/devel/readline/distinfo b/devel/readline/distinfo
index 2257d932bf0..2716356a582 100644
--- a/devel/readline/distinfo
+++ b/devel/readline/distinfo
@@ -1,6 +1,9 @@
-$NetBSD: distinfo,v 1.14 2007/11/21 23:33:13 minskim Exp $
+$NetBSD: distinfo,v 1.15 2008/08/13 11:11:38 he Exp $
SHA1 (readline-5.2.tar.gz) = 18f3412c73068509d5f491b7b4535aeaf9522834
RMD160 (readline-5.2.tar.gz) = 983cbb25192e0a376b80cb2428fe8ee254a041c7
Size (readline-5.2.tar.gz) = 2037705 bytes
SHA1 (patch-ae) = b68716ae29eeb101c34d69dd274dbd846689a794
+SHA1 (patch-af) = 0b18362412b4bbe0ea3a821fec59129f6a8f7f50
+SHA1 (patch-ag) = 3114e6959dfff3e2aae74c3df3ba4b0f692b79bb
+SHA1 (patch-ah) = 107701a092b4294907e9a2066cfa7cbb3afad301
diff --git a/devel/readline/patches/patch-af b/devel/readline/patches/patch-af
new file mode 100644
index 00000000000..cc33a10b9d2
--- /dev/null
+++ b/devel/readline/patches/patch-af
@@ -0,0 +1,124 @@
+$NetBSD: patch-af,v 1.4 2008/08/13 11:11:38 he Exp $
+
+3 patches from Debian rolled into one:
+
+http://lists.gnu.org/archive/html/bug-bash/2006-11/msg00017.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.
+
+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.
+
+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.
+
+
+--- display.c.orig 2006-09-14 20:20:12.000000000 +0200
++++ display.c
+@@ -561,14 +561,25 @@ rl_redisplay ()
+ 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
++ 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() \
+@@ -1586,8 +1597,22 @@ update_line (old, new, current_line, oma
+ temp = nls - nfd;
+ 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 += _rl_col_width (nfd, 0, 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;
+ }
+ }
+ /* Otherwise, print over the existing material. */
+@@ -1595,8 +1620,20 @@ update_line (old, new, current_line, oma
+ {
+ 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);
+ if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
+@@ -1732,7 +1769,10 @@ _rl_move_cursor_relative (new, data)
+ if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
+ {
+ dpos = _rl_col_width (data, 0, new);
+- if (dpos > prompt_last_invisible) /* XXX - don't use woff here */
++ /* 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;
+ /* Since this will be assigned to _rl_last_c_pos at the end (more
+@@ -2380,6 +2420,8 @@ _rl_col_width (str, start, end)
+
+ if (end <= start)
+ return 0;
++ if (MB_CUR_MAX == 1)
++ return end - start;
+
+ memset (&ps, 0, sizeof (mbstate_t));
+
diff --git a/devel/readline/patches/patch-ag b/devel/readline/patches/patch-ag
new file mode 100644
index 00000000000..5298f296acd
--- /dev/null
+++ b/devel/readline/patches/patch-ag
@@ -0,0 +1,12 @@
+$NetBSD: patch-ag,v 1.4 2008/08/13 11:11:38 he Exp $
+
+--- history.h.orig 2003-07-31 14:38:44.000000000 +0200
++++ history.h
+@@ -32,6 +32,7 @@ extern "C" {
+ # include "rlstdc.h"
+ # include "rltypedefs.h"
+ #else
++# include <stdio.h>
+ # include <readline/rlstdc.h>
+ # include <readline/rltypedefs.h>
+ #endif
diff --git a/devel/readline/patches/patch-ah b/devel/readline/patches/patch-ah
new file mode 100644
index 00000000000..11a64b5fc2b
--- /dev/null
+++ b/devel/readline/patches/patch-ah
@@ -0,0 +1,12 @@
+$NetBSD: patch-ah,v 1.4 2008/08/13 11:11:38 he Exp $
+
+--- readline.h.orig 2006-08-16 21:16:59.000000000 +0200
++++ readline.h
+@@ -33,6 +33,7 @@ extern "C" {
+ # include "keymaps.h"
+ # include "tilde.h"
+ #else
++# include <stdio.h>
+ # include <readline/rlstdc.h>
+ # include <readline/rltypedefs.h>
+ # include <readline/keymaps.h>