Author: matthew Date: 2007-05-05 16:02:38 -0600 (Sat, 05 May 2007) New Revision: 1808
Added: trunk/readline/readline-5.2-fixes-3.patch Log: Add latest upstream patches for Readline. Added: trunk/readline/readline-5.2-fixes-3.patch =================================================================== --- trunk/readline/readline-5.2-fixes-3.patch (rev 0) +++ trunk/readline/readline-5.2-fixes-3.patch 2007-05-05 22:02:38 UTC (rev 1808) @@ -0,0 +1,102 @@ +Submitted By: Matt Burgess (matthew at linuxfromscratch dot org) +Date: 2007-04-29 +Initial Package Version: 5.2 +Upstream Status: From Upstream +Origin: http://ftp.gnu.org/gnu/readline/readline-5.2-patches/ +Description: A combined patch containing patches 001-004 from upstream. + +diff -Naur readline-5.2.orig/display.c readline-5.2/display.c +--- readline-5.2.orig/display.c 2006-09-14 18:20:12.000000000 +0000 ++++ readline-5.2/display.c 2007-04-28 19:17:04.000000000 +0000 +@@ -561,6 +561,17 @@ + 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)) \ +@@ -569,6 +580,7 @@ + inv_lbreaks = (int *)xrealloc (inv_lbreaks, inv_lbsize * sizeof (int)); \ + } \ + } while (0) ++#endif /* HANDLE_MULTIBYTE */ + + #if defined (HANDLE_MULTIBYTE) + #define CHECK_LPOS() \ +@@ -1586,8 +1598,22 @@ + 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 +1621,20 @@ + { + 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 +1770,10 @@ + 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 +2421,8 @@ + + if (end <= start) + return 0; ++ if (MB_CUR_MAX == 1 || rl_byte_oriented) ++ return (end - start); + + memset (&ps, 0, sizeof (mbstate_t)); + -- http://linuxfromscratch.org/mailman/listinfo/patches FAQ: http://www.linuxfromscratch.org/faq/ Unsubscribe: See the above information page
