summaryrefslogtreecommitdiff
path: root/devel/readline
diff options
context:
space:
mode:
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>