diff options
Diffstat (limited to 'package/bash')
| -rw-r--r-- | package/bash/bash32-010 | 207 | ||||
| -rw-r--r-- | package/bash/bash32-011 | 138 | ||||
| -rw-r--r-- | package/bash/bash32-012 | 96 | ||||
| -rw-r--r-- | package/bash/bash32-013 | 65 | ||||
| -rw-r--r-- | package/bash/bash32-014 | 307 | ||||
| -rw-r--r-- | package/bash/bash32-015 | 95 | ||||
| -rw-r--r-- | package/bash/bash32-016 | 52 | ||||
| -rw-r--r-- | package/bash/bash32-017 | 85 | 
8 files changed, 1045 insertions, 0 deletions
diff --git a/package/bash/bash32-010 b/package/bash/bash32-010 new file mode 100644 index 000000000..88de5758f --- /dev/null +++ b/package/bash/bash32-010 @@ -0,0 +1,207 @@ +			     BASH PATCH REPORT +			     ================= + +Bash-Release: 3.2 +Patch-ID: bash32-010 + +Bug-Reported-by:	Ryan Waldron <rew@erebor.com> +Bug-Reference-ID:	<20070119065603.546D011E9C@kansas.erebor.com> +Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2007-01/msg00059.html + +Bug-Description: + +The glibc implementation of regcomp/regexec does not allow backslashes to +escape "ordinary" pattern characters when matching.  Bash used backslashes +to quote all characters when the pattern argument to the [[ special +command's =~ operator was quoted.  This caused the match to fail on Linux +and other systems using GNU libc. + +Patch: + +*** ../bash-3.2.9/pathexp.h	Sat Feb 19 17:23:18 2005 +--- pathexp.h	Wed Jan 31 22:53:16 2007 +*************** +*** 1,5 **** +  /* pathexp.h -- The shell interface to the globbing library. */ +   +! /* Copyright (C) 1987-2005 Free Software Foundation, Inc. +   +     This file is part of GNU Bash, the Bourne Again SHell. +--- 1,5 ---- +  /* pathexp.h -- The shell interface to the globbing library. */ +   +! /* Copyright (C) 1987-2007 Free Software Foundation, Inc. +   +     This file is part of GNU Bash, the Bourne Again SHell. +*************** +*** 33,36 **** +--- 33,37 ---- +  #define QGLOB_CVTNULL	0x01	/* convert QUOTED_NULL strings to '\0' */ +  #define QGLOB_FILENAME	0x02	/* do correct quoting for matching filenames */ ++ #define QGLOB_REGEXP	0x04	/* quote an ERE for regcomp/regexec */ +   +  #if defined (EXTENDED_GLOB) +*** ../bash-3.2.9/pathexp.c	Mon May  6 13:43:05 2002 +--- pathexp.c	Mon Feb 26 16:59:23 2007 +*************** +*** 1,5 **** +  /* pathexp.c -- The shell interface to the globbing library. */ +   +! /* Copyright (C) 1995-2002 Free Software Foundation, Inc. +   +     This file is part of GNU Bash, the Bourne Again SHell. +--- 1,5 ---- +  /* pathexp.c -- The shell interface to the globbing library. */ +   +! /* Copyright (C) 1995-2007 Free Software Foundation, Inc. +   +     This file is part of GNU Bash, the Bourne Again SHell. +*************** +*** 111,114 **** +--- 111,141 ---- +  } +   ++ /* Return 1 if C is a character that is `special' in a POSIX ERE and needs to ++    be quoted to match itself. */ ++ static inline int ++ ere_char (c) ++      int c; ++ { ++   switch (c) ++     { ++     case '.': ++     case '[': ++     case '\\': ++     case '(': ++     case ')': ++     case '*': ++     case '+': ++     case '?': ++     case '{': ++     case '|': ++     case '^': ++     case '$': ++       return 1; ++     default:  ++       return 0; ++     } ++   return (0); ++ } ++  +  /* PATHNAME can contain characters prefixed by CTLESC; this indicates +     that the character is to be quoted.  We quote it here in the style +*************** +*** 143,146 **** +--- 170,175 ---- +  	  if ((qflags & QGLOB_FILENAME) && pathname[i+1] == '/') +  	    continue; ++ 	  if ((qflags & QGLOB_REGEXP) && ere_char (pathname[i+1]) == 0) ++ 	    continue; +  	  temp[j++] = '\\'; +  	  i++; +*** ../bash-3.2.9/subst.c	Tue Nov  7 16:14:41 2006 +--- subst.c	Wed Jan 31 23:09:58 2007 +*************** +*** 5,9 **** +       beauty, but, hey, you're alright.'' */ +   +! /* Copyright (C) 1987-2006 Free Software Foundation, Inc. +   +     This file is part of GNU Bash, the Bourne Again SHell. +--- 5,9 ---- +       beauty, but, hey, you're alright.'' */ +   +! /* Copyright (C) 1987-2007 Free Software Foundation, Inc. +   +     This file is part of GNU Bash, the Bourne Again SHell. +*************** +*** 2647,2655 **** +  /* This needs better error handling. */ +  /* Expand W for use as an argument to a unary or binary operator in a +!    [[...]] expression.  If SPECIAL is nonzero, this is the rhs argument +     to the != or == operator, and should be treated as a pattern.  In +!    this case, we quote the string specially for the globbing code.  The +!    caller is responsible for removing the backslashes if the unquoted +!    words is needed later. */    +  char * +  cond_expand_word (w, special) +--- 2647,2656 ---- +  /* This needs better error handling. */ +  /* Expand W for use as an argument to a unary or binary operator in a +!    [[...]] expression.  If SPECIAL is 1, this is the rhs argument +     to the != or == operator, and should be treated as a pattern.  In +!    this case, we quote the string specially for the globbing code.  If +!    SPECIAL is 2, this is an rhs argument for the =~ operator, and should +!    be quoted appropriately for regcomp/regexec.  The caller is responsible +!    for removing the backslashes if the unquoted word is needed later. */    +  char * +  cond_expand_word (w, special) +*************** +*** 2659,2662 **** +--- 2660,2664 ---- +    char *r, *p; +    WORD_LIST *l; ++   int qflags; +   +    if (w->word == 0 || w->word[0] == '\0') +*************** +*** 2673,2678 **** +        else +  	{ +  	  p = string_list (l); +! 	  r = quote_string_for_globbing (p, QGLOB_CVTNULL); +  	  free (p); +  	} +--- 2675,2683 ---- +        else +  	{ ++ 	  qflags = QGLOB_CVTNULL; ++ 	  if (special == 2) ++ 	    qflags |= QGLOB_REGEXP; +  	  p = string_list (l); +! 	  r = quote_string_for_globbing (p, qflags); +  	  free (p); +  	} +*** ../bash-3.2.9/execute_cmd.c	Sat Aug 26 00:23:17 2006 +--- execute_cmd.c	Wed Jan 31 23:12:06 2007 +*************** +*** 1,5 **** +  /* execute_cmd.c -- Execute a COMMAND structure. */ +   +! /* Copyright (C) 1987-2005 Free Software Foundation, Inc. +   +     This file is part of GNU Bash, the Bourne Again SHell. +--- 1,5 ---- +  /* execute_cmd.c -- Execute a COMMAND structure. */ +   +! /* Copyright (C) 1987-2007 Free Software Foundation, Inc. +   +     This file is part of GNU Bash, the Bourne Again SHell. +*************** +*** 2547,2551 **** +        if (arg1 == 0) +  	arg1 = nullstr; +!       arg2 = cond_expand_word (cond->right->op, patmatch||rmatch); +        if (arg2 == 0) +  	arg2 = nullstr; +--- 2547,2551 ---- +        if (arg1 == 0) +  	arg1 = nullstr; +!       arg2 = cond_expand_word (cond->right->op, rmatch ? 2 : (patmatch ? 1 : 0)); +        if (arg2 == 0) +  	arg2 = nullstr; +*** ../bash-3.2/patchlevel.h	Thu Apr 13 08:31:04 2006 +--- patchlevel.h	Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** +     looks for to find the patch level (for the sccs version string). */ +   +! #define PATCHLEVEL 9 +   +  #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- +     looks for to find the patch level (for the sccs version string). */ +   +! #define PATCHLEVEL 10 +   +  #endif /* _PATCHLEVEL_H_ */ diff --git a/package/bash/bash32-011 b/package/bash/bash32-011 new file mode 100644 index 000000000..c021f52f8 --- /dev/null +++ b/package/bash/bash32-011 @@ -0,0 +1,138 @@ +			     BASH PATCH REPORT +			     ================= + +Bash-Release: 3.2 +Patch-ID: bash32-011 + +Bug-Reported-by: Petr Sumbera <Petr.Sumbera@Sun.COM> +Bug-Reference-ID: <45AF5F4B.1020800@sun.com> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2007-01/msg00049.html + +Bug-Description: + +Under certain circumstances (loopback mounts), the bash getcwd does not +return correct results.  This patch allows the use of the Solaris libc +getcwd even though it doesn't dynamically allocate memory. + +Run `touch configure' to make sure make doesn't try to run autoconf. +Then run configure with whatever options you like. + +Patch: + +*** ../bash-3.2-patched/configure.in	Tue Sep 26 11:05:45 2006 +--- configure.in	Wed Jan 31 09:48:00 2007 +*************** +*** 6,10 **** +  dnl Process this file with autoconf to produce a configure script. +   +! # Copyright (C) 1987-2006 Free Software Foundation, Inc. +   +  # This program is free software; you can redistribute it and/or modify +--- 6,10 ---- +  dnl Process this file with autoconf to produce a configure script. +   +! # Copyright (C) 1987-2007 Free Software Foundation, Inc. +   +  # This program is free software; you can redistribute it and/or modify +*************** +*** 992,996 **** +  sco3.2*)	LOCAL_CFLAGS=-DMUST_UNBLOCK_CHLD ;; +  sunos4*)	LOCAL_CFLAGS=-DSunOS4 ;; +! solaris2.5*)	LOCAL_CFLAGS=-DSunOS5 ;; +  lynxos*)	LOCAL_CFLAGS=-DRECYCLES_PIDS ;; +  linux*)		LOCAL_LDFLAGS=-rdynamic		 # allow dynamic loading +--- 992,997 ---- +  sco3.2*)	LOCAL_CFLAGS=-DMUST_UNBLOCK_CHLD ;; +  sunos4*)	LOCAL_CFLAGS=-DSunOS4 ;; +! solaris2.5*)	LOCAL_CFLAGS="-DSunOS5 -DSOLARIS" ;; +! solaris2*)	LOCAL_CFLAGS=-DSOLARIS ;; +  lynxos*)	LOCAL_CFLAGS=-DRECYCLES_PIDS ;; +  linux*)		LOCAL_LDFLAGS=-rdynamic		 # allow dynamic loading +*** ../bash-3.2-patched/config-bot.h	Tue Sep 12 16:43:04 2006 +--- config-bot.h	Tue Mar  6 10:41:31 2007 +*************** +*** 2,6 **** +  /* modify settings or make new ones based on what autoconf tells us. */ +   +! /* Copyright (C) 1989-2002 Free Software Foundation, Inc. +   +     This file is part of GNU Bash, the Bourne Again SHell. +--- 2,6 ---- +  /* modify settings or make new ones based on what autoconf tells us. */ +   +! /* Copyright (C) 1989-2007 Free Software Foundation, Inc. +   +     This file is part of GNU Bash, the Bourne Again SHell. +*************** +*** 71,77 **** +  #endif +   +! /* If we have a getcwd(3), but it calls popen(), #undef HAVE_GETCWD so +!    the replacement in getcwd.c will be built. */ +! #if defined (HAVE_GETCWD) && defined (GETCWD_BROKEN) +  #  undef HAVE_GETCWD +  #endif +--- 71,79 ---- +  #endif +   +! /* If we have a getcwd(3), but one that does not dynamically allocate memory, +!    #undef HAVE_GETCWD so the replacement in getcwd.c will be built.  We do +!    not do this on Solaris, because their implementation of loopback mounts +!    breaks the traditional file system assumptions that getcwd uses. */ +! #if defined (HAVE_GETCWD) && defined (GETCWD_BROKEN) && !defined (SOLARIS) +  #  undef HAVE_GETCWD +  #endif +*** ../bash-3.2-patched/builtins/common.c	Thu Jul 27 09:39:51 2006 +--- builtins/common.c	Tue Mar  6 10:43:27 2007 +*************** +*** 1,3 **** +! /* Copyright (C) 1987-2005 Free Software Foundation, Inc. +   +     This file is part of GNU Bash, the Bourne Again SHell. +--- 1,3 ---- +! /* Copyright (C) 1987-2007 Free Software Foundation, Inc. +   +     This file is part of GNU Bash, the Bourne Again SHell. +*************** +*** 476,480 **** +--- 476,484 ---- +    if (the_current_working_directory == 0) +      { ++ #if defined (GETCWD_BROKEN) ++       the_current_working_directory = getcwd (0, PATH_MAX); ++ #else +        the_current_working_directory = getcwd (0, 0); ++ #endif +        if (the_current_working_directory == 0) +  	{ +*** ../bash-3.2-patched/configure	Tue Sep 26 11:06:01 2006 +--- configure	Tue Mar  6 10:59:20 2007 +*************** +*** 27317,27321 **** +  sco3.2*)	LOCAL_CFLAGS=-DMUST_UNBLOCK_CHLD ;; +  sunos4*)	LOCAL_CFLAGS=-DSunOS4 ;; +! solaris2.5*)	LOCAL_CFLAGS=-DSunOS5 ;; +  lynxos*)	LOCAL_CFLAGS=-DRECYCLES_PIDS ;; +  linux*)		LOCAL_LDFLAGS=-rdynamic		 # allow dynamic loading +--- 27317,27322 ---- +  sco3.2*)	LOCAL_CFLAGS=-DMUST_UNBLOCK_CHLD ;; +  sunos4*)	LOCAL_CFLAGS=-DSunOS4 ;; +! solaris2.5*)	LOCAL_CFLAGS="-DSunOS5 -DSOLARIS" ;; +! solaris2*)	LOCAL_CFLAGS=-DSOLARIS ;; +  lynxos*)	LOCAL_CFLAGS=-DRECYCLES_PIDS ;; +  linux*)		LOCAL_LDFLAGS=-rdynamic		 # allow dynamic loading +*** ../bash-3.2/patchlevel.h	Thu Apr 13 08:31:04 2006 +--- patchlevel.h	Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** +     looks for to find the patch level (for the sccs version string). */ +   +! #define PATCHLEVEL 10 +   +  #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- +     looks for to find the patch level (for the sccs version string). */ +   +! #define PATCHLEVEL 11 +   +  #endif /* _PATCHLEVEL_H_ */ diff --git a/package/bash/bash32-012 b/package/bash/bash32-012 new file mode 100644 index 000000000..8d669d27c --- /dev/null +++ b/package/bash/bash32-012 @@ -0,0 +1,96 @@ +			     BASH PATCH REPORT +			     ================= + +Bash-Release: 3.2 +Patch-ID: bash32-012 + +Bug-Reported-by: John Wyman <JohnWyman@celink.com> +Bug-Reference-ID: <5E7DEFC094C35044B87FAE761D9F0EE20143A3B7@exchange2k.celink.com> +Bug-Reference-URL:  + +Bug-Description: + +Some systems (AIX 4.x) don't implement the PRI_xxx macros correctly, +causing syntax errors when attempting to compile bash on those systems. +This patch adds support for the PRI_MACROS_BROKEN define. + +You will need to re-run `configure' after applying the patch.  Run +`touch configure' so make doesn't try to run autoconf. + +Patch: + +*** ../bash-3.2.11/config.h.in	Tue Sep 12 16:00:54 2006 +--- config.h.in	Tue Mar  6 11:17:55 2007 +*************** +*** 1,5 **** +  /* config.h -- Configuration file for bash. */ +   +! /* Copyright (C) 1987-2006 Free Software Foundation, Inc. +   +     This file is part of GNU Bash, the Bourne Again SHell. +--- 1,5 ---- +  /* config.h -- Configuration file for bash. */ +   +! /* Copyright (C) 1987-2007 Free Software Foundation, Inc. +   +     This file is part of GNU Bash, the Bourne Again SHell. +*************** +*** 414,417 **** +--- 414,419 ---- +  #undef HAVE_DECL_STRTOLD +   ++ #undef PRI_MACROS_BROKEN ++  +  #undef STRTOLD_BROKEN +   +*************** +*** 1007,1010 **** +--- 1009,1015 ---- +  #undef HAVE_DCGETTEXT +   ++ /* Define if you have the `localeconv' function. */ ++ #undef HAVE_LOCALECONV ++  +  /* Define if your system has a working `malloc' function. */ +  /* #undef HAVE_MALLOC */ +*** ../bash-3.2.11/builtins/printf.def	Mon Nov 13 08:58:52 2006 +--- builtins/printf.def	Sun Feb  4 13:58:59 2007 +*************** +*** 2,6 **** +  It implements the builtin "printf" in Bash. +   +! Copyright (C) 1997-2005 Free Software Foundation, Inc. +   +  This file is part of GNU Bash, the Bourne Again SHell. +--- 2,6 ---- +  It implements the builtin "printf" in Bash. +   +! Copyright (C) 1997-2007 Free Software Foundation, Inc. +   +  This file is part of GNU Bash, the Bourne Again SHell. +*************** +*** 71,74 **** +--- 71,78 ---- +  #include "common.h" +   ++ #if defined (PRI_MACROS_BROKEN) ++ #  undef PRIdMAX ++ #endif ++  +  #if !defined (PRIdMAX) +  #  if HAVE_LONG_LONG +*** ../bash-3.2/patchlevel.h	Thu Apr 13 08:31:04 2006 +--- patchlevel.h	Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** +     looks for to find the patch level (for the sccs version string). */ +   +! #define PATCHLEVEL 11 +   +  #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- +     looks for to find the patch level (for the sccs version string). */ +   +! #define PATCHLEVEL 12 +   +  #endif /* _PATCHLEVEL_H_ */ diff --git a/package/bash/bash32-013 b/package/bash/bash32-013 new file mode 100644 index 000000000..d47bc1a5f --- /dev/null +++ b/package/bash/bash32-013 @@ -0,0 +1,65 @@ +			     BASH PATCH REPORT +			     ================= + +Bash-Release: 3.2 +Patch-ID: bash32-013 + +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: + +*** ../bash-3.2-patched/lib/readline/display.c	Thu Sep 14 14:20:12 2006 +--- lib/readline/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() \ + +*** ../bash-3.2/patchlevel.h	Thu Apr 13 08:31:04 2006 +--- patchlevel.h	Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** +     looks for to find the patch level (for the sccs version string). */ +   +! #define PATCHLEVEL 12 +   +  #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- +     looks for to find the patch level (for the sccs version string). */ +   +! #define PATCHLEVEL 13 +   +  #endif /* _PATCHLEVEL_H_ */ diff --git a/package/bash/bash32-014 b/package/bash/bash32-014 new file mode 100644 index 000000000..b706505b7 --- /dev/null +++ b/package/bash/bash32-014 @@ -0,0 +1,307 @@ +			     BASH PATCH REPORT +			     ================= + +Bash-Release: 3.2 +Patch-ID: bash32-014 + +Bug-Reported-by: Brett Stahlman <brettstahlman@comcast.net> +Bug-Reference-ID: <000701c72d29$a227e0e0$5ec7cf47@computerroom> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-12/msg00065.html + +Bug-Description: + +Bash mishandles word splitting under certain circumstances when IFS is +null (IFS=).  Constructs affected include ${param/pat/sub} and others +when expanding arrays (array[@]). + +Patch: + +*** ../bash-3.2-patched/array.c	Wed Jun  1 16:39:22 2005 +--- array.c	Mon Jan 15 22:58:00 2007 +*************** +*** 121,125 **** +  } +   +- #ifdef INCLUDE_UNUSED +  /* +   * Make and return a new array composed of the elements in array A from +--- 121,124 ---- +*************** +*** 142,146 **** +  		n = array_create_element (element_index(p), element_value(p)); +  		ADD_BEFORE(a->head, n); +! 		mi = element_index(ae); +  	} +  	a->num_elements = i; +--- 141,145 ---- +  		n = array_create_element (element_index(p), element_value(p)); +  		ADD_BEFORE(a->head, n); +! 		mi = element_index(n); +  	} +  	a->num_elements = i; +*************** +*** 148,152 **** +  	return a; +  } +- #endif +   +  /* +--- 147,150 ---- +*************** +*** 301,304 **** +--- 299,319 ---- +  } +   ++ ARRAY	* ++ array_quote_escapes(array) ++ ARRAY	*array; ++ { ++ 	ARRAY_ELEMENT	*a; ++ 	char	*t; ++  ++ 	if (array == 0 || array_head(array) == 0 || array_empty(array)) ++ 		return (ARRAY *)NULL; ++ 	for (a = element_forw(array->head); a != array->head; a = element_forw(a)) { ++ 		t = quote_escapes (a->value); ++ 		FREE(a->value); ++ 		a->value = t; ++ 	} ++ 	return array; ++ } ++  +  /* +   * Return a string whose elements are the members of array A beginning at +*************** +*** 312,318 **** +  int	starsub, quoted; +  { +  	ARRAY_ELEMENT	*h, *p; +  	arrayind_t	i; +! 	char		*ifs, sep[2]; +   +  	p = a ? array_head (a) : 0; +--- 327,334 ---- +  int	starsub, quoted; +  { ++ 	ARRAY		*a2; +  	ARRAY_ELEMENT	*h, *p; +  	arrayind_t	i; +! 	char		*ifs, sep[2], *t; +   +  	p = a ? array_head (a) : 0; +*************** +*** 337,340 **** +--- 353,363 ---- +  		; +   ++ 	a2 = array_slice(a, h, p); ++  ++ 	if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) ++ 		array_quote(a2); ++ 	else ++ 		array_quote_escapes(a2); ++  +  	if (starsub && (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))) { +  		ifs = getifs(); +*************** +*** 344,348 **** +  	sep[1] = '\0'; +   +! 	return (array_to_string_internal (h, p, sep, quoted)); +  } +   +--- 367,374 ---- +  	sep[1] = '\0'; +   +! 	t = array_to_string (a2, sep, 0); +! 	array_dispose(a2); +!  +! 	return t; +  } +   +*************** +*** 368,372 **** +   +  	if (mflags & MATCH_QUOTED) +! 		array_quote (a2); +  	if (mflags & MATCH_STARSUB) { +  		ifs = getifs(); +--- 394,400 ---- +   +  	if (mflags & MATCH_QUOTED) +! 		array_quote(a2); +! 	else +! 		array_quote_escapes(a2); +  	if (mflags & MATCH_STARSUB) { +  		ifs = getifs(); +*** ../bash-3.2-patched/array.h	Sun Jun  1 15:50:30 2003 +--- array.h	Mon Jan 15 22:35:35 2007 +*************** +*** 56,59 **** +--- 56,60 ---- +  extern int	array_shift_element __P((ARRAY *, char *)); +  extern ARRAY	*array_quote __P((ARRAY *)); ++ extern ARRAY	*array_quote_escapes __P((ARRAY *)); +   +  extern char	*array_subrange __P((ARRAY *, arrayind_t, arrayind_t, int, int)); +*** ../bash-3.2-patched/subst.c	Fri Mar  2 16:20:50 2007 +--- subst.c	Tue Mar  6 11:40:55 2007 +*************** +*** 1888,1892 **** +--- 1889,1899 ---- +  #endif +   ++   /* XXX -- why call quote_list if ifs == 0?  we can get away without doing ++      it now that quote_escapes quotes spaces */ ++ #if 0 +    tlist = ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) || (ifs && *ifs == 0)) ++ #else ++   tlist = (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) ++ #endif +  		? quote_list (list) +  		: list_quote_escapes (list); +*************** +*** 2922,2926 **** +  /* Quote escape characters in string s, but no other characters.  This is +     used to protect CTLESC and CTLNUL in variable values from the rest of +!    the word expansion process after the variable is expanded. */ +  char * +  quote_escapes (string) +--- 2935,2944 ---- +  /* Quote escape characters in string s, but no other characters.  This is +     used to protect CTLESC and CTLNUL in variable values from the rest of +!    the word expansion process after the variable is expanded.  If IFS is +!    null, we quote spaces as well, just in case we split on spaces later +!    (in the case of unquoted $@, we will eventually attempt to split the +!    entire word on spaces).  Corresponding code exists in dequote_escapes. +!    Even if we don't end up splitting on spaces, quoting spaces is not a +!    problem. */ +  char * +  quote_escapes (string) +*************** +*** 2930,2933 **** +--- 2948,2952 ---- +    size_t slen; +    char *result, *send; ++   int quote_spaces; +    DECLARE_MBSTATE;  +   +*************** +*** 2935,2938 **** +--- 2954,2958 ---- +    send = string + slen; +   ++   quote_spaces = (ifs_value && *ifs_value == 0); +    t = result = (char *)xmalloc ((slen * 2) + 1); +    s = string; +*************** +*** 2940,2944 **** +    while (*s) +      { +!       if (*s == CTLESC || *s == CTLNUL) +  	*t++ = CTLESC; +        COPY_CHAR_P (t, s, send); +--- 2960,2964 ---- +    while (*s) +      { +!       if (*s == CTLESC || *s == CTLNUL || (quote_spaces && *s == ' ')) +  	*t++ = CTLESC; +        COPY_CHAR_P (t, s, send); +*************** +*** 2982,2985 **** +--- 3002,3006 ---- +    size_t slen; +    char *result, *send; ++   int quote_spaces; +    DECLARE_MBSTATE; +   +*************** +*** 2996,3002 **** +      return (strcpy (result, s)); +   +    while (*s) +      { +!       if (*s == CTLESC && (s[1] == CTLESC || s[1] == CTLNUL)) +  	{ +  	  s++; +--- 3017,3024 ---- +      return (strcpy (result, s)); +   ++   quote_spaces = (ifs_value && *ifs_value == 0); +    while (*s) +      { +!       if (*s == CTLESC && (s[1] == CTLESC || s[1] == CTLNUL || (quote_spaces && s[1] == ' '))) +  	{ +  	  s++; +*************** +*** 4462,4466 **** +        RESIZE_MALLOCED_BUFFER (istring, istring_index, 2, istring_size, DEFAULT_ARRAY_SIZE); +   +!       if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) || c == CTLESC || c == CTLNUL) +  	istring[istring_index++] = CTLESC; +   +--- 4498,4510 ---- +        RESIZE_MALLOCED_BUFFER (istring, istring_index, 2, istring_size, DEFAULT_ARRAY_SIZE); +   +!       /* This is essentially quote_string inline */ +!       if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) /* || c == CTLESC || c == CTLNUL */) +! 	istring[istring_index++] = CTLESC; +!       /* Escape CTLESC and CTLNUL in the output to protect those characters +! 	 from the rest of the word expansions (word splitting and globbing.) +! 	 This is essentially quote_escapes inline. */ +!       else if (c == CTLESC) +! 	istring[istring_index++] = CTLESC; +!       else if (c == CTLNUL || (c == ' ' && (ifs_value && *ifs_value == 0))) +  	istring[istring_index++] = CTLESC; +   +*************** +*** 5552,5555 **** +--- 5610,5616 ---- +  	 rely on array_subrange to understand how to deal with them). */ +        tt = array_subrange (array_cell (v), e1, e2, starsub, quoted); ++ #if 0 ++       /* array_subrange now calls array_quote_escapes as appropriate, so the ++ 	 caller no longer needs to. */ +        if ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) == 0) +  	{ +*************** +*** 5558,5561 **** +--- 5619,5623 ---- +  	} +        else ++ #endif +  	temp = tt; +        break; +*************** +*** 5808,5811 **** +--- 5870,5876 ---- +      case VT_ARRAYVAR: +        temp = array_patsub (array_cell (v), p, rep, mflags); ++ #if 0 ++       /* Don't need to do this anymore; array_patsub calls array_quote_escapes ++ 	 as appropriate before adding the space separators. */ +        if (temp && (mflags & MATCH_QUOTED) == 0) +  	{ +*************** +*** 5814,5817 **** +--- 5879,5883 ---- +  	  temp = tt; +  	} ++ #endif +        break; +  #endif +*** ../bash-3.2/patchlevel.h	Thu Apr 13 08:31:04 2006 +--- patchlevel.h	Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** +     looks for to find the patch level (for the sccs version string). */ +   +! #define PATCHLEVEL 13 +   +  #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- +     looks for to find the patch level (for the sccs version string). */ +   +! #define PATCHLEVEL 14 +   +  #endif /* _PATCHLEVEL_H_ */ diff --git a/package/bash/bash32-015 b/package/bash/bash32-015 new file mode 100644 index 000000000..d887f6e56 --- /dev/null +++ b/package/bash/bash32-015 @@ -0,0 +1,95 @@ +			     BASH PATCH REPORT +			     ================= + +Bash-Release: 3.2 +Patch-ID: bash32-015 + +Bug-Reported-by: +Bug-Reference-ID: +Bug-Reference-URL: + +Bug-Description: + +Under certain circumstances, when using FIFOs for process substitution, +bash fails to unlink the FIFOs.  This leaves open file descriptors that +can cause the shell to hang and litters the file system. + +Patch: + +*** ../bash-3.2-patched/execute_cmd.c	Fri Mar  2 16:20:50 2007 +--- execute_cmd.c	Wed Jan 31 23:12:06 2007 +*************** +*** 3051,3054 **** +--- 3051,3059 ---- +      command_line = savestring (the_printed_command_except_trap); +   ++ #if defined (PROCESS_SUBSTITUTION) ++   if ((subshell_environment & SUBSHELL_COMSUB) && (simple_command->flags & CMD_NO_FORK) && fifos_pending() > 0) ++     simple_command->flags &= ~CMD_NO_FORK; ++ #endif ++  +    execute_disk_command (words, simple_command->redirects, command_line, +  			pipe_in, pipe_out, async, fds_to_close, +*** ../bash-3.2-patched/subst.c	Fri Mar  2 16:20:50 2007 +--- subst.c	Tue Mar  6 11:40:55 2007 +*************** +*** 4129,4132 **** +--- 4151,4160 ---- +  } +   ++ int ++ fifos_pending () ++ { ++   return nfifo; ++ } ++  +  static char * +  make_named_pipe () +*************** +*** 4178,4181 **** +--- 4206,4215 ---- +  } +   ++ int ++ fifos_pending () ++ { ++   return 0;	/* used for cleanup; not needed with /dev/fd */ ++ } ++  +  void +  unlink_fifo_list () +*************** +*** 4671,4674 **** +--- 4719,4725 ---- +        last_command_exit_value = rc; +        rc = run_exit_trap (); ++ #if defined (PROCESS_SUBSTITUTION) ++       unlink_fifo_list (); ++ #endif +        exit (rc); +      } +*** ../bash-3.2-patched/subst.h	Tue Sep 19 08:34:41 2006 +--- subst.h	Wed Jan 10 09:46:47 2007 +*************** +*** 223,226 **** +--- 223,227 ---- +  extern char *pat_subst __P((char *, char *, char *, int)); +   ++ extern int fifos_pending __P((void)); +  extern void unlink_fifo_list __P((void)); + +*** ../bash-3.2/patchlevel.h	Thu Apr 13 08:31:04 2006 +--- patchlevel.h	Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** +     looks for to find the patch level (for the sccs version string). */ +   +! #define PATCHLEVEL 14 +   +  #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- +     looks for to find the patch level (for the sccs version string). */ +   +! #define PATCHLEVEL 15 +   +  #endif /* _PATCHLEVEL_H_ */ diff --git a/package/bash/bash32-016 b/package/bash/bash32-016 new file mode 100644 index 000000000..a0f065ad3 --- /dev/null +++ b/package/bash/bash32-016 @@ -0,0 +1,52 @@ +			     BASH PATCH REPORT +			     ================= + +Bash-Release: 3.2 +Patch-ID: bash32-016 + +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: + +*** ../bash-3.2/lib/readline/display.c	Fri Jan 19 13:34:50 2007 +--- lib/readline/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; +*** ../bash-3.2/patchlevel.h	Thu Apr 13 08:31:04 2006 +--- patchlevel.h	Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** +     looks for to find the patch level (for the sccs version string). */ +   +! #define PATCHLEVEL 15 +   +  #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- +     looks for to find the patch level (for the sccs version string). */ +   +! #define PATCHLEVEL 16 +   +  #endif /* _PATCHLEVEL_H_ */ diff --git a/package/bash/bash32-017 b/package/bash/bash32-017 new file mode 100644 index 000000000..99e5e70d2 --- /dev/null +++ b/package/bash/bash32-017 @@ -0,0 +1,85 @@ +			     BASH PATCH REPORT +			     ================= + +Bash-Release: 3.2 +Patch-ID: bash32-017 + +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: + +*** ../bash-3.2.16/lib/readline/display.c	Fri Apr 20 13:30:16 2007 +--- lib/readline/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); +*** ../bash-3.2/patchlevel.h	Thu Apr 13 08:31:04 2006 +--- patchlevel.h	Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** +     looks for to find the patch level (for the sccs version string). */ +   +! #define PATCHLEVEL 16 +   +  #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- +     looks for to find the patch level (for the sccs version string). */ +   +! #define PATCHLEVEL 17 +   +  #endif /* _PATCHLEVEL_H_ */  | 
