[SM-Commit] GIT changes to master grimoire by George Sherwood (b0257b910e63489d28bb3037924546cece8b8f33)

George Sherwood scm at sourcemage.org
Wed Jul 22 12:40:21 EDT 2009


GIT changes to master grimoire by George Sherwood <gsherwood at sourcemage.org>:

 shell-term-fm/bash/DETAILS            |    2 
 shell-term-fm/bash/HISTORY            |    5 +
 shell-term-fm/bash/PRE_BUILD          |    7 +
 shell-term-fm/bash/patches/bash40-018 |   78 +++++++++++++++++++++
 shell-term-fm/bash/patches/bash40-019 |  125 ++++++++++++++++++++++++++++++++++
 shell-term-fm/bash/patches/bash40-020 |   83 ++++++++++++++++++++++
 shell-term-fm/bash/patches/bash40-021 |   48 +++++++++++++
 shell-term-fm/bash/patches/bash40-022 |   48 +++++++++++++
 shell-term-fm/bash/patches/bash40-023 |   62 ++++++++++++++++
 shell-term-fm/bash/patches/bash40-024 |  112 ++++++++++++++++++++++++++++++
 10 files changed, 569 insertions(+), 1 deletion(-)

New commits:
commit b0257b910e63489d28bb3037924546cece8b8f33
Author: George Sherwood <gsherwood at sourcemage.org>
Commit: George Sherwood <gsherwood at sourcemage.org>

    bash: Added upstream patches 017-024.  Been running them for
    a while with no issues. PATCHLEVEL++

diff --git a/shell-term-fm/bash/DETAILS b/shell-term-fm/bash/DETAILS
index a33f0c6..e6a3807 100755
--- a/shell-term-fm/bash/DETAILS
+++ b/shell-term-fm/bash/DETAILS
@@ -14,7 +14,7 @@ SOURCE_DIRECTORY="$BUILD_DIRECTORY/$SPELL-$VERSION"
   SOURCE2_IGNORE=signature
   SOURCE4_IGNORE=signature
         WEB_SITE=http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html
-      PATCHLEVEL=2
+      PATCHLEVEL=3
          ENTERED=20010922
       LICENSE[0]=GPL2
         KEYWORDS="console"
diff --git a/shell-term-fm/bash/HISTORY b/shell-term-fm/bash/HISTORY
index c808fec..194776f 100644
--- a/shell-term-fm/bash/HISTORY
+++ b/shell-term-fm/bash/HISTORY
@@ -1,3 +1,8 @@
+2009-07-22 George Sherwood <gsherwood at sourcemage.org>
+	* DETAILS: PATCHLEVEL++
+	* PRE_BUILD: Added upstream patches
+	* patchs/bash40-018 to 024: Added upstream patches
+
 2009-04-09 George Sherwood <gsherwood at sourcemage.org>
 	* DETAILS: PATCHLEVEL++
 	* PRE_BUILD: Added upstream patches
diff --git a/shell-term-fm/bash/PRE_BUILD b/shell-term-fm/bash/PRE_BUILD
index d987a6a..222eb0e 100755
--- a/shell-term-fm/bash/PRE_BUILD
+++ b/shell-term-fm/bash/PRE_BUILD
@@ -19,6 +19,13 @@ patch -p0 < $SPELL_DIRECTORY/patches/bash40-014 &&
 patch -p0 < $SPELL_DIRECTORY/patches/bash40-015 &&
 patch -p0 < $SPELL_DIRECTORY/patches/bash40-016 &&
 patch -p0 < $SPELL_DIRECTORY/patches/bash40-017 &&
+patch -p0 < $SPELL_DIRECTORY/patches/bash40-018 &&
+patch -p0 < $SPELL_DIRECTORY/patches/bash40-019 &&
+patch -p0 < $SPELL_DIRECTORY/patches/bash40-020 &&
+patch -p0 < $SPELL_DIRECTORY/patches/bash40-021 &&
+patch -p0 < $SPELL_DIRECTORY/patches/bash40-022 &&
+patch -p0 < $SPELL_DIRECTORY/patches/bash40-023 &&
+patch -p0 < $SPELL_DIRECTORY/patches/bash40-024 &&
 
 if [[ "$BASH_NI_LOGIN" == y ]]; then
   message "${MESSAGE_COLOR}Defining NON_INTERACTIVE_LOGIN_SHELLS.$DEFAULT_COLOR" &&
diff --git a/shell-term-fm/bash/patches/bash40-018 b/shell-term-fm/bash/patches/bash40-018
new file mode 100644
index 0000000..35f33e5
--- /dev/null
+++ b/shell-term-fm/bash/patches/bash40-018
@@ -0,0 +1,78 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release: 4.0
+Patch-ID: bash40-018
+
+Bug-Reported-by: Dan Price <dp at eng.sun.com>
+Bug-Reference-ID: <20090324171502.GA20582 at eng.sun.com>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2009-03/msg00184.html
+
+Bug-Description:
+
+A missing include file results in an empty function definition and a no-op
+when checking whether or not the window size has changed.
+
+Patch:
+
+*** ../bash-4.0-patched/lib/sh/winsize.c	2008-08-12 13:53:51.000000000 -0400
+--- lib/sh/winsize.c	2009-04-06 10:44:20.000000000 -0400
+***************
+*** 31,44 ****
+  #include <sys/ioctl.h>
+  
+! #if !defined (STRUCT_WINSIZE_IN_SYS_IOCTL)
+! /* For struct winsize on SCO */
+! /*   sys/ptem.h has winsize but needs mblk_t from sys/stream.h */
+! #  if defined (HAVE_SYS_PTEM_H) && defined (TIOCGWINSZ) && defined (SIGWINCH)
+! #    if defined (HAVE_SYS_STREAM_H)
+! #      include <sys/stream.h>
+! #    endif
+  #    include <sys/ptem.h>
+! #  endif /* HAVE_SYS_PTEM_H && TIOCGWINSZ && SIGWINCH */
+! #endif /* !STRUCT_WINSIZE_IN_SYS_IOCTL */
+  
+  #include <stdio.h>
+--- 31,57 ----
+  #include <sys/ioctl.h>
+  
+! /* Try to find the definitions of `struct winsize' and TIOGCWINSZ */
+! 
+! #if defined (GWINSZ_IN_SYS_IOCTL) && !defined (TIOCGWINSZ)
+! #  include <sys/ioctl.h>
+! #endif /* GWINSZ_IN_SYS_IOCTL && !TIOCGWINSZ */
+! 
+! #if defined (STRUCT_WINSIZE_IN_TERMIOS) && !defined (STRUCT_WINSIZE_IN_SYS_IOCTL)
+! #  include <termios.h>
+! #endif /* STRUCT_WINSIZE_IN_TERMIOS && !STRUCT_WINSIZE_IN_SYS_IOCTL */
+! 
+! /* Not in either of the standard places, look around. */
+! #if !defined (STRUCT_WINSIZE_IN_TERMIOS) && !defined (STRUCT_WINSIZE_IN_SYS_IOCTL)
+! #  if defined (HAVE_SYS_STREAM_H)
+! #    include <sys/stream.h>
+! #  endif /* HAVE_SYS_STREAM_H */
+! #  if defined (HAVE_SYS_PTEM_H) /* SVR4.2, at least, has it here */
+  #    include <sys/ptem.h>
+! #    define _IO_PTEM_H          /* work around SVR4.2 1.1.4 bug */
+! #  endif /* HAVE_SYS_PTEM_H */
+! #  if defined (HAVE_SYS_PTE_H)  /* ??? */
+! #    include <sys/pte.h>
+! #  endif /* HAVE_SYS_PTE_H */
+! #endif /* !STRUCT_WINSIZE_IN_TERMIOS && !STRUCT_WINSIZE_IN_SYS_IOCTL */
+  
+  #include <stdio.h>
+*** ../bash-4.0/patchlevel.h	2009-01-04 14:32:40.000000000 -0500
+--- patchlevel.h	2009-02-22 16:11:31.000000000 -0500
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 17
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 18
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/shell-term-fm/bash/patches/bash40-019 b/shell-term-fm/bash/patches/bash40-019
new file mode 100644
index 0000000..30efd68
--- /dev/null
+++ b/shell-term-fm/bash/patches/bash40-019
@@ -0,0 +1,125 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release: 4.0
+Patch-ID: bash40-019
+
+Bug-Reported-by: Oleksiy Melnyk <lex at upc.ua>
+Bug-Reference-ID: <20090224142233.D2FEFC004 at floyd.upc.ua>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2009-02/msg00200.html
+
+Bug-Description:
+
+Using an external command as part of the DEBUG trap when job control is
+enabled causes pipelines to misbehave.  The problem has to do with process
+groups assigned to the pipeline and terminal.
+
+Patch:
+
+*** ../bash-4.0-patched/jobs.c	2009-01-29 17:09:49.000000000 -0500
+--- jobs.c	2009-04-17 21:08:20.000000000 -0400
+***************
+*** 443,447 ****
+    the_pipeline = saved_pipeline;
+    already_making_children = saved_already_making_children;
+!   if (discard)
+      discard_pipeline (old_pipeline);
+  }
+--- 443,447 ----
+    the_pipeline = saved_pipeline;
+    already_making_children = saved_already_making_children;
+!   if (discard && old_pipeline)
+      discard_pipeline (old_pipeline);
+  }
+***************
+*** 4203,4205 ****
+--- 4204,4225 ----
+  }
+  
++ void
++ save_pgrp_pipe (p, clear)
++      int *p;
++      int clear;
++ {
++   p[0] = pgrp_pipe[0];
++   p[1] = pgrp_pipe[1];
++   if (clear)
++     pgrp_pipe[0] = pgrp_pipe[1] = -1;
++ }
++ 
++ void
++ restore_pgrp_pipe (p)
++      int *p;
++ {
++   pgrp_pipe[0] = p[0];
++   pgrp_pipe[1] = p[1];
++ }
++ 
+  #endif /* PGRP_PIPE */
+*** ../bash-4.0-patched/jobs.h	2009-01-04 14:32:29.000000000 -0500
+--- jobs.h	2009-04-17 15:07:51.000000000 -0400
+***************
+*** 236,239 ****
+--- 236,241 ----
+  
+  extern void close_pgrp_pipe __P((void));
++ extern void save_pgrp_pipe __P((int *, int));
++ extern void restore_pgrp_pipe __P((int *));
+  
+  #if defined (JOB_CONTROL)
+*** ../bash-4.0-patched/trap.c	2009-01-16 17:07:53.000000000 -0500
+--- trap.c	2009-04-17 22:22:36.000000000 -0400
+***************
+*** 799,802 ****
+--- 799,804 ----
+  {
+    int trap_exit_value;
++   pid_t save_pgrp;
++   int save_pipe[2];
+  
+    /* XXX - question:  should the DEBUG trap inherit the RETURN trap? */
+***************
+*** 804,808 ****
+--- 806,832 ----
+    if ((sigmodes[DEBUG_TRAP] & SIG_TRAPPED) && ((sigmodes[DEBUG_TRAP] & SIG_IGNORED) == 0) && ((sigmodes[DEBUG_TRAP] & SIG_INPROGRESS) == 0))
+      {
++ #if defined (JOB_CONTROL)
++       save_pgrp = pipeline_pgrp;
++       pipeline_pgrp = 0;
++       save_pipeline (1);
++ #  if defined (PGRP_PIPE)
++       save_pgrp_pipe (save_pipe, 1);
++ #  endif
++       stop_making_children ();
++ #endif
++ 
+        trap_exit_value = _run_trap_internal (DEBUG_TRAP, "debug trap");
++ 
++ #if defined (JOB_CONTROL)
++       pipeline_pgrp = save_pgrp;
++       restore_pipeline (1);
++ #  if defined (PGRP_PIPE)
++       close_pgrp_pipe ();
++       restore_pgrp_pipe (save_pipe);
++ #  endif
++       if (pipeline_pgrp > 0)
++ 	give_terminal_to (pipeline_pgrp, 1);
++       notify_and_cleanup ();
++ #endif
+        
+  #if defined (DEBUGGER)
+*** ../bash-4.0/patchlevel.h	2009-01-04 14:32:40.000000000 -0500
+--- patchlevel.h	2009-02-22 16:11:31.000000000 -0500
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 18
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 19
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/shell-term-fm/bash/patches/bash40-020 b/shell-term-fm/bash/patches/bash40-020
new file mode 100644
index 0000000..885f15e
--- /dev/null
+++ b/shell-term-fm/bash/patches/bash40-020
@@ -0,0 +1,83 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release: 4.0
+Patch-ID: bash40-020
+
+Bug-Reported-by: Nicolai Lissner <nlissne at linux01.org>
+Bug-Reference-ID: <20090412020510.GA29658 at 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:
+
+*** ../bash-4.0-patched/lib/readline/readline.h	2009-01-04 14:32:33.000000000 -0500
+--- lib/readline/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))
+*** ../bash-4.0-patched/lib/readline/display.c	2009-01-04 14:32:32.000000000 -0500
+--- lib/readline/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 ();
+  }
+*** ../bash-4.0-patched/lib/readline/terminal.c	2009-01-04 14:32:34.000000000 -0500
+--- lib/readline/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 ();
+      }
+*** ../bash-4.0/patchlevel.h	2009-01-04 14:32:40.000000000 -0500
+--- patchlevel.h	2009-02-22 16:11:31.000000000 -0500
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 19
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 20
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/shell-term-fm/bash/patches/bash40-021 b/shell-term-fm/bash/patches/bash40-021
new file mode 100644
index 0000000..cf6ee1f
--- /dev/null
+++ b/shell-term-fm/bash/patches/bash40-021
@@ -0,0 +1,48 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release: 4.0
+Patch-ID: bash40-021
+
+Bug-Reported-by:  Matt Zyzik <matt.zyzik at nyu.edu>
+Bug-Reference-ID: <20090319015542.696F62B8E8 at 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:
+
+*** ../bash-4.0-patched/lib/readline/display.c	2009-01-04 14:32:32.000000000 -0500
+--- lib/readline/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
+  	    {	  
+*** ../bash-4.0/patchlevel.h	2009-01-04 14:32:40.000000000 -0500
+--- patchlevel.h	2009-02-22 16:11:31.000000000 -0500
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 20
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 21
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/shell-term-fm/bash/patches/bash40-022 b/shell-term-fm/bash/patches/bash40-022
new file mode 100644
index 0000000..5b68538
--- /dev/null
+++ b/shell-term-fm/bash/patches/bash40-022
@@ -0,0 +1,48 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release: 4.0
+Patch-ID: bash40-022
+
+Bug-Reported-by:  Bernd Eggink <monoped at sudrala.de>
+Bug-Reference-ID: <49E65407.5010206 at sudrala.de>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2009-04/msg00118.html
+
+Bug-Description:
+
+When parsing case statements in command substitutions, the shell did not
+note that a newline is a shell metacharacter and can legally be followed
+by a reserved word (e.g., `esac').
+
+Patch:
+
+*** ../bash-4.0-patched/parse.y	2009-03-08 21:24:47.000000000 -0400
+--- parse.y	2009-04-15 22:27:56.000000000 -0400
+***************
+*** 3355,3359 ****
+  
+        /* Meta-characters that can introduce a reserved word.  Not perfect yet. */
+!       if MBTEST((tflags & LEX_RESWDOK) == 0 && (tflags & LEX_CKCASE) && (tflags & LEX_INCOMMENT) == 0 && shellmeta(ch))
+  	{
+  	  /* Add this character. */
+--- 3375,3379 ----
+  
+        /* Meta-characters that can introduce a reserved word.  Not perfect yet. */
+!       if MBTEST((tflags & LEX_RESWDOK) == 0 && (tflags & LEX_CKCASE) && (tflags & LEX_INCOMMENT) == 0 && (shellmeta(ch) || ch == '\n'))
+  	{
+  	  /* Add this character. */
+*** ../bash-4.0/patchlevel.h	2009-01-04 14:32:40.000000000 -0500
+--- patchlevel.h	2009-02-22 16:11:31.000000000 -0500
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 21
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 22
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/shell-term-fm/bash/patches/bash40-023 b/shell-term-fm/bash/patches/bash40-023
new file mode 100644
index 0000000..d2376c7
--- /dev/null
+++ b/shell-term-fm/bash/patches/bash40-023
@@ -0,0 +1,62 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release: 4.0
+Patch-ID: bash40-023
+
+Bug-Reported-by: Andreas Schwab <schwab at linux-m68k.org>
+Bug-Reference-ID: <m21vrhhx08.fsf at 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:
+
+*** ../bash-4.0-patched/lib/readline/display.c	2009-01-04 14:32:32.000000000 -0500
+--- lib/readline/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 >= */
+*** ../bash-4.0/patchlevel.h	2009-01-04 14:32:40.000000000 -0500
+--- patchlevel.h	2009-02-22 16:11:31.000000000 -0500
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 22
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 23
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/shell-term-fm/bash/patches/bash40-024 b/shell-term-fm/bash/patches/bash40-024
new file mode 100644
index 0000000..ac2058a
--- /dev/null
+++ b/shell-term-fm/bash/patches/bash40-024
@@ -0,0 +1,112 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release: 4.0
+Patch-ID: bash40-024
+
+Bug-Reported-by:  Matt Zyzik <matt.zyzik at nyu.edu>
+Bug-Reference-ID:  <20090405205428.4FDEA1C7175 at ice.filescope.com>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2009-04/msg00021.html
+
+Bug-Description:
+
+When using the ** globbing operator, bash will incorrectly add an extra
+directory name when the preceding directory name ends with `*' or an empty
+string when there is no preceding directory name.
+
+Patch:
+
+*** ../bash-4.0-patched/lib/glob/glob.c	2009-01-04 14:32:30.000000000 -0500
+--- lib/glob/glob.c	2009-04-28 10:22:29.000000000 -0400
+***************
+*** 357,361 ****
+        if (ep)
+          *ep = 0;
+!       if (r)
+  	free (r);
+        return (struct globval *)0;
+--- 357,361 ----
+        if (ep)
+          *ep = 0;
+!       if (r && r != &glob_error_return)
+  	free (r);
+        return (struct globval *)0;
+***************
+*** 666,671 ****
+      }
+  
+!   /* compat: if GX_ALLDIRS, add the passed directory also */
+!   if (add_current)
+      {
+        sdlen = strlen (dir);
+--- 666,672 ----
+      }
+  
+!   /* compat: if GX_ALLDIRS, add the passed directory also, but don't add an
+!      empty directory name. */
+!   if (add_current && (flags & GX_NULLDIR) == 0)
+      {
+        sdlen = strlen (dir);
+***************
+*** 679,686 ****
+  	  nextlink->next = lastlink;
+  	  lastlink = nextlink;
+! 	  if (flags & GX_NULLDIR)
+! 	    nextname[0] = '\0';
+! 	  else
+! 	    bcopy (dir, nextname, sdlen + 1);
+  	  ++count;
+  	}
+--- 680,684 ----
+  	  nextlink->next = lastlink;
+  	  lastlink = nextlink;
+! 	  bcopy (dir, nextname, sdlen + 1);
+  	  ++count;
+  	}
+***************
+*** 943,947 ****
+  	      register unsigned int l;
+  
+! 	      array = glob_dir_to_array (directories[i], temp_results, flags);
+  	      l = 0;
+  	      while (array[l] != NULL)
+--- 941,950 ----
+  	      register unsigned int l;
+  
+! 	      /* If we're expanding **, we don't need to glue the directory
+! 		 name to the results; we've already done it in glob_vector */
+! 	      if ((dflags & GX_ALLDIRS) && filename[0] == '*' && filename[1] == '*' && filename[2] == '\0')
+! 		array = temp_results;
+! 	      else
+! 		array = glob_dir_to_array (directories[i], temp_results, flags);
+  	      l = 0;
+  	      while (array[l] != NULL)
+***************
+*** 960,964 ****
+  
+  	      /* Note that the elements of ARRAY are not freed.  */
+! 	      free ((char *) array);
+  	    }
+  	}
+--- 963,968 ----
+  
+  	      /* Note that the elements of ARRAY are not freed.  */
+! 	      if (array != temp_results)
+! 		free ((char *) array);
+  	    }
+  	}
+*** ../bash-4.0/patchlevel.h	2009-01-04 14:32:40.000000000 -0500
+--- patchlevel.h	2009-02-22 16:11:31.000000000 -0500
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 23
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 24
+  
+  #endif /* _PATCHLEVEL_H_ */



More information about the SM-Commit mailing list