20612604 upgrade bash to 4.3
authorStefan Teleman <stefan.teleman@oracle.com>
Mon, 29 Feb 2016 10:09:14 -0800
changeset 5518 c47fe0edc204
parent 5517 7758049098f4
child 5519 a02d4d12218f
20612604 upgrade bash to 4.3
components/bash/Makefile
components/bash/bash.p5m
components/bash/patches/bash42-001.patch
components/bash/patches/bash42-002.patch
components/bash/patches/bash42-003.patch
components/bash/patches/bash42-004.patch
components/bash/patches/bash42-005.patch
components/bash/patches/bash42-006.patch
components/bash/patches/bash42-007.patch
components/bash/patches/bash42-008.patch
components/bash/patches/bash42-009.patch
components/bash/patches/bash42-010.patch
components/bash/patches/bash42-011.patch
components/bash/patches/bash42-012.patch
components/bash/patches/bash42-013.patch
components/bash/patches/bash42-014.patch
components/bash/patches/bash42-015.patch
components/bash/patches/bash42-016.patch
components/bash/patches/bash42-017.patch
components/bash/patches/bash42-018.patch
components/bash/patches/bash42-019.patch
components/bash/patches/bash42-020.patch
components/bash/patches/bash42-021.patch
components/bash/patches/bash42-022.patch
components/bash/patches/bash42-023.patch
components/bash/patches/bash42-024.patch
components/bash/patches/bash42-025.patch
components/bash/patches/bash42-026.patch
components/bash/patches/bash42-027.patch
components/bash/patches/bash42-028.patch
components/bash/patches/bash42-029.patch
components/bash/patches/bash42-030.patch
components/bash/patches/bash42-031.patch
components/bash/patches/bash42-032.patch
components/bash/patches/bash42-033.patch
components/bash/patches/bash42-034.patch
components/bash/patches/bash42-035.patch
components/bash/patches/bash42-036.patch
components/bash/patches/bash42-037.patch
components/bash/patches/bash42-038.patch
components/bash/patches/bash42-039.patch
components/bash/patches/bash42-040.patch
components/bash/patches/bash42-041.patch
components/bash/patches/bash42-042.patch
components/bash/patches/bash42-043.patch
components/bash/patches/bash42-044.patch
components/bash/patches/bash42-045.patch
components/bash/patches/bash42-046.patch
components/bash/patches/bash42-047.patch
components/bash/patches/bash42-048.patch
components/bash/patches/bash42-049.patch
components/bash/patches/bash42-050.patch
components/bash/patches/bash42-051.patch
components/bash/patches/bash42-052.patch
components/bash/patches/bash42-053.patch
components/bash/patches/bash43-001.patch
components/bash/patches/bash43-002.patch
components/bash/patches/bash43-003.patch
components/bash/patches/bash43-004.patch
components/bash/patches/bash43-005.patch
components/bash/patches/bash43-006.patch
components/bash/patches/bash43-007.patch
components/bash/patches/bash43-008.patch
components/bash/patches/bash43-009.patch
components/bash/patches/bash43-010.patch
components/bash/patches/bash43-011.patch
components/bash/patches/bash43-012.patch
components/bash/patches/bash43-013.patch
components/bash/patches/bash43-014.patch
components/bash/patches/bash43-015.patch
components/bash/patches/bash43-016.patch
components/bash/patches/bash43-017.patch
components/bash/patches/bash43-018.patch
components/bash/patches/bash43-019.patch
components/bash/patches/bash43-020.patch
components/bash/patches/bash43-021.patch
components/bash/patches/bash43-022.patch
components/bash/patches/bash43-023.patch
components/bash/patches/bash43-024.patch
components/bash/patches/bash43-025.patch
components/bash/patches/bash43-026.patch
components/bash/patches/bash43-027.patch
components/bash/patches/bash43-028.patch
components/bash/patches/bash43-029.patch
components/bash/patches/bash43-030.patch
components/bash/patches/bash43-031.patch
components/bash/patches/bash43-032.patch
components/bash/patches/bash43-033.patch
components/bash/patches/bash43-034.patch
components/bash/patches/bash43-035.patch
components/bash/patches/bash43-036.patch
components/bash/patches/bash43-037.patch
components/bash/patches/bash43-038.patch
components/bash/patches/bash43-039.patch
components/bash/patches/bash43-040.patch
components/bash/patches/bash43-041.patch
components/bash/patches/bash43-042.patch
components/bash/patches/solaris-000.config.h.in.patch
components/bash/patches/solaris-001.config-top.h.patch
components/bash/patches/solaris-002.Makefile.in.3.patch
components/bash/patches/solaris-003.glob.c.patch
components/bash/patches/solaris-004.snprintf.c.patch
components/bash/patches/solaris-005.variables.c.patch
components/bash/patches/solaris-007.rlprivate.h.patch
components/bash/patches/solaris-008.xmbsrtowcs.c.patch
components/bash/patches/solaris-009.configure.patch
components/bash/patches/solaris-010.input.c.patch
components/bash/patches/solaris-011.input_avail.c.patch
components/bash/patches/solaris-012.rlconf.h.patch
components/bash/patches/solaris-013.bashref.info.patch
components/bash/patches/solaris-014.bash.man.patch
components/bash/patches/solaris-015.rbash.man.patch
components/bash/patches/solaris-016.run-all.patch
components/bash/patches/solaris-017.printf2.sub.patch
components/bash/patches/solaris-018.posixexp2.tests.patch
components/bash/patches/solaris-019.eaccess.c.patch
components/bash/patches/solaris-020.xcase.c.patch
components/bash/patches/solaris-021.builtins.makefile.in.patch
components/bash/patches/solaris-022.bash.sighup.patch
components/bash/patches/solaris-023.eaccess.c.patch
components/bash/patches/solaris-024.sig.h.patch
components/bash/patches/solaris-025.libreadline.terminal.c.patch
components/bash/patches/solaris-026.libreadline.display.c.patch
components/bash/patches/solaris-027.tests.exp.right.patch
components/bash/patches/solaris-028.lib.sh.strtrans.c.patch
components/bash/patches/solaris-029.tests.intl.right.patch
components/bash/test/results-64.master
components/bash/test/results-i386.master
components/bash/test/results-sparc.master
--- a/components/bash/Makefile	Mon Feb 29 17:20:30 2016 +0000
+++ b/components/bash/Makefile	Mon Feb 29 10:09:14 2016 -0800
@@ -18,21 +18,21 @@
 #
 # CDDL HEADER END
 #
-# Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
 #
 include ../../make-rules/shared-macros.mk
 
 COMPONENT_NAME=		bash
-COMPONENT_VERSION=	4.2
+COMPONENT_VERSION=	4.3
 COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
 COMPONENT_PROJECT_URL=	http://www.gnu.org/software/bash/
 COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
 COMPONENT_ARCHIVE_HASH = \
-    sha256:a27a1179ec9c0830c65c6aa5d7dab60f7ce1a2a608618570f96bfa72e95ab3d8
+    sha256:afc687a28e0e24dc21b988fa159ff9dbcf6b7caa92ade8645cc6d5605cd024d4
 COMPONENT_ARCHIVE_URL=	http://ftp.gnu.org/gnu/bash/$(COMPONENT_ARCHIVE)
 COMPONENT_BUGDB=	utility/bash
 
-TPNO=			7265
+TPNO=			21712
 
 include $(WS_MAKE_RULES)/prep.mk
 include $(WS_MAKE_RULES)/configure.mk
@@ -61,8 +61,8 @@
 CFLAGS += -xbuiltin=%none
 
 CFLAGS += $(XPG6MODE)
-CFLAGS += $(CPP_POSIX)
 CFLAGS += $(CPP_C99_EXTENDED_MATH)
+CFLAGS += -I/usr/include/ncurses
 
 # configure checks for some functions, but doesn't seem to want to link in
 # the required libraries for them. We avoid linking with libthread.so.1
@@ -72,18 +72,27 @@
 # -z redlocsym -- let's shrink the SHT_SYMTAB as much as we can
 LDFLAGS =	$(LD_Z_REDLOCSYM)
 
+# Results output is slightly different on Intel vs. SPARC.
+COMPONENT_TEST_MASTER = \
+	$(COMPONENT_TEST_RESULTS_DIR)/results-$(MACH).master
+
 # Do not change the order of these regexp transforms.
 COMPONENT_TEST_TRANSFORMS += \
      '-e "/^</d"' \
      '-e "/^>/d"' \
      '-e "/^---/d"' \
+     '-e "/^Testing/d"' \
+     '-e "/m64/d"' \
+     '-e "/DPROGRAM/d"' \
+     '-e "/^rm -f/d"' \
+     '-e "/^ls -l/d"' \
+     '-e "/text/d"' \
+     '-e "/size/d"' \
+     '-e "/bash$$/d"' \
+     '-e "/warning/d"' \
      '-e "s/^[0-9]\{1,\}[a-z]\{1,\}[0-9]\{1,\}//g"' \
      '-e "s/^[0-9]\{1,\},[0-9]\{1,\}[a-z]\{1,\}[0-9]\{1,\},[0-9]\{1,\}//g"' \
-     '-e "/^$$/d"' \
-     '-e "s/i386-pc-//g"' \
-     '-e "s/i386//g"' \
-     '-e "s/sparc-sun-//g"' \
-     '-e "s/sparc//g"'
+     '-e "/^$$/d"'
 
 # The bash test harness needs the GNU userland utilities
 TEST_PATH = "PATH=$(BUILD_DIR_64):$(GNUBIN):$(USRBINDIR)"
@@ -96,50 +105,50 @@
 CONFIGURE_OPTIONS  += 		--enable-alias
 CONFIGURE_OPTIONS  += 		--enable-arith-for-command
 CONFIGURE_OPTIONS  += 		--enable-array-variables
-CONFIGURE_OPTIONS  += 		--enable-bang-history	
-CONFIGURE_OPTIONS  += 		--enable-brace-expansion	
-CONFIGURE_OPTIONS  += 		--enable-casemod-attributes	
-CONFIGURE_OPTIONS  += 		--enable-casemod-expansions	
-CONFIGURE_OPTIONS  += 		--enable-command-timing	
-CONFIGURE_OPTIONS  += 		--enable-cond-command	
-CONFIGURE_OPTIONS  += 		--enable-cond-regexp	
-CONFIGURE_OPTIONS  += 		--enable-coprocesses	
-CONFIGURE_OPTIONS  += 		--enable-debugger	
-CONFIGURE_OPTIONS  += 		--enable-directory-stack	
-CONFIGURE_OPTIONS  += 		--enable-disabled-builtins	
-CONFIGURE_OPTIONS  += 		--enable-dparen-arithmetic	
-CONFIGURE_OPTIONS  += 		--enable-extended-glob	
-CONFIGURE_OPTIONS  += 		--enable-help-builtin	
-CONFIGURE_OPTIONS  += 		--enable-history	
-CONFIGURE_OPTIONS  += 		--enable-job-control	
-CONFIGURE_OPTIONS  += 		--enable-multibyte	
-CONFIGURE_OPTIONS  += 		--enable-net-redirections	
-CONFIGURE_OPTIONS  += 		--enable-process-substitution	
-CONFIGURE_OPTIONS  += 		--enable-progcomp	
-CONFIGURE_OPTIONS  += 		--enable-prompt-string-decoding	
-CONFIGURE_OPTIONS  += 		--enable-readline	
-CONFIGURE_OPTIONS  += 		--enable-restricted	
-CONFIGURE_OPTIONS  += 		--enable-select	
-CONFIGURE_OPTIONS  += 		--enable-separate-helpfiles	
-CONFIGURE_OPTIONS  += 		--enable-single-help-strings	
-CONFIGURE_OPTIONS  += 		--disable-strict-posix-default	
+CONFIGURE_OPTIONS  += 		--enable-bang-history
+CONFIGURE_OPTIONS  += 		--enable-brace-expansion
+CONFIGURE_OPTIONS  += 		--enable-casemod-attributes
+CONFIGURE_OPTIONS  += 		--enable-casemod-expansions
+CONFIGURE_OPTIONS  += 		--enable-command-timing
+CONFIGURE_OPTIONS  += 		--enable-cond-command
+CONFIGURE_OPTIONS  += 		--enable-cond-regexp
+CONFIGURE_OPTIONS  += 		--enable-coprocesses
+CONFIGURE_OPTIONS  += 		--enable-debugger
+CONFIGURE_OPTIONS  += 		--enable-directory-stack
+CONFIGURE_OPTIONS  += 		--enable-disabled-builtins
+CONFIGURE_OPTIONS  += 		--enable-dparen-arithmetic
+CONFIGURE_OPTIONS  += 		--enable-extended-glob
+CONFIGURE_OPTIONS  += 		--enable-help-builtin
+CONFIGURE_OPTIONS  += 		--enable-history
+CONFIGURE_OPTIONS  += 		--enable-job-control
+CONFIGURE_OPTIONS  += 		--enable-multibyte
+CONFIGURE_OPTIONS  += 		--enable-net-redirections
+CONFIGURE_OPTIONS  += 		--enable-process-substitution
+CONFIGURE_OPTIONS  += 		--enable-progcomp
+CONFIGURE_OPTIONS  += 		--enable-prompt-string-decoding
+CONFIGURE_OPTIONS  += 		--enable-readline
+CONFIGURE_OPTIONS  += 		--enable-restricted
+CONFIGURE_OPTIONS  += 		--enable-select
+CONFIGURE_OPTIONS  += 		--enable-separate-helpfiles
+CONFIGURE_OPTIONS  += 		--enable-single-help-strings
+CONFIGURE_OPTIONS  += 		--disable-strict-posix-default
 CONFIGURE_OPTIONS  += 		--enable-usg-echo-default=yes
 CONFIGURE_OPTIONS  += 		--enable-xpg-echo-default=yes
-CONFIGURE_OPTIONS  += 		--enable-mem-scramble	
-CONFIGURE_OPTIONS  += 		--disable-profiling	
-CONFIGURE_OPTIONS  += 		--enable-static-link	
+CONFIGURE_OPTIONS  += 		--enable-mem-scramble
+CONFIGURE_OPTIONS  += 		--disable-profiling
+CONFIGURE_OPTIONS  += 		--enable-static-link
 CONFIGURE_OPTIONS  += 		--enable-largefile
-CONFIGURE_OPTIONS  += 		--enable-nls	
+CONFIGURE_OPTIONS  += 		--enable-nls
 CONFIGURE_OPTIONS  += 		--with-bash-malloc=yes
-CONFIGURE_OPTIONS  += 		--with-curses	
-CONFIGURE_OPTIONS  += 		--with-installed-readline=no	
+CONFIGURE_OPTIONS  += 		--with-curses
+CONFIGURE_OPTIONS  += 		--with-installed-readline=no
 CONFIGURE_OPTIONS  +=		--infodir=$(CONFIGURE_INFODIR)
 
 COMPONENT_TEST_DIR =		$(BUILD_DIR_64)
 COMPONENT_TEST_ENV =		- $(TEST_PATH)
 
 # The tests use /tmp/xx, and there can only be one user running
-# the them at a time. Need to remove /tmp/xx after testing to 
+# the them at a time. Need to remove /tmp/xx after testing to
 # avoid permission issues for other users running these tests
 COMPONENT_POST_TEST_ACTION =	rm -f /tmp/xx
 
@@ -159,5 +168,7 @@
 
 system-test:    $(SYSTEM_TESTS_NOT_IMPLEMENTED)
 
+REQUIRED_PACKAGES += library/ncurses
 REQUIRED_PACKAGES += shell/ksh93
 REQUIRED_PACKAGES += system/library
+
--- a/components/bash/bash.p5m	Mon Feb 29 17:20:30 2016 +0000
+++ b/components/bash/bash.p5m	Mon Feb 29 10:09:14 2016 -0800
@@ -18,7 +18,7 @@
 #
 # CDDL HEADER END
 #
-# Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
 #
 
 <transform file path=usr.*/man/.+ -> default mangler.man.stability volatile>
@@ -43,6 +43,7 @@
 #
 link path=usr/bin/rbash target=./bash
 link path=usr/gnu/bin/sh target=../../bin/bash
+#
 file path=usr/share/bash/alias
 file path=usr/share/bash/arith
 file path=usr/share/bash/arith_for
@@ -119,23 +120,34 @@
 file path=usr/share/bash/variable_help
 file path=usr/share/bash/wait
 file path=usr/share/bash/while
+#
 file path=usr/share/info/bash.info
 file path=usr/share/locale/af/LC_MESSAGES/bash.mo
 file path=usr/share/locale/bg/LC_MESSAGES/bash.mo
 file path=usr/share/locale/ca/LC_MESSAGES/bash.mo
 file path=usr/share/locale/cs/LC_MESSAGES/bash.mo
+file path=usr/share/locale/da/LC_MESSAGES/bash.mo
 file path=usr/share/locale/de/LC_MESSAGES/bash.mo
+file path=usr/share/locale/el/LC_MESSAGES/bash.mo
 file path=usr/share/locale/en/LC_MESSAGES/bash.mo
+file path=usr/share/locale/en/[email protected]/LC_MESSAGES/bash.mo
 file path=usr/share/locale/[email protected]/LC_MESSAGES/bash.mo
 file path=usr/share/locale/[email protected]/LC_MESSAGES/bash.mo
 file path=usr/share/locale/en_CA/LC_MESSAGES/bash.mo
+file path=usr/share/locale/en_CA/[email protected]/LC_MESSAGES/bash.mo
 file path=usr/share/locale/en_GB/LC_MESSAGES/bash.mo
+file path=usr/share/locale/en_GB/[email protected]/LC_MESSAGES/bash.mo
 file path=usr/share/locale/eo/LC_MESSAGES/bash.mo
 file path=usr/share/locale/es/LC_MESSAGES/bash.mo
 file path=usr/share/locale/et/LC_MESSAGES/bash.mo
+file path=usr/share/locale/fi/LC_MESSAGES/bash.mo
 file path=usr/share/locale/fr/LC_MESSAGES/bash.mo
+file path=usr/share/locale/ga/LC_MESSAGES/bash.mo
+file path=usr/share/locale/gl/LC_MESSAGES/bash.mo
+file path=usr/share/locale/hr/LC_MESSAGES/bash.mo
 file path=usr/share/locale/hu/LC_MESSAGES/bash.mo
 file path=usr/share/locale/id/LC_MESSAGES/bash.mo
+file path=usr/share/locale/it/LC_MESSAGES/bash.mo
 file path=usr/share/locale/ja/LC_MESSAGES/bash.mo
 file path=usr/share/locale/lt/LC_MESSAGES/bash.mo
 file path=usr/share/locale/nl/LC_MESSAGES/bash.mo
@@ -144,10 +156,15 @@
 file path=usr/share/locale/ro/LC_MESSAGES/bash.mo
 file path=usr/share/locale/ru/LC_MESSAGES/bash.mo
 file path=usr/share/locale/sk/LC_MESSAGES/bash.mo
+file path=usr/share/locale/sl/LC_MESSAGES/bash.mo
+file path=usr/share/locale/sr/LC_MESSAGES/bash.mo
 file path=usr/share/locale/sv/LC_MESSAGES/bash.mo
 file path=usr/share/locale/tr/LC_MESSAGES/bash.mo
+file path=usr/share/locale/uk/LC_MESSAGES/bash.mo
 file path=usr/share/locale/vi/LC_MESSAGES/bash.mo
+file path=usr/share/locale/zh_CN/LC_MESSAGES/bash.mo
 file path=usr/share/locale/zh_TW/LC_MESSAGES/bash.mo
+#
 file path=usr/share/man/man1/bash.1
 file path=usr/share/man/man1/bashbug.1
 file rbash.1 path=usr/share/man/man1/rbash.1
--- a/components/bash/patches/bash42-001.patch	Mon Feb 29 17:20:30 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,78 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	4.2
-Patch-ID:	bash42-001
-
-Bug-Reported-by:	Juergen Daubert <[email protected]>
-Bug-Reference-ID:	<[email protected]>
-Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2011-02/msg00125.html
-
-Bug-Description:
-
-When running in Posix mode, bash does not correctly expand the right-hand
-side of a double-quoted word expansion containing single quotes.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-4.2-patched/subst.c	2011-01-02 16:12:51.000000000 -0500
---- subst.c	2011-02-19 00:00:00.000000000 -0500
-***************
-*** 1380,1387 ****
-  
-    /* The handling of dolbrace_state needs to agree with the code in parse.y:
-!      parse_matched_pair() */
-!   dolbrace_state = 0;
-!   if (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))
-!     dolbrace_state = (flags & SX_POSIXEXP) ? DOLBRACE_QUOTE : DOLBRACE_PARAM;
-  
-    i = *sindex;
---- 1380,1389 ----
-  
-    /* The handling of dolbrace_state needs to agree with the code in parse.y:
-!      parse_matched_pair().  The different initial value is to handle the
-!      case where this function is called to parse the word in
-!      ${param op word} (SX_WORD). */
-!   dolbrace_state = (flags & SX_WORD) ? DOLBRACE_WORD : DOLBRACE_PARAM;
-!   if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && (flags & SX_POSIXEXP))
-!     dolbrace_state = DOLBRACE_QUOTE;
-  
-    i = *sindex;
-***************
-*** 7177,7181 ****
-        /* Extract the contents of the ${ ... } expansion
-  	 according to the Posix.2 rules. */
-!       value = extract_dollar_brace_string (string, &sindex, quoted, (c == '%' || c == '#') ? SX_POSIXEXP : 0);
-        if (string[sindex] == RBRACE)
-  	sindex++;
---- 7181,7185 ----
-        /* Extract the contents of the ${ ... } expansion
-  	 according to the Posix.2 rules. */
-!       value = extract_dollar_brace_string (string, &sindex, quoted, (c == '%' || c == '#' || c =='/' || c == '^' || c == ',' || c ==':') ? SX_POSIXEXP|SX_WORD : SX_WORD);
-        if (string[sindex] == RBRACE)
-  	sindex++;
-*** ../bash-4.2-patched/subst.h	2010-12-02 20:21:29.000000000 -0500
---- subst.h	2011-02-16 21:12:09.000000000 -0500
-***************
-*** 57,60 ****
---- 57,61 ----
-  #define SX_ARITHSUB	0x0080	/* extracting $(( ... )) (currently unused) */
-  #define SX_POSIXEXP	0x0100	/* extracting new Posix pattern removal expansions in extract_dollar_brace_string */
-+ #define SX_WORD		0x0200	/* extracting word in ${param op word} */
-  
-  /* Remove backslashes which are quoting backquotes from STRING.  Modifies
-*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
---- patchlevel.h	Thu Feb 24 21:41:34 2011
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 0
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 1
-  
-  #endif /* _PATCHLEVEL_H_ */
--- a/components/bash/patches/bash42-002.patch	Mon Feb 29 17:20:30 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	4.2
-Patch-ID:	bash42-002
-
-Bug-Reported-by:	Clark J. Wang <[email protected]>
-Bug-Reference-ID:	<[email protected]>
-Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2011-02/msg00157.html
-
-Bug-Description:
-
-The readline vi-mode `cc', `dd', and `yy' commands failed to modify the
-entire line.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-4.2-patched/lib/readline/vi_mode.c	2010-11-20 19:51:39.000000000 -0500
---- lib/readline/vi_mode.c	2011-02-17 20:24:25.000000000 -0500
-***************
-*** 1115,1119 ****
-        _rl_vi_last_motion = c;
-        RL_UNSETSTATE (RL_STATE_VIMOTION);
-!       return (0);
-      }
-  #if defined (READLINE_CALLBACKS)
---- 1115,1119 ----
-        _rl_vi_last_motion = c;
-        RL_UNSETSTATE (RL_STATE_VIMOTION);
-!       return (vidomove_dispatch (m));
-      }
-  #if defined (READLINE_CALLBACKS)
-*** ../bash-4.2-patched/lib/readline/callback.c	2010-06-06 12:18:58.000000000 -0400
---- lib/readline/callback.c	2011-02-17 20:43:28.000000000 -0500
-***************
-*** 149,152 ****
---- 149,155 ----
-  	  /* Should handle everything, including cleanup, numeric arguments,
-  	     and turning off RL_STATE_VIMOTION */
-+ 	  if (RL_ISSTATE (RL_STATE_NUMERICARG) == 0)
-+ 	    _rl_internal_char_cleanup ();
-+ 
-  	  return;
-  	}
-*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
---- patchlevel.h	Thu Feb 24 21:41:34 2011
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 1
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 2
-  
-  #endif /* _PATCHLEVEL_H_ */
-
--- a/components/bash/patches/bash42-003.patch	Mon Feb 29 17:20:30 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,318 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	4.2
-Patch-ID:	bash42-003
-
-Bug-Reported-by:	Clark J. Wang <[email protected]>
-Bug-Reference-ID:	<[email protected]>
-Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2011-02/msg00136.html
-
-Bug-Description:
-
-When using the pattern replacement and pattern removal word expansions, bash
-miscalculates the possible match length in the presence of an unescaped left
-bracket without a closing right bracket, resulting in a failure to match
-the pattern.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-4.2-patched/lib/glob/gmisc.c	2011-02-05 16:11:17.000000000 -0500
---- lib/glob/gmisc.c	2011-02-18 23:53:42.000000000 -0500
-***************
-*** 78,83 ****
-       size_t wmax;
-  {
-!   wchar_t wc, *wbrack;
-!   int matlen, t, in_cclass, in_collsym, in_equiv;
-  
-    if (*wpat == 0)
---- 78,83 ----
-       size_t wmax;
-  {
-!   wchar_t wc;
-!   int matlen, bracklen, t, in_cclass, in_collsym, in_equiv;
-  
-    if (*wpat == 0)
-***************
-*** 119,123 ****
-  	case L'[':
-  	  /* scan for ending `]', skipping over embedded [:...:] */
-! 	  wbrack = wpat;
-  	  wc = *wpat++;
-  	  do
---- 119,123 ----
-  	case L'[':
-  	  /* scan for ending `]', skipping over embedded [:...:] */
-! 	  bracklen = 1;
-  	  wc = *wpat++;
-  	  do
-***************
-*** 125,140 ****
-  	      if (wc == 0)
-  		{
-! 	          matlen += wpat - wbrack - 1;	/* incremented below */
-! 	          break;
-  	        }
-  	      else if (wc == L'\\')
-  		{
-! 		  wc = *wpat++;
-! 		  if (*wpat == 0)
-! 		    break;
-  		}
-  	      else if (wc == L'[' && *wpat == L':')	/* character class */
-  		{
-  		  wpat++;
-  		  in_cclass = 1;
-  		}
---- 125,148 ----
-  	      if (wc == 0)
-  		{
-! 		  wpat--;			/* back up to NUL */
-! 	          matlen += bracklen;
-! 	          goto bad_bracket;
-  	        }
-  	      else if (wc == L'\\')
-  		{
-! 		  /* *wpat == backslash-escaped character */
-! 		  bracklen++;
-! 		  /* If the backslash or backslash-escape ends the string,
-! 		     bail.  The ++wpat skips over the backslash escape */
-! 		  if (*wpat == 0 || *++wpat == 0)
-! 		    {
-! 		      matlen += bracklen;
-! 		      goto bad_bracket;
-! 		    }
-  		}
-  	      else if (wc == L'[' && *wpat == L':')	/* character class */
-  		{
-  		  wpat++;
-+ 		  bracklen++;
-  		  in_cclass = 1;
-  		}
-***************
-*** 142,145 ****
---- 150,154 ----
-  		{
-  		  wpat++;
-+ 		  bracklen++;
-  		  in_cclass = 0;
-  		}
-***************
-*** 147,152 ****
-  		{
-  		  wpat++;
-  		  if (*wpat == L']')	/* right bracket can appear as collating symbol */
-! 		    wpat++;
-  		  in_collsym = 1;
-  		}
---- 156,165 ----
-  		{
-  		  wpat++;
-+ 		  bracklen++;
-  		  if (*wpat == L']')	/* right bracket can appear as collating symbol */
-! 		    {
-! 		      wpat++;
-! 		      bracklen++;
-! 		    }
-  		  in_collsym = 1;
-  		}
-***************
-*** 154,157 ****
---- 167,171 ----
-  		{
-  		  wpat++;
-+ 		  bracklen++;
-  		  in_collsym = 0;
-  		}
-***************
-*** 159,164 ****
-  		{
-  		  wpat++;
-  		  if (*wpat == L']')	/* right bracket can appear as equivalence class */
-! 		    wpat++;
-  		  in_equiv = 1;
-  		}
---- 173,182 ----
-  		{
-  		  wpat++;
-+ 		  bracklen++;
-  		  if (*wpat == L']')	/* right bracket can appear as equivalence class */
-! 		    {
-! 		      wpat++;
-! 		      bracklen++;
-! 		    }
-  		  in_equiv = 1;
-  		}
-***************
-*** 166,174 ****
---- 184,196 ----
-  		{
-  		  wpat++;
-+ 		  bracklen++;
-  		  in_equiv = 0;
-  		}
-+ 	      else
-+ 		bracklen++;
-  	    }
-  	  while ((wc = *wpat++) != L']');
-  	  matlen++;		/* bracket expression can only match one char */
-+ bad_bracket:
-  	  break;
-  	}
-***************
-*** 214,219 ****
-       size_t max;
-  {
-!   char c, *brack;
-!   int matlen, t, in_cclass, in_collsym, in_equiv;
-  
-    if (*pat == 0)
---- 236,241 ----
-       size_t max;
-  {
-!   char c;
-!   int matlen, bracklen, t, in_cclass, in_collsym, in_equiv;
-  
-    if (*pat == 0)
-***************
-*** 255,259 ****
-  	case '[':
-  	  /* scan for ending `]', skipping over embedded [:...:] */
-! 	  brack = pat;
-  	  c = *pat++;
-  	  do
---- 277,281 ----
-  	case '[':
-  	  /* scan for ending `]', skipping over embedded [:...:] */
-! 	  bracklen = 1;
-  	  c = *pat++;
-  	  do
-***************
-*** 261,276 ****
-  	      if (c == 0)
-  		{
-! 	          matlen += pat - brack - 1;	/* incremented below */
-! 	          break;
-  	        }
-  	      else if (c == '\\')
-  		{
-! 		  c = *pat++;
-! 		  if (*pat == 0)
-! 		    break;
-  		}
-  	      else if (c == '[' && *pat == ':')	/* character class */
-  		{
-  		  pat++;
-  		  in_cclass = 1;
-  		}
---- 283,306 ----
-  	      if (c == 0)
-  		{
-! 		  pat--;			/* back up to NUL */
-! 		  matlen += bracklen;
-! 		  goto bad_bracket;
-  	        }
-  	      else if (c == '\\')
-  		{
-! 		  /* *pat == backslash-escaped character */
-! 		  bracklen++;
-! 		  /* If the backslash or backslash-escape ends the string,
-! 		     bail.  The ++pat skips over the backslash escape */
-! 		  if (*pat == 0 || *++pat == 0)
-! 		    {
-! 		      matlen += bracklen;
-! 		      goto bad_bracket;
-! 		    }
-  		}
-  	      else if (c == '[' && *pat == ':')	/* character class */
-  		{
-  		  pat++;
-+ 		  bracklen++;
-  		  in_cclass = 1;
-  		}
-***************
-*** 278,281 ****
---- 308,312 ----
-  		{
-  		  pat++;
-+ 		  bracklen++;
-  		  in_cclass = 0;
-  		}
-***************
-*** 283,288 ****
-  		{
-  		  pat++;
-  		  if (*pat == ']')	/* right bracket can appear as collating symbol */
-! 		    pat++;
-  		  in_collsym = 1;
-  		}
---- 314,323 ----
-  		{
-  		  pat++;
-+ 		  bracklen++;
-  		  if (*pat == ']')	/* right bracket can appear as collating symbol */
-! 		    {
-! 		      pat++;
-! 		      bracklen++;
-! 		    }
-  		  in_collsym = 1;
-  		}
-***************
-*** 290,293 ****
---- 325,329 ----
-  		{
-  		  pat++;
-+ 		  bracklen++;
-  		  in_collsym = 0;
-  		}
-***************
-*** 295,300 ****
-  		{
-  		  pat++;
-  		  if (*pat == ']')	/* right bracket can appear as equivalence class */
-! 		    pat++;
-  		  in_equiv = 1;
-  		}
---- 331,340 ----
-  		{
-  		  pat++;
-+ 		  bracklen++;
-  		  if (*pat == ']')	/* right bracket can appear as equivalence class */
-! 		    {
-! 		      pat++;
-! 		      bracklen++;
-! 		    }
-  		  in_equiv = 1;
-  		}
-***************
-*** 302,310 ****
---- 342,354 ----
-  		{
-  		  pat++;
-+ 		  bracklen++;
-  		  in_equiv = 0;
-  		}
-+ 	      else
-+ 		bracklen++;
-  	    }
-  	  while ((c = *pat++) != ']');
-  	  matlen++;		/* bracket expression can only match one char */
-+ bad_bracket:
-  	  break;
-  	}
-*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
---- patchlevel.h	Thu Feb 24 21:41:34 2011
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 2
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 3
-  
-  #endif /* _PATCHLEVEL_H_ */
--- a/components/bash/patches/bash42-004.patch	Mon Feb 29 17:20:30 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	4.2
-Patch-ID:	bash42-004
-
-Bug-Reported-by:	Mike Frysinger <[email protected]>
-Bug-Reference-ID:	<[email protected]>
-Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2011-02/msg00222.html
-
-Bug-Description:
-
-When used in contexts where word splitting and quote removal were not
-performed, such as pattern removal or pattern substitution, empty strings
-(either literal or resulting from quoted variables that were unset or
-null) were not matched correctly, resulting in failure.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-4.2-patched/subst.c	2011-01-02 16:12:51.000000000 -0500
---- subst.c	2011-02-18 22:30:13.000000000 -0500
-***************
-*** 3373,3379 ****
-    if (string == 0 || *string == '\0')
-      return (WORD_LIST *)NULL;
-  
-!   td.flags = 0;
-    td.word = string;
-    tresult = call_expand_word_internal (&td, quoted, 1, dollar_at_p, has_dollar_at);
-    return (tresult);
---- 3373,3379 ----
-    if (string == 0 || *string == '\0')
-      return (WORD_LIST *)NULL;
-  
-!   td.flags = W_NOSPLIT2;		/* no splitting, remove "" and '' */
-    td.word = string;
-    tresult = call_expand_word_internal (&td, quoted, 1, dollar_at_p, has_dollar_at);
-    return (tresult);
-*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
---- patchlevel.h	Thu Feb 24 21:41:34 2011
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 3
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 4
-  
-  #endif /* _PATCHLEVEL_H_ */
--- a/components/bash/patches/bash42-005.patch	Mon Feb 29 17:20:30 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,131 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	4.2
-Patch-ID:	bash42-005
-
-Bug-Reported-by:	Dennis Williamson <[email protected]>
-Bug-Reference-ID:	<[email protected]>
-Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2011-02/msg00147.html
-
-Bug-Description:
-
-Systems that use tzset() to set the local timezone require the TZ variable
-to be in the environment.  Bash must make sure the environment has been
-modified with any updated value for TZ before calling tzset().  This
-affects prompt string expansions and the `%T' printf conversion specification
-on systems that do not allow bash to supply a replacement for getenv(3).
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-4.2-patched/variables.h	2010-12-02 20:22:01.000000000 -0500
---- variables.h	2011-02-19 19:57:12.000000000 -0500
-***************
-*** 314,317 ****
---- 314,318 ----
-  extern void sort_variables __P((SHELL_VAR **));
-  
-+ extern int chkexport __P((char *));
-  extern void maybe_make_export_env __P((void));
-  extern void update_export_env_inplace __P((char *, int, char *));
-*** ../bash-4.2-patched/variables.c	2011-01-24 20:07:48.000000000 -0500
---- variables.c	2011-02-19 20:04:50.000000000 -0500
-***************
-*** 3654,3657 ****
---- 3654,3673 ----
-  }
-  
-+ int
-+ chkexport (name)
-+      char *name;
-+ {
-+   SHELL_VAR *v;
-+ 
-+   v = find_variable (name);
-+   if (exported_p (v))
-+     {
-+       array_needs_making = 1;
-+       maybe_make_export_env ();
-+       return 1;
-+     }
-+   return 0;
-+ }
-+ 
-  void
-  maybe_make_export_env ()
-***************
-*** 4215,4219 ****
-    { "TEXTDOMAINDIR", sv_locale },
-  
-! #if defined (HAVE_TZSET) && defined (PROMPT_STRING_DECODE)
-    { "TZ", sv_tz },
-  #endif
---- 4231,4235 ----
-    { "TEXTDOMAINDIR", sv_locale },
-  
-! #if defined (HAVE_TZSET)
-    { "TZ", sv_tz },
-  #endif
-***************
-*** 4559,4568 ****
-  #endif /* HISTORY */
-  
-! #if defined (HAVE_TZSET) && defined (PROMPT_STRING_DECODE)
-  void
-  sv_tz (name)
-       char *name;
-  {
-!   tzset ();
-  }
-  #endif
---- 4575,4585 ----
-  #endif /* HISTORY */
-  
-! #if defined (HAVE_TZSET)
-  void
-  sv_tz (name)
-       char *name;
-  {
-!   if (chkexport (name))
-!     tzset ();
-  }
-  #endif
-*** ../bash-4.2-patched/parse.y	2011-01-02 15:48:11.000000000 -0500
---- parse.y	2011-02-19 20:05:00.000000000 -0500
-***************
-*** 5136,5139 ****
---- 5136,5142 ----
-  	      /* Make the current time/date into a string. */
-  	      (void) time (&the_time);
-+ #if defined (HAVE_TZSET)
-+ 	      sv_tz ("TZ");		/* XXX -- just make sure */
-+ #endif
-  	      tm = localtime (&the_time);
-  
-*** ../bash-4.2-patched/builtins/printf.def	2010-11-23 10:02:55.000000000 -0500
---- builtins/printf.def	2011-02-19 20:05:04.000000000 -0500
-***************
-*** 466,469 ****
---- 466,472 ----
-  		else
-  		  secs = arg;
-+ #if defined (HAVE_TZSET)
-+ 		sv_tz ("TZ");		/* XXX -- just make sure */
-+ #endif
-  		tm = localtime (&secs);
-  		n = strftime (timebuf, sizeof (timebuf), timefmt, tm);
-*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
---- patchlevel.h	Thu Feb 24 21:41:34 2011
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 4
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 5
-  
-  #endif /* _PATCHLEVEL_H_ */
--- a/components/bash/patches/bash42-006.patch	Mon Feb 29 17:20:30 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	4.2
-Patch-ID:	bash42-006
-
-Bug-Reported-by:	Allan McRae <[email protected]>
-Bug-Reference-ID:	<[email protected]>
-Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2011-03/msg00001.html
-
-Bug-Description:
-
-A problem with bash42-005 caused it to dump core if TZ was unset.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-4.2-patched/variables.c	2011-02-25 12:07:41.000000000 -0500
---- variables.c	2011-03-01 10:13:04.000000000 -0500
-***************
-*** 3661,3665 ****
-  
-    v = find_variable (name);
-!   if (exported_p (v))
-      {
-        array_needs_making = 1;
---- 3661,3665 ----
-  
-    v = find_variable (name);
-!   if (v && exported_p (v))
-      {
-        array_needs_making = 1;
-*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
---- patchlevel.h	Thu Feb 24 21:41:34 2011
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 5
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 6
-  
-  #endif /* _PATCHLEVEL_H_ */
--- a/components/bash/patches/bash42-007.patch	Mon Feb 29 17:20:30 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	4.2
-Patch-ID:	bash42-007
-
-Bug-Reported-by:	Matthias Klose <[email protected]>
-Bug-Reference-ID:	<[email protected]>
-Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2011-03/msg00015.html
-
-Bug-Description:
-
-When used in contexts where word splitting and quote removal were not
-performed, such as case statement word expansion, empty strings
-(either literal or resulting from quoted variables that were unset or
-null) were not expanded correctly, resulting in failure.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-4.2-patched/subst.c	2011-02-25 12:03:58.000000000 -0500
---- subst.c	2011-03-03 14:08:23.000000000 -0500
-***************
-*** 4609,4614 ****
---- 4611,4617 ----
-    if (ifs_firstc == 0)
-  #endif
-      word->flags |= W_NOSPLIT;
-+   word->flags |= W_NOSPLIT2;
-    result = call_expand_word_internal (word, quoted, 0, (int *)NULL, (int *)NULL);
-    expand_no_split_dollar_star = 0;
-  
-*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
---- patchlevel.h	Thu Feb 24 21:41:34 2011
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 6
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 7
-  
-  #endif /* _PATCHLEVEL_H_ */
--- a/components/bash/patches/bash42-008.patch	Mon Feb 29 17:20:30 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,74 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	4.2
-Patch-ID:	bash42-008
-
-Bug-Reported-by:	Doug McMahon <[email protected]>
-Bug-Reference-ID:	<[email protected]>
-Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2011-03/msg00050.html
-
-Bug-Description:
-
-Bash-4.2 does not attempt to save the shell history on receipt of a
-terminating signal that is handled synchronously.  Unfortunately, the
-`close' button on most X11 terminal emulators sends SIGHUP, which
-kills the shell.
-
-This is a very small patch to save the history in the case that an
-interactive shell receives a SIGHUP or SIGTERM while in readline and
-reading a command.
-
-The next version of bash will do this differently.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-4.2-patched/sig.c	Tue Nov 23 08:21:22 2010
---- sig.c	Tue Mar  8 21:28:32 2011
-***************
-*** 47,50 ****
---- 47,51 ----
-  #if defined (READLINE)
-  #  include "bashline.h"
-+ #  include <readline/readline.h>
-  #endif
-  
-***************
-*** 63,66 ****
---- 64,68 ----
-  extern int history_lines_this_session;
-  #endif
-+ extern int no_line_editing;
-  
-  extern void initialize_siglist ();
-***************
-*** 506,510 ****
-  #if defined (HISTORY)
-        /* XXX - will inhibit history file being written */
-!       history_lines_this_session = 0;
-  #endif
-        terminate_immediately = 0;
---- 508,515 ----
-  #if defined (HISTORY)
-        /* XXX - will inhibit history file being written */
-! #  if defined (READLINE)
-!       if (interactive_shell == 0 || interactive == 0 || (sig != SIGHUP && sig != SIGTERM) || no_line_editing || (RL_ISSTATE (RL_STATE_READCMD) == 0))
-! #  endif
-!         history_lines_this_session = 0;
-  #endif
-        terminate_immediately = 0;
-*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
---- patchlevel.h	Thu Feb 24 21:41:34 2011
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 7
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 8
-  
-  #endif /* _PATCHLEVEL_H_ */
--- a/components/bash/patches/bash42-009.patch	Mon Feb 29 17:20:30 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,82 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	4.2
-Patch-ID:	bash42-009
-
-Bug-Reported-by:	<[email protected]>
-Bug-Reference-ID:	<[email protected]>
-Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2011-04/msg00075.html
-
-Bug-Description:
-
-Under certain circumstances, running `fc -l' two times in succession with a
-relative history offset at the end of the history will result in an incorrect
-calculation of the last history entry and a seg fault.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-4.2-patched/builtins/fc.def	2010-05-30 18:25:38.000000000 -0400
---- builtins/fc.def	2011-04-19 15:46:17.000000000 -0400
-***************
-*** 305,309 ****
-  
-    /* XXX */
-!   if (saved_command_line_count > 0 && i == last_hist && hlist[last_hist] == 0)
-      while (last_hist >= 0 && hlist[last_hist] == 0)
-        last_hist--;
---- 305,309 ----
-  
-    /* XXX */
-!   if (i == last_hist && hlist[last_hist] == 0)
-      while (last_hist >= 0 && hlist[last_hist] == 0)
-        last_hist--;
-***************
-*** 476,480 ****
-  {
-    int sign, n, clen, rh;
-!   register int i, j;
-    register char *s;
-  
---- 476,480 ----
-  {
-    int sign, n, clen, rh;
-!   register int i, j, last_hist;
-    register char *s;
-  
-***************
-*** 496,500 ****
-       calculation as if it were on. */
-    rh = remember_on_history || ((subshell_environment & SUBSHELL_COMSUB) && enable_history_list);
-!   i -= rh + hist_last_line_added;
-  
-    /* No specification defaults to most recent command. */
---- 496,508 ----
-       calculation as if it were on. */
-    rh = remember_on_history || ((subshell_environment & SUBSHELL_COMSUB) && enable_history_list);
-!   last_hist = i - rh - hist_last_line_added;
-! 
-!   if (i == last_hist && hlist[last_hist] == 0)
-!     while (last_hist >= 0 && hlist[last_hist] == 0)
-!       last_hist--;
-!   if (last_hist < 0)
-!     return (-1);
-! 
-!   i = last_hist;
-  
-    /* No specification defaults to most recent command. */
-*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
---- patchlevel.h	Thu Feb 24 21:41:34 2011
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 8
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 9
-  
-  #endif /* _PATCHLEVEL_H_ */
--- a/components/bash/patches/bash42-010.patch	Mon Feb 29 17:20:30 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	4.2
-Patch-ID:	bash42-010
-
-Bug-Reported-by:	Mike Frysinger <[email protected]>
-Bug-Reference-ID:	<[email protected]>
-Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2011-04/msg00058.html
-
-Bug-Description:
-
-Bash did not correctly print/reproduce here documents attached to commands
-inside compound commands such as arithmetic for loops and user-specified
-subshells.  This affected the execution of such commands inside a shell
-function when the function definition is saved and later restored using
-`.' or `eval'.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-4.2-patched/print_cmd.c	2010-05-30 18:34:08.000000000 -0400
---- print_cmd.c	2011-04-14 10:43:18.000000000 -0400
-***************
-*** 316,319 ****
---- 317,321 ----
-  	  skip_this_indent++;
-  	  make_command_string_internal (command->value.Subshell->command);
-+ 	  PRINT_DEFERRED_HEREDOCS ("");
-  	  cprintf (" )");
-  	  break;
-***************
-*** 593,596 ****
---- 606,610 ----
-    indentation += indentation_amount;
-    make_command_string_internal (arith_for_command->action);
-+   PRINT_DEFERRED_HEREDOCS ("");
-    semicolon ();
-    indentation -= indentation_amount;
-***************
-*** 654,657 ****
---- 668,672 ----
-  
-    make_command_string_internal (group_command->command);
-+   PRINT_DEFERRED_HEREDOCS ("");
-  
-    if (inside_function_def)
-*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
---- patchlevel.h	Thu Feb 24 21:41:34 2011
-***************
-*** 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_ */
--- a/components/bash/patches/bash42-011.patch	Mon Feb 29 17:20:30 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	4.2
-Patch-ID:	bash42-011
-
-Bug-Reported-by:	"David Parks" <[email protected]>
-Bug-Reference-ID:	<[email protected]>
-Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2011-10/msg00031.html
-
-Bug-Description:
-
-Overwriting a value in an associative array causes the memory allocated to
-store the key on the second and subsequent assignments to leak.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-4.2-patched/assoc.c	2009-08-05 20:19:40.000000000 -0400
---- assoc.c	2011-10-04 20:23:07.000000000 -0400
-***************
-*** 78,81 ****
---- 78,86 ----
-    if (b == 0)
-      return -1;
-+   /* If we are overwriting an existing element's value, we're not going to
-+      use the key.  Nothing in the array assignment code path frees the key
-+      string, so we can free it here to avoid a memory leak. */
-+   if (b->key != key)
-+     free (key);
-    FREE (b->data);
-    b->data = value ? savestring (value) : (char *)0;
-*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
---- patchlevel.h	Thu Feb 24 21:41:34 2011
-***************
-*** 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_ */
--- a/components/bash/patches/bash42-012.patch	Mon Feb 29 17:20:30 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,151 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	4.2
-Patch-ID:	bash42-012
-
-Bug-Reported-by:	Rui Santos <[email protected]>
-Bug-Reference-ID:	<[email protected]>
-Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2011-06/msg00079.html
-
-Bug-Description:
-
-When calling the parser to recursively parse a command substitution within
-an arithmetic expansion, the shell overwrote the saved shell input line and
-associated state, resulting in a garbled command.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-4.2-patched/parse.y	2011-02-26 19:19:05.000000000 -0500
---- parse.y	2011-06-24 20:08:22.000000000 -0400
-***************
-*** 3843,3846 ****
---- 3849,3853 ----
-  {
-    sh_parser_state_t ps;
-+   sh_input_line_state_t ls;
-    int orig_ind, nc, sflags;
-    char *ret, *s, *ep, *ostring;
-***************
-*** 3850,3857 ****
---- 3857,3866 ----
-    ostring = string;
-  
-+ /*itrace("xparse_dolparen: size = %d shell_input_line = `%s'", shell_input_line_size, shell_input_line);*/
-    sflags = SEVAL_NONINT|SEVAL_NOHIST|SEVAL_NOFREE;
-    if (flags & SX_NOLONGJMP)
-      sflags |= SEVAL_NOLONGJMP;
-    save_parser_state (&ps);
-+   save_input_line_state (&ls);
-  
-    /*(*/
-***************
-*** 3862,3865 ****
---- 3871,3876 ----
-    restore_parser_state (&ps);
-    reset_parser ();
-+   /* reset_parser clears shell_input_line and associated variables */
-+   restore_input_line_state (&ls);
-    if (interactive)
-      token_to_read = 0;
-***************
-*** 5909,5912 ****
---- 5920,5929 ----
-    ps->echo_input_at_read = echo_input_at_read;
-  
-+   ps->token = token;
-+   ps->token_buffer_size = token_buffer_size;
-+   /* Force reallocation on next call to read_token_word */
-+   token = 0;
-+   token_buffer_size = 0;
-+ 
-    return (ps);
-  }
-***************
-*** 5950,5953 ****
---- 5967,6006 ----
-    expand_aliases = ps->expand_aliases;
-    echo_input_at_read = ps->echo_input_at_read;
-+ 
-+   FREE (token);
-+   token = ps->token;
-+   token_buffer_size = ps->token_buffer_size;
-+ }
-+ 
-+ sh_input_line_state_t *
-+ save_input_line_state (ls)
-+      sh_input_line_state_t *ls;
-+ {
-+   if (ls == 0)
-+     ls = (sh_input_line_state_t *)xmalloc (sizeof (sh_input_line_state_t));
-+   if (ls == 0)
-+     return ((sh_input_line_state_t *)NULL);
-+ 
-+   ls->input_line = shell_input_line;
-+   ls->input_line_size = shell_input_line_size;
-+   ls->input_line_len = shell_input_line_len;
-+   ls->input_line_index = shell_input_line_index;
-+ 
-+   /* force reallocation */
-+   shell_input_line = 0;
-+   shell_input_line_size = shell_input_line_len = shell_input_line_index = 0;
-+ }
-+ 
-+ void
-+ restore_input_line_state (ls)
-+      sh_input_line_state_t *ls;
-+ {
-+   FREE (shell_input_line);
-+   shell_input_line = ls->input_line;
-+   shell_input_line_size = ls->input_line_size;
-+   shell_input_line_len = ls->input_line_len;
-+   shell_input_line_index = ls->input_line_index;
-+ 
-+   set_line_mbstate ();
-  }
-  
-*** ../bash-4.2-patched/shell.h	2011-01-06 22:16:55.000000000 -0500
---- shell.h	2011-06-24 19:12:25.000000000 -0400
-***************
-*** 137,140 ****
---- 139,145 ----
-    int *token_state;
-  
-+   char *token;
-+   int token_buffer_size;
-+ 
-    /* input line state -- line number saved elsewhere */
-    int input_line_terminator;
-***************
-*** 167,171 ****
---- 172,186 ----
-  } sh_parser_state_t;
-  
-+ typedef struct _sh_input_line_state_t {
-+   char *input_line;
-+   int input_line_index;
-+   int input_line_size;
-+   int input_line_len;
-+ } sh_input_line_state_t;
-+ 
-  /* Let's try declaring these here. */
-  extern sh_parser_state_t *save_parser_state __P((sh_parser_state_t *));
-  extern void restore_parser_state __P((sh_parser_state_t *));
-+ 
-+ extern sh_input_line_state_t *save_input_line_state __P((sh_input_line_state_t *));
-+ extern void restore_input_line_state __P((sh_input_line_state_t *));
-*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
---- patchlevel.h	Thu Feb 24 21:41:34 2011
-***************
-*** 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_ */
--- a/components/bash/patches/bash42-013.patch	Mon Feb 29 17:20:30 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	4.2
-Patch-ID:	bash42-013
-
-Bug-Reported-by:	Marten Wikstrom <[email protected]>
-Bug-Reference-ID:	<[email protected]>
-Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2011-05/msg00049.html
-
-Bug-Description:
-
-An off-by-one error caused the shell to skip over CTLNUL characters,
-which are used internally to mark quoted null strings.  The effect
-was to have stray 0x7f characters left after expanding words like
-""""""""aa.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-4.2-patched/subst.c	2011-03-06 14:11:11.000000000 -0500
---- subst.c	2011-05-11 11:23:33.000000000 -0400
-***************
-*** 3707,3711 ****
-  	}
-        else if (string[i] == CTLNUL)
-! 	i++;
-  
-        prev_i = i;
---- 3710,3717 ----
-  	}
-        else if (string[i] == CTLNUL)
-! 	{
-! 	  i++;
-! 	  continue;
-! 	}
-  
-        prev_i = i;
-*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
---- patchlevel.h	Thu Feb 24 21:41:34 2011
-***************
-*** 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_ */
--- a/components/bash/patches/bash42-014.patch	Mon Feb 29 17:20:30 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	4.2
-Patch-ID:	bash42-014
-
-Bug-Reported-by:	Shawn Bohrer <[email protected]>
-Bug-Reference-ID:	<[email protected]>
-Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2011-05/msg00018.html
-
-Bug-Description:
-
-The regular expression matching operator did not correctly match
-expressions with an embedded ^A.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-4.2-patched/pathexp.c	2010-08-13 23:21:57.000000000 -0400
---- pathexp.c	2011-05-05 16:40:58.000000000 -0400
-***************
-*** 197,201 ****
-  	  if ((qflags & QGLOB_FILENAME) && pathname[i+1] == '/')
-  	    continue;
-! 	  if ((qflags & QGLOB_REGEXP) && ere_char (pathname[i+1]) == 0)
-  	    continue;
-  	  temp[j++] = '\\';
---- 197,201 ----
-  	  if ((qflags & QGLOB_FILENAME) && pathname[i+1] == '/')
-  	    continue;
-! 	  if (pathname[i+1] != CTLESC && (qflags & QGLOB_REGEXP) && ere_char (pathname[i+1]) == 0)
-  	    continue;
-  	  temp[j++] = '\\';
-*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
---- patchlevel.h	Thu Feb 24 21:41:34 2011
-***************
-*** 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_ */
--- a/components/bash/patches/bash42-015.patch	Mon Feb 29 17:20:30 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,81 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	4.2
-Patch-ID:	bash42-015
-
-Bug-Reported-by:	<[email protected]>
-Bug-Reference-ID:	<728_1312188080_4[email protected]PUEXCB2B.nanterre.francetelecom.fr>
-Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2011-08/msg00000.html
-
-Bug-Description:
-
-When in a context where arithmetic evaluation is not taking place, the
-evaluator should not check for division by 0.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-4.2-patched/expr.c	2010-12-21 11:12:13.000000000 -0500
---- expr.c	2011-08-02 20:58:28.000000000 -0400
-***************
-*** 477,480 ****
---- 481,492 ----
-        if (special)
-  	{
-+ 	  if ((op == DIV || op == MOD) && value == 0)
-+ 	    {
-+ 	      if (noeval == 0)
-+ 		evalerror (_("division by 0"));
-+ 	      else
-+ 	        value = 1;
-+ 	    }
-+ 
-  	  switch (op)
-  	    {
-***************
-*** 483,493 ****
-  	      break;
-  	    case DIV:
-- 	      if (value == 0)
-- 		evalerror (_("division by 0"));
-  	      lvalue /= value;
-  	      break;
-  	    case MOD:
-- 	      if (value == 0)
-- 		evalerror (_("division by 0"));
-  	      lvalue %= value;
-  	      break;
---- 495,501 ----
-***************
-*** 805,809 ****
-  
-        if (((op == DIV) || (op == MOD)) && (val2 == 0))
-! 	evalerror (_("division by 0"));
-  
-        if (op == MUL)
---- 813,822 ----
-  
-        if (((op == DIV) || (op == MOD)) && (val2 == 0))
-! 	{
-! 	  if (noeval == 0)
-! 	    evalerror (_("division by 0"));
-! 	  else
-! 	    val2 = 1;
-! 	}
-  
-        if (op == MUL)
-*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
---- patchlevel.h	Thu Feb 24 21:41:34 2011
-***************
-*** 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_ */
--- a/components/bash/patches/bash42-016.patch	Mon Feb 29 17:20:30 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	4.2
-Patch-ID:	bash42-016
-
-Bug-Reported-by:	Martin von Gagern <[email protected]>
-Bug-Reference-ID:	<[email protected]>
-Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2011-08/msg00141.html
-
-Bug-Description:
-
-Bash should not check for mail while executing the `eval' builtin.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-4.2-patched/parse.y	Fri Feb 25 12:07:41 2011
---- parse.y	Thu Aug 11 19:02:26 2011
-***************
-*** 2500,2504 ****
-  	 is the mail alarm reset; nothing takes place in check_mail ()
-  	 except the checking of mail.  Please don't change this. */
-!       if (prompt_is_ps1 && time_to_check_mail ())
-  	{
-  	  check_mail ();
---- 2498,2502 ----
-  	 is the mail alarm reset; nothing takes place in check_mail ()
-  	 except the checking of mail.  Please don't change this. */
-!       if (prompt_is_ps1 && parse_and_execute_level == 0 && time_to_check_mail ())
-  	{
-  	  check_mail ();
-*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
---- patchlevel.h	Thu Feb 24 21:41:34 2011
-***************
-*** 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_ */
--- a/components/bash/patches/bash42-017.patch	Mon Feb 29 17:20:30 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	4.2
-Patch-ID:	bash42-017
-
-Bug-Reported-by:	Curtis Doty <[email protected]>
-Bug-Reference-ID:	<[email protected]>
-Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2011-06/msg00053.html
-
-Bug-Description:
-
-Using `read -a foo' where foo was an already-declared associative array
-caused the shell to die with a segmentation fault.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-4.2-patched/builtins/read.def	2011-01-04 11:43:36.000000000 -0500
---- builtins/read.def	2011-06-21 10:31:02.000000000 -0400
-***************
-*** 643,646 ****
---- 642,651 ----
-  	  return EXECUTION_FAILURE;	/* readonly or noassign */
-  	}
-+       if (assoc_p (var))
-+ 	{
-+           builtin_error (_("%s: cannot convert associative to indexed array"), arrayname);
-+ 	  xfree (input_string);
-+ 	  return EXECUTION_FAILURE;	/* existing associative array */
-+ 	}
-        array_flush (array_cell (var));
-  
-*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
---- patchlevel.h	Thu Feb 24 21:41:34 2011
-***************
-*** 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_ */
--- a/components/bash/patches/bash42-018.patch	Mon Feb 29 17:20:30 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,74 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	4.2
-Patch-ID:	bash42-018
-
-Bug-Reported-by:	Thomas Cort <[email protected]>
-Bug-Reference-ID:	<[email protected]>
-Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2011-06/msg00110.html
-
-Bug-Description:
-
-Bash fails to compile unless JOB_CONTROL is defined.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-4.2-patched/execute_cmd.c	2011-02-09 17:32:25.000000000 -0500
---- execute_cmd.c	2011-11-06 15:12:48.000000000 -0500
-***************
-*** 2197,2200 ****
---- 2315,2319 ----
-      cmd->flags |= CMD_IGNORE_RETURN;
-  
-+ #if defined (JOB_CONTROL)
-    lastpipe_flag = 0;
-    begin_unwind_frame ("lastpipe-exec");
-***************
-*** 2216,2228 ****
-  	  add_unwind_protect (lastpipe_cleanup, lastpipe_jid);
-  	}
-!       cmd->flags |= CMD_LASTPIPE;
-      }	  
-    if (prev >= 0)
-      add_unwind_protect (close, prev);
-  
-    exec_result = execute_command_internal (cmd, asynchronous, prev, pipe_out, fds_to_close);
-  
-    if (lstdin > 0)
-      restore_stdin (lstdin);
-  
-    if (prev >= 0)
---- 2335,2351 ----
-  	  add_unwind_protect (lastpipe_cleanup, lastpipe_jid);
-  	}
-!       if (cmd)
-! 	cmd->flags |= CMD_LASTPIPE;
-      }	  
-    if (prev >= 0)
-      add_unwind_protect (close, prev);
-+ #endif
-  
-    exec_result = execute_command_internal (cmd, asynchronous, prev, pipe_out, fds_to_close);
-  
-+ #if defined (JOB_CONTROL)
-    if (lstdin > 0)
-      restore_stdin (lstdin);
-+ #endif
-  
-    if (prev >= 0)
-*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
---- patchlevel.h	Thu Feb 24 21:41:34 2011
-***************
-*** 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_ */
--- a/components/bash/patches/bash42-019.patch	Mon Feb 29 17:20:30 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	4.2
-Patch-ID:	bash42-019
-
-Bug-Reported-by:	Diego Augusto Molina <[email protected]>
-Bug-Reference-ID:	<[email protected]om>
-Bug-Reference-URL:	lists.gnu.org/archive/html/bug-bash/2011-09/msg00047.html
-
-Bug-Description:
-
-Using `declare' with attributes and an invalid array variable name or
-assignment reference resulted in a segmentation fault instead of a
-declaration error.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-4.2-patched/builtins/declare.def	2010-05-30 18:25:21.000000000 -0400
---- builtins/declare.def	2011-09-15 15:20:20.000000000 -0400
-***************
-*** 514,517 ****
---- 514,522 ----
-  	      var = assign_array_element (name, value, 0);	/* XXX - not aflags */
-  	      *subscript_start = '\0';
-+ 	      if (var == 0)	/* some kind of assignment error */
-+ 		{
-+ 		  assign_error++;
-+ 		  NEXT_VARIABLE ();
-+ 		}
-  	    }
-  	  else if (simple_array_assign)
-*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
---- patchlevel.h	Thu Feb 24 21:41:34 2011
-***************
-*** 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_ */
--- a/components/bash/patches/bash42-020.patch	Mon Feb 29 17:20:30 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	4.2
-Patch-ID:	bash42-020
-
-Bug-Reported-by:	Vincent Sheffer <[email protected]>
-Bug-Reference-ID:	<[email protected]>
-Bug-Reference-URL:	https://lists.gnu.org/archive/html/bug-readline/2011-08/msg00000.html
-
-Bug-Description:
-
-The shared object helper script needs to be updated for Mac OS X 10.7
-(Lion, darwin11).
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-4.2-patched/support/shobj-conf	2009-10-28 09:20:21.000000000 -0400
---- support/shobj-conf	2011-08-27 13:25:23.000000000 -0400
-***************
-*** 158,162 ****
-  
-  # Darwin/MacOS X
-! darwin[89]*|darwin10*)
-  	SHOBJ_STATUS=supported
-  	SHLIB_STATUS=supported
---- 172,176 ----
-  
-  # Darwin/MacOS X
-! darwin[89]*|darwin1[012]*)
-  	SHOBJ_STATUS=supported
-  	SHLIB_STATUS=supported
-***************
-*** 187,191 ****
-  
-  	case "${host_os}" in
-! 	darwin[789]*|darwin10*)	SHOBJ_LDFLAGS=''
-  			SHLIB_XLDFLAGS='-dynamiclib -arch_only `/usr/bin/arch` -install_name $(libdir)/[email protected] -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v'
-  			;;
---- 201,205 ----
-  
-  	case "${host_os}" in
-! 	darwin[789]*|darwin1[012]*)	SHOBJ_LDFLAGS=''
-  			SHLIB_XLDFLAGS='-dynamiclib -arch_only `/usr/bin/arch` -install_name $(libdir)/[email protected] -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v'
-  			;;
-*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
---- patchlevel.h	Thu Feb 24 21:41:34 2011
-***************
-*** 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_ */
--- a/components/bash/patches/bash42-021.patch	Mon Feb 29 17:20:30 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	4.2
-Patch-ID:	bash42-021
-
-Bug-Reported-by:	Dan Douglas <[email protected]>
-Bug-Reference-ID:	<[email protected]>
-Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2011-12/msg00084.html
-
-Bug-Description:
-
-Using `read -N' to assign values to an array can result in NUL values being
-assigned to some array elements.  These values cause seg faults when referenced
-later.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-4.2-patched/builtins/read.def	2011-11-21 18:03:38.000000000 -0500
---- builtins/read.def	2011-12-19 19:52:12.000000000 -0500
-***************
-*** 738,742 ****
-  	    }
-  	  else
-! 	    var = bind_read_variable (varname, t);
-  	}
-        else
---- 775,779 ----
-  	    }
-  	  else
-! 	    var = bind_read_variable (varname, t ? t : "");
-  	}
-        else
-***************
-*** 799,803 ****
-      }
-    else
-!     var = bind_read_variable (list->word->word, input_string);
-  
-    if (var)
---- 836,840 ----
-      }
-    else
-!     var = bind_read_variable (list->word->word, input_string ? input_string : "");
-  
-    if (var)
-*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
---- patchlevel.h	Thu Feb 24 21:41:34 2011
-***************
-*** 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_ */
--- a/components/bash/patches/bash42-022.patch	Mon Feb 29 17:20:30 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	4.2
-Patch-ID:	bash42-022
-
-Bug-Reported-by:	Gregory Margo <[email protected]>
-Bug-Reference-ID:	<[email protected]>
-Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2011-07/msg00102.html
-
-Bug-Description:
-
-The return value from lseek is `off_t'.  This can cause corrupted return
-values when the file offset is greater than 2**31 - 1.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-4.2-patched/lib/sh/zread.c	Mon Mar  2 08:54:45 2009
---- lib/sh/zread.c	Thu Jul 28 18:16:53 2011
-***************
-*** 161,166 ****
-       int fd;
-  {
-!   off_t off;
-!   int r;
-  
-    off = lused - lind;
---- 161,165 ----
-       int fd;
-  {
-!   off_t off, r;
-  
-    off = lused - lind;
-***************
-*** 169,173 ****
-      r = lseek (fd, -off, SEEK_CUR);
-  
-!   if (r >= 0)
-      lused = lind = 0;
-  }
---- 168,172 ----
-      r = lseek (fd, -off, SEEK_CUR);
-  
-!   if (r != -1)
-      lused = lind = 0;
-  }
-*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
---- patchlevel.h	Thu Feb 24 21:41:34 2011
-***************
-*** 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_ */
--- a/components/bash/patches/bash42-023.patch	Mon Feb 29 17:20:30 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	4.2
-Patch-ID:	bash42-023
-
-Bug-Reported-by:	Ewan Mellor <[email protected]>
-Bug-Reference-ID:	<[email protected].net>
-Bug-Reference-URL:	
-
-Bug-Description:
-
-Under some circumstances, an exit trap triggered by a bad substitution
-error when errexit is enabled will cause the shell to exit with an
-incorrect exit status (0).
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-4.2-patched/subst.c	2011-11-21 12:04:38.000000000 -0500
---- subst.c	2012-02-08 13:36:28.000000000 -0500
-***************
-*** 7275,7278 ****
---- 7281,7285 ----
-      case '\0':
-      bad_substitution:
-+       last_command_exit_value = EXECUTION_FAILURE;
-        report_error (_("%s: bad substitution"), string ? string : "??");
-        FREE (value);
-*** ../bash-4.2-patched/error.c	2009-08-21 22:31:31.000000000 -0400
---- error.c	2012-02-25 15:54:40.000000000 -0500
-***************
-*** 201,205 ****
-    va_end (args);
-    if (exit_immediately_on_error)
-!     exit_shell (1);
-  }
-  
---- 201,209 ----
-    va_end (args);
-    if (exit_immediately_on_error)
-!     {
-!       if (last_command_exit_value == 0)
-! 	last_command_exit_value = 1;
-!       exit_shell (last_command_exit_value);
-!     }
-  }
-  
-*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
---- patchlevel.h	Thu Feb 24 21:41:34 2011
-***************
-*** 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_ */
--- a/components/bash/patches/bash42-024.patch	Mon Feb 29 17:20:30 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	4.2
-Patch-ID:	bash42-024
-
-Bug-Reported-by:	Jim Avera <[email protected]>
-Bug-Reference-ID:	<[email protected]>
-Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2012-02/msg00001.html
-
-Bug-Description:
-
-When `printf -v' is used to set an array element, the format string contains
-`%b', and the corresponding argument is the empty string, the buffer used
-to store the value to be assigned can be NULL, which results in NUL being
-assigned to the array element.  This causes a seg fault when it's used later.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-4.2-patched/builtins/printf.def	2011-02-25 12:07:41.000000000 -0500
---- builtins/printf.def	2012-02-02 08:37:12.000000000 -0500
-***************
-*** 256,259 ****
---- 257,262 ----
-  	    {
-  	      vflag = 1;
-+ 	      if (vbsize == 0)
-+ 		vbuf = xmalloc (vbsize = 16);
-  	      vblen = 0;
-  	      if (vbuf)
-*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
---- patchlevel.h	Thu Feb 24 21:41:34 2011
-***************
-*** 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_ */
--- a/components/bash/patches/bash42-025.patch	Mon Feb 29 17:20:30 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,143 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	4.2
-Patch-ID:	bash42-025
-
-Bug-Reported-by:	Bill Gradwohl <bi[email protected]>
-Bug-Reference-ID:	<[email protected]om>
-Bug-Reference-URL:	http://lists.gnu.org/archive/html/help-bash/2012-03/msg00078.html
-
-Bug-Description:
-
-When used in a shell function, `declare -g -a array=(compound assignment)'
-creates a local variable instead of a global one.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-4.2-patched/command.h	2010-08-02 19:36:51.000000000 -0400
---- command.h	2012-04-01 12:38:35.000000000 -0400
-***************
-*** 98,101 ****
---- 98,102 ----
-  #define W_ASSIGNASSOC	0x400000	/* word looks like associative array assignment */
-  #define W_ARRAYIND	0x800000	/* word is an array index being expanded */
-+ #define W_ASSNGLOBAL	0x1000000	/* word is a global assignment to declare (declare/typeset -g) */
-  
-  /* Possible values for subshell_environment */
-*** ../bash-4.2-patched/execute_cmd.c	2011-11-21 18:03:41.000000000 -0500
---- execute_cmd.c	2012-04-01 12:42:03.000000000 -0400
-***************
-*** 3581,3585 ****
-    WORD_LIST *w;
-    struct builtin *b;
-!   int assoc;
-  
-    if (words == 0)
---- 3581,3585 ----
-    WORD_LIST *w;
-    struct builtin *b;
-!   int assoc, global;
-  
-    if (words == 0)
-***************
-*** 3587,3591 ****
-  
-    b = 0;
-!   assoc = 0;
-  
-    for (w = words; w; w = w->next)
---- 3587,3591 ----
-  
-    b = 0;
-!   assoc = global = 0;
-  
-    for (w = words; w; w = w->next)
-***************
-*** 3604,3607 ****
---- 3604,3609 ----
-  	if (assoc)
-  	  w->word->flags |= W_ASSIGNASSOC;
-+ 	if (global)
-+ 	  w->word->flags |= W_ASSNGLOBAL;
-  #endif
-        }
-***************
-*** 3609,3613 ****
-      /* Note that we saw an associative array option to a builtin that takes
-         assignment statements.  This is a bit of a kludge. */
-!     else if (w->word->word[0] == '-' && strchr (w->word->word, 'A'))
-        {
-  	if (b == 0)
---- 3611,3618 ----
-      /* Note that we saw an associative array option to a builtin that takes
-         assignment statements.  This is a bit of a kludge. */
-!     else if (w->word->word[0] == '-' && (strchr (w->word->word+1, 'A') || strchr (w->word->word+1, 'g')))
-! #else
-!     else if (w->word->word[0] == '-' && strchr (w->word->word+1, 'g'))
-! #endif
-        {
-  	if (b == 0)
-***************
-*** 3619,3626 ****
-  	      words->word->flags |= W_ASSNBLTIN;
-  	  }
-! 	if (words->word->flags & W_ASSNBLTIN)
-  	  assoc = 1;
-        }
-- #endif
-  }
-  
---- 3624,3632 ----
-  	      words->word->flags |= W_ASSNBLTIN;
-  	  }
-! 	if ((words->word->flags & W_ASSNBLTIN) && strchr (w->word->word+1, 'A'))
-  	  assoc = 1;
-+ 	if ((words->word->flags & W_ASSNBLTIN) && strchr (w->word->word+1, 'g'))
-+ 	  global = 1;
-        }
-  }
-  
-*** ../bash-4.2-patched/subst.c	2012-03-11 17:35:13.000000000 -0400
---- subst.c	2012-04-01 12:38:35.000000000 -0400
-***************
-*** 367,370 ****
---- 367,375 ----
-        fprintf (stderr, "W_ASSNBLTIN%s", f ? "|" : "");
-      }
-+   if (f & W_ASSNGLOBAL)
-+     {
-+       f &= ~W_ASSNGLOBAL;
-+       fprintf (stderr, "W_ASSNGLOBAL%s", f ? "|" : "");
-+     }
-    if (f & W_COMPASSIGN)
-      {
-***************
-*** 2804,2808 ****
-    else if (assign_list)
-      {
-!       if (word->flags & W_ASSIGNARG)
-  	aflags |= ASS_MKLOCAL;
-        if (word->flags & W_ASSIGNASSOC)
---- 2809,2813 ----
-    else if (assign_list)
-      {
-!       if ((word->flags & W_ASSIGNARG) && (word->flags & W_ASSNGLOBAL) == 0)
-  	aflags |= ASS_MKLOCAL;
-        if (word->flags & W_ASSIGNASSOC)
-
-*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
---- patchlevel.h	Thu Feb 24 21:41:34 2011
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 24
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 25
-  
-  #endif /* _PATCHLEVEL_H_ */
--- a/components/bash/patches/bash42-026.patch	Mon Feb 29 17:20:30 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	4.2
-Patch-ID:	bash42-026
-
-Bug-Reported-by:	Greg Wooledge <[email protected]>
-Bug-Reference-ID:	<[email protected]>
-Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2012-04/msg00172.html
-
-Bug-Description:
-
-The `lastpipe' option does not behave correctly on machines where the
-open file limit is less than 256.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-4.2-patched/execute_cmd.c	2011-11-21 12:04:47.000000000 -0500
---- execute_cmd.c	2012-04-26 11:09:30.000000000 -0400
-***************
-*** 2206,2210 ****
-    if (lastpipe_opt && job_control == 0 && asynchronous == 0 && pipe_out == NO_PIPE && prev > 0)
-      {
-!       lstdin = move_to_high_fd (0, 0, 255);
-        if (lstdin > 0)
-  	{
---- 2325,2329 ----
-    if (lastpipe_opt && job_control == 0 && asynchronous == 0 && pipe_out == NO_PIPE && prev > 0)
-      {
-!       lstdin = move_to_high_fd (0, 1, -1);
-        if (lstdin > 0)
-  	{
-***************
-*** 2252,2256 ****
---- 2371,2377 ----
-      }
-  
-+ #if defined (JOB_CONTROL)
-    discard_unwind_frame ("lastpipe-exec");
-+ #endif
-  
-    return (exec_result);
-
-*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
---- patchlevel.h	Thu Feb 24 21:41:34 2011
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 25
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 26
-  
-  #endif /* _PATCHLEVEL_H_ */
--- a/components/bash/patches/bash42-027.patch	Mon Feb 29 17:20:30 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	4.2
-Patch-ID:	bash42-027
-
-Bug-Reported-by:	Mike Frysinger <[email protected]>
-Bug-Reference-ID:	<[email protected]>
-Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2012-04/msg00134.html
-
-Bug-Description:
-
-When the `extglob' shell option is enabled, pattern substitution does not
-work correctly in the presence of multibyte characters.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-4.2-patched/subst.c	2012-03-11 17:52:57.000000000 -0400
---- subst.c	2012-04-22 16:19:10.000000000 -0400
-***************
-*** 4167,4171 ****
-  #if defined (EXTENDED_GLOB)
-    if (extended_glob)
-!     simple |= (wpat[1] != L'(' || (wpat[0] != L'*' && wpat[0] != L'?' && wpat[0] != L'+' && wpat[0] != L'!' && wpat[0] != L'@')); /*)*/
-  #endif
-  
---- 4167,4171 ----
-  #if defined (EXTENDED_GLOB)
-    if (extended_glob)
-!     simple &= (wpat[1] != L'(' || (wpat[0] != L'*' && wpat[0] != L'?' && wpat[0] != L'+' && wpat[0] != L'!' && wpat[0] != L'@')); /*)*/
-  #endif
-  
-*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
---- patchlevel.h	Thu Feb 24 21:41:34 2011
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 26
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 27
-  
-  #endif /* _PATCHLEVEL_H_ */
--- a/components/bash/patches/bash42-028.patch	Mon Feb 29 17:20:30 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	4.2
-Patch-ID:	bash42-028
-
-Bug-Reported-by:	Mark Edgar <[email protected]>
-Bug-Reference-ID:	<[email protected]om>
-Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2012-03/msg00109.html
-
-Bug-Description:
-
-When using a word expansion for which the right hand side is evaluated,
-certain expansions of quoted null strings include spurious ^? characters.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-4.2-patched/subst.c	2012-03-11 17:35:13.000000000 -0400
---- subst.c	2012-03-20 19:30:13.000000000 -0400
-***************
-*** 5810,5813 ****
---- 5810,5823 ----
-        if (qdollaratp && ((hasdol && quoted) || l->next))
-  	*qdollaratp = 1;
-+       /* If we have a quoted null result (QUOTED_NULL(temp)) and the word is
-+ 	 a quoted null (l->next == 0 && QUOTED_NULL(l->word->word)), the
-+ 	 flags indicate it (l->word->flags & W_HASQUOTEDNULL), and the
-+ 	 expansion is quoted (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))
-+ 	 (which is more paranoia than anything else), we need to return the
-+ 	 quoted null string and set the flags to indicate it. */
-+       if (l->next == 0 && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && QUOTED_NULL(temp) && QUOTED_NULL(l->word->word) && (l->word->flags & W_HASQUOTEDNULL))
-+ 	{
-+ 	  w->flags |= W_HASQUOTEDNULL;
-+ 	}
-        dispose_words (l);
-      }
-
-*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
---- patchlevel.h	Thu Feb 24 21:41:34 2011
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 27
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 28
-  
-  #endif /* _PATCHLEVEL_H_ */
--- a/components/bash/patches/bash42-029.patch	Mon Feb 29 17:20:30 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,524 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	4.2
-Patch-ID:	bash42-029
-
-Bug-Reported-by:	"Michael Kalisz" <[email protected]>
-Bug-Reference-ID:	<[email protected]>
-Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2011-02/msg00274.html
-
-Bug-Description:
-
-Bash-4.2 tries to leave completed directory names as the user typed them,
-without expanding them to a full pathname.  One effect of this is that
-shell variables used in pathnames being completed (e.g., $HOME) are left
-unchanged, but the `$' is quoted by readline because it is a special
-character to the shell.
-
-This patch introduces two things:
-
-1.  A new shell option, `direxpand', which, if set, attempts to emulate the
-    bash-4.1 behavior of expanding words to full pathnames during
-    completion;
-2.  A set of heuristics that reduce the number of times special characters
-    such as `$' are quoted when the directory name is not expanded.
-
-Patch (apply with `patch -p0'):
-
-diff -NrC 2 ../bash-4.2-patched/bashline.c ./bashline.c
-*** ../bash-4.2-patched/bashline.c	2011-01-16 15:32:47.000000000 -0500
---- ./bashline.c	2012-05-07 16:27:18.000000000 -0400
-***************
-*** 122,125 ****
---- 122,128 ----
-  static int bash_push_line __P((void));
-  
-+ static rl_icppfunc_t *save_directory_hook __P((void));
-+ static void reset_directory_hook __P((rl_icppfunc_t *));
-+ 
-  static void cleanup_expansion_error __P((void));
-  static void maybe_make_readline_line __P((char *));
-***************
-*** 244,251 ****
---- 247,261 ----
-  int dircomplete_spelling = 0;
-  
-+ /* Expand directory names during word/filename completion. */
-+ int dircomplete_expand = 0;
-+ int dircomplete_expand_relpath = 0;
-+ 
-  static char *bash_completer_word_break_characters = " \t\n\"'@><=;|&(:";
-  static char *bash_nohostname_word_break_characters = " \t\n\"'><=;|&(:";
-  /* )) */
-  
-+ static const char *default_filename_quote_characters = " \t\n\\\"'@<>=;|&()#$`?*[!:{~";	/*}*/
-+ static char *custom_filename_quote_characters = 0;
-+ 
-  static rl_hook_func_t *old_rl_startup_hook = (rl_hook_func_t *)NULL;
-  
-***************
-*** 502,506 ****
-    /* Tell the completer that we might want to follow symbolic links or
-       do other expansion on directory names. */
-!   rl_directory_rewrite_hook = bash_directory_completion_hook;
-  
-    rl_filename_rewrite_hook = bash_filename_rewrite_hook;
---- 512,516 ----
-    /* Tell the completer that we might want to follow symbolic links or
-       do other expansion on directory names. */
-!   set_directory_hook ();
-  
-    rl_filename_rewrite_hook = bash_filename_rewrite_hook;
-***************
-*** 530,534 ****
-  
-    /* characters that need to be quoted when appearing in filenames. */
-!   rl_filename_quote_characters = " \t\n\\\"'@<>=;|&()#$`?*[!:{~";	/*}*/
-  
-    rl_filename_quoting_function = bash_quote_filename;
---- 540,544 ----
-  
-    /* characters that need to be quoted when appearing in filenames. */
-!   rl_filename_quote_characters = default_filename_quote_characters;
-  
-    rl_filename_quoting_function = bash_quote_filename;
-***************
-*** 565,570 ****
-    rl_attempted_completion_function = attempt_shell_completion;
-    rl_completion_entry_function = NULL;
--   rl_directory_rewrite_hook = bash_directory_completion_hook;
-    rl_ignore_some_completions_function = filename_completion_ignore;
-  }
-  
---- 575,582 ----
-    rl_attempted_completion_function = attempt_shell_completion;
-    rl_completion_entry_function = NULL;
-    rl_ignore_some_completions_function = filename_completion_ignore;
-+   rl_filename_quote_characters = default_filename_quote_characters;
-+ 
-+   set_directory_hook ();
-  }
-  
-***************
-*** 1280,1283 ****
---- 1292,1298 ----
-    rl_ignore_some_completions_function = filename_completion_ignore;
-  
-+   rl_filename_quote_characters = default_filename_quote_characters;
-+   set_directory_hook ();
-+ 
-    /* Determine if this could be a command word.  It is if it appears at
-       the start of the line (ignoring preceding whitespace), or if it
-***************
-*** 1592,1595 ****
---- 1607,1616 ----
-  	  else
-  	    {
-+ 	     if (dircomplete_expand && dot_or_dotdot (filename_hint))
-+ 		{
-+ 		  dircomplete_expand = 0;
-+ 		  set_directory_hook ();
-+ 		  dircomplete_expand = 1;
-+ 		}
-  	      mapping_over = 4;
-  	      goto inner;
-***************
-*** 1792,1795 ****
---- 1813,1819 ----
-   inner:
-    val = rl_filename_completion_function (filename_hint, istate);
-+   if (mapping_over == 4 && dircomplete_expand)
-+     set_directory_hook ();
-+ 
-    istate = 1;
-  
-***************
-*** 2694,2697 ****
---- 2718,2767 ----
-  }
-  
-+ /* Functions to save and restore the appropriate directory hook */
-+ /* This is not static so the shopt code can call it */
-+ void
-+ set_directory_hook ()
-+ {
-+   if (dircomplete_expand)
-+     {
-+       rl_directory_completion_hook = bash_directory_completion_hook;
-+       rl_directory_rewrite_hook = (rl_icppfunc_t *)0;
-+     }
-+   else
-+     {
-+       rl_directory_rewrite_hook = bash_directory_completion_hook;
-+       rl_directory_completion_hook = (rl_icppfunc_t *)0;
-+     }
-+ }
-+ 
-+ static rl_icppfunc_t *
-+ save_directory_hook ()
-+ {
-+   rl_icppfunc_t *ret;
-+ 
-+   if (dircomplete_expand)
-+     {
-+       ret = rl_directory_completion_hook;
-+       rl_directory_completion_hook = (rl_icppfunc_t *)NULL;
-+     }
-+   else
-+     {
-+       ret = rl_directory_rewrite_hook;
-+       rl_directory_rewrite_hook = (rl_icppfunc_t *)NULL;
-+     }
-+ 
-+   return ret;
-+ }
-+ 
-+ static void
-+ restore_directory_hook (hookf)
-+      rl_icppfunc_t *hookf;
-+ {
-+   if (dircomplete_expand)
-+     rl_directory_completion_hook = hookf;
-+   else
-+     rl_directory_rewrite_hook = hookf;
-+ }
-+ 
-  /* Handle symbolic link references and other directory name
-     expansions while hacking completion.  This should return 1 if it modifies
-***************
-*** 2703,2720 ****
-  {
-    char *local_dirname, *new_dirname, *t;
-!   int return_value, should_expand_dirname;
-    WORD_LIST *wl;
-    struct stat sb;
-  
-!   return_value = should_expand_dirname = 0;
-    local_dirname = *dirname;
-  
-!   if (mbschr (local_dirname, '$'))
-!     should_expand_dirname = 1;
-    else
-      {
-        t = mbschr (local_dirname, '`');
-        if (t && unclosed_pair (local_dirname, strlen (local_dirname), "`") == 0)
-! 	should_expand_dirname = 1;
-      }
-  
---- 2773,2801 ----
-  {
-    char *local_dirname, *new_dirname, *t;
-!   int return_value, should_expand_dirname, nextch, closer;
-    WORD_LIST *wl;
-    struct stat sb;
-  
-!   return_value = should_expand_dirname = nextch = closer = 0;
-    local_dirname = *dirname;
-  
-!   if (t = mbschr (local_dirname, '$'))
-!     {
-!       should_expand_dirname = '$';
-!       nextch = t[1];
-!       /* Deliberately does not handle the deprecated $[...] arithmetic
-! 	 expansion syntax */
-!       if (nextch == '(')
-! 	closer = ')';
-!       else if (nextch == '{')
-! 	closer = '}';
-!       else
-! 	nextch = 0;
-!     }
-    else
-      {
-        t = mbschr (local_dirname, '`');
-        if (t && unclosed_pair (local_dirname, strlen (local_dirname), "`") == 0)
-! 	should_expand_dirname = '`';
-      }
-  
-***************
-*** 2740,2743 ****
---- 2821,2841 ----
-  	  dispose_words (wl);
-  	  local_dirname = *dirname;
-+ 	  /* XXX - change rl_filename_quote_characters here based on
-+ 	     should_expand_dirname/nextch/closer.  This is the only place
-+ 	     custom_filename_quote_characters is modified. */
-+ 	  if (rl_filename_quote_characters && *rl_filename_quote_characters)
-+ 	    {
-+ 	      int i, j, c;
-+ 	      i = strlen (default_filename_quote_characters);
-+ 	      custom_filename_quote_characters = xrealloc (custom_filename_quote_characters, i+1);
-+ 	      for (i = j = 0; c = default_filename_quote_characters[i]; i++)
-+ 		{
-+ 		  if (c == should_expand_dirname || c == nextch || c == closer)
-+ 		    continue;
-+ 		  custom_filename_quote_characters[j++] = c;
-+ 		}
-+ 	      custom_filename_quote_characters[j] = '\0';
-+ 	      rl_filename_quote_characters = custom_filename_quote_characters;
-+ 	    }
-  	}
-        else
-***************
-*** 2759,2762 ****
---- 2857,2871 ----
-      }
-  
-+   /* no_symbolic_links == 0 -> use (default) logical view of the file system.
-+      local_dirname[0] == '.' && local_dirname[1] == '/' means files in the
-+      current directory (./).
-+      local_dirname[0] == '.' && local_dirname[1] == 0 means relative pathnames
-+      in the current directory (e.g., lib/sh).
-+      XXX - should we do spelling correction on these? */
-+ 
-+   /* This is test as it was in bash-4.2: skip relative pathnames in current
-+      directory.  Change test to
-+       (local_dirname[0] != '.' || (local_dirname[1] && local_dirname[1] != '/'))
-+      if we want to skip paths beginning with ./ also. */
-    if (no_symbolic_links == 0 && (local_dirname[0] != '.' || local_dirname[1]))
-      {
-***************
-*** 2764,2767 ****
---- 2873,2885 ----
-        int len1, len2;
-  
-+       /* If we have a relative path
-+       		(local_dirname[0] != '/' && local_dirname[0] != '.')
-+ 	 that is canonical after appending it to the current directory, then
-+ 	 	temp1 = temp2+'/'
-+ 	 That is,
-+ 	 	strcmp (temp1, temp2) == 0
-+ 	 after adding a slash to temp2 below.  It should be safe to not
-+ 	 change those.
-+       */
-        t = get_working_directory ("symlink-hook");
-        temp1 = make_absolute (local_dirname, t);
-***************
-*** 2798,2802 ****
-  	    }
-  	}
-!       return_value |= STREQ (local_dirname, temp2) == 0;
-        free (local_dirname);
-        *dirname = temp2;
---- 2916,2928 ----
-  	    }
-  	}
-! 
-!       /* dircomplete_expand_relpath == 0 means we want to leave relative
-! 	 pathnames that are unchanged by canonicalization alone.
-! 	 *local_dirname != '/' && *local_dirname != '.' == relative pathname
-! 	 (consistent with general.c:absolute_pathname())
-! 	 temp1 == temp2 (after appending a slash to temp2) means the pathname
-! 	 is not changed by canonicalization as described above. */
-!       if (dircomplete_expand_relpath || ((local_dirname[0] != '/' && local_dirname[0] != '.') && STREQ (temp1, temp2) == 0))
-! 	return_value |= STREQ (local_dirname, temp2) == 0;
-        free (local_dirname);
-        *dirname = temp2;
-***************
-*** 3003,3012 ****
-    orig_func = rl_completion_entry_function;
-    orig_attempt_func = rl_attempted_completion_function;
--   orig_dir_func = rl_directory_rewrite_hook;
-    orig_ignore_func = rl_ignore_some_completions_function;
-    orig_rl_completer_word_break_characters = rl_completer_word_break_characters;
-    rl_completion_entry_function = rl_filename_completion_function;
-    rl_attempted_completion_function = (rl_completion_func_t *)NULL;
--   rl_directory_rewrite_hook = (rl_icppfunc_t *)NULL;
-    rl_ignore_some_completions_function = filename_completion_ignore;
-    rl_completer_word_break_characters = " \t\n\"\'";
---- 3129,3139 ----
-    orig_func = rl_completion_entry_function;
-    orig_attempt_func = rl_attempted_completion_function;
-    orig_ignore_func = rl_ignore_some_completions_function;
-    orig_rl_completer_word_break_characters = rl_completer_word_break_characters;
-+ 
-+   orig_dir_func = save_directory_hook ();
-+ 
-    rl_completion_entry_function = rl_filename_completion_function;
-    rl_attempted_completion_function = (rl_completion_func_t *)NULL;
-    rl_ignore_some_completions_function = filename_completion_ignore;
-    rl_completer_word_break_characters = " \t\n\"\'";
-***************
-*** 3016,3023 ****
-    rl_completion_entry_function = orig_func;
-    rl_attempted_completion_function = orig_attempt_func;
--   rl_directory_rewrite_hook = orig_dir_func;
-    rl_ignore_some_completions_function = orig_ignore_func;
-    rl_completer_word_break_characters = orig_rl_completer_word_break_characters;
-  
-    return r;
-  }
---- 3143,3151 ----
-    rl_completion_entry_function = orig_func;
-    rl_attempted_completion_function = orig_attempt_func;
-    rl_ignore_some_completions_function = orig_ignore_func;
-    rl_completer_word_break_characters = orig_rl_completer_word_break_characters;
-  
-+   restore_directory_hook (orig_dir_func);
-+ 
-    return r;
-  }
-diff -NrC 2 ../bash-4.2-patched/bashline.h ./bashline.h
-*** ../bash-4.2-patched/bashline.h	2009-01-04 14:32:22.000000000 -0500
---- ./bashline.h	2012-05-07 16:27:18.000000000 -0400
-***************
-*** 34,41 ****
---- 34,46 ----
-  extern int bash_re_edit __P((char *));
-  
-+ extern void bashline_set_event_hook __P((void));
-+ extern void bashline_reset_event_hook __P((void));
-+ 
-  extern int bind_keyseq_to_unix_command __P((char *));
-  
-  extern char **bash_default_completion __P((const char *, int, int, int, int));
-  
-+ void set_directory_hook __P((void));
-+ 
-  /* Used by programmable completion code. */
-  extern char *command_word_completion_function __P((const char *, int));
-diff -NrC 2 ../bash-4.2-patched/builtins/shopt.def ./builtins/shopt.def
-*** ../bash-4.2-patched/builtins/shopt.def	2010-07-02 22:42:44.000000000 -0400
---- ./builtins/shopt.def	2012-05-07 16:27:18.000000000 -0400
-***************
-*** 62,65 ****
---- 62,69 ----
-  #include "bashgetopt.h"
-  
-+ #if defined (READLINE)
-+ #  include "../bashline.h"
-+ #endif
-+ 
-  #if defined (HISTORY)
-  #  include "../bashhist.h"
-***************
-*** 95,99 ****
-  extern int no_empty_command_completion;
-  extern int force_fignore;
-! extern int dircomplete_spelling;
-  
-  extern int enable_hostname_completion __P((int));
---- 99,103 ----
-  extern int no_empty_command_completion;
-  extern int force_fignore;
-! extern int dircomplete_spelling, dircomplete_expand;
-  
-  extern int enable_hostname_completion __P((int));
-***************
-*** 122,125 ****
---- 126,133 ----
-  #endif
-  
-+ #if defined (READLINE)
-+ static int shopt_set_complete_direxpand __P((char *, int));
-+ #endif
-+ 
-  static int shopt_login_shell;
-  static int shopt_compat31;
-***************
-*** 151,154 ****
---- 159,163 ----
-    { "compat41", &shopt_compat41, set_compatibility_level },
-  #if defined (READLINE)
-+   { "direxpand", &dircomplete_expand, shopt_set_complete_direxpand },
-    { "dirspell", &dircomplete_spelling, (shopt_set_func_t *)NULL },
-  #endif
-***************
-*** 536,539 ****
---- 545,559 ----
-  }
-  
-+ #if defined (READLINE)
-+ static int
-+ shopt_set_complete_direxpand (option_name, mode)
-+      char *option_name;
-+      int mode;
-+ {
-+   set_directory_hook ();
-+   return 0;
-+ }
-+ #endif
-+ 
-  #if defined (RESTRICTED_SHELL)
-  /* Don't allow the value of restricted_shell to be modified. */
-Binary files ../bash-4.2-patched/doc/._bashref.pdf and ./doc/._bashref.pdf differ
-diff -NrC 2 ../bash-4.2-patched/doc/bash.1 ./doc/bash.1
-*** ../bash-4.2-patched/doc/bash.1	2011-01-16 15:31:39.000000000 -0500
---- ./doc/bash.1	2012-05-07 16:27:18.000000000 -0400
-***************
-*** 8949,8952 ****
---- 8949,8962 ----
-  The default bash behavior remains as in previous versions.
-  .TP 8
-+ .B direxpand
-+ If set,
-+ .B bash
-+ replaces directory names with the results of word expansion when performing
-+ filename completion.  This changes the contents of the readline editing
-+ buffer.
-+ If not set,
-+ .B bash
-+ attempts to preserve what the user typed.
-+ .TP 8
-  .B dirspell
-  If set,
-diff -NrC 2 ../bash-4.2-patched/doc/bashref.texi ./doc/bashref.texi
-*** ../bash-4.2-patched/doc/bashref.texi	2011-01-16 15:31:57.000000000 -0500
---- ./doc/bashref.texi	2012-05-07 16:27:18.000000000 -0400
-***************
-*** 4536,4539 ****
---- 4536,4546 ----
-  The default Bash behavior remains as in previous versions.
-  
-+ @item direxpand
-+ If set, Bash
-+ replaces directory names with the results of word expansion when performing
-+ filename completion.  This changes the contents of the readline editing
-+ buffer.
-+ If not set, Bash attempts to preserve what the user typed.
-+ 
-  @item dirspell
-  If set, Bash
-diff -NrC 2 ../bash-4.2-patched/tests/shopt.right ./tests/shopt.right
-*** ../bash-4.2-patched/tests/shopt.right	2010-07-02 23:36:30.000000000 -0400
---- ./tests/shopt.right	2012-05-07 16:27:18.000000000 -0400
-***************
-*** 13,16 ****
---- 13,17 ----
-  shopt -u compat40
-  shopt -u compat41
-+ shopt -u direxpand
-  shopt -u dirspell
-  shopt -u dotglob
-***************
-*** 69,72 ****
---- 70,74 ----
-  shopt -u compat40
-  shopt -u compat41
-+ shopt -u direxpand
-  shopt -u dirspell
-  shopt -u dotglob
-***************
-*** 102,105 ****
---- 104,108 ----
-  compat40       	off
-  compat41       	off
-+ direxpand      	off
-  dirspell       	off
-  dotglob        	off
-*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
---- patchlevel.h	Thu Feb 24 21:41:34 2011
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 28
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 29
-  
-  #endif /* _PATCHLEVEL_H_ */
--- a/components/bash/patches/bash42-030.patch	Mon Feb 29 17:20:30 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,178 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	4.2
-Patch-ID:	bash42-030
-
-Bug-Reported-by:	Roman Rakus <[email protected]>
-Bug-Reference-ID:	<[email protected]>
-Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2011-03/msg00126.html
-
-Bug-Description:
-
-When attempting to glob strings in a multibyte locale, and those strings
-contain invalid multibyte characters that cause mbsnrtowcs to return 0,
-the globbing code loops infinitely.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-4.2-patched/lib/glob/xmbsrtowcs.c	2010-05-30 18:36:27.000000000 -0400
---- lib/glob/xmbsrtowcs.c	2011-03-22 16:06:47.000000000 -0400
-***************
-*** 36,39 ****
---- 36,41 ----
-  #if HANDLE_MULTIBYTE
-  
-+ #define WSBUF_INC 32
-+ 
-  #ifndef FREE
-  #  define FREE(x)	do { if (x) free (x); } while (0)
-***************
-*** 149,153 ****
-    size_t wcnum;		/* Number of wide characters in WSBUF */
-    mbstate_t state;	/* Conversion State */
-!   size_t wcslength;	/* Number of wide characters produced by the conversion. */
-    const char *end_or_backslash;
-    size_t nms;	/* Number of multibyte characters to convert at one time. */
---- 151,155 ----
-    size_t wcnum;		/* Number of wide characters in WSBUF */
-    mbstate_t state;	/* Conversion State */
-!   size_t n, wcslength;	/* Number of wide characters produced by the conversion. */
-    const char *end_or_backslash;
-    size_t nms;	/* Number of multibyte characters to convert at one time. */
-***************
-*** 172,176 ****
-        tmp_p = p;
-        tmp_state = state;
-!       wcslength = mbsnrtowcs(NULL, &tmp_p, nms, 0, &tmp_state);
-  
-        /* Conversion failed. */
---- 174,189 ----
-        tmp_p = p;
-        tmp_state = state;
-! 
-!       if (nms == 0 && *p == '\\')	/* special initial case */
-! 	nms = wcslength = 1;
-!       else
-! 	wcslength = mbsnrtowcs (NULL, &tmp_p, nms, 0, &tmp_state);
-! 
-!       if (wcslength == 0)
-! 	{
-! 	  tmp_p = p;		/* will need below */
-! 	  tmp_state = state;
-! 	  wcslength = 1;	/* take a single byte */
-! 	}
-  
-        /* Conversion failed. */
-***************
-*** 187,191 ****
-  	  wchar_t *wstmp;
-  
-! 	  wsbuf_size = wcnum+wcslength+1;	/* 1 for the L'\0' or the potential L'\\' */
-  
-  	  wstmp = (wchar_t *) realloc (wsbuf, wsbuf_size * sizeof (wchar_t));
---- 200,205 ----
-  	  wchar_t *wstmp;
-  
-! 	  while (wsbuf_size < wcnum+wcslength+1) /* 1 for the L'\0' or the potential L'\\' */
-! 	    wsbuf_size += WSBUF_INC;
-  
-  	  wstmp = (wchar_t *) realloc (wsbuf, wsbuf_size * sizeof (wchar_t));
-***************
-*** 200,207 ****
-  
-        /* Perform the conversion. This is assumed to return 'wcslength'.
-!        * It may set 'p' to NULL. */
-!       mbsnrtowcs(wsbuf+wcnum, &p, nms, wsbuf_size-wcnum, &state);
-  
-!       wcnum += wcslength;
-  
-        if (mbsinit (&state) && (p != NULL) && (*p == '\\'))
---- 214,229 ----
-  
-        /* Perform the conversion. This is assumed to return 'wcslength'.
-! 	 It may set 'p' to NULL. */
-!       n = mbsnrtowcs(wsbuf+wcnum, &p, nms, wsbuf_size-wcnum, &state);
-  
-!       /* Compensate for taking single byte on wcs conversion failure above. */
-!       if (wcslength == 1 && (n == 0 || n == (size_t)-1))
-! 	{
-! 	  state = tmp_state;
-! 	  p = tmp_p;
-! 	  wsbuf[wcnum++] = *p++;
-! 	}
-!       else
-!         wcnum += wcslength;
-  
-        if (mbsinit (&state) && (p != NULL) && (*p == '\\'))
-***************
-*** 231,236 ****
-     of DESTP and INDICESP are NULL. */
-  
-- #define WSBUF_INC 32
-- 
-  size_t
-  xdupmbstowcs (destp, indicesp, src)
---- 253,256 ----
-*** ../bash-4.2-patched/lib/glob/glob.c	2009-11-14 18:39:30.000000000 -0500
---- lib/glob/glob.c	2012-07-07 12:09:56.000000000 -0400
-***************
-*** 201,206 ****
-    size_t pat_n, dn_n;
-  
-    pat_n = xdupmbstowcs (&pat_wc, NULL, pat);
-!   dn_n = xdupmbstowcs (&dn_wc, NULL, dname);
-  
-    ret = 0;
---- 201,209 ----
-    size_t pat_n, dn_n;
-  
-+   pat_wc = dn_wc = (wchar_t *)NULL;
-+ 
-    pat_n = xdupmbstowcs (&pat_wc, NULL, pat);
-!   if (pat_n != (size_t)-1)
-!     dn_n = xdupmbstowcs (&dn_wc, NULL, dname);
-  
-    ret = 0;
-***************
-*** 222,225 ****
---- 225,230 ----
-  	ret = 1;
-      }
-+   else
-+     ret = skipname (pat, dname, flags);
-  
-    FREE (pat_wc);
-***************
-*** 267,272 ****
-    n = xdupmbstowcs (&wpathname, NULL, pathname);
-    if (n == (size_t) -1)
-!     /* Something wrong. */
-!     return;
-    orig_wpathname = wpathname;
-  
---- 272,280 ----
-    n = xdupmbstowcs (&wpathname, NULL, pathname);
-    if (n == (size_t) -1)
-!     {
-!       /* Something wrong.  Fall back to single-byte */
-!       udequote_pathname (pathname);
-!       return;
-!     }
-    orig_wpathname = wpathname;
-  
-*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
---- patchlevel.h	Thu Feb 24 21:41:34 2011
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 29
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 30
-  
-  #endif /* _PATCHLEVEL_H_ */
--- a/components/bash/patches/bash42-031.patch	Mon Feb 29 17:20:30 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,80 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	4.2
-Patch-ID:	bash42-031
-
-Bug-Reported-by:	Max Horn <[email protected]>
-Bug-Reference-ID:	<[email protected]>
-Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-readline/2012-06/msg00005.html
-
-Bug-Description:
-
-A change between bash-4.1 and bash-4.2 to prevent the readline input hook
-from being called too frequently had the side effect of causing delays
-when reading pasted input on systems such as Mac OS X.  This patch fixes
-those delays while retaining the bash-4.2 behavior.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-4.2-patched/lib/readline/input.c	2010-05-30 18:33:01.000000000 -0400
---- lib/readline/input.c	2012-06-25 21:08:42.000000000 -0400
-***************
-*** 410,414 ****
-  rl_read_key ()
-  {
-!   int c;
-  
-    rl_key_sequence_length++;
---- 412,416 ----
-  rl_read_key ()
-  {
-!   int c, r;
-  
-    rl_key_sequence_length++;
-***************
-*** 430,441 ****
-  	  while (rl_event_hook)
-  	    {
-! 	      if (rl_gather_tyi () < 0)	/* XXX - EIO */
-  		{
-  		  rl_done = 1;
-  		  return ('\n');
-  		}
-  	      RL_CHECK_SIGNALS ();
-- 	      if (rl_get_char (&c) != 0)
-- 		break;
-  	      if (rl_done)		/* XXX - experimental */
-  		return ('\n');
---- 432,447 ----
-  	  while (rl_event_hook)
-  	    {
-! 	      if (rl_get_char (&c) != 0)
-! 		break;
-! 		
-! 	      if ((r = rl_gather_tyi ()) < 0)	/* XXX - EIO */
-  		{
-  		  rl_done = 1;
-  		  return ('\n');
-  		}
-+ 	      else if (r == 1)			/* read something */
-+ 		continue;
-+ 
-  	      RL_CHECK_SIGNALS ();
-  	      if (rl_done)		/* XXX - experimental */
-  		return ('\n');
-*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
---- patchlevel.h	Thu Feb 24 21:41:34 2011
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 30
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 31
-  
-  #endif /* _PATCHLEVEL_H_ */
--- a/components/bash/patches/bash42-032.patch	Mon Feb 29 17:20:30 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,75 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	4.2
-Patch-ID:	bash42-032
-
-Bug-Reported-by:	Ruediger Kuhlmann <[email protected]>
-Bug-Reference-ID:	<[email protected]ystems.com>
-Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2012-05/msg00010.html
-
-Bug-Description:
-
-Bash-4.2 has problems with DEL characters in the expanded value of variables
-used in the same quoted string as variables that expand to nothing.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-20120427/subst.c	2012-04-22 16:19:10.000000000 -0400
---- subst.c	2012-05-07 16:06:35.000000000 -0400
-***************
-*** 8152,8155 ****
---- 8152,8163 ----
-  	  dispose_word_desc (tword);
-  
-+ 	  /* Kill quoted nulls; we will add them back at the end of
-+ 	     expand_word_internal if nothing else in the string */
-+ 	  if (had_quoted_null && temp && QUOTED_NULL (temp))
-+ 	    {
-+ 	      FREE (temp);
-+ 	      temp = (char *)NULL;
-+ 	    }
-+ 
-  	  goto add_string;
-  	  break;
-***************
-*** 8556,8560 ****
-        if (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))
-  	tword->flags |= W_QUOTED;
-!       if (had_quoted_null)
-  	tword->flags |= W_HASQUOTEDNULL;
-        list = make_word_list (tword, (WORD_LIST *)NULL);
---- 8564,8568 ----
-        if (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))
-  	tword->flags |= W_QUOTED;
-!       if (had_quoted_null && QUOTED_NULL (istring))
-  	tword->flags |= W_HASQUOTEDNULL;
-        list = make_word_list (tword, (WORD_LIST *)NULL);
-***************
-*** 8587,8591 ****
-  	  if (word->flags & W_NOEXPAND)
-  	    tword->flags |= W_NOEXPAND;
-! 	  if (had_quoted_null)
-  	    tword->flags |= W_HASQUOTEDNULL;	/* XXX */
-  	  list = make_word_list (tword, (WORD_LIST *)NULL);
---- 8595,8599 ----
-  	  if (word->flags & W_NOEXPAND)
-  	    tword->flags |= W_NOEXPAND;
-! 	  if (had_quoted_null && QUOTED_NULL (istring))
-  	    tword->flags |= W_HASQUOTEDNULL;	/* XXX */
-  	  list = make_word_list (tword, (WORD_LIST *)NULL);
-*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
---- patchlevel.h	Thu Feb 24 21:41:34 2011
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 31
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 32
-  
-  #endif /* _PATCHLEVEL_H_ */
--- a/components/bash/patches/bash42-033.patch	Mon Feb 29 17:20:30 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	4.2
-Patch-ID:	bash42-033
-
-Bug-Reported-by:	David Leverton <[email protected]>
-Bug-Reference-ID:	<[email protected]>
-Bug-Reference-URL:
-
-Bug-Description:
-
-Bash uses a static buffer when expanding the /dev/fd prefix for the test
-and conditional commands, among other uses, when it should use a dynamic
-buffer to avoid buffer overflow.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-4.2-patched/lib/sh/eaccess.c	2011-01-08 20:50:10.000000000 -0500
---- lib/sh/eaccess.c	2012-06-04 21:06:43.000000000 -0400
-***************
-*** 83,86 ****
---- 83,88 ----
-       struct stat *finfo;
-  {
-+   static char *pbuf = 0;
-+ 
-    if (*path == '\0')
-      {
-***************
-*** 107,111 ****
-       On most systems, with the notable exception of linux, this is
-       effectively a no-op. */
-!       char pbuf[32];
-        strcpy (pbuf, DEV_FD_PREFIX);
-        strcat (pbuf, path + 8);
---- 109,113 ----
-       On most systems, with the notable exception of linux, this is
-       effectively a no-op. */
-!       pbuf = xrealloc (pbuf, sizeof (DEV_FD_PREFIX) + strlen (path + 8));
-        strcpy (pbuf, DEV_FD_PREFIX);
-        strcat (pbuf, path + 8);
-*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
---- patchlevel.h	Thu Feb 24 21:41:34 2011
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 32
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 33
-  
-  #endif /* _PATCHLEVEL_H_ */
--- a/components/bash/patches/bash42-034.patch	Mon Feb 29 17:20:30 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	4.2
-Patch-ID:	bash42-034
-
-Bug-Reported-by:	"Davide Brini" <[email protected]>
-Bug-Reference-ID:	<[email protected]>
-Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2012-06/msg00030.html
-
-Bug-Description:
-
-In bash-4.2, the history code would inappropriately add a semicolon to
-multi-line compound array assignments when adding them to the history.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-4.2-patched/parse.y	2011-11-21 18:03:36.000000000 -0500
---- parse.y	2012-06-07 12:48:47.000000000 -0400
-***************
-*** 4900,4905 ****
---- 4916,4924 ----
-        return (current_command_line_count == 2 ? "\n" : "");
-      }
-  
-+   if (parser_state & PST_COMPASSIGN)
-+     return (" ");
-+ 
-    /* First, handle some special cases. */
-    /*(*/
-    /* If we just read `()', assume it's a function definition, and don't
-*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
---- patchlevel.h	Thu Feb 24 21:41:34 2011
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 33
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 34
-  
-  #endif /* _PATCHLEVEL_H_ */
--- a/components/bash/patches/bash42-035.patch	Mon Feb 29 17:20:30 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,66 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	4.2
-Patch-ID:	bash42-035
-
-Bug-Reported-by:	Dan Douglas <[email protected]>
-Bug-Reference-ID:	<[email protected]>
-Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2012-06/msg00071.html
-
-Bug-Description:
-
-When given a number of lines to read, `mapfile -n lines' reads one too many.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-4.2-patched/builtins/mapfile.def	2010-05-29 22:09:47.000000000 -0400
---- builtins/mapfile.def	2012-06-20 09:48:33.000000000 -0400
-***************
-*** 196,206 ****
-    interrupt_immediately++;
-    for (array_index = origin, line_count = 1; 
-!        zgetline (fd, &line, &line_length, unbuffered_read) != -1;
-!        array_index++, line_count++) 
-      {
--       /* Have we exceeded # of lines to store? */
--       if (line_count_goal != 0 && line_count > line_count_goal) 
-- 	break;
-- 
-        /* Remove trailing newlines? */
-        if (flags & MAPF_CHOP)
---- 196,202 ----
-    interrupt_immediately++;
-    for (array_index = origin, line_count = 1; 
-!  	zgetline (fd, &line, &line_length, unbuffered_read) != -1;
-! 	array_index++) 
-      {
-        /* Remove trailing newlines? */
-        if (flags & MAPF_CHOP)
-***************
-*** 218,221 ****
---- 214,222 ----
-  
-        bind_array_element (entry, array_index, line, 0);
-+ 
-+       /* Have we exceeded # of lines to store? */
-+       line_count++;
-+       if (line_count_goal != 0 && line_count > line_count_goal) 
-+ 	break;
-      }
-  
-*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
---- patchlevel.h	Thu Feb 24 21:41:34 2011
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 34
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 35
-  
-  #endif /* _PATCHLEVEL_H_ */
--- a/components/bash/patches/bash42-036.patch	Mon Feb 29 17:20:30 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,92 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	4.2
-Patch-ID:	bash42-036
-
-Bug-Reported-by:	gregrwm <[email protected]>
-Bug-Reference-ID:	<[email protected]om>
-Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2012-05/msg00108.html
-
-Bug-Description:
-
-Bash-4.2 produces incorrect word splitting results when expanding
-double-quoted [email protected] in the same string as and adjacent to other variable
-expansions.  The [email protected] should be split, the other expansions should not.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-4.2-patched/subst.c	2012-05-02 12:02:33.000000000 -0400
---- subst.c	2012-07-08 21:19:32.000000000 -0400
-***************
-*** 7923,7927 ****
-    /* State flags */
-    int had_quoted_null;
-!   int has_dollar_at;
-    int tflag;
-    int pflags;			/* flags passed to param_expand */
---- 7923,7927 ----
-    /* State flags */
-    int had_quoted_null;
-!   int has_dollar_at, temp_has_dollar_at;
-    int tflag;
-    int pflags;			/* flags passed to param_expand */
-***************
-*** 8128,8138 ****
-  	    *expanded_something = 1;
-  
-! 	  has_dollar_at = 0;
-  	  pflags = (word->flags & W_NOCOMSUB) ? PF_NOCOMSUB : 0;
-  	  if (word->flags & W_NOSPLIT2)
-  	    pflags |= PF_NOSPLIT2;
-  	  tword = param_expand (string, &sindex, quoted, expanded_something,
-! 			       &has_dollar_at, &quoted_dollar_at,
-  			       &had_quoted_null, pflags);
-  
-  	  if (tword == &expand_wdesc_error || tword == &expand_wdesc_fatal)
---- 8128,8139 ----
-  	    *expanded_something = 1;
-  
-! 	  temp_has_dollar_at = 0;
-  	  pflags = (word->flags & W_NOCOMSUB) ? PF_NOCOMSUB : 0;
-  	  if (word->flags & W_NOSPLIT2)
-  	    pflags |= PF_NOSPLIT2;
-  	  tword = param_expand (string, &sindex, quoted, expanded_something,
-! 			       &temp_has_dollar_at, &quoted_dollar_at,
-  			       &had_quoted_null, pflags);
-+ 	  has_dollar_at += temp_has_dollar_at;
-  
-  	  if (tword == &expand_wdesc_error || tword == &expand_wdesc_fatal)
-***************
-*** 8275,8281 ****
-  	      temp = (char *)NULL;
-  
-! 	      has_dollar_at = 0;
-  	      /* Need to get W_HASQUOTEDNULL flag through this function. */
-! 	      list = expand_word_internal (tword, Q_DOUBLE_QUOTES, 0, &has_dollar_at, (int *)NULL);
-  
-  	      if (list == &expand_word_error || list == &expand_word_fatal)
---- 8276,8283 ----
-  	      temp = (char *)NULL;
-  
-! 	      temp_has_dollar_at = 0;	/* XXX */
-  	      /* Need to get W_HASQUOTEDNULL flag through this function. */
-! 	      list = expand_word_internal (tword, Q_DOUBLE_QUOTES, 0, &temp_has_dollar_at, (int *)NULL);
-! 	      has_dollar_at += temp_has_dollar_at;
-  
-  	      if (list == &expand_word_error || list == &expand_word_fatal)
-*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
---- patchlevel.h	Thu Feb 24 21:41:34 2011
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 35
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 36
-  
-  #endif /* _PATCHLEVEL_H_ */
--- a/components/bash/patches/bash42-037.patch	Mon Feb 29 17:20:30 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,112 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	4.2
-Patch-ID:	bash42-037
-
-Bug-Reported-by:	Jakub Filak
-Bug-Reference-ID:
-Bug-Reference-URL:	https://bugzilla.redhat.com/show_bug.cgi?id=813289
-
-Bug-Description:
-
-Attempting to redo (using `.') the vi editing mode `cc', `dd', or `yy'
-commands leads to an infinite loop.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-4.2-patched/lib/readline/vi_mode.c	2011-02-25 11:17:02.000000000 -0500
---- lib/readline/vi_mode.c	2012-06-02 12:24:47.000000000 -0400
-***************
-*** 1235,1243 ****
-        r = rl_domove_motion_callback (_rl_vimvcxt);
-      }
-!   else if (vi_redoing)
-      {
-        _rl_vimvcxt->motion = _rl_vi_last_motion;
-        r = rl_domove_motion_callback (_rl_vimvcxt);
-      }
-  #if defined (READLINE_CALLBACKS)
-    else if (RL_ISSTATE (RL_STATE_CALLBACK))
---- 1297,1313 ----
-        r = rl_domove_motion_callback (_rl_vimvcxt);
-      }
-!   else if (vi_redoing && _rl_vi_last_motion != 'd')	/* `dd' is special */
-      {
-        _rl_vimvcxt->motion = _rl_vi_last_motion;
-        r = rl_domove_motion_callback (_rl_vimvcxt);
-      }
-+   else if (vi_redoing)		/* handle redoing `dd' here */
-+     {
-+       _rl_vimvcxt->motion = _rl_vi_last_motion;
-+       rl_mark = rl_end;
-+       rl_beg_of_line (1, key);
-+       RL_UNSETSTATE (RL_STATE_VIMOTION);
-+       r = vidomove_dispatch (_rl_vimvcxt);
-+     }
-  #if defined (READLINE_CALLBACKS)
-    else if (RL_ISSTATE (RL_STATE_CALLBACK))
-***************
-*** 1317,1325 ****
-        r = rl_domove_motion_callback (_rl_vimvcxt);
-      }
-!   else if (vi_redoing)
-      {
-        _rl_vimvcxt->motion = _rl_vi_last_motion;
-        r = rl_domove_motion_callback (_rl_vimvcxt);
-      }
-  #if defined (READLINE_CALLBACKS)
-    else if (RL_ISSTATE (RL_STATE_CALLBACK))
---- 1387,1403 ----
-        r = rl_domove_motion_callback (_rl_vimvcxt);
-      }
-!   else if (vi_redoing && _rl_vi_last_motion != 'c')	/* `cc' is special */
-      {
-        _rl_vimvcxt->motion = _rl_vi_last_motion;
-        r = rl_domove_motion_callback (_rl_vimvcxt);
-      }
-+   else if (vi_redoing)		/* handle redoing `cc' here */
-+     {
-+       _rl_vimvcxt->motion = _rl_vi_last_motion;
-+       rl_mark = rl_end;
-+       rl_beg_of_line (1, key);
-+       RL_UNSETSTATE (RL_STATE_VIMOTION);
-+       r = vidomove_dispatch (_rl_vimvcxt);
-+     }
-  #if defined (READLINE_CALLBACKS)
-    else if (RL_ISSTATE (RL_STATE_CALLBACK))
-***************
-*** 1378,1381 ****
---- 1456,1472 ----
-        r = rl_domove_motion_callback (_rl_vimvcxt);
-      }
-+   else if (vi_redoing && _rl_vi_last_motion != 'y')	/* `yy' is special */
-+     {
-+       _rl_vimvcxt->motion = _rl_vi_last_motion;
-+       r = rl_domove_motion_callback (_rl_vimvcxt);
-+     }
-+   else if (vi_redoing)			/* handle redoing `yy' here */
-+     {
-+       _rl_vimvcxt->motion = _rl_vi_last_motion;
-+       rl_mark = rl_end;
-+       rl_beg_of_line (1, key);
-+       RL_UNSETSTATE (RL_STATE_VIMOTION);
-+       r = vidomove_dispatch (_rl_vimvcxt);
-+     }
-  #if defined (READLINE_CALLBACKS)
-    else if (RL_ISSTATE (RL_STATE_CALLBACK))
-*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
---- patchlevel.h	Thu Feb 24 21:41:34 2011
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 36
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 37
-  
-  #endif /* _PATCHLEVEL_H_ */
--- a/components/bash/patches/bash42-038.patch	Mon Feb 29 17:20:30 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	4.2
-Patch-ID:	bash42-038
-
-Bug-Reported-by:	[email protected]
-Bug-Reference-ID:	<[email protected]>
-Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2012-08/msg00049.html
-
-Bug-Description:
-
-If a backslash-newline (which is removed) with no other input is given as
-input to `read', the shell tries to dereference a null pointer and seg faults.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-4.2-patched/builtins/read.def	2012-03-11 17:52:44.000000000 -0400
---- builtins/read.def	2012-08-22 11:53:09.000000000 -0400
-***************
-*** 792,796 ****
-  #endif
-  
-!   if (saw_escape)
-      {
-        t = dequote_string (input_string);
---- 847,851 ----
-  #endif
-  
-!   if (saw_escape && input_string && *input_string)
-      {
-        t = dequote_string (input_string);
-*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
---- patchlevel.h	Thu Feb 24 21:41:34 2011
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 37
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 38
-  
-  #endif /* _PATCHLEVEL_H_ */
--- a/components/bash/patches/bash42-039.patch	Mon Feb 29 17:20:30 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	4.2
-Patch-ID:	bash42-039
-
-Bug-Reported-by:	Dan Douglas <[email protected]>
-Bug-Reference-ID:	<[email protected]>
-Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2012-09/msg00008.html
-
-Bug-Description:
-
-Under certain circumstances, bash attempts to expand variables in arithmetic
-expressions even when evaluation is being suppressed.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-4.2-patched/expr.c	2011-11-21 18:03:35.000000000 -0500
---- expr.c	2012-09-09 16:31:18.000000000 -0400
-***************
-*** 1010,1013 ****
---- 1073,1082 ----
-  #endif
-  
-+ /*itrace("expr_streval: %s: noeval = %d", tok, noeval);*/
-+   /* If we are suppressing evaluation, just short-circuit here instead of
-+      going through the rest of the evaluator. */
-+   if (noeval)
-+     return (0);
-+ 
-    /* [[[[[ */
-  #if defined (ARRAY_VARS)
-***************
-*** 1183,1186 ****
---- 1256,1263 ----
-  
-        *cp = '\0';
-+       /* XXX - watch out for pointer aliasing issues here */
-+       if (curlval.tokstr && curlval.tokstr == tokstr)
-+ 	init_lvalue (&curlval);
-+ 
-        FREE (tokstr);
-        tokstr = savestring (tp);
-*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
---- patchlevel.h	Thu Feb 24 21:41:34 2011
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 38
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 39
-  
-  #endif /* _PATCHLEVEL_H_ */
--- a/components/bash/patches/bash42-040.patch	Mon Feb 29 17:20:30 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	4.2
-Patch-ID:	bash42-040
-
-Bug-Reported-by:	Andrey Zaitsev <[email protected]>
-Bug-Reference-ID:	<[email protected]om>
-Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2012-04/msg00144.html
-
-Bug-Description:
-
-Output redirection applied to builtin commands missed I/O errors if
-they happened when the file descriptor was closed, rather than on write
-(e.g., like with an out-of-space error on a remote NFS file system).
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-4.2-patched/redir.c	2011-01-02 16:00:31.000000000 -0500
---- redir.c	2012-04-24 20:42:12.000000000 -0400
-***************
-*** 1092,1099 ****
-  #if defined (BUFFERED_INPUT)
-  	  check_bash_input (redirector);
-! 	  close_buffered_fd (redirector);
-  #else /* !BUFFERED_INPUT */
-! 	  close (redirector);
-  #endif /* !BUFFERED_INPUT */
-  	}
-        break;
---- 1092,1101 ----
-  #if defined (BUFFERED_INPUT)
-  	  check_bash_input (redirector);
-! 	  r = close_buffered_fd (redirector);
-  #else /* !BUFFERED_INPUT */
-! 	  r = close (redirector);
-  #endif /* !BUFFERED_INPUT */
-+ 	  if (r < 0 && (flags & RX_INTERNAL) && (errno == EIO || errno == ENOSPC))
-+ 	    REDIRECTION_ERROR (r, errno, -1);
-  	}
-        break;
-*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
---- patchlevel.h	Thu Feb 24 21:41:34 2011
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 39
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 40
-  
-  #endif /* _PATCHLEVEL_H_ */
--- a/components/bash/patches/bash42-041.patch	Mon Feb 29 17:20:30 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	4.2
-Patch-ID:	bash42-041
-
-Bug-Reported-by:	Andrey Borzenkov <[email protected]>
-Bug-Reference-ID:	<[email protected]>
-Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2012-12/msg00008.html
-
-Bug-Description:
-
-Process substitution incorrectly inherited a flag that inhibited using the
-(local) temporary environment for variable lookups if it was providing
-the filename to a redirection.  The intent the flag is to enforce the
-Posix command expansion ordering rules.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-4.2-patched/subst.c	2012-07-14 15:53:20.000000000 -0400
---- subst.c	2012-12-02 22:26:54.000000000 -0500
-***************
-*** 5125,5128 ****
---- 5129,5136 ----
-  #endif /* HAVE_DEV_FD */
-  
-+   /* subshells shouldn't have this flag, which controls using the temporary
-+      environment for variable lookups. */
-+   expanding_redir = 0;
-+ 
-    result = parse_and_execute (string, "process substitution", (SEVAL_NONINT|SEVAL_NOHIST));
-  
-*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
---- patchlevel.h	Thu Feb 24 21:41:34 2011
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 40
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 41
-  
-  #endif /* _PATCHLEVEL_H_ */
--- a/components/bash/patches/bash42-042.patch	Mon Feb 29 17:20:30 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	4.2
-Patch-ID:	bash42-042
-
-Bug-Reported-by:	Adam Pippin <[email protected]>
-Bug-Reference-ID:	<[email protected]om>
-Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2012-11/msg00087.html
-
-Bug-Description:
-
-Compilation failed after specifying the  `--enable-minimal-config' option to
-configure (more specifically, specifying `--disable-alias').
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-4.2-patched/parse.y	2012-07-08 21:53:33.000000000 -0400
---- parse.y	2012-10-14 20:20:34.000000000 -0400
-***************
-*** 2394,2397 ****
---- 2392,2396 ----
-  	   to consume the quoted newline and move to the next character in
-  	   the expansion. */
-+ #if defined (ALIAS)
-  	if (expanding_alias () && shell_input_line[shell_input_line_index+1] == '\0')
-  	  {
-***************
-*** 2404,2408 ****
-  	    goto next_alias_char;	/* and get next character */
-  	  }
-! 	else	    
-  	  goto restart_read;
-      }
---- 2403,2408 ----
-  	    goto next_alias_char;	/* and get next character */
-  	  }
-! 	else
-! #endif 
-  	  goto restart_read;
-      }
-
-*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
---- patchlevel.h	Thu Feb 24 21:41:34 2011
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 41
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 42
-  
-  #endif /* _PATCHLEVEL_H_ */
--- a/components/bash/patches/bash42-043.patch	Mon Feb 29 17:20:30 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,65 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	4.2
-Patch-ID:	bash42-043
-
-Bug-Reported-by:	konsolebox <[email protected]>
-Bug-Reference-ID:	<[email protected]om>
-Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2013-01/msg00138.html
-
-Bug-Description:
-
-When SIGCHLD is trapped, and a SIGCHLD trap handler runs when a pending
-`read -t' invocation times out and generates SIGALRM, bash can crash with
-a segmentation fault.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-4.2-patched/builtins/read.def	2012-10-31 21:22:51.000517000 -0400
---- builtins/read.def	2013-01-25 10:28:16.000038000 -0500
-***************
-*** 386,393 ****
-  	  /* Tricky.  The top of the unwind-protect stack is the free of
-  	     input_string.  We want to run all the rest and use input_string,
-! 	     so we have to remove it from the stack. */
-! 	  remove_unwind_protect ();
-! 	  run_unwind_frame ("read_builtin");
-  	  input_string[i] = '\0';	/* make sure it's terminated */
-  	  retval = 128+SIGALRM;
-  	  goto assign_vars;
---- 386,403 ----
-  	  /* Tricky.  The top of the unwind-protect stack is the free of
-  	     input_string.  We want to run all the rest and use input_string,
-! 	     so we have to save input_string temporarily, run the unwind-
-! 	     protects, then restore input_string so we can use it later. */
-! 
-  	  input_string[i] = '\0';	/* make sure it's terminated */
-+ 	  if (i == 0)
-+ 	    {
-+ 	      t = (char *)xmalloc (1);
-+ 	      t[0] = 0;
-+ 	    }
-+ 	  else
-+ 	    t = savestring (input_string);
-+ 
-+ 	  run_unwind_frame ("read_builtin");
-+ 	  input_string = t;
-  	  retval = 128+SIGALRM;
-  	  goto assign_vars;
-
-*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
---- patchlevel.h	Thu Feb 24 21:41:34 2011
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 42
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 43
-  
-  #endif /* _PATCHLEVEL_H_ */
--- a/components/bash/patches/bash42-044.patch	Mon Feb 29 17:20:30 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	4.2
-Patch-ID:	bash42-044
-
-Bug-Reported-by:	"Dashing" <[email protected]>
-Bug-Reference-ID:	<[email protected]>
-Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2013-02/msg00030.html
-
-Bug-Description:
-
-When converting a multibyte string to a wide character string as part of
-pattern matching, bash does not handle the end of the string correctly,
-causing the search for the NUL to go beyond the end of the string and
-reference random memory.  Depending on the contents of that memory, bash
-can produce errors or crash. 
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-4.2-patched/lib/glob/xmbsrtowcs.c	2012-07-08 21:53:19.000000000 -0400
---- lib/glob/xmbsrtowcs.c	2013-02-12 12:00:39.000000000 -0500
-***************
-*** 217,220 ****
---- 217,226 ----
-        n = mbsnrtowcs(wsbuf+wcnum, &p, nms, wsbuf_size-wcnum, &state);
-  
-+       if (n == 0 && p == 0)
-+ 	{
-+ 	  wsbuf[wcnum] = L'\0';
-+ 	  break;
-+ 	}
-+ 
-        /* Compensate for taking single byte on wcs conversion failure above. */
-        if (wcslength == 1 && (n == 0 || n == (size_t)-1))
-***************
-*** 222,226 ****
-  	  state = tmp_state;
-  	  p = tmp_p;
-! 	  wsbuf[wcnum++] = *p++;
-  	}
-        else
---- 228,238 ----
-  	  state = tmp_state;
-  	  p = tmp_p;
-! 	  wsbuf[wcnum] = *p;
-! 	  if (*p == 0)
-! 	    break;
-! 	  else
-! 	    {
-! 	      wcnum++; p++;
-! 	    }
-  	}
-        else
-
-*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
---- patchlevel.h	Thu Feb 24 21:41:34 2011
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 43
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 44
-  
-  #endif /* _PATCHLEVEL_H_ */
--- a/components/bash/patches/bash42-045.patch	Mon Feb 29 17:20:30 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	4.2
-Patch-ID:	bash42-045
-
-Bug-Reported-by:	Stephane Chazelas <[email protected]>
-Bug-Reference-ID:	<[email protected]>
-Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2013-02/msg00080.html
-
-Bug-Description:
-
-The <&n- and >&n- redirections, which move one file descriptor to another,
-leave the file descriptor closed when applied to builtins or compound
-commands.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-4.2-patched/redir.c	2013-01-30 11:56:09.000000000 -0500
---- redir.c	2013-02-19 09:38:36.000000000 -0500
-***************
-*** 1008,1011 ****
---- 1008,1021 ----
-  	      REDIRECTION_ERROR (r, errno, -1);
-  	    }
-+ 	  if ((flags & RX_UNDOABLE) && (ri == r_move_input || ri == r_move_output))
-+ 	    {
-+ 	      /* r_move_input and r_move_output add an additional close()
-+ 		 that needs to be undone */
-+ 	      if (fcntl (redirector, F_GETFD, 0) != -1)
-+ 		{
-+ 		  r = add_undo_redirect (redir_fd, r_close_this, -1);
-+ 		  REDIRECTION_ERROR (r, errno, -1);
-+ 		}
-+ 	    }
-  #if defined (BUFFERED_INPUT)
-  	  check_bash_input (redirector);
-
-*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
---- patchlevel.h	Thu Feb 24 21:41:34 2011
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 44
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 45
-  
-  #endif /* _PATCHLEVEL_H_ */
--- a/components/bash/patches/bash42-046.patch	Mon Feb 29 17:20:30 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	4.2
-Patch-ID:	bash42-046
-
-Bug-Reported-by:	"Theodoros V. Kalamatianos" <[email protected]>
-Bug-Reference-ID:	<[email protected]>
-Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2014-01/msg00044.html
-
-Bug-Description:
-
-Bash-4.2 patch 32 introduced a problem with "[email protected]" and arrays expanding empty
-positional parameters or array elements when using substring expansion,
-pattern substitution, or case modfication.  The empty parameters or array
-elements are removed instead of expanding to empty strings ("").
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-4.2-patched/subst.c	2012-12-31 11:52:56.000000000 -0500
---- subst.c	2014-03-31 14:19:56.000000000 -0400
-***************
-*** 7243,7247 ****
-        ret = alloc_word_desc ();
-        ret->word = temp1;
-!       if (temp1 && QUOTED_NULL (temp1) && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)))
-  	ret->flags |= W_QUOTED|W_HASQUOTEDNULL;
-        return ret;
---- 7243,7253 ----
-        ret = alloc_word_desc ();
-        ret->word = temp1;
-!       /* We test quoted_dollar_atp because we want variants with double-quoted
-! 	 "[email protected]" to take a different code path. In fact, we make sure at the end
-! 	 of expand_word_internal that we're only looking at these flags if
-! 	 quoted_dollar_at == 0. */
-!       if (temp1 && 
-!           (quoted_dollar_atp == 0 || *quoted_dollar_atp == 0) &&
-! 	  QUOTED_NULL (temp1) && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)))
-  	ret->flags |= W_QUOTED|W_HASQUOTEDNULL;
-        return ret;
-*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
---- patchlevel.h	Thu Feb 24 21:41:34 2011
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 45
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 46
-  
-  #endif /* _PATCHLEVEL_H_ */
--- a/components/bash/patches/bash42-047.patch	Mon Feb 29 17:20:30 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	4.2
-Patch-ID:	bash42-047
-
-Bug-Reported-by:	Matthew Riley <[email protected]>
-Bug-Reference-ID:	<[email protected]om>
-Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2013-03/msg00047.html
-
-Bug-Description:
-
-The function that shortens pathnames for $PS1 according to the value of
-$PROMPT_DIRTRIM uses memcpy on potentially-overlapping regions of memory,
-when it should use memmove.  The result is garbled pathnames in prompt
-strings.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-4.2-patched/general.c	2010-12-12 15:06:27.000000000 -0500
---- general.c	2014-01-30 16:46:15.000000000 -0500
-***************
-*** 767,771 ****
-  
-    nlen = nend - ntail;
-!   memcpy (nbeg, ntail, nlen);
-    nbeg[nlen] = '\0';
-  
---- 767,771 ----
-  
-    nlen = nend - ntail;
-!   memmove (nbeg, ntail, nlen);
-    nbeg[nlen] = '\0';
-  
-*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
---- patchlevel.h	Thu Feb 24 21:41:34 2011
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 46
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 47
-  
-  #endif /* _PATCHLEVEL_H_ */
--- a/components/bash/patches/bash42-048.patch	Mon Feb 29 17:20:30 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,104 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	4.2
-Patch-ID:	bash42-048
-
-Bug-Reported-by:	Stephane Chazelas <[email protected]>
-Bug-Reference-ID:
-Bug-Reference-URL:
-
-Bug-Description:
-
-Under certain circumstances, bash will execute user code while processing the
-environment for exported function definitions.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-4.2.47/builtins/common.h	2010-05-30 18:31:51.000000000 -0400
---- builtins/common.h	2014-09-16 19:35:45.000000000 -0400
-***************
-*** 36,39 ****
---- 36,41 ----
-  
-  /* Flags for describe_command, shared between type.def and command.def */
-+ #define SEVAL_FUNCDEF	0x080		/* only allow function definitions */
-+ #define SEVAL_ONECMD	0x100		/* only allow a single command */
-  #define CDESC_ALL		0x001	/* type -a */
-  #define CDESC_SHORTDESC		0x002	/* command -V */
-*** ../bash-4.2.47/builtins/evalstring.c	2010-11-23 08:22:15.000000000 -0500
---- builtins/evalstring.c	2014-09-16 19:35:45.000000000 -0400
-***************
-*** 262,265 ****
---- 262,273 ----
-  	      struct fd_bitmap *bitmap;
-  
-+ 	      if ((flags & SEVAL_FUNCDEF) && command->type != cm_function_def)
-+ 		{
-+ 		  internal_warning ("%s: ignoring function definition attempt", from_file);
-+ 		  should_jump_to_top_level = 0;
-+ 		  last_result = last_command_exit_value = EX_BADUSAGE;
-+ 		  break;
-+ 		}
-+ 
-  	      bitmap = new_fd_bitmap (FD_BITMAP_SIZE);
-  	      begin_unwind_frame ("pe_dispose");
-***************
-*** 322,325 ****
---- 330,336 ----
-  	      dispose_fd_bitmap (bitmap);
-  	      discard_unwind_frame ("pe_dispose");
-+ 
-+ 	      if (flags & SEVAL_ONECMD)
-+ 		break;
-  	    }
-  	}
-*** ../bash-4.2.47/variables.c	2011-03-01 16:15:20.000000000 -0500
---- variables.c	2014-09-16 19:35:45.000000000 -0400
-***************
-*** 348,357 ****
-  	  strcpy (temp_string + char_index + 1, string);
-  
-! 	  parse_and_execute (temp_string, name, SEVAL_NONINT|SEVAL_NOHIST);
-! 
-! 	  /* Ancient backwards compatibility.  Old versions of bash exported
-! 	     functions like name()=() {...} */
-! 	  if (name[char_index - 1] == ')' && name[char_index - 2] == '(')
-! 	    name[char_index - 2] = '\0';
-  
-  	  if (temp_var = find_function (name))
---- 348,355 ----
-  	  strcpy (temp_string + char_index + 1, string);
-  
-! 	  /* Don't import function names that are invalid identifiers from the
-! 	     environment. */
-! 	  if (legal_identifier (name))
-! 	    parse_and_execute (temp_string, name, SEVAL_NONINT|SEVAL_NOHIST|SEVAL_FUNCDEF|SEVAL_ONECMD);
-  
-  	  if (temp_var = find_function (name))
-***************
-*** 362,369 ****
-  	  else
-  	    report_error (_("error importing function definition for `%s'"), name);
-- 
-- 	  /* ( */
-- 	  if (name[char_index - 1] == ')' && name[char_index - 2] == '\0')
-- 	    name[char_index - 2] = '(';		/* ) */
-  	}
-  #if defined (ARRAY_VARS)
---- 360,363 ----
-*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
---- patchlevel.h	Thu Feb 24 21:41:34 2011
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 47
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 48
-  
-  #endif /* _PATCHLEVEL_H_ */
--- a/components/bash/patches/bash42-049.patch	Mon Feb 29 17:20:30 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	4.2
-Patch-ID:	bash42-049
-
-Bug-Reported-by:	Tavis Ormandy <[email protected]>
-Bug-Reference-ID:
-Bug-Reference-URL:	http://twitter.com/taviso/statuses/514887394294652929
-
-Bug-Description:
-
-Under certain circumstances, bash can incorrectly save a lookahead character and
-return it on a subsequent call, even when reading a new line.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-4.2.48/parse.y	2012-12-31 11:52:57.000000000 -0500
---- parse.y	2014-09-25 16:12:19.000000000 -0400
-***************
-*** 2851,2854 ****
---- 2851,2856 ----
-    word_desc_to_read = (WORD_DESC *)NULL;
-  
-+   eol_ungetc_lookahead = 0;
-+ 
-    current_token = '\n';		/* XXX */
-    last_read_token = '\n';
-*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
---- patchlevel.h	Thu Feb 24 21:41:34 2011
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 48
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 49
-  
-  #endif /* _PATCHLEVEL_H_ */
--- a/components/bash/patches/bash42-050.patch	Mon Feb 29 17:20:30 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,217 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	4.2
-Patch-ID:	bash42-050
-
-Bug-Reported-by:	Florian Weimer <[email protected]>
-Bug-Reference-ID:
-Bug-Reference-URL:
-
-Bug-Description:
-
-This patch changes the encoding bash uses for exported functions to avoid
-clashes with shell variables and to avoid depending only on an environment
-variable's contents to determine whether or not to interpret it as a shell
-function.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-4.2.49/variables.c	2014-09-16 19:35:45.000000000 -0400
---- variables.c	2014-09-27 20:54:00.000000000 -0400
-***************
-*** 80,83 ****
---- 80,88 ----
-  #define ifsname(s)	((s)[0] == 'I' && (s)[1] == 'F' && (s)[2] == 'S' && (s)[3] == '\0')
-  
-+ #define BASHFUNC_PREFIX		"BASH_FUNC_"
-+ #define BASHFUNC_PREFLEN	10	/* == strlen(BASHFUNC_PREFIX */
-+ #define BASHFUNC_SUFFIX		"%%"
-+ #define BASHFUNC_SUFFLEN	2	/* == strlen(BASHFUNC_SUFFIX) */
-+ 
-  extern char **environ;
-  
-***************
-*** 269,273 ****
-  static void dispose_temporary_env __P((sh_free_func_t *));     
-  
-! static inline char *mk_env_string __P((const char *, const char *));
-  static char **make_env_array_from_var_list __P((SHELL_VAR **));
-  static char **make_var_export_array __P((VAR_CONTEXT *));
---- 274,278 ----
-  static void dispose_temporary_env __P((sh_free_func_t *));     
-  
-! static inline char *mk_env_string __P((const char *, const char *, int));
-  static char **make_env_array_from_var_list __P((SHELL_VAR **));
-  static char **make_var_export_array __P((VAR_CONTEXT *));
-***************
-*** 339,357 ****
-        /* If exported function, define it now.  Don't import functions from
-  	 the environment in privileged mode. */
-!       if (privmode == 0 && read_but_dont_execute == 0 && STREQN ("() {", string, 4))
-  	{
-  	  string_length = strlen (string);
-! 	  temp_string = (char *)xmalloc (3 + string_length + char_index);
-  
-! 	  strcpy (temp_string, name);
-! 	  temp_string[char_index] = ' ';
-! 	  strcpy (temp_string + char_index + 1, string);
-  
-  	  /* Don't import function names that are invalid identifiers from the
-  	     environment. */
-! 	  if (legal_identifier (name))
-! 	    parse_and_execute (temp_string, name, SEVAL_NONINT|SEVAL_NOHIST|SEVAL_FUNCDEF|SEVAL_ONECMD);
-  
-! 	  if (temp_var = find_function (name))
-  	    {
-  	      VSETATTR (temp_var, (att_exported|att_imported));
---- 344,373 ----
-        /* If exported function, define it now.  Don't import functions from
-  	 the environment in privileged mode. */
-!       if (privmode == 0 && read_but_dont_execute == 0 &&
-! 	  STREQN (BASHFUNC_PREFIX, name, BASHFUNC_PREFLEN) &&
-! 	  STREQ (BASHFUNC_SUFFIX, name + char_index - BASHFUNC_SUFFLEN) &&
-! 	  STREQN ("() {", string, 4))
-  	{
-+ 	  size_t namelen;
-+ 	  char *tname;		/* desired imported function name */
-+ 
-+ 	  namelen = char_index - BASHFUNC_PREFLEN - BASHFUNC_SUFFLEN;
-+ 
-+ 	  tname = name + BASHFUNC_PREFLEN;	/* start of func name */
-+ 	  tname[namelen] = '\0';		/* now tname == func name */
-+ 
-  	  string_length = strlen (string);
-! 	  temp_string = (char *)xmalloc (namelen + string_length + 2);
-  
-! 	  memcpy (temp_string, tname, namelen);
-! 	  temp_string[namelen] = ' ';
-! 	  memcpy (temp_string + namelen + 1, string, string_length + 1);
-  
-  	  /* Don't import function names that are invalid identifiers from the
-  	     environment. */
-! 	  if (absolute_program (tname) == 0 && (posixly_correct == 0 || legal_identifier (tname)))
-! 	    parse_and_execute (temp_string, tname, SEVAL_NONINT|SEVAL_NOHIST|SEVAL_FUNCDEF|SEVAL_ONECMD);
-  
-! 	  if (temp_var = find_function (tname))
-  	    {
-  	      VSETATTR (temp_var, (att_exported|att_imported));
-***************
-*** 359,363 ****
-  	    }
-  	  else
-! 	    report_error (_("error importing function definition for `%s'"), name);
-  	}
-  #if defined (ARRAY_VARS)
---- 375,382 ----
-  	    }
-  	  else
-! 	    report_error (_("error importing function definition for `%s'"), tname);
-! 
-! 	  /* Restore original suffix */
-! 	  tname[namelen] = BASHFUNC_SUFFIX[0];
-  	}
-  #if defined (ARRAY_VARS)
-***************
-*** 2538,2542 ****
-  
-    INVALIDATE_EXPORTSTR (var);
-!   var->exportstr = mk_env_string (name, value);
-  
-    array_needs_making = 1;
---- 2557,2561 ----
-  
-    INVALIDATE_EXPORTSTR (var);
-!   var->exportstr = mk_env_string (name, value, 0);
-  
-    array_needs_making = 1;
-***************
-*** 3390,3408 ****
-  
-  static inline char *
-! mk_env_string (name, value)
-       const char *name, *value;
-  {
-!   int name_len, value_len;
-!   char	*p;
-  
-    name_len = strlen (name);
-    value_len = STRLEN (value);
-!   p = (char *)xmalloc (2 + name_len + value_len);
-!   strcpy (p, name);
-!   p[name_len] = '=';
-    if (value && *value)
-!     strcpy (p + name_len + 1, value);
-    else
-!     p[name_len + 1] = '\0';
-    return (p);
-  }
---- 3409,3448 ----
-  
-  static inline char *
-! mk_env_string (name, value, isfunc)
-       const char *name, *value;
-+      int isfunc;
-  {
-!   size_t name_len, value_len;
-!   char	*p, *q;
-  
-    name_len = strlen (name);
-    value_len = STRLEN (value);
-! 
-!   /* If we are exporting a shell function, construct the encoded function
-!      name. */
-!   if (isfunc && value)
-!     {
-!       p = (char *)xmalloc (BASHFUNC_PREFLEN + name_len + BASHFUNC_SUFFLEN + value_len + 2);
-!       q = p;
-!       memcpy (q, BASHFUNC_PREFIX, BASHFUNC_PREFLEN);
-!       q += BASHFUNC_PREFLEN;
-!       memcpy (q, name, name_len);
-!       q += name_len;
-!       memcpy (q, BASHFUNC_SUFFIX, BASHFUNC_SUFFLEN);
-!       q += BASHFUNC_SUFFLEN;
-!     }
-!   else
-!     {
-!       p = (char *)xmalloc (2 + name_len + value_len);
-!       memcpy (p, name, name_len);
-!       q = p + name_len;
-!     }
-! 
-!   q[0] = '=';
-    if (value && *value)
-!     memcpy (q + 1, value, value_len + 1);
-    else
-!     q[1] = '\0';
-! 
-    return (p);
-  }
-***************
-*** 3490,3494 ****
-  	     using the cached exportstr... */
-  	  list[list_index] = USE_EXPORTSTR ? savestring (value)
-! 					   : mk_env_string (var->name, value);
-  
-  	  if (USE_EXPORTSTR == 0)
---- 3530,3534 ----
-  	     using the cached exportstr... */
-  	  list[list_index] = USE_EXPORTSTR ? savestring (value)
-! 					   : mk_env_string (var->name, value, function_p (var));
-  
-  	  if (USE_EXPORTSTR == 0)
-*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
---- patchlevel.h	Thu Feb 24 21:41:34 2011
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 49
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 50
-  
-  #endif /* _PATCHLEVEL_H_ */
--- a/components/bash/patches/bash42-051.patch	Mon Feb 29 17:20:30 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,173 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	4.2
-Patch-ID:	bash42-051
-
-Bug-Reported-by:	Florian Weimer <[email protected]>
-Bug-Reference-ID:
-Bug-Reference-URL:
-
-Bug-Description:
-
-There are two local buffer overflows in parse.y that can cause the shell
-to dump core when given many here-documents attached to a single command
-or many nested loops.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-4.2.50/parse.y	2014-09-27 12:18:53.000000000 -0400
---- parse.y	2014-09-30 19:24:19.000000000 -0400
-***************
-*** 168,171 ****
---- 168,174 ----
-  static int reserved_word_acceptable __P((int));
-  static int yylex __P((void));
-+ 
-+ static void push_heredoc __P((REDIRECT *));
-+ static char *mk_alexpansion __P((char *));
-  static int alias_expand_token __P((char *));
-  static int time_command_acceptable __P((void));
-***************
-*** 265,269 ****
-  /* Variables to manage the task of reading here documents, because we need to
-     defer the reading until after a complete command has been collected. */
-! static REDIRECT *redir_stack[10];
-  int need_here_doc;
-  
---- 268,274 ----
-  /* Variables to manage the task of reading here documents, because we need to
-     defer the reading until after a complete command has been collected. */
-! #define HEREDOC_MAX 16
-! 
-! static REDIRECT *redir_stack[HEREDOC_MAX];
-  int need_here_doc;
-  
-***************
-*** 307,311 ****
-     index is decremented after a case, select, or for command is parsed. */
-  #define MAX_CASE_NEST	128
-! static int word_lineno[MAX_CASE_NEST];
-  static int word_top = -1;
-  
---- 312,316 ----
-     index is decremented after a case, select, or for command is parsed. */
-  #define MAX_CASE_NEST	128
-! static int word_lineno[MAX_CASE_NEST+1];
-  static int word_top = -1;
-  
-***************
-*** 520,524 ****
-  			  redir.filename = $2;
-  			  $$ = make_redirection (source, r_reading_until, redir, 0);
-! 			  redir_stack[need_here_doc++] = $$;
-  			}
-  	|	NUMBER LESS_LESS WORD
---- 525,529 ----
-  			  redir.filename = $2;
-  			  $$ = make_redirection (source, r_reading_until, redir, 0);
-! 			  push_heredoc ($$);
-  			}
-  	|	NUMBER LESS_LESS WORD
-***************
-*** 527,531 ****
-  			  redir.filename = $3;
-  			  $$ = make_redirection (source, r_reading_until, redir, 0);
-! 			  redir_stack[need_here_doc++] = $$;
-  			}
-  	|	REDIR_WORD LESS_LESS WORD
---- 532,536 ----
-  			  redir.filename = $3;
-  			  $$ = make_redirection (source, r_reading_until, redir, 0);
-! 			  push_heredoc ($$);
-  			}
-  	|	REDIR_WORD LESS_LESS WORD
-***************
-*** 534,538 ****
-  			  redir.filename = $3;
-  			  $$ = make_redirection (source, r_reading_until, redir, REDIR_VARASSIGN);
-! 			  redir_stack[need_here_doc++] = $$;
-  			}
-  	|	LESS_LESS_MINUS WORD
---- 539,543 ----
-  			  redir.filename = $3;
-  			  $$ = make_redirection (source, r_reading_until, redir, REDIR_VARASSIGN);
-! 			  push_heredoc ($$);
-  			}
-  	|	LESS_LESS_MINUS WORD
-***************
-*** 541,545 ****
-  			  redir.filename = $2;
-  			  $$ = make_redirection (source, r_deblank_reading_until, redir, 0);
-! 			  redir_stack[need_here_doc++] = $$;
-  			}
-  	|	NUMBER LESS_LESS_MINUS WORD
---- 546,550 ----
-  			  redir.filename = $2;
-  			  $$ = make_redirection (source, r_deblank_reading_until, redir, 0);
-! 			  push_heredoc ($$);
-  			}
-  	|	NUMBER LESS_LESS_MINUS WORD
-***************
-*** 548,552 ****
-  			  redir.filename = $3;
-  			  $$ = make_redirection (source, r_deblank_reading_until, redir, 0);
-! 			  redir_stack[need_here_doc++] = $$;
-  			}
-  	|	REDIR_WORD  LESS_LESS_MINUS WORD
---- 553,557 ----
-  			  redir.filename = $3;
-  			  $$ = make_redirection (source, r_deblank_reading_until, redir, 0);
-! 			  push_heredoc ($$);
-  			}
-  	|	REDIR_WORD  LESS_LESS_MINUS WORD
-***************
-*** 555,559 ****
-  			  redir.filename = $3;
-  			  $$ = make_redirection (source, r_deblank_reading_until, redir, REDIR_VARASSIGN);
-! 			  redir_stack[need_here_doc++] = $$;
-  			}
-  	|	LESS_LESS_LESS WORD
---- 560,564 ----
-  			  redir.filename = $3;
-  			  $$ = make_redirection (source, r_deblank_reading_until, redir, REDIR_VARASSIGN);
-! 			  push_heredoc ($$);
-  			}
-  	|	LESS_LESS_LESS WORD
-***************
-*** 2534,2537 ****
---- 2539,2557 ----
-  static int esacs_needed_count;
-  
-+ static void
-+ push_heredoc (r)
-+      REDIRECT *r;
-+ {
-+   if (need_here_doc >= HEREDOC_MAX)
-+     {
-+       last_command_exit_value = EX_BADUSAGE;
-+       need_here_doc = 0;
-+       report_syntax_error (_("maximum here-document count exceeded"));
-+       reset_parser ();
-+       exit_shell (last_command_exit_value);
-+     }
-+   redir_stack[need_here_doc++] = r;
-+ }
-+ 
-  void
-  gather_here_documents ()
-*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
---- patchlevel.h	Thu Feb 24 21:41:34 2011
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 50
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 51
-  
-  #endif /* _PATCHLEVEL_H_ */
--- a/components/bash/patches/bash42-052.patch	Mon Feb 29 17:20:30 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	4.2
-Patch-ID:	bash42-052
-
-Bug-Reported-by:	Michal Zalewski <[email protected]>
-Bug-Reference-ID:
-Bug-Reference-URL:
-
-Bug-Description:
-
-When bash is parsing a function definition that contains a here-document
-delimited by end-of-file (or end-of-string), it leaves the closing delimiter
-uninitialized.  This can result in an invalid memory access when the parsed
-function is later copied.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-4.2.51/make_cmd.c	2009-09-11 17:26:12.000000000 -0400
---- make_cmd.c	2014-10-02 11:26:58.000000000 -0400
-***************
-*** 690,693 ****
---- 690,694 ----
-    temp->redirector = source;
-    temp->redirectee = dest_and_filename;
-+   temp->here_doc_eof = 0;
-    temp->instruction = instruction;
-    temp->flags = 0;
-*** ../bash-4.2.51/copy_cmd.c	2009-09-11 16:28:02.000000000 -0400
---- copy_cmd.c	2014-10-02 11:26:58.000000000 -0400
-***************
-*** 127,131 ****
-      case r_reading_until:
-      case r_deblank_reading_until:
-!       new_redirect->here_doc_eof = savestring (redirect->here_doc_eof);
-        /*FALLTHROUGH*/
-      case r_reading_string:
---- 127,131 ----
-      case r_reading_until:
-      case r_deblank_reading_until:
-!       new_redirect->here_doc_eof = redirect->here_doc_eof ? savestring (redirect->here_doc_eof) : 0;
-        /*FALLTHROUGH*/
-      case r_reading_string:
-*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
---- patchlevel.h	Thu Feb 24 21:41:34 2011
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 51
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 52
-  
-  #endif /* _PATCHLEVEL_H_ */
--- a/components/bash/patches/bash42-053.patch	Mon Feb 29 17:20:30 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,132 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	4.2
-Patch-ID:	bash42-053
-
-Bug-Reported-by:	Michal Zalewski <[email protected]>
-Bug-Reference-ID:
-Bug-Reference-URL:
-
-Bug-Description:
-
-A combination of nested command substitutions and function importing from
-the environment can cause bash to execute code appearing in the environment
-variable value following the function definition.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-4.2.52/builtins/evalstring.c	2014-09-16 19:35:45.000000000 -0400
---- builtins/evalstring.c	2014-10-04 15:00:26.000000000 -0400
-***************
-*** 262,271 ****
-  	      struct fd_bitmap *bitmap;
-  
-! 	      if ((flags & SEVAL_FUNCDEF) && command->type != cm_function_def)
-  		{
-! 		  internal_warning ("%s: ignoring function definition attempt", from_file);
-! 		  should_jump_to_top_level = 0;
-! 		  last_result = last_command_exit_value = EX_BADUSAGE;
-! 		  break;
-  		}
-  
---- 262,284 ----
-  	      struct fd_bitmap *bitmap;
-  
-! 	      if (flags & SEVAL_FUNCDEF)
-  		{
-! 		  char *x;
-! 
-! 		  /* If the command parses to something other than a straight
-! 		     function definition, or if we have not consumed the entire
-! 		     string, or if the parser has transformed the function
-! 		     name (as parsing will if it begins or ends with shell
-! 		     whitespace, for example), reject the attempt */
-! 		  if (command->type != cm_function_def ||
-! 		      ((x = parser_remaining_input ()) && *x) ||
-! 		      (STREQ (from_file, command->value.Function_def->name->word) == 0))
-! 		    {
-! 		      internal_warning (_("%s: ignoring function definition attempt"), from_file);
-! 		      should_jump_to_top_level = 0;
-! 		      last_result = last_command_exit_value = EX_BADUSAGE;
-! 		      reset_parser ();
-! 		      break;
-! 		    }
-  		}
-  
-***************
-*** 332,336 ****
-  
-  	      if (flags & SEVAL_ONECMD)
-! 		break;
-  	    }
-  	}
---- 345,352 ----
-  
-  	      if (flags & SEVAL_ONECMD)
-! 		{
-! 		  reset_parser ();
-! 		  break;
-! 		}
-  	    }
-  	}
-*** ../bash-4.2.52/parse.y	2014-09-30 19:24:19.000000000 -0400
---- parse.y	2014-10-04 15:00:26.000000000 -0400
-***************
-*** 2436,2439 ****
---- 2436,2449 ----
-  }
-  
-+ char *
-+ parser_remaining_input ()
-+ {
-+   if (shell_input_line == 0)
-+     return 0;
-+   if (shell_input_line_index < 0 || shell_input_line_index >= shell_input_line_len)
-+     return '\0';	/* XXX */
-+   return (shell_input_line + shell_input_line_index);
-+ }
-+ 
-  #ifdef INCLUDE_UNUSED
-  /* Back the input pointer up by one, effectively `ungetting' a character. */
-***************
-*** 3891,3896 ****
-    /* reset_parser clears shell_input_line and associated variables */
-    restore_input_line_state (&ls);
-!   if (interactive)
-!     token_to_read = 0;
-  
-    /* Need to find how many characters parse_and_execute consumed, update
---- 3901,3906 ----
-    /* reset_parser clears shell_input_line and associated variables */
-    restore_input_line_state (&ls);
-! 
-!   token_to_read = 0;
-  
-    /* Need to find how many characters parse_and_execute consumed, update
-*** ../bash-4.2.52/shell.h	2011-11-21 18:03:32.000000000 -0500
---- shell.h	2014-10-04 15:00:26.000000000 -0400
-***************
-*** 178,181 ****
---- 178,183 ----
-  
-  /* Let's try declaring these here. */
-+ extern char *parser_remaining_input __P((void));
-+ 
-  extern sh_parser_state_t *save_parser_state __P((sh_parser_state_t *));
-  extern void restore_parser_state __P((sh_parser_state_t *));
-*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
---- patchlevel.h	Thu Feb 24 21:41:34 2011
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 52
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 53
-  
-  #endif /* _PATCHLEVEL_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/bash/patches/bash43-001.patch	Mon Feb 29 10:09:14 2016 -0800
@@ -0,0 +1,58 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.3
+Patch-ID:	bash43-001
+
+Bug-Reported-by:	NBaH <[email protected]>
+Bug-Reference-ID:	<[email protected]>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2014-02/msg00092.html
+
+Bug-Description:
+
+A missing check for a valid option prevented `test -R' from working.  There
+is another problem that causes bash to look up the wrong variable name when
+processing the argument to `test -R'.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.3/test.c	2014-02-04 16:52:58.000000000 -0500
+--- test.c	2014-02-28 21:22:44.000000000 -0500
+***************
+*** 647,652 ****
+  
+      case 'R':
+!       v = find_variable (arg);
+!       return (v && invisible_p (v) == 0 && var_isset (v) && nameref_p (v) ? TRUE : FALSE);
+      }
+  
+--- 647,652 ----
+  
+      case 'R':
+!       v = find_variable_noref (arg);
+!       return ((v && invisible_p (v) == 0 && var_isset (v) && nameref_p (v)) ? TRUE : FALSE);
+      }
+  
+***************
+*** 724,727 ****
+--- 724,728 ----
+      case 'u': case 'v': case 'w': case 'x': case 'z':
+      case 'G': case 'L': case 'O': case 'S': case 'N':
++     case 'R':
+        return (1);
+      }
+*** ../bash-4.3/patchlevel.h	2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h	2014-03-20 20:01:28.000000000 -0400
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 0
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 1
+  
+  #endif /* _PATCHLEVEL_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/bash/patches/bash43-002.patch	Mon Feb 29 10:09:14 2016 -0800
@@ -0,0 +1,62 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.3
+Patch-ID:	bash43-002
+
+Bug-Reported-by:	Moe Tunes <[email protected]>
+Bug-Reference-ID:	<[email protected]>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2014-02/msg00086.html
+
+Bug-Description:
+
+A change to save state while running the DEBUG trap caused pipelines to hang
+on systems which need process group synchronization while building pipelines.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.3/trap.c	2014-02-05 10:03:21.000000000 -0500
+--- trap.c	2014-02-28 09:51:43.000000000 -0500
+***************
+*** 921,925 ****
+  
+  #if defined (JOB_CONTROL)
+!       save_pipeline (1);	/* XXX only provides one save level */
+  #endif
+  
+--- 921,926 ----
+  
+  #if defined (JOB_CONTROL)
+!       if (sig != DEBUG_TRAP)	/* run_debug_trap does this */
+! 	save_pipeline (1);	/* XXX only provides one save level */
+  #endif
+  
+***************
+*** 941,945 ****
+  
+  #if defined (JOB_CONTROL)
+!       restore_pipeline (1);
+  #endif
+  
+--- 942,947 ----
+  
+  #if defined (JOB_CONTROL)
+!       if (sig != DEBUG_TRAP)	/* run_debug_trap does this */
+! 	restore_pipeline (1);
+  #endif
+  
+*** ../bash-4.3/patchlevel.h	2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h	2014-03-20 20:01:28.000000000 -0400
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 1
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 2
+  
+  #endif /* _PATCHLEVEL_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/bash/patches/bash43-003.patch	Mon Feb 29 10:09:14 2016 -0800
@@ -0,0 +1,48 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.3
+Patch-ID:	bash43-003
+
+Bug-Reported-by:	Anatol Pomozov <[email protected]>
+Bug-Reference-ID:	<[email protected]om>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-readline/2014-03/msg00010.html
+
+Bug-Description:
+
+When in callback mode, some readline commands can cause readline to seg
+fault by passing invalid contexts to callback functions.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.3/lib/readline/readline.c	2013-10-28 14:58:06.000000000 -0400
+--- lib/readline/readline.c	2014-03-10 14:15:02.000000000 -0400
+***************
+*** 745,749 ****
+  
+    RL_CHECK_SIGNALS ();
+!   if (r == 0)			/* success! */
+      {
+        _rl_keyseq_chain_dispose ();
+--- 745,750 ----
+  
+    RL_CHECK_SIGNALS ();
+!   /* We only treat values < 0 specially to simulate recursion. */
+!   if (r >= 0 || (r == -1 && (cxt->flags & KSEQ_SUBSEQ) == 0))	/* success! or failure! */
+      {
+        _rl_keyseq_chain_dispose ();
+*** ../bash-4.3/patchlevel.h	2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h	2014-03-20 20:01:28.000000000 -0400
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 2
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 3
+  
+  #endif /* _PATCHLEVEL_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/bash/patches/bash43-004.patch	Mon Feb 29 10:09:14 2016 -0800
@@ -0,0 +1,47 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.3
+Patch-ID:	bash43-004
+
+Bug-Reported-by:	Daan van Rossum <[email protected]>
+Bug-Reference-ID:	<[email protected]>
+Bug-Reference-URL:	
+
+Bug-Description:
+
+The `.' command in vi mode cannot undo multi-key commands beginning with
+`c', `d', and `y' (command plus motion specifier).
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.3/lib/readline/readline.c	2013-10-28 14:58:06.000000000 -0400
+--- lib/readline/readline.c	2014-03-07 15:20:33.000000000 -0500
+***************
+*** 965,969 ****
+    if (rl_editing_mode == vi_mode && _rl_keymap == vi_movement_keymap &&
+        key != ANYOTHERKEY &&
+!       rl_key_sequence_length == 1 &&	/* XXX */
+        _rl_vi_textmod_command (key))
+      _rl_vi_set_last (key, rl_numeric_arg, rl_arg_sign);
+--- 965,969 ----
+    if (rl_editing_mode == vi_mode && _rl_keymap == vi_movement_keymap &&
+        key != ANYOTHERKEY &&
+!       _rl_dispatching_keymap == vi_movement_keymap &&
+        _rl_vi_textmod_command (key))
+      _rl_vi_set_last (key, rl_numeric_arg, rl_arg_sign);
+*** ../bash-4.3/patchlevel.h	2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h	2014-03-20 20:01:28.000000000 -0400
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 3
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 4
+  
+  #endif /* _PATCHLEVEL_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/bash/patches/bash43-005.patch	Mon Feb 29 10:09:14 2016 -0800
@@ -0,0 +1,63 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.3
+Patch-ID:	bash43-005
+
+Bug-Reported-by:	David Sines <[email protected]>
+Bug-Reference-ID:	<[email protected]om>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00037.html
+
+Bug-Description:
+
+When in Posix mode, bash did not correctly interpret the ANSI-C-style
+$'...' quoting mechanism when performing pattern substitution word
+expansions within double quotes.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.3/parse.y	2014-02-11 09:42:10.000000000 -0500
+--- parse.y	2014-03-07 20:57:15.000000000 -0500
+***************
+*** 3399,3403 ****
+           unescaped double-quotes or single-quotes, if any, shall occur." */
+        /* This was changed in Austin Group Interp 221 */
+!       if MBTEST(posixly_correct && shell_compatibility_level > 41 && dolbrace_state != DOLBRACE_QUOTE && (flags & P_DQUOTE) && (flags & P_DOLBRACE) && ch == '\'')
+  	continue;
+  
+--- 3399,3403 ----
+           unescaped double-quotes or single-quotes, if any, shall occur." */
+        /* This was changed in Austin Group Interp 221 */
+!       if MBTEST(posixly_correct && shell_compatibility_level > 41 && dolbrace_state != DOLBRACE_QUOTE && dolbrace_state != DOLBRACE_QUOTE2 && (flags & P_DQUOTE) && (flags & P_DOLBRACE) && ch == '\'')
+  	continue;
+  
+*** ../bash-4.3/y.tab.c	2014-02-11 10:57:47.000000000 -0500
+--- y.tab.c	2014-03-28 10:41:15.000000000 -0400
+***************
+*** 5711,5715 ****
+           unescaped double-quotes or single-quotes, if any, shall occur." */
+        /* This was changed in Austin Group Interp 221 */
+!       if MBTEST(posixly_correct && shell_compatibility_level > 41 && dolbrace_state != DOLBRACE_QUOTE && (flags & P_DQUOTE) && (flags & P_DOLBRACE) && ch == '\'')
+  	continue;
+  
+--- 5711,5715 ----
+           unescaped double-quotes or single-quotes, if any, shall occur." */
+        /* This was changed in Austin Group Interp 221 */
+!       if MBTEST(posixly_correct && shell_compatibility_level > 41 && dolbrace_state != DOLBRACE_QUOTE && dolbrace_state != DOLBRACE_QUOTE2 && (flags & P_DQUOTE) && (flags & P_DOLBRACE) && ch == '\'')
+  	continue;
+  
+*** ../bash-4.3/patchlevel.h	2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h	2014-03-20 20:01:28.000000000 -0400
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 4
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 5
+  
+  #endif /* _PATCHLEVEL_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/bash/patches/bash43-006.patch	Mon Feb 29 10:09:14 2016 -0800
@@ -0,0 +1,48 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.3
+Patch-ID:	bash43-006
+
+Bug-Reported-by:	Eduardo A . Bustamante Lopez <[email protected]>
+Bug-Reference-ID:	<[email protected]>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2014-02/msg00091.html
+
+Bug-Description:
+
+A shell that started with job control active but was not interactive left
+the terminal in the wrong process group when exiting, causing its parent
+shell to get a stop signal when it attempted to read from the terminal.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.3/jobs.c	2014-01-10 09:05:34.000000000 -0500
+--- jobs.c	2014-03-02 18:05:09.000000000 -0500
+***************
+*** 4375,4379 ****
+  end_job_control ()
+  {
+!   if (interactive_shell)		/* XXX - should it be interactive? */
+      {
+        terminate_stopped_jobs ();
+--- 4375,4379 ----
+  end_job_control ()
+  {
+!   if (interactive_shell || job_control)		/* XXX - should it be just job_control? */
+      {
+        terminate_stopped_jobs ();
+*** ../bash-4.3/patchlevel.h	2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h	2014-03-20 20:01:28.000000000 -0400
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 5
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 6
+  
+  #endif /* _PATCHLEVEL_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/bash/patches/bash43-007.patch	Mon Feb 29 10:09:14 2016 -0800
@@ -0,0 +1,50 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.3
+Patch-ID:	bash43-007
+
+Bug-Reported-by:	[email protected]
+Bug-Reference-ID:	<[email protected]>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00095.html
+
+Bug-Description:
+
+Using compound assignments for associative arrays like
+
+assoc=( [x]= [y]=bar )
+
+left the value corresponding to the key `x' NULL.  This caused subsequent
+lookups to interpret it as unset.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.3/arrayfunc.c	2013-08-02 16:19:59.000000000 -0400
+--- arrayfunc.c	2014-03-18 11:08:15.000000000 -0400
+***************
+*** 598,601 ****
+--- 598,606 ----
+  	{
+  	  val = expand_assignment_string_to_string (val, 0);
++ 	  if (val == 0)
++ 	    {
++ 	      val = (char *)xmalloc (1);
++ 	      val[0] = '\0';	/* like do_assignment_internal */
++ 	    }
+  	  free_val = 1;
+  	}
+*** ../bash-4.3/patchlevel.h	2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h	2014-03-20 20:01:28.000000000 -0400
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 6
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 7
+  
+  #endif /* _PATCHLEVEL_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/bash/patches/bash43-008.patch	Mon Feb 29 10:09:14 2016 -0800
@@ -0,0 +1,188 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.3
+Patch-ID:	bash43-008
+
+Bug-Reported-by:	Stephane Chazelas <[email protected]>
+Bug-Reference-ID:	<[email protected]>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00098.html
+
+Bug-Description:
+
+Some extended glob patterns incorrectly matched filenames with a leading
+dot, regardless of the setting of the `dotglob' option.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.3/lib/glob/gmisc.c	2013-10-28 14:45:25.000000000 -0400
+--- lib/glob/gmisc.c	2014-03-19 09:16:08.000000000 -0400
+***************
+*** 211,214 ****
+--- 211,215 ----
+      case '!':
+      case '@':
++     case '?':
+        return (pat[1] == LPAREN);
+      default:
+*** ../bash-4.3/lib/glob/glob.c	2014-01-31 21:43:51.000000000 -0500
+--- lib/glob/glob.c	2014-03-20 09:01:26.000000000 -0400
+***************
+*** 180,202 ****
+       int flags;
+  {
+!   char *pp, *pe, *t;
+!   int n, r;
+  
+    pp = pat + 2;
+!   pe = pp + strlen (pp) - 1;	/*(*/
+!   if (*pe != ')')
+!     return 0;
+!   if ((t = strchr (pp, '|')) == 0)	/* easy case first */
+      {
+        *pe = '\0';
+        r = skipname (pp, dname, flags);	/*(*/
+        *pe = ')';
+        return r;
+      }
+    while (t = glob_patscan (pp, pe, '|'))
+      {
+        n = t[-1];
+        t[-1] = '\0';
+        r = skipname (pp, dname, flags);
+        t[-1] = n;
+        if (r == 0)	/* if any pattern says not skip, we don't skip */
+--- 180,215 ----
+       int flags;
+  {
+!   char *pp, *pe, *t, *se;
+!   int n, r, negate;
+  
++   negate = *pat == '!';
+    pp = pat + 2;
+!   se = pp + strlen (pp) - 1;		/* end of string */
+!   pe = glob_patscan (pp, se, 0);	/* end of extglob pattern (( */
+!   /* we should check for invalid extglob pattern here */
+!   /* if pe != se we have more of the pattern at the end of the extglob
+!      pattern. Check the easy case first ( */
+!   if (pe == se && *pe == ')' && (t = strchr (pp, '|')) == 0)
+      {
+        *pe = '\0';
++ #if defined (HANDLE_MULTIBYTE)
++       r = mbskipname (pp, dname, flags);
++ #else
+        r = skipname (pp, dname, flags);	/*(*/
++ #endif
+        *pe = ')';
+        return r;
+      }
++ 
++   /* check every subpattern */
+    while (t = glob_patscan (pp, pe, '|'))
+      {
+        n = t[-1];
+        t[-1] = '\0';
++ #if defined (HANDLE_MULTIBYTE)
++       r = mbskipname (pp, dname, flags);
++ #else
+        r = skipname (pp, dname, flags);
++ #endif
+        t[-1] = n;
+        if (r == 0)	/* if any pattern says not skip, we don't skip */
+***************
+*** 205,219 ****
+      }	/*(*/
+  
+!   if (pp == pe)		/* glob_patscan might find end of pattern */
+      return r;
+  
+!   *pe = '\0';
+! #  if defined (HANDLE_MULTIBYTE)
+!   r = mbskipname (pp, dname, flags);	/*(*/
+! #  else
+!   r = skipname (pp, dname, flags);	/*(*/
+! #  endif
+!   *pe = ')';
+!   return r;
+  }
+  #endif
+--- 218,227 ----
+      }	/*(*/
+  
+!   /* glob_patscan might find end of pattern */
+!   if (pp == se)
+      return r;
+  
+!   /* but if it doesn't then we didn't match a leading dot */
+!   return 0;
+  }
+  #endif
+***************
+*** 278,289 ****
+  {
+  #if EXTENDED_GLOB
+!   wchar_t *pp, *pe, *t, n;
+!   int r;
+  
+    pp = pat + 2;
+!   pe = pp + wcslen (pp) - 1;	/*(*/
+!   if (*pe != L')')
+!     return 0;
+!   if ((t = wcschr (pp, L'|')) == 0)
+      {
+        *pe = L'\0';
+--- 286,298 ----
+  {
+  #if EXTENDED_GLOB
+!   wchar_t *pp, *pe, *t, n, *se;
+!   int r, negate;
+  
++   negate = *pat == L'!';
+    pp = pat + 2;
+!   se = pp + wcslen (pp) - 1;	/*(*/
+!   pe = glob_patscan_wc (pp, se, 0);
+! 
+!   if (pe == se && *pe == ')' && (t = wcschr (pp, L'|')) == 0)
+      {
+        *pe = L'\0';
+***************
+*** 292,295 ****
+--- 301,306 ----
+        return r;
+      }
++ 
++   /* check every subpattern */
+    while (t = glob_patscan_wc (pp, pe, '|'))
+      {
+***************
+*** 306,313 ****
+      return r;
+  
+!   *pe = L'\0';
+!   r = wchkname (pp, dname);	/*(*/
+!   *pe = L')';
+!   return r;
+  #else
+    return (wchkname (pat, dname));
+--- 317,322 ----
+      return r;
+  
+!   /* but if it doesn't then we didn't match a leading dot */
+!   return 0;
+  #else
+    return (wchkname (pat, dname));
+*** ../bash-4.3/patchlevel.h	2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h	2014-03-20 20:01:28.000000000 -0400
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 7
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 8
+  
+  #endif /* _PATCHLEVEL_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/bash/patches/bash43-009.patch	Mon Feb 29 10:09:14 2016 -0800
@@ -0,0 +1,64 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.3
+Patch-ID:	bash43-009
+
+Bug-Reported-by:	Matthias Klose <[email protected]>
+Bug-Reference-ID:	<[email protected]>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00171.html
+
+Bug-Description:
+
+There is a problem with unsigned sign extension when attempting to reallocate
+the input line when it is fewer than 3 characters long and there has been a
+history expansion.  The sign extension causes the shell to not reallocate the
+line, which results in a segmentation fault when it writes past the end.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.3-patched/parse.y	2014-02-11 09:42:10.000000000 -0500
+--- parse.y	2014-03-27 16:33:29.000000000 -0400
+***************
+*** 2425,2429 ****
+        if (shell_input_line_terminator != EOF)
+  	{
+! 	  if (shell_input_line_size < SIZE_MAX && shell_input_line_len > shell_input_line_size - 3)
+  	    shell_input_line = (char *)xrealloc (shell_input_line,
+  					1 + (shell_input_line_size += 2));
+--- 2425,2429 ----
+        if (shell_input_line_terminator != EOF)
+  	{
+! 	  if (shell_input_line_size < SIZE_MAX-3 && (shell_input_line_len+3 > shell_input_line_size))
+  	    shell_input_line = (char *)xrealloc (shell_input_line,
+  					1 + (shell_input_line_size += 2));
+*** ../bash-4.3-patched/y.tab.c	2014-03-28 11:17:06.000000000 -0400
+--- y.tab.c	2014-04-07 11:48:31.000000000 -0400
+***************
+*** 4737,4741 ****
+        if (shell_input_line_terminator != EOF)
+  	{
+! 	  if (shell_input_line_size < SIZE_MAX && shell_input_line_len > shell_input_line_size - 3)
+  	    shell_input_line = (char *)xrealloc (shell_input_line,
+  					1 + (shell_input_line_size += 2));
+--- 4737,4741 ----
+        if (shell_input_line_terminator != EOF)
+  	{
+! 	  if (shell_input_line_size < SIZE_MAX-3 && (shell_input_line_len+3 > shell_input_line_size))
+  	    shell_input_line = (char *)xrealloc (shell_input_line,
+  					1 + (shell_input_line_size += 2));
+*** ../bash-4.3/patchlevel.h	2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h	2014-03-20 20:01:28.000000000 -0400
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 8
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 9
+  
+  #endif /* _PATCHLEVEL_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/bash/patches/bash43-010.patch	Mon Feb 29 10:09:14 2016 -0800
@@ -0,0 +1,157 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.3
+Patch-ID:	bash43-010
+
+Bug-Reported-by:	Albert Shih <[email protected]>
+Bug-Reference-ID:	Wed, 5 Mar 2014 23:01:40 +0100
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00028.html
+
+Bug-Description:
+
+Patch (apply with `patch -p0'):
+
+This patch changes the behavior of programmable completion to compensate
+for two assumptions made by the bash-completion package.  Bash-4.3 changed
+to dequote the argument to programmable completion only under certain
+circumstances, to make the behavior of compgen more consistent when run
+from the command line -- closer to the behavior when run by a shell function
+run as part of programmable completion.  Bash-completion can pass quoted
+arguments to compgen when the original word to be completed was not quoted,
+expecting programmable completion to dequote the word before attempting
+completion.
+
+This patch fixes two cases:
+
+1.  An empty string that bash-completion passes to compgen as a quoted null
+    string ('').
+
+2.  An unquoted word that bash-completion quotes using single quotes or
+    backslashes before passing it to compgen.
+
+In these cases, since readline did not detect a quote character in the original
+word to be completed, bash-4.3 
+
+*** ../bash-4.3/externs.h	2014-01-02 14:58:20.000000000 -0500
+--- externs.h	2014-03-13 14:42:57.000000000 -0400
+***************
+*** 325,328 ****
+--- 325,329 ----
+  extern char *sh_backslash_quote_for_double_quotes __P((char *));
+  extern int sh_contains_shell_metas __P((char *));
++ extern int sh_contains_quotes __P((char *));
+  
+  /* declarations for functions defined in lib/sh/spell.c */
+*** ../bash-4.3/lib/sh/shquote.c	2013-03-31 21:53:32.000000000 -0400
+--- lib/sh/shquote.c	2014-03-13 14:42:57.000000000 -0400
+***************
+*** 312,313 ****
+--- 312,327 ----
+    return (0);
+  }
++ 
++ int
++ sh_contains_quotes (string)
++      char *string;
++ {
++   char *s;
++ 
++   for (s = string; s && *s; s++)
++     {
++       if (*s == '\'' || *s == '"' || *s == '\\')
++ 	return 1;
++     }
++   return 0;
++ }
+*** ../bash-4.3/pcomplete.c	2013-08-26 15:23:45.000000000 -0400
+--- pcomplete.c	2014-03-25 17:23:23.000000000 -0400
+***************
+*** 184,187 ****
+--- 184,188 ----
+  COMPSPEC *pcomp_curcs;
+  const char *pcomp_curcmd;
++ const char *pcomp_curtxt;
+  
+  #ifdef DEBUG
+***************
+*** 754,757 ****
+--- 755,784 ----
+  	  dfn = (*rl_filename_dequoting_function) ((char *)text, rl_completion_quote_character);
+  	}
++       /* Intended to solve a mismatched assumption by bash-completion.  If
++ 	 the text to be completed is empty, but bash-completion turns it into
++ 	 a quoted string ('') assuming that this code will dequote it before
++ 	 calling readline, do the dequoting. */
++       else if (iscompgen && iscompleting &&
++ 	       pcomp_curtxt && *pcomp_curtxt == 0 &&
++ 	       text && (*text == '\'' || *text == '"') && text[1] == text[0] && text[2] == 0 && 
++ 	       rl_filename_dequoting_function)
++ 	dfn = (*rl_filename_dequoting_function) ((char *)text, rl_completion_quote_character);
++       /* Another mismatched assumption by bash-completion.  If compgen is being
++       	 run as part of bash-completion, and the argument to compgen is not
++       	 the same as the word originally passed to the programmable completion
++       	 code, dequote the argument if it has quote characters.  It's an
++       	 attempt to detect when bash-completion is quoting its filename
++       	 argument before calling compgen. */
++       /* We could check whether gen_shell_function_matches is in the call
++ 	 stack by checking whether the gen-shell-function-matches tag is in
++ 	 the unwind-protect stack, but there's no function to do that yet.
++ 	 We could simply check whether we're executing in a function by
++ 	 checking variable_context, and may end up doing that. */
++       else if (iscompgen && iscompleting && rl_filename_dequoting_function &&
++ 	       pcomp_curtxt && text &&
++ 	       STREQ (pcomp_curtxt, text) == 0 &&
++ 	       variable_context &&
++ 	       sh_contains_quotes (text))	/* guess */
++ 	dfn = (*rl_filename_dequoting_function) ((char *)text, rl_completion_quote_character);
+        else
+  	dfn = savestring (text);
+***************
+*** 1523,1527 ****
+  {
+    COMPSPEC *cs, *oldcs;
+!   const char *oldcmd;
+    STRINGLIST *ret;
+  
+--- 1550,1554 ----
+  {
+    COMPSPEC *cs, *oldcs;
+!   const char *oldcmd, *oldtxt;
+    STRINGLIST *ret;
+  
+***************
+*** 1546,1552 ****
+--- 1573,1581 ----
+    oldcs = pcomp_curcs;
+    oldcmd = pcomp_curcmd;
++   oldtxt = pcomp_curtxt;
+  
+    pcomp_curcs = cs;
+    pcomp_curcmd = cmd;
++   pcomp_curtxt = word;
+  
+    ret = gen_compspec_completions (cs, cmd, word, start, end, foundp);
+***************
+*** 1554,1557 ****
+--- 1583,1587 ----
+    pcomp_curcs = oldcs;
+    pcomp_curcmd = oldcmd;
++   pcomp_curtxt = oldtxt;
+  
+    /* We need to conditionally handle setting *retryp here */
+*** ../bash-4.3/patchlevel.h	2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h	2014-03-20 20:01:28.000000000 -0400
+***************
+*** 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_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/bash/patches/bash43-011.patch	Mon Feb 29 10:09:14 2016 -0800
@@ -0,0 +1,49 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.3
+Patch-ID:	bash43-011
+
+Bug-Reported-by:	Egmont Koblinger <[email protected]>
+Bug-Reference-ID:	<[email protected]om>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00153.html
+
+Bug-Description:
+
+The signal handling changes to bash and readline (to avoid running any code
+in a signal handler context) cause the cursor to be placed on the wrong
+line of a multi-line command after a ^C interrupts editing.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.3-patched/lib/readline/display.c	2013-12-27 13:10:56.000000000 -0500
+--- lib/readline/display.c	2014-03-27 11:52:45.000000000 -0400
+***************
+*** 2678,2682 ****
+    if (_rl_echoing_p)
+      {
+!       _rl_move_vert (_rl_vis_botlin);
+        _rl_vis_botlin = 0;
+        fflush (rl_outstream);
+--- 2678,2683 ----
+    if (_rl_echoing_p)
+      {
+!       if (_rl_vis_botlin > 0)	/* minor optimization plus bug fix */
+! 	_rl_move_vert (_rl_vis_botlin);
+        _rl_vis_botlin = 0;
+        fflush (rl_outstream);
+*** ../bash-4.3/patchlevel.h	2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h	2014-03-20 20:01:28.000000000 -0400
+***************
+*** 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_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/bash/patches/bash43-012.patch	Mon Feb 29 10:09:14 2016 -0800
@@ -0,0 +1,43 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.3
+Patch-ID:	bash43-012
+
+Bug-Reported-by:	Eduardo A. Bustamante L√≥pez<[email protected]>
+Bug-Reference-ID:	<[email protected]>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2014-04/msg00051.html
+
+Bug-Description:
+
+When a SIGCHLD trap runs a command containing a shell builtin while
+a script is running `wait' to wait for all running children to complete,
+the SIGCHLD trap will not be run once for each child that terminates.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.3-patched/jobs.c	2014-03-28 10:54:19.000000000 -0400
+--- jobs.c	2014-04-15 08:47:03.000000000 -0400
+***************
+*** 3598,3601 ****
+--- 3598,3602 ----
+    unwind_protect_pointer (the_pipeline);
+    unwind_protect_pointer (subst_assign_varlist);
++   unwind_protect_pointer (this_shell_builtin);
+  
+    /* We have to add the commands this way because they will be run
+*** ../bash-4.3/patchlevel.h	2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h	2014-03-20 20:01:28.000000000 -0400
+***************
+*** 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_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/bash/patches/bash43-013.patch	Mon Feb 29 10:09:14 2016 -0800
@@ -0,0 +1,66 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.3
+Patch-ID:	bash43-013
+
+Bug-Reported-by:	<[email protected]>
+Bug-Reference-ID:	<[email protected]>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2014-04/msg00069.html
+
+Bug-Description:
+
+Using reverse-i-search when horizontal scrolling is enabled does not redisplay
+the entire line containing the successful search results.
+
+Patch (apply with `patch -p0'):
+*** ../bash-4.3-patched/lib/readline/display.c	2014-04-08 18:19:36.000000000 -0400
+--- lib/readline/display.c	2014-04-20 18:32:52.000000000 -0400
+***************
+*** 1638,1642 ****
+       the spot of first difference is before the end of the invisible chars,
+       lendiff needs to be adjusted. */
+!   if (current_line == 0 && !_rl_horizontal_scroll_mode &&
+        current_invis_chars != visible_wrap_offset)
+      {
+--- 1638,1642 ----
+       the spot of first difference is before the end of the invisible chars,
+       lendiff needs to be adjusted. */
+!   if (current_line == 0 && /* !_rl_horizontal_scroll_mode && */
+        current_invis_chars != visible_wrap_offset)
+      {
+***************
+*** 1826,1831 ****
+  		_rl_last_c_pos += bytes_to_insert;
+  
+  	      if (_rl_horizontal_scroll_mode && ((oe-old) > (ne-new)))
+! 		goto clear_rest_of_line;
+  	    }
+  	}
+--- 1826,1836 ----
+  		_rl_last_c_pos += bytes_to_insert;
+  
++ 	      /* XXX - we only want to do this if we are at the end of the line
++ 		 so we move there with _rl_move_cursor_relative */
+  	      if (_rl_horizontal_scroll_mode && ((oe-old) > (ne-new)))
+! 		{
+! 		  _rl_move_cursor_relative (ne-new, new);
+! 		  goto clear_rest_of_line;
+! 		}
+  	    }
+  	}
+*** ../bash-4.3/patchlevel.h	2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h	2014-03-20 20:01:28.000000000 -0400
+***************
+*** 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_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/bash/patches/bash43-014.patch	Mon Feb 29 10:09:14 2016 -0800
@@ -0,0 +1,102 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.3
+Patch-ID:	bash43-014
+
+Bug-Reported-by:	Greg Wooledge <[email protected]>
+Bug-Reference-ID:	<[email protected]>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/help-bash/2014-04/msg00004.html
+
+Bug-Description:
+
+Under certain circumstances, [email protected] is expanded incorrectly in contexts where
+word splitting is not performed.
+
+Patch (apply with `patch -p0'):
+*** ../bash-4.3-patched/subst.c	2014-01-23 16:26:37.000000000 -0500
+--- subst.c	2014-04-19 15:41:26.000000000 -0400
+***************
+*** 3249,3254 ****
+--- 3249,3256 ----
+      return ((char *)NULL);
+  
++   expand_no_split_dollar_star = 1;
+    w->flags |= W_NOSPLIT2;
+    l = call_expand_word_internal (w, 0, 0, (int *)0, (int *)0);
++   expand_no_split_dollar_star = 0;
+    if (l)
+      {
+***************
+*** 7848,7851 ****
+--- 7850,7857 ----
+  	 according to POSIX.2, this expands to a list of the positional
+  	 parameters no matter what IFS is set to. */
++       /* XXX - what to do when in a context where word splitting is not
++ 	 performed? Even when IFS is not the default, posix seems to imply
++ 	 that we behave like unquoted $* ?  Maybe we should use PF_NOSPLIT2
++ 	 here. */
+        temp = string_list_dollar_at (list, (pflags & PF_ASSIGNRHS) ? (quoted|Q_DOUBLE_QUOTES) : quoted);
+  
+***************
+*** 8817,8820 ****
+--- 8823,8827 ----
+      {
+        char *ifs_chars;
++       char *tstring;
+  
+        ifs_chars = (quoted_dollar_at || has_dollar_at) ? ifs_value : (char *)NULL;
+***************
+*** 8831,8834 ****
+--- 8838,8865 ----
+        if (split_on_spaces)
+  	list = list_string (istring, " ", 1);	/* XXX quoted == 1? */
++       /* If we have [email protected] (has_dollar_at != 0) and we are in a context where we
++ 	 don't want to split the result (W_NOSPLIT2), and we are not quoted,
++ 	 we have already separated the arguments with the first character of
++ 	 $IFS.  In this case, we want to return a list with a single word
++ 	 with the separator possibly replaced with a space (it's what other
++ 	 shells seem to do).
++ 	 quoted_dollar_at is internal to this function and is set if we are
++ 	 passed an argument that is unquoted (quoted == 0) but we encounter a
++ 	 double-quoted [email protected] while expanding it. */
++       else if (has_dollar_at && quoted_dollar_at == 0 && ifs_chars && quoted == 0 && (word->flags & W_NOSPLIT2))
++ 	{
++ 	  /* Only split and rejoin if we have to */
++ 	  if (*ifs_chars && *ifs_chars != ' ')
++ 	    {
++ 	      list = list_string (istring, *ifs_chars ? ifs_chars : " ", 1);
++ 	      tstring = string_list (list);
++ 	    }
++ 	  else
++ 	    tstring = istring;
++ 	  tword = make_bare_word (tstring);
++ 	  if (tstring != istring)
++ 	    free (tstring);
++ 	  goto set_word_flags;
++ 	}
+        else if (has_dollar_at && ifs_chars)
+  	list = list_string (istring, *ifs_chars ? ifs_chars : " ", 1);
+***************
+*** 8836,8839 ****
+--- 8867,8871 ----
+  	{
+  	  tword = make_bare_word (istring);
++ set_word_flags:
+  	  if ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) || (quoted_state == WHOLLY_QUOTED))
+  	    tword->flags |= W_QUOTED;
+*** ../bash-4.3/patchlevel.h	2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h	2014-03-20 20:01:28.000000000 -0400
+***************
+*** 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_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/bash/patches/bash43-015.patch	Mon Feb 29 10:09:14 2016 -0800
@@ -0,0 +1,58 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.3
+Patch-ID:	bash43-015
+
+Bug-Reported-by:	Clark Wang <[email protected]>
+Bug-Reference-ID:	<[email protected]om>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2014-04/msg00095.html
+
+Bug-Description:
+
+When completing directory names, the directory name is dequoted twice.
+This causes problems for directories with single and double quotes in
+their names.
+
+Patch (apply with `patch -p0'):
+*** ../bash-4.3-patched/bashline.c	2014-02-09 19:56:58.000000000 -0500
+--- bashline.c	2014-04-25 14:57:52.000000000 -0400
+***************
+*** 4168,4174 ****
+  
+    qc = rl_dispatching ? rl_completion_quote_character : 0;  
+!   dfn = bash_dequote_filename ((char *)text, qc);
+    m1 = rl_completion_matches (dfn, rl_filename_completion_function);
+!   free (dfn);
+  
+    if (m1 == 0 || m1[0] == 0)
+--- 4209,4222 ----
+  
+    qc = rl_dispatching ? rl_completion_quote_character : 0;  
+!   /* If rl_completion_found_quote != 0, rl_completion_matches will call the
+!      filename dequoting function, causing the directory name to be dequoted
+!      twice. */
+!   if (rl_dispatching && rl_completion_found_quote == 0)
+!     dfn = bash_dequote_filename ((char *)text, qc);
+!   else
+!     dfn = (char *)text;
+    m1 = rl_completion_matches (dfn, rl_filename_completion_function);
+!   if (dfn != text)
+!     free (dfn);
+  
+    if (m1 == 0 || m1[0] == 0)
+*** ../bash-4.3/patchlevel.h	2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h	2014-03-20 20:01:28.000000000 -0400
+***************
+*** 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_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/bash/patches/bash43-016.patch	Mon Feb 29 10:09:14 2016 -0800
@@ -0,0 +1,132 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.3
+Patch-ID:	bash43-016
+
+Bug-Reported-by:	Pierre Gaston <[email protected]>
+Bug-Reference-ID:	<[email protected]om>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2014-04/msg00100.html
+
+Bug-Description:
+
+An extended glob pattern containing a slash (`/') causes the globbing code
+to misinterpret it as a directory separator.
+
+Patch (apply with `patch -p0'):
+*** ../bash-4.3-patched/lib/glob/glob.c	2014-03-28 10:54:23.000000000 -0400
+--- lib/glob/glob.c	2014-05-02 10:24:28.000000000 -0400
+***************
+*** 124,127 ****
+--- 124,129 ----
+  extern wchar_t *glob_patscan_wc __P((wchar_t *, wchar_t *, int));
+  
++ extern char *glob_dirscan __P((char *, int));
++ 
+  /* Compile `glob_loop.c' for single-byte characters. */
+  #define CHAR	unsigned char
+***************
+*** 188,191 ****
+--- 190,196 ----
+    pe = glob_patscan (pp, se, 0);	/* end of extglob pattern (( */
+    /* we should check for invalid extglob pattern here */
++   if (pe == 0)
++     return 0;
++ 
+    /* if pe != se we have more of the pattern at the end of the extglob
+       pattern. Check the easy case first ( */
+***************
+*** 1016,1020 ****
+    char **result;
+    unsigned int result_size;
+!   char *directory_name, *filename, *dname;
+    unsigned int directory_len;
+    int free_dirname;			/* flag */
+--- 1021,1025 ----
+    char **result;
+    unsigned int result_size;
+!   char *directory_name, *filename, *dname, *fn;
+    unsigned int directory_len;
+    int free_dirname;			/* flag */
+***************
+*** 1032,1035 ****
+--- 1037,1052 ----
+    /* Find the filename.  */
+    filename = strrchr (pathname, '/');
++ #if defined (EXTENDED_GLOB)
++   if (filename && extended_glob)
++     {
++       fn = glob_dirscan (pathname, '/');
++ #if DEBUG_MATCHING
++       if (fn != filename)
++ 	fprintf (stderr, "glob_filename: glob_dirscan: fn (%s) != filename (%s)\n", fn ? fn : "(null)", filename);
++ #endif
++       filename = fn;
++     }
++ #endif
++ 
+    if (filename == NULL)
+      {
+*** ../bash-4.3-patched/lib/glob/gmisc.c	2014-03-28 10:54:23.000000000 -0400
+--- lib/glob/gmisc.c	2014-05-02 09:35:57.000000000 -0400
+***************
+*** 43,46 ****
+--- 43,48 ----
+  #define WRPAREN         L')'
+  
++ extern char *glob_patscan __P((char *, char *, int));
++ 
+  /* Return 1 of the first character of WSTRING could match the first
+     character of pattern WPAT.  Wide character version. */
+***************
+*** 376,377 ****
+--- 378,410 ----
+    return matlen;
+  }
++ 
++ /* Skip characters in PAT and return the final occurrence of DIRSEP.  This
++    is only called when extended_glob is set, so we have to skip over extglob
++    patterns x(...) */
++ char *
++ glob_dirscan (pat, dirsep)
++      char *pat;
++      int dirsep;
++ {
++   char *p, *d, *pe, *se;
++ 
++   d = pe = se = 0;
++   for (p = pat; p && *p; p++)
++     {
++       if (extglob_pattern_p (p))
++ 	{
++ 	  if (se == 0)
++ 	    se = p + strlen (p) - 1;
++ 	  pe = glob_patscan (p + 2, se, 0);
++ 	  if (pe == 0)
++ 	    continue;
++ 	  else if (*pe == 0)
++ 	    break;
++ 	  p = pe - 1;	/* will do increment above */
++ 	  continue;
++ 	}
++       if (*p ==  dirsep)
++ 	d = p;
++     }
++   return d;
++ }
+
+*** ../bash-4.3/patchlevel.h	2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h	2014-03-20 20:01:28.000000000 -0400
+***************
+*** 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_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/bash/patches/bash43-017.patch	Mon Feb 29 10:09:14 2016 -0800
@@ -0,0 +1,51 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.3
+Patch-ID:	bash43-017
+
+Bug-Reported-by:	Dan Douglas <[email protected]>
+Bug-Reference-ID:	<[email protected]>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2014-05/msg00026.html
+
+Bug-Description:
+
+The code that creates local variables should not clear the `invisible'
+attribute when returning an existing local variable.  Let the code that
+actually assigns a value clear it.
+
+Patch (apply with `patch -p0'):
+*** ../bash-4.3-patched/variables.c	2014-02-14 11:55:12.000000000 -0500
+--- variables.c	2014-05-07 10:53:57.000000000 -0400
+***************
+*** 2198,2205 ****
+    old_var = find_variable (name);
+    if (old_var && local_p (old_var) && old_var->context == variable_context)
+!     {
+!       VUNSETATTR (old_var, att_invisible);	/* XXX */
+!       return (old_var);
+!     }
+  
+    was_tmpvar = old_var && tempvar_p (old_var);
+--- 2260,2264 ----
+    old_var = find_variable (name);
+    if (old_var && local_p (old_var) && old_var->context == variable_context)
+!     return (old_var);
+  
+    was_tmpvar = old_var && tempvar_p (old_var);
+
+*** ../bash-4.3/patchlevel.h	2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h	2014-03-20 20:01:28.000000000 -0400
+***************
+*** 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_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/bash/patches/bash43-018.patch	Mon Feb 29 10:09:14 2016 -0800
@@ -0,0 +1,44 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.3
+Patch-ID:	bash43-018
+
+Bug-Reported-by:	Geir Hauge <[email protected]>
+Bug-Reference-ID:	<[email protected]om>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2014-05/msg00040.html
+
+Bug-Description:
+
+When assigning an array variable using the compound assignment syntax,
+but using `declare' with the rhs of the compound assignment quoted, the
+shell did not mark the variable as visible after successfully performing
+the assignment.
+
+Patch (apply with `patch -p0'):
+*** ../bash-4.3-patched/arrayfunc.c	2014-03-28 10:54:21.000000000 -0400
+--- arrayfunc.c	2014-05-12 11:19:00.000000000 -0400
+***************
+*** 180,183 ****
+--- 180,184 ----
+    FREE (newval);
+  
++   VUNSETATTR (entry, att_invisible);	/* no longer invisible */
+    return (entry);
+  }
+
+*** ../bash-4.3/patchlevel.h	2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h	2014-03-20 20:01:28.000000000 -0400
+***************
+*** 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_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/bash/patches/bash43-019.patch	Mon Feb 29 10:09:14 2016 -0800
@@ -0,0 +1,84 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.3
+Patch-ID:	bash43-019
+
+Bug-Reported-by:	John Lenton
+Bug-Reference-ID:
+Bug-Reference-URL:	https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1317476
+
+Bug-Description:
+
+The -t timeout option to `read' does not work when the -e option is used.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.3-patched/lib/readline/input.c	2014-01-10 15:07:08.000000000 -0500
+--- lib/readline/input.c	2014-05-22 18:40:59.000000000 -0400
+***************
+*** 535,540 ****
+--- 538,551 ----
+        else if (_rl_caught_signal == SIGHUP || _rl_caught_signal == SIGTERM)
+  	return (RL_ISSTATE (RL_STATE_READCMD) ? READERR : EOF);
++       /* keyboard-generated signals of interest */
+        else if (_rl_caught_signal == SIGINT || _rl_caught_signal == SIGQUIT)
+          RL_CHECK_SIGNALS ();
++       /* non-keyboard-generated signals of interest */
++       else if (_rl_caught_signal == SIGALRM
++ #if defined (SIGVTALRM)
++ 		|| _rl_caught_signal == SIGVTALRM
++ #endif
++ 	      )
++         RL_CHECK_SIGNALS ();
+  
+        if (rl_signal_event_hook)
+*** ../bash-4.3-patched/builtins/read.def	2013-09-02 11:54:00.000000000 -0400
+--- builtins/read.def	2014-05-08 11:43:35.000000000 -0400
+***************
+*** 443,447 ****
+  #if defined (READLINE)
+        if (edit)
+! 	add_unwind_protect (reset_attempted_completion_function, (char *)NULL);
+  #endif
+        falarm (tmsec, tmusec);
+--- 443,450 ----
+  #if defined (READLINE)
+        if (edit)
+! 	{
+! 	  add_unwind_protect (reset_attempted_completion_function, (char *)NULL);
+! 	  add_unwind_protect (bashline_reset_event_hook, (char *)NULL);
+! 	}
+  #endif
+        falarm (tmsec, tmusec);
+***************
+*** 1022,1025 ****
+--- 1025,1029 ----
+    old_attempted_completion_function = rl_attempted_completion_function;
+    rl_attempted_completion_function = (rl_completion_func_t *)NULL;
++   bashline_set_event_hook ();
+    if (itext)
+      {
+***************
+*** 1033,1036 ****
+--- 1037,1041 ----
+    rl_attempted_completion_function = old_attempted_completion_function;
+    old_attempted_completion_function = (rl_completion_func_t *)NULL;
++   bashline_reset_event_hook ();
+  
+    if (ret == 0)
+*** ../bash-4.3/patchlevel.h	2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h	2014-03-20 20:01:28.000000000 -0400
+***************
+*** 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_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/bash/patches/bash43-020.patch	Mon Feb 29 10:09:14 2016 -0800
@@ -0,0 +1,110 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.3
+Patch-ID:	bash43-020
+
+Bug-Reported-by:	Jared Yanovich <[email protected]>
+Bug-Reference-ID:	<[email protected]>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2014-04/msg00065.html
+
+Bug-Description:
+
+When PS2 contains a command substitution, here-documents entered in an
+interactive shell can sometimes cause a segmentation fault.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.3-patched/shell.h	2012-12-25 21:11:01.000000000 -0500
+--- shell.h	2014-06-03 09:24:28.000000000 -0400
+***************
+*** 169,173 ****
+    int expand_aliases;
+    int echo_input_at_read;
+!   
+  } sh_parser_state_t;
+  
+--- 169,174 ----
+    int expand_aliases;
+    int echo_input_at_read;
+!   int need_here_doc;
+! 
+  } sh_parser_state_t;
+  
+*** ../bash-4.3-patched/parse.y	2014-05-14 09:16:40.000000000 -0400
+--- parse.y	2014-04-30 09:27:59.000000000 -0400
+***************
+*** 2643,2647 ****
+  
+    r = 0;
+!   while (need_here_doc)
+      {
+        parser_state |= PST_HEREDOC;
+--- 2643,2647 ----
+  
+    r = 0;
+!   while (need_here_doc > 0)
+      {
+        parser_state |= PST_HEREDOC;
+***************
+*** 6076,6079 ****
+--- 6076,6080 ----
+    ps->expand_aliases = expand_aliases;
+    ps->echo_input_at_read = echo_input_at_read;
++   ps->need_here_doc = need_here_doc;
+  
+    ps->token = token;
+***************
+*** 6124,6127 ****
+--- 6125,6129 ----
+    expand_aliases = ps->expand_aliases;
+    echo_input_at_read = ps->echo_input_at_read;
++   need_here_doc = ps->need_here_doc;
+  
+    FREE (token);
+*** ../bash-4.3-patched/y.tab.c	2014-04-07 11:56:12.000000000 -0400
+--- y.tab.c	2014-07-30 09:55:57.000000000 -0400
+***************
+*** 4955,4959 ****
+  
+    r = 0;
+!   while (need_here_doc)
+      {
+        parser_state |= PST_HEREDOC;
+--- 5151,5155 ----
+  
+    r = 0;
+!   while (need_here_doc > 0)
+      {
+        parser_state |= PST_HEREDOC;
+***************
+*** 8388,8391 ****
+--- 8584,8588 ----
+    ps->expand_aliases = expand_aliases;
+    ps->echo_input_at_read = echo_input_at_read;
++   ps->need_here_doc = need_here_doc;
+  
+    ps->token = token;
+***************
+*** 8436,8439 ****
+--- 8633,8637 ----
+    expand_aliases = ps->expand_aliases;
+    echo_input_at_read = ps->echo_input_at_read;
++   need_here_doc = ps->need_here_doc;
+  
+    FREE (token);
+*** ../bash-4.3/patchlevel.h	2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h	2014-03-20 20:01:28.000000000 -0400
+***************
+*** 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_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/bash/patches/bash43-021.patch	Mon Feb 29 10:09:14 2016 -0800
@@ -0,0 +1,52 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.3
+Patch-ID:	bash43-021
+
+Bug-Reported-by:	Jared Yanovich <[email protected]>
+Bug-Reference-ID:	<[email protected]>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2014-06/msg00070.html
+
+Bug-Description:
+
+When the readline `revert-all-at-newline' option is set, pressing newline
+when the current line is one retrieved from history results in a double free
+and a segmentation fault.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.3-patched/lib/readline/misc.c	2012-09-01 18:03:11.000000000 -0400
+--- lib/readline/misc.c	2014-06-30 13:41:19.000000000 -0400
+***************
+*** 462,465 ****
+--- 462,466 ----
+  	  /* Set up rl_line_buffer and other variables from history entry */
+  	  rl_replace_from_history (entry, 0);	/* entry->line is now current */
++ 	  entry->data = 0;			/* entry->data is now current undo list */
+  	  /* Undo all changes to this history entry */
+  	  while (rl_undo_list)
+***************
+*** 469,473 ****
+  	  FREE (entry->line);
+  	  entry->line = savestring (rl_line_buffer);
+- 	  entry->data = 0;
+  	}
+        entry = previous_history ();
+--- 470,473 ----
+
+*** ../bash-4.3/patchlevel.h	2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h	2014-03-20 20:01:28.000000000 -0400
+***************
+*** 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_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/bash/patches/bash43-022.patch	Mon Feb 29 10:09:14 2016 -0800
@@ -0,0 +1,56 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.3
+Patch-ID:	bash43-022
+
+Bug-Reported-by:	[email protected]
+Bug-Reference-ID:	<[email protected]>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2014-06/msg00061.html
+
+Bug-Description:
+
+Using nested pipelines within loops with the `lastpipe' option set can result
+in a segmentation fault.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.3-patched/execute_cmd.c	2014-01-31 10:54:52.000000000 -0500
+--- execute_cmd.c	2014-06-19 08:05:49.000000000 -0400
+***************
+*** 2410,2414 ****
+        lstdin = wait_for (lastpid);
+  #if defined (JOB_CONTROL)
+!       exec_result = job_exit_status (lastpipe_jid);
+  #endif
+        unfreeze_jobs_list ();
+--- 2425,2438 ----
+        lstdin = wait_for (lastpid);
+  #if defined (JOB_CONTROL)
+!       /* If wait_for removes the job from the jobs table, use result of last
+! 	 command as pipeline's exit status as usual.  The jobs list can get
+! 	 frozen and unfrozen at inconvenient times if there are multiple pipelines
+! 	 running simultaneously. */
+!       if (INVALID_JOB (lastpipe_jid) == 0)
+! 	exec_result = job_exit_status (lastpipe_jid);
+!       else if (pipefail_opt)
+! 	exec_result = exec_result | lstdin;	/* XXX */
+!       /* otherwise we use exec_result */
+!         
+  #endif
+        unfreeze_jobs_list ();
+*** ../bash-4.3/patchlevel.h	2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h	2014-03-20 20:01:28.000000000 -0400
+***************
+*** 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_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/bash/patches/bash43-023.patch	Mon Feb 29 10:09:14 2016 -0800
@@ -0,0 +1,104 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.3
+Patch-ID:	bash43-023
+
+Bug-Reported-by:	Tim Friske <[email protected]>
+Bug-Reference-ID:	<[email protected]om>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2014-06/msg00056.html
+
+Bug-Description:
+
+Bash does not correctly parse process substitution constructs that contain
+unbalanced parentheses as part of the contained command.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.3-patched/subst.h	2014-01-11 21:02:27.000000000 -0500
+--- subst.h	2014-07-20 17:25:01.000000000 -0400
+***************
+*** 83,87 ****
+     Start extracting at (SINDEX) as if we had just seen "<(".
+     Make (SINDEX) get the position just after the matching ")". */
+! extern char *extract_process_subst __P((char *, char *, int *));
+  #endif /* PROCESS_SUBSTITUTION */
+  
+--- 83,87 ----
+     Start extracting at (SINDEX) as if we had just seen "<(".
+     Make (SINDEX) get the position just after the matching ")". */
+! extern char *extract_process_subst __P((char *, char *, int *, int));
+  #endif /* PROCESS_SUBSTITUTION */
+  
+*** ../bash-4.3-patched/subst.c	2014-05-15 08:26:45.000000000 -0400
+--- subst.c	2014-07-20 17:26:44.000000000 -0400
+***************
+*** 1193,1202 ****
+     Make (SINDEX) get the position of the matching ")". */ /*))*/
+  char *
+! extract_process_subst (string, starter, sindex)
+       char *string;
+       char *starter;
+       int *sindex;
+  {
+    return (extract_delimited_string (string, sindex, starter, "(", ")", SX_COMMAND));
+  }
+  #endif /* PROCESS_SUBSTITUTION */
+--- 1193,1208 ----
+     Make (SINDEX) get the position of the matching ")". */ /*))*/
+  char *
+! extract_process_subst (string, starter, sindex, xflags)
+       char *string;
+       char *starter;
+       int *sindex;
++      int xflags;
+  {
++ #if 0
+    return (extract_delimited_string (string, sindex, starter, "(", ")", SX_COMMAND));
++ #else
++   xflags |= (no_longjmp_on_fatal_error ? SX_NOLONGJMP : 0);
++   return (xparse_dolparen (string, string+*sindex, sindex, xflags));
++ #endif
+  }
+  #endif /* PROCESS_SUBSTITUTION */
+***************
+*** 1786,1790 ****
+  	  if (string[si] == '\0')
+  	    CQ_RETURN(si);
+! 	  temp = extract_process_subst (string, (c == '<') ? "<(" : ">(", &si);
+  	  free (temp);		/* no SX_ALLOC here */
+  	  i = si;
+--- 1792,1796 ----
+  	  if (string[si] == '\0')
+  	    CQ_RETURN(si);
+! 	  temp = extract_process_subst (string, (c == '<') ? "<(" : ">(", &si, 0);
+  	  free (temp);		/* no SX_ALLOC here */
+  	  i = si;
+***************
+*** 8250,8254 ****
+  	      t_index = sindex + 1; /* skip past both '<' and LPAREN */
+  
+! 	    temp1 = extract_process_subst (string, (c == '<') ? "<(" : ">(", &t_index); /*))*/
+  	    sindex = t_index;
+  
+--- 8256,8260 ----
+  	      t_index = sindex + 1; /* skip past both '<' and LPAREN */
+  
+! 	    temp1 = extract_process_subst (string, (c == '<') ? "<(" : ">(", &t_index, 0); /*))*/
+  	    sindex = t_index;
+  
+*** ../bash-4.3/patchlevel.h	2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h	2014-03-20 20:01:28.000000000 -0400
+***************
+*** 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_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/bash/patches/bash43-024.patch	Mon Feb 29 10:09:14 2016 -0800
@@ -0,0 +1,54 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.3
+Patch-ID:	bash43-024
+
+Bug-Reported-by:	Corentin Peuvrel <[email protected]>
+Bug-Reference-ID:	<[email protected]>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2014-07/msg00021.html
+
+Bug-Description:
+
+Indirect variable references do not work correctly if the reference
+variable expands to an array reference using a subscript other than 0
+(e.g., foo='bar[1]' ; echo ${!foo}).
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.3-patched/subst.c	2014-06-03 09:32:44.000000000 -0400
+--- subst.c	2014-07-23 09:58:19.000000000 -0400
+***************
+*** 7375,7379 ****
+  
+    if (want_indir)
+!     tdesc = parameter_brace_expand_indir (name + 1, var_is_special, quoted, quoted_dollar_atp, contains_dollar_at);
+    else
+      tdesc = parameter_brace_expand_word (name, var_is_special, quoted, PF_IGNUNBOUND|(pflags&(PF_NOSPLIT2|PF_ASSIGNRHS)), &ind);
+--- 7445,7455 ----
+  
+    if (want_indir)
+!     {
+!       tdesc = parameter_brace_expand_indir (name + 1, var_is_special, quoted, quoted_dollar_atp, contains_dollar_at);
+!       /* Turn off the W_ARRAYIND flag because there is no way for this function
+! 	 to return the index we're supposed to be using. */
+!       if (tdesc && tdesc->flags)
+! 	tdesc->flags &= ~W_ARRAYIND;
+!     }
+    else
+      tdesc = parameter_brace_expand_word (name, var_is_special, quoted, PF_IGNUNBOUND|(pflags&(PF_NOSPLIT2|PF_ASSIGNRHS)), &ind);
+*** ../bash-4.3/patchlevel.h	2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h	2014-03-20 20:01:28.000000000 -0400
+***************
+*** 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_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/bash/patches/bash43-025.patch	Mon Feb 29 10:09:14 2016 -0800
@@ -0,0 +1,123 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.3
+Patch-ID:	bash43-025
+
+Bug-Reported-by:	Stephane Chazelas <[email protected]>
+Bug-Reference-ID:
+Bug-Reference-URL:
+
+Bug-Description:
+
+Under certain circumstances, bash will execute user code while processing the
+environment for exported function definitions.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.3-patched/builtins/common.h	2013-07-08 16:54:47.000000000 -0400
+--- builtins/common.h	2014-09-12 14:25:47.000000000 -0400
+***************
+*** 34,37 ****
+--- 49,54 ----
+  #define SEVAL_PARSEONLY	0x020
+  #define SEVAL_NOLONGJMP 0x040
++ #define SEVAL_FUNCDEF	0x080		/* only allow function definitions */
++ #define SEVAL_ONECMD	0x100		/* only allow a single command */
+  
+  /* Flags for describe_command, shared between type.def and command.def */
+*** ../bash-4.3-patched/builtins/evalstring.c	2014-02-11 09:42:10.000000000 -0500
+--- builtins/evalstring.c	2014-09-14 14:15:13.000000000 -0400
+***************
+*** 309,312 ****
+--- 313,324 ----
+  	      struct fd_bitmap *bitmap;
+  
++ 	      if ((flags & SEVAL_FUNCDEF) && command->type != cm_function_def)
++ 		{
++ 		  internal_warning ("%s: ignoring function definition attempt", from_file);
++ 		  should_jump_to_top_level = 0;
++ 		  last_result = last_command_exit_value = EX_BADUSAGE;
++ 		  break;
++ 		}
++ 
+  	      bitmap = new_fd_bitmap (FD_BITMAP_SIZE);
+  	      begin_unwind_frame ("pe_dispose");
+***************
+*** 369,372 ****
+--- 381,387 ----
+  	      dispose_fd_bitmap (bitmap);
+  	      discard_unwind_frame ("pe_dispose");
++ 
++ 	      if (flags & SEVAL_ONECMD)
++ 		break;
+  	    }
+  	}
+*** ../bash-4.3-patched/variables.c	2014-05-15 08:26:50.000000000 -0400
+--- variables.c	2014-09-14 14:23:35.000000000 -0400
+***************
+*** 359,369 ****
+  	  strcpy (temp_string + char_index + 1, string);
+  
+! 	  if (posixly_correct == 0 || legal_identifier (name))
+! 	    parse_and_execute (temp_string, name, SEVAL_NONINT|SEVAL_NOHIST);
+! 
+! 	  /* Ancient backwards compatibility.  Old versions of bash exported
+! 	     functions like name()=() {...} */
+! 	  if (name[char_index - 1] == ')' && name[char_index - 2] == '(')
+! 	    name[char_index - 2] = '\0';
+  
+  	  if (temp_var = find_function (name))
+--- 364,372 ----
+  	  strcpy (temp_string + char_index + 1, string);
+  
+! 	  /* Don't import function names that are invalid identifiers from the
+! 	     environment, though we still allow them to be defined as shell
+! 	     variables. */
+! 	  if (legal_identifier (name))
+! 	    parse_and_execute (temp_string, name, SEVAL_NONINT|SEVAL_NOHIST|SEVAL_FUNCDEF|SEVAL_ONECMD);
+  
+  	  if (temp_var = find_function (name))
+***************
+*** 382,389 ****
+  	      report_error (_("error importing function definition for `%s'"), name);
+  	    }
+- 
+- 	  /* ( */
+- 	  if (name[char_index - 1] == ')' && name[char_index - 2] == '\0')
+- 	    name[char_index - 2] = '(';		/* ) */
+  	}
+  #if defined (ARRAY_VARS)
+--- 385,388 ----
+*** ../bash-4.3-patched/subst.c	2014-08-11 11:16:35.000000000 -0400
+--- subst.c	2014-09-12 15:31:04.000000000 -0400
+***************
+*** 8048,8052 ****
+  	  goto return0;
+  	}
+!       else if (var = find_variable_last_nameref (temp1))
+  	{
+  	  temp = nameref_cell (var);
+--- 8118,8124 ----
+  	  goto return0;
+  	}
+!       else if (var && (invisible_p (var) || var_isset (var) == 0))
+! 	temp = (char *)NULL;
+!       else if ((var = find_variable_last_nameref (temp1)) && var_isset (var) && invisible_p (var) == 0)
+  	{
+  	  temp = nameref_cell (var);
+*** ../bash-4.3/patchlevel.h	2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h	2014-03-20 20:01:28.000000000 -0400
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 24
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 25
+  
+  #endif /* _PATCHLEVEL_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/bash/patches/bash43-026.patch	Mon Feb 29 10:09:14 2016 -0800
@@ -0,0 +1,60 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.3
+Patch-ID:	bash43-026
+
+Bug-Reported-by:	Tavis Ormandy <[email protected]>
+Bug-Reference-ID:
+Bug-Reference-URL:	http://twitter.com/taviso/statuses/514887394294652929
+
+Bug-Description:
+
+Under certain circumstances, bash can incorrectly save a lookahead character and
+return it on a subsequent call, even when reading a new line.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.3.25/parse.y	2014-07-30 10:14:31.000000000 -0400
+--- parse.y	2014-09-25 20:20:21.000000000 -0400
+***************
+*** 2954,2957 ****
+--- 2954,2959 ----
+    word_desc_to_read = (WORD_DESC *)NULL;
+  
++   eol_ungetc_lookahead = 0;
++ 
+    current_token = '\n';		/* XXX */
+    last_read_token = '\n';
+*** ../bash-4.3.25/y.tab.c	2014-07-30 10:14:32.000000000 -0400
+--- y.tab.c	2014-09-25 20:21:48.000000000 -0400
+***************
+*** 5266,5269 ****
+--- 5266,5271 ----
+    word_desc_to_read = (WORD_DESC *)NULL;
+  
++   eol_ungetc_lookahead = 0;
++ 
+    current_token = '\n';		/* XXX */
+    last_read_token = '\n';
+***************
+*** 8540,8542 ****
+  }
+  #endif /* HANDLE_MULTIBYTE */
+- 
+--- 8542,8543 ----
+*** ../bash-4.3/patchlevel.h	2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h	2014-03-20 20:01:28.000000000 -0400
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 25
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 26
+  
+  #endif /* _PATCHLEVEL_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/bash/patches/bash43-027.patch	Mon Feb 29 10:09:14 2016 -0800
@@ -0,0 +1,221 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.3
+Patch-ID:	bash43-027
+
+Bug-Reported-by:	Florian Weimer <[email protected]>
+Bug-Reference-ID:
+Bug-Reference-URL:
+
+Bug-Description:
+
+This patch changes the encoding bash uses for exported functions to avoid
+clashes with shell variables and to avoid depending only on an environment
+variable's contents to determine whether or not to interpret it as a shell
+function.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.3.26/variables.c	2014-09-25 23:02:18.000000000 -0400
+--- variables.c	2014-09-27 20:52:04.000000000 -0400
+***************
+*** 84,87 ****
+--- 84,92 ----
+  #define ifsname(s)	((s)[0] == 'I' && (s)[1] == 'F' && (s)[2] == 'S' && (s)[3] == '\0')
+  
++ #define BASHFUNC_PREFIX		"BASH_FUNC_"
++ #define BASHFUNC_PREFLEN	10	/* == strlen(BASHFUNC_PREFIX */
++ #define BASHFUNC_SUFFIX		"%%"
++ #define BASHFUNC_SUFFLEN	2	/* == strlen(BASHFUNC_SUFFIX) */
++ 
+  extern char **environ;
+  
+***************
+*** 280,284 ****
+  static void dispose_temporary_env __P((sh_free_func_t *));     
+  
+! static inline char *mk_env_string __P((const char *, const char *));
+  static char **make_env_array_from_var_list __P((SHELL_VAR **));
+  static char **make_var_export_array __P((VAR_CONTEXT *));
+--- 285,289 ----
+  static void dispose_temporary_env __P((sh_free_func_t *));     
+  
+! static inline char *mk_env_string __P((const char *, const char *, int));
+  static char **make_env_array_from_var_list __P((SHELL_VAR **));
+  static char **make_var_export_array __P((VAR_CONTEXT *));
+***************
+*** 350,369 ****
+        /* If exported function, define it now.  Don't import functions from
+  	 the environment in privileged mode. */
+!       if (privmode == 0 && read_but_dont_execute == 0 && STREQN ("() {", string, 4))
+  	{
+  	  string_length = strlen (string);
+! 	  temp_string = (char *)xmalloc (3 + string_length + char_index);
+  
+! 	  strcpy (temp_string, name);
+! 	  temp_string[char_index] = ' ';
+! 	  strcpy (temp_string + char_index + 1, string);
+  
+  	  /* Don't import function names that are invalid identifiers from the
+  	     environment, though we still allow them to be defined as shell
+  	     variables. */
+! 	  if (legal_identifier (name))
+! 	    parse_and_execute (temp_string, name, SEVAL_NONINT|SEVAL_NOHIST|SEVAL_FUNCDEF|SEVAL_ONECMD);
+  
+! 	  if (temp_var = find_function (name))
+  	    {
+  	      VSETATTR (temp_var, (att_exported|att_imported));
+--- 355,385 ----
+        /* If exported function, define it now.  Don't import functions from
+  	 the environment in privileged mode. */
+!       if (privmode == 0 && read_but_dont_execute == 0 && 
+!           STREQN (BASHFUNC_PREFIX, name, BASHFUNC_PREFLEN) &&
+!           STREQ (BASHFUNC_SUFFIX, name + char_index - BASHFUNC_SUFFLEN) &&
+! 	  STREQN ("() {", string, 4))
+  	{
++ 	  size_t namelen;
++ 	  char *tname;		/* desired imported function name */
++ 
++ 	  namelen = char_index - BASHFUNC_PREFLEN - BASHFUNC_SUFFLEN;
++ 
++ 	  tname = name + BASHFUNC_PREFLEN;	/* start of func name */
++ 	  tname[namelen] = '\0';		/* now tname == func name */
++ 
+  	  string_length = strlen (string);
+! 	  temp_string = (char *)xmalloc (namelen + string_length + 2);
+  
+! 	  memcpy (temp_string, tname, namelen);
+! 	  temp_string[namelen] = ' ';
+! 	  memcpy (temp_string + namelen + 1, string, string_length + 1);
+  
+  	  /* Don't import function names that are invalid identifiers from the
+  	     environment, though we still allow them to be defined as shell
+  	     variables. */
+! 	  if (absolute_program (tname) == 0 && (posixly_correct == 0 || legal_identifier (tname)))
+! 	    parse_and_execute (temp_string, tname, SEVAL_NONINT|SEVAL_NOHIST|SEVAL_FUNCDEF|SEVAL_ONECMD);
+  
+! 	  if (temp_var = find_function (tname))
+  	    {
+  	      VSETATTR (temp_var, (att_exported|att_imported));
+***************
+*** 378,383 ****
+  		}
+  	      last_command_exit_value = 1;
+! 	      report_error (_("error importing function definition for `%s'"), name);
+  	    }
+  	}
+  #if defined (ARRAY_VARS)
+--- 394,402 ----
+  		}
+  	      last_command_exit_value = 1;
+! 	      report_error (_("error importing function definition for `%s'"), tname);
+  	    }
++ 
++ 	  /* Restore original suffix */
++ 	  tname[namelen] = BASHFUNC_SUFFIX[0];
+  	}
+  #if defined (ARRAY_VARS)
+***************
+*** 2955,2959 ****
+  
+    INVALIDATE_EXPORTSTR (var);
+!   var->exportstr = mk_env_string (name, value);
+  
+    array_needs_making = 1;
+--- 2974,2978 ----
+  
+    INVALIDATE_EXPORTSTR (var);
+!   var->exportstr = mk_env_string (name, value, 0);
+  
+    array_needs_making = 1;
+***************
+*** 3853,3871 ****
+  
+  static inline char *
+! mk_env_string (name, value)
+       const char *name, *value;
+  {
+!   int name_len, value_len;
+!   char	*p;
+  
+    name_len = strlen (name);
+    value_len = STRLEN (value);
+!   p = (char *)xmalloc (2 + name_len + value_len);
+!   strcpy (p, name);
+!   p[name_len] = '=';
+    if (value && *value)
+!     strcpy (p + name_len + 1, value);
+    else
+!     p[name_len + 1] = '\0';
+    return (p);
+  }
+--- 3872,3911 ----
+  
+  static inline char *
+! mk_env_string (name, value, isfunc)
+       const char *name, *value;
++      int isfunc;
+  {
+!   size_t name_len, value_len;
+!   char	*p, *q;
+  
+    name_len = strlen (name);
+    value_len = STRLEN (value);
+! 
+!   /* If we are exporting a shell function, construct the encoded function
+!      name. */
+!   if (isfunc && value)
+!     {
+!       p = (char *)xmalloc (BASHFUNC_PREFLEN + name_len + BASHFUNC_SUFFLEN + value_len + 2);
+!       q = p;
+!       memcpy (q, BASHFUNC_PREFIX, BASHFUNC_PREFLEN);
+!       q += BASHFUNC_PREFLEN;
+!       memcpy (q, name, name_len);
+!       q += name_len;
+!       memcpy (q, BASHFUNC_SUFFIX, BASHFUNC_SUFFLEN);
+!       q += BASHFUNC_SUFFLEN;
+!     }
+!   else
+!     {
+!       p = (char *)xmalloc (2 + name_len + value_len);
+!       memcpy (p, name, name_len);
+!       q = p + name_len;
+!     }
+! 
+!   q[0] = '=';
+    if (value && *value)
+!     memcpy (q + 1, value, value_len + 1);
+    else
+!     q[1] = '\0';
+! 
+    return (p);
+  }
+***************
+*** 3953,3957 ****
+  	     using the cached exportstr... */
+  	  list[list_index] = USE_EXPORTSTR ? savestring (value)
+! 					   : mk_env_string (var->name, value);
+  
+  	  if (USE_EXPORTSTR == 0)
+--- 3993,3997 ----
+  	     using the cached exportstr... */
+  	  list[list_index] = USE_EXPORTSTR ? savestring (value)
+! 					   : mk_env_string (var->name, value, function_p (var));
+  
+  	  if (USE_EXPORTSTR == 0)
+*** ../bash-4.3/patchlevel.h	2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h	2014-03-20 20:01:28.000000000 -0400
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 26
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 27
+  
+  #endif /* _PATCHLEVEL_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/bash/patches/bash43-028.patch	Mon Feb 29 10:09:14 2016 -0800
@@ -0,0 +1,2265 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	4.3
+Patch-ID:	bash43-028
+
+Bug-Reported-by:	Florian Weimer <[email protected]>
+Bug-Reference-ID:
+Bug-Reference-URL:
+
+Bug-Description:
+
+There are two local buffer overflows in parse.y that can cause the shell
+to dump core when given many here-documents attached to a single command
+or many nested loops.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.3-patched/parse.y	2014-09-25 23:02:35.000000000 -0400
+--- parse.y	2014-09-29 16:47:03.000000000 -0400
+***************
+*** 169,172 ****
+--- 169,175 ----
+  static int reserved_word_acceptable __P((int));
+  static int yylex __P((void));
++ 
++ static void push_heredoc __P((REDIRECT *));
++ static char *mk_alexpansion __P((char *));
+  static int alias_expand_token __P((char *));
+  static int time_command_acceptable __P((void));
+***************
+*** 266,270 ****
+  /* Variables to manage the task of reading here documents, because we need to
+     defer the reading until after a complete command has been collected. */
+! static REDIRECT *redir_stack[10];
+  int need_here_doc;
+  
+--- 269,275 ----
+  /* Variables to manage the task of reading here documents, because we need to
+     defer the reading until after a complete command has been collected. */
+! #define HEREDOC_MAX 16
+! 
+! static REDIRECT *redir_stack[HEREDOC_MAX];
+  int need_here_doc;
+  
+***************
+*** 308,312 ****
+     index is decremented after a case, select, or for command is parsed. */
+  #define MAX_CASE_NEST	128
+! static int word_lineno[MAX_CASE_NEST];
+  static int word_top = -1;
+  
+--- 313,317 ----
+     index is decremented after a case, select, or for command is parsed. */
+  #define MAX_CASE_NEST	128
+! static int word_lineno[MAX_CASE_NEST+1];
+  static int word_top = -1;
+  
+***************
+*** 521,525 ****
+  			  redir.filename = $2;
+  			  $$ = make_redirection (source, r_reading_until, redir, 0);
+! 			  redir_stack[need_here_doc++] = $$;
+  			}
+  	|	NUMBER LESS_LESS WORD
+--- 526,530 ----
+  			  redir.filename = $2;
+  			  $$ = make_redirection (source, r_reading_until, redir, 0);
+! 			  push_heredoc ($$);
+  			}
+  	|	NUMBER LESS_LESS WORD
+***************
+*** 528,532 ****
+  			  redir.filename = $3;
+  			  $$ = make_redirection (source, r_reading_until, redir, 0);
+! 			  redir_stack[need_here_doc++] = $$;
+  			}
+  	|	REDIR_WORD LESS_LESS WORD
+--- 533,537 ----
+  			  redir.filename = $3;
+  			  $$ = make_redirection (source, r_reading_until, redir, 0);
+! 			  push_heredoc ($$);
+  			}
+  	|	REDIR_WORD LESS_LESS WORD
+***************
+*** 535,539 ****
+  			  redir.filename = $3;
+  			  $$ = make_redirection (source, r_reading_until, redir, REDIR_VARASSIGN);
+! 			  redir_stack[need_here_doc++] = $$;
+  			}
+  	|	LESS_LESS_MINUS WORD
+--- 540,544 ----
+  			  redir.filename = $3;
+  			  $$ = make_redirection (source, r_reading_until, redir, REDIR_VARASSIGN);
+! 			  push_heredoc ($$);
+  			}
+  	|	LESS_LESS_MINUS WORD
+***************
+*** 542,546 ****
+  			  redir.filename = $2;
+  			  $$ = make_redirection (source, r_deblank_reading_until, redir, 0);
+! 			  redir_stack[need_here_doc++] = $$;
+  			}
+  	|	NUMBER LESS_LESS_MINUS WORD
+--- 547,551 ----
+  			  redir.filename = $2;
+  			  $$ = make_redirection (source, r_deblank_reading_until, redir, 0);
+! 			  push_heredoc ($$);
+  			}
+  	|	NUMBER LESS_LESS_MINUS WORD
+***************
+*** 549,553 ****
+  			  redir.filename = $3;
+  			  $$ = make_redirection (source, r_deblank_reading_until, redir, 0);
+! 			  redir_stack[need_here_doc++] = $$;
+  			}
+  	|	REDIR_WORD  LESS_LESS_MINUS WORD
+--- 554,558 ----
+  			  redir.filename = $3;
+  			  $$ = make_redirection (source, r_deblank_reading_until, redir, 0);
+! 			  push_heredoc ($$);
+  			}
+  	|	REDIR_WORD  LESS_LESS_MINUS WORD
+***************
+*** 556,560 ****
+  			  redir.filename = $3;
+  			  $$ = make_redirection (source, r_deblank_reading_until, redir, REDIR_VARASSIGN);
+! 			  redir_stack[need_here_doc++] = $$;
+  			}
+  	|	LESS_LESS_LESS WORD
+--- 561,565 ----
+  			  redir.filename = $3;
+  			  $$ = make_redirection (source, r_deblank_reading_until, redir, REDIR_VARASSIGN);
+! 			  push_heredoc ($$);
+  			}
+  	|	LESS_LESS_LESS WORD
+***************
+*** 2637,2640 ****
+--- 2642,2660 ----
+  static int esacs_needed_count;
+  
++ static void
++ push_heredoc (r)
++      REDIRECT *r;
++ {
++   if (need_here_doc >= HEREDOC_MAX)
++     {
++       last_command_exit_value = EX_BADUSAGE;
++       need_here_doc = 0;
++       report_syntax_error (_("maximum here-document count exceeded"));
++       reset_parser ();
++       exit_shell (last_command_exit_value);
++     }
++   redir_stack[need_here_doc++] = r;
++ }
++ 
+  void
+  gather_here_documents ()
+*** ../bash-4.3.27/y.tab.c	2014-10-01 11:38:24.000000000 -0400
+--- y.tab.c	2014-10-01 12:46:11.000000000 -0400
+***************
+*** 169,173 ****
+  
+  /* Copy the first part of user declarations.  */
+! #line 21 "/usr/homes/chet/src/bash/src/parse.y"
+  
+  #include "config.h"
+--- 169,173 ----
+  
+  /* Copy the first part of user declarations.  */
+! #line 21 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+  
+  #include "config.h"
+***************
+*** 320,323 ****
+--- 320,326 ----
+  static int reserved_word_acceptable __P((int));
+  static int yylex __P((void));
++ 
++ static void push_heredoc __P((REDIRECT *));
++ static char *mk_alexpansion __P((char *));
+  static int alias_expand_token __P((char *));
+  static int time_command_acceptable __P((void));
+***************
+*** 417,421 ****
+  /* Variables to manage the task of reading here documents, because we need to
+     defer the reading until after a complete command has been collected. */
+! static REDIRECT *redir_stack[10];
+  int need_here_doc;
+  
+--- 420,426 ----
+  /* Variables to manage the task of reading here documents, because we need to
+     defer the reading until after a complete command has been collected. */
+! #define HEREDOC_MAX 16
+! 
+! static REDIRECT *redir_stack[HEREDOC_MAX];
+  int need_here_doc;
+  
+***************
+*** 459,463 ****
+     index is decremented after a case, select, or for command is parsed. */
+  #define MAX_CASE_NEST	128
+! static int word_lineno[MAX_CASE_NEST];
+  static int word_top = -1;
+  
+--- 464,468 ----
+     index is decremented after a case, select, or for command is parsed. */
+  #define MAX_CASE_NEST	128
+! static int word_lineno[MAX_CASE_NEST+1];
+  static int word_top = -1;
+  
+***************
+*** 493,497 ****
+  #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
+  typedef union YYSTYPE
+! #line 324 "/usr/homes/chet/src/bash/src/parse.y"
+  {
+    WORD_DESC *word;		/* the word that we read. */
+--- 498,502 ----
+  #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
+  typedef union YYSTYPE
+! #line 329 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+  {
+    WORD_DESC *word;		/* the word that we read. */
+***************
+*** 504,508 ****
+  }
+  /* Line 193 of yacc.c.  */
+! #line 507 "y.tab.c"
+  	YYSTYPE;
+  # define yystype YYSTYPE /* obsolescent; will be withdrawn */
+--- 509,513 ----
+  }
+  /* Line 193 of yacc.c.  */
+! #line 512 "y.tab.c"
+  	YYSTYPE;
+  # define yystype YYSTYPE /* obsolescent; will be withdrawn */
+***************
+*** 517,521 ****
+  
+  /* Line 216 of yacc.c.  */
+! #line 520 "y.tab.c"
+  
+  #ifdef short
+--- 522,526 ----
+  
+  /* Line 216 of yacc.c.  */
+! #line 525 "y.tab.c"
+  
+  #ifdef short
+***************
+*** 887,907 ****
+  static const yytype_uint16 yyrline[] =
+  {
+!        0,   377,   377,   388,   397,   412,   422,   424,   428,   434,
+!      440,   446,   452,   458,   464,   470,   476,   482,   488,   494,
+!      500,   506,   512,   518,   525,   532,   539,   546,   553,   560,
+!      566,   572,   578,   584,   590,   596,   602,   608,   614,   620,
+!      626,   632,   638,   644,   650,   656,   662,   668,   674,   680,
+!      686,   692,   700,   702,   704,   708,   712,   723,   725,   729,
+!      731,   733,   749,   751,   755,   757,   759,   761,   763,   765,
+!      767,   769,   771,   773,   775,   779,   784,   789,   794,   799,
+!      804,   809,   814,   821,   826,   831,   836,   843,   848,   853,
+!      858,   863,   868,   875,   880,   885,   892,   895,   898,   902,
+!      904,   935,   942,   947,   964,   969,   986,   993,   995,   997,
+!     1002,  1006,  1010,  1014,  1016,  1018,  1022,  1023,  1027,  1029,
+!     1031,  1033,  1037,  1039,  1041,  1043,  1045,  1047,  1051,  1053,
+!     1062,  1070,  1071,  1077,  1078,  1085,  1089,  1091,  1093,  1100,
+!     1102,  1104,  1108,  1109,  1112,  1114,  1116,  1120,  1121,  1130,
+!     1143,  1159,  1174,  1176,  1178,  1185,  1188,  1192,  1194,  1200,
+!     1206,  1223,  1243,  1245,  1268,  1272,  1274,  1276
+  };
+  #endif
+--- 892,912 ----
+  static const yytype_uint16 yyrline[] =
+  {
+!        0,   382,   382,   393,   402,   417,   427,   429,   433,   439,
+!      445,   451,   457,   463,   469,   475,   481,   487,   493,   499,
+!      505,   511,   517,   523,   530,   537,   544,   551,   558,   565,
+!      571,   577,   583,   589,   595,   601,   607,   613,   619,   625,
+!      631,   637,   643,   649,   655,   661,   667,   673,   679,   685,
+!      691,   697,   705,   707,   709,   713,   717,   728,   730,   734,
+!      736,   738,   754,   756,   760,   762,   764,   766,   768,   770,
+!      772,   774,   776,   778,   780,   784,   789,   794,   799,   804,
+!      809,   814,   819,   826,   831,   836,   841,   848,   853,   858,
+!      863,   868,   873,   880,   885,   890,   897,   900,   903,   907,
+!      909,   940,   947,   952,   969,   974,   991,   998,  1000,  1002,
+!     1007,  1011,  1015,  1019,  1021,  1023,  1027,  1028,  1032,  1034,
+!     1036,  1038,  1042,  1044,  1046,  1048,  1050,  1052,  1056,  1058,
+!     1067,  1075,  1076,  1082,  1083,  1090,  1094,  1096,  1098,  1105,
+!     1107,  1109,  1113,  1114,  1117,  1119,  1121,  1125,  1126,  1135,
+!     1148,  1164,  1179,  1181,  1183,  1190,  1193,  1197,  1199,  1205,
+!     1211,  1228,  1248,  1250,  1273,  1277,  1279,  1281
+  };
+  #endif
+***************
+*** 2094,2098 ****
+      {
+          case 2:
+! #line 378 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  /* Case of regular command.  Discard the error
+--- 2099,2103 ----
+      {
+          case 2:
+! #line 383 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  /* Case of regular command.  Discard the error
+***************
+*** 2108,2112 ****
+  
+    case 3:
+! #line 389 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  /* Case of regular command, but not a very
+--- 2113,2117 ----
+  
+    case 3:
+! #line 394 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  /* Case of regular command, but not a very
+***************
+*** 2120,2124 ****
+  
+    case 4:
+! #line 398 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  /* Error during parsing.  Return NULL command. */
+--- 2125,2129 ----
+  
+    case 4:
+! #line 403 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  /* Error during parsing.  Return NULL command. */
+***************
+*** 2138,2142 ****
+  
+    case 5:
+! #line 413 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  /* Case of EOF seen by itself.  Do ignoreeof or
+--- 2143,2147 ----
+  
+    case 5:
+! #line 418 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  /* Case of EOF seen by itself.  Do ignoreeof or
+***************
+*** 2149,2163 ****
+  
+    case 6:
+! #line 423 "/usr/homes/chet/src/bash/src/parse.y"
+      { (yyval.word_list) = make_word_list ((yyvsp[(1) - (1)].word), (WORD_LIST *)NULL); }
+      break;
+  
+    case 7:
+! #line 425 "/usr/homes/chet/src/bash/src/parse.y"
+      { (yyval.word_list) = make_word_list ((yyvsp[(2) - (2)].word), (yyvsp[(1) - (2)].word_list)); }
+      break;
+  
+    case 8:
+! #line 429 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  source.dest = 1;
+--- 2154,2168 ----
+  
+    case 6:
+! #line 428 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      { (yyval.word_list) = make_word_list ((yyvsp[(1) - (1)].word), (WORD_LIST *)NULL); }
+      break;
+  
+    case 7:
+! #line 430 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      { (yyval.word_list) = make_word_list ((yyvsp[(2) - (2)].word), (yyvsp[(1) - (2)].word_list)); }
+      break;
+  
+    case 8:
+! #line 434 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  source.dest = 1;
+***************
+*** 2168,2172 ****
+  
+    case 9:
+! #line 435 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  source.dest = 0;
+--- 2173,2177 ----
+  
+    case 9:
+! #line 440 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  source.dest = 0;
+***************
+*** 2177,2181 ****
+  
+    case 10:
+! #line 441 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  source.dest = (yyvsp[(1) - (3)].number);
+--- 2182,2186 ----
+  
+    case 10:
+! #line 446 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  source.dest = (yyvsp[(1) - (3)].number);
+***************
+*** 2186,2190 ****
+  
+    case 11:
+! #line 447 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  source.dest = (yyvsp[(1) - (3)].number);
+--- 2191,2195 ----
+  
+    case 11:
+! #line 452 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  source.dest = (yyvsp[(1) - (3)].number);
+***************
+*** 2195,2199 ****
+  
+    case 12:
+! #line 453 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  source.filename = (yyvsp[(1) - (3)].word);
+--- 2200,2204 ----
+  
+    case 12:
+! #line 458 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  source.filename = (yyvsp[(1) - (3)].word);
+***************
+*** 2204,2208 ****
+  
+    case 13:
+! #line 459 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  source.filename = (yyvsp[(1) - (3)].word);
+--- 2209,2213 ----
+  
+    case 13:
+! #line 464 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  source.filename = (yyvsp[(1) - (3)].word);
+***************
+*** 2213,2217 ****
+  
+    case 14:
+! #line 465 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  source.dest = 1;
+--- 2218,2222 ----
+  
+    case 14:
+! #line 470 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  source.dest = 1;
+***************
+*** 2222,2226 ****
+  
+    case 15:
+! #line 471 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  source.dest = (yyvsp[(1) - (3)].number);
+--- 2227,2231 ----
+  
+    case 15:
+! #line 476 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  source.dest = (yyvsp[(1) - (3)].number);
+***************
+*** 2231,2235 ****
+  
+    case 16:
+! #line 477 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  source.filename = (yyvsp[(1) - (3)].word);
+--- 2236,2240 ----
+  
+    case 16:
+! #line 482 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  source.filename = (yyvsp[(1) - (3)].word);
+***************
+*** 2240,2244 ****
+  
+    case 17:
+! #line 483 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  source.dest = 1;
+--- 2245,2249 ----
+  
+    case 17:
+! #line 488 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  source.dest = 1;
+***************
+*** 2249,2253 ****
+  
+    case 18:
+! #line 489 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  source.dest = (yyvsp[(1) - (3)].number);
+--- 2254,2258 ----
+  
+    case 18:
+! #line 494 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  source.dest = (yyvsp[(1) - (3)].number);
+***************
+*** 2258,2262 ****
+  
+    case 19:
+! #line 495 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  source.filename = (yyvsp[(1) - (3)].word);
+--- 2263,2267 ----
+  
+    case 19:
+! #line 500 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  source.filename = (yyvsp[(1) - (3)].word);
+***************
+*** 2267,2271 ****
+  
+    case 20:
+! #line 501 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  source.dest = 0;
+--- 2272,2276 ----
+  
+    case 20:
+! #line 506 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  source.dest = 0;
+***************
+*** 2276,2280 ****
+  
+    case 21:
+! #line 507 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  source.dest = (yyvsp[(1) - (3)].number);
+--- 2281,2285 ----
+  
+    case 21:
+! #line 512 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  source.dest = (yyvsp[(1) - (3)].number);
+***************
+*** 2285,2289 ****
+  
+    case 22:
+! #line 513 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  source.filename = (yyvsp[(1) - (3)].word);
+--- 2290,2294 ----
+  
+    case 22:
+! #line 518 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  source.filename = (yyvsp[(1) - (3)].word);
+***************
+*** 2294,2358 ****
+  
+    case 23:
+! #line 519 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  source.dest = 0;
+  			  redir.filename = (yyvsp[(2) - (2)].word);
+  			  (yyval.redirect) = make_redirection (source, r_reading_until, redir, 0);
+! 			  redir_stack[need_here_doc++] = (yyval.redirect);
+  			}
+      break;
+  
+    case 24:
+! #line 526 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  source.dest = (yyvsp[(1) - (3)].number);
+  			  redir.filename = (yyvsp[(3) - (3)].word);
+  			  (yyval.redirect) = make_redirection (source, r_reading_until, redir, 0);
+! 			  redir_stack[need_here_doc++] = (yyval.redirect);
+  			}
+      break;
+  
+    case 25:
+! #line 533 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  source.filename = (yyvsp[(1) - (3)].word);
+  			  redir.filename = (yyvsp[(3) - (3)].word);
+  			  (yyval.redirect) = make_redirection (source, r_reading_until, redir, REDIR_VARASSIGN);
+! 			  redir_stack[need_here_doc++] = (yyval.redirect);
+  			}
+      break;
+  
+    case 26:
+! #line 540 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  source.dest = 0;
+  			  redir.filename = (yyvsp[(2) - (2)].word);
+  			  (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, 0);
+! 			  redir_stack[need_here_doc++] = (yyval.redirect);
+  			}
+      break;
+  
+    case 27:
+! #line 547 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  source.dest = (yyvsp[(1) - (3)].number);
+  			  redir.filename = (yyvsp[(3) - (3)].word);
+  			  (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, 0);
+! 			  redir_stack[need_here_doc++] = (yyval.redirect);
+  			}
+      break;
+  
+    case 28:
+! #line 554 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  source.filename = (yyvsp[(1) - (3)].word);
+  			  redir.filename = (yyvsp[(3) - (3)].word);
+  			  (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, REDIR_VARASSIGN);
+! 			  redir_stack[need_here_doc++] = (yyval.redirect);
+  			}
+      break;
+  
+    case 29:
+! #line 561 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  source.dest = 0;
+--- 2299,2363 ----
+  
+    case 23:
+! #line 524 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  source.dest = 0;
+  			  redir.filename = (yyvsp[(2) - (2)].word);
+  			  (yyval.redirect) = make_redirection (source, r_reading_until, redir, 0);
+! 			  push_heredoc ((yyval.redirect));
+  			}
+      break;
+  
+    case 24:
+! #line 531 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  source.dest = (yyvsp[(1) - (3)].number);
+  			  redir.filename = (yyvsp[(3) - (3)].word);
+  			  (yyval.redirect) = make_redirection (source, r_reading_until, redir, 0);
+! 			  push_heredoc ((yyval.redirect));
+  			}
+      break;
+  
+    case 25:
+! #line 538 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  source.filename = (yyvsp[(1) - (3)].word);
+  			  redir.filename = (yyvsp[(3) - (3)].word);
+  			  (yyval.redirect) = make_redirection (source, r_reading_until, redir, REDIR_VARASSIGN);
+! 			  push_heredoc ((yyval.redirect));
+  			}
+      break;
+  
+    case 26:
+! #line 545 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  source.dest = 0;
+  			  redir.filename = (yyvsp[(2) - (2)].word);
+  			  (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, 0);
+! 			  push_heredoc ((yyval.redirect));
+  			}
+      break;
+  
+    case 27:
+! #line 552 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  source.dest = (yyvsp[(1) - (3)].number);
+  			  redir.filename = (yyvsp[(3) - (3)].word);
+  			  (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, 0);
+! 			  push_heredoc ((yyval.redirect));
+  			}
+      break;
+  
+    case 28:
+! #line 559 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  source.filename = (yyvsp[(1) - (3)].word);
+  			  redir.filename = (yyvsp[(3) - (3)].word);
+  			  (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, REDIR_VARASSIGN);
+! 			  push_heredoc ((yyval.redirect));
+  			}
+      break;
+  
+    case 29:
+! #line 566 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  source.dest = 0;
+***************
+*** 2363,2367 ****
+  
+    case 30:
+! #line 567 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  source.dest = (yyvsp[(1) - (3)].number);
+--- 2368,2372 ----
+  
+    case 30:
+! #line 572 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  source.dest = (yyvsp[(1) - (3)].number);
+***************
+*** 2372,2376 ****
+  
+    case 31:
+! #line 573 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  source.filename = (yyvsp[(1) - (3)].word);
+--- 2377,2381 ----
+  
+    case 31:
+! #line 578 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  source.filename = (yyvsp[(1) - (3)].word);
+***************
+*** 2381,2385 ****
+  
+    case 32:
+! #line 579 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  source.dest = 0;
+--- 2386,2390 ----
+  
+    case 32:
+! #line 584 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  source.dest = 0;
+***************
+*** 2390,2394 ****
+  
+    case 33:
+! #line 585 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  source.dest = (yyvsp[(1) - (3)].number);
+--- 2395,2399 ----
+  
+    case 33:
+! #line 590 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  source.dest = (yyvsp[(1) - (3)].number);
+***************
+*** 2399,2403 ****
+  
+    case 34:
+! #line 591 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  source.filename = (yyvsp[(1) - (3)].word);
+--- 2404,2408 ----
+  
+    case 34:
+! #line 596 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  source.filename = (yyvsp[(1) - (3)].word);
+***************
+*** 2408,2412 ****
+  
+    case 35:
+! #line 597 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  source.dest = 1;
+--- 2413,2417 ----
+  
+    case 35:
+! #line 602 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  source.dest = 1;
+***************
+*** 2417,2421 ****
+  
+    case 36:
+! #line 603 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  source.dest = (yyvsp[(1) - (3)].number);
+--- 2422,2426 ----
+  
+    case 36:
+! #line 608 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  source.dest = (yyvsp[(1) - (3)].number);
+***************
+*** 2426,2430 ****
+  
+    case 37:
+! #line 609 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  source.filename = (yyvsp[(1) - (3)].word);
+--- 2431,2435 ----
+  
+    case 37:
+! #line 614 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  source.filename = (yyvsp[(1) - (3)].word);
+***************
+*** 2435,2439 ****
+  
+    case 38:
+! #line 615 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  source.dest = 0;
+--- 2440,2444 ----
+  
+    case 38:
+! #line 620 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  source.dest = 0;
+***************
+*** 2444,2448 ****
+  
+    case 39:
+! #line 621 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  source.dest = (yyvsp[(1) - (3)].number);
+--- 2449,2453 ----
+  
+    case 39:
+! #line 626 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  source.dest = (yyvsp[(1) - (3)].number);
+***************
+*** 2453,2457 ****
+  
+    case 40:
+! #line 627 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  source.filename = (yyvsp[(1) - (3)].word);
+--- 2458,2462 ----
+  
+    case 40:
+! #line 632 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  source.filename = (yyvsp[(1) - (3)].word);
+***************
+*** 2462,2466 ****
+  
+    case 41:
+! #line 633 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  source.dest = 1;
+--- 2467,2471 ----
+  
+    case 41:
+! #line 638 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  source.dest = 1;
+***************
+*** 2471,2475 ****
+  
+    case 42:
+! #line 639 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  source.dest = (yyvsp[(1) - (3)].number);
+--- 2476,2480 ----
+  
+    case 42:
+! #line 644 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  source.dest = (yyvsp[(1) - (3)].number);
+***************
+*** 2480,2484 ****
+  
+    case 43:
+! #line 645 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  source.filename = (yyvsp[(1) - (3)].word);
+--- 2485,2489 ----
+  
+    case 43:
+! #line 650 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  source.filename = (yyvsp[(1) - (3)].word);
+***************
+*** 2489,2493 ****
+  
+    case 44:
+! #line 651 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  source.dest = 1;
+--- 2494,2498 ----
+  
+    case 44:
+! #line 656 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  source.dest = 1;
+***************
+*** 2498,2502 ****
+  
+    case 45:
+! #line 657 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  source.dest = (yyvsp[(1) - (3)].number);
+--- 2503,2507 ----
+  
+    case 45:
+! #line 662 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  source.dest = (yyvsp[(1) - (3)].number);
+***************
+*** 2507,2511 ****
+  
+    case 46:
+! #line 663 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  source.filename = (yyvsp[(1) - (3)].word);
+--- 2512,2516 ----
+  
+    case 46:
+! #line 668 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  source.filename = (yyvsp[(1) - (3)].word);
+***************
+*** 2516,2520 ****
+  
+    case 47:
+! #line 669 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  source.dest = 0;
+--- 2521,2525 ----
+  
+    case 47:
+! #line 674 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  source.dest = 0;
+***************
+*** 2525,2529 ****
+  
+    case 48:
+! #line 675 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  source.dest = (yyvsp[(1) - (3)].number);
+--- 2530,2534 ----
+  
+    case 48:
+! #line 680 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  source.dest = (yyvsp[(1) - (3)].number);
+***************
+*** 2534,2538 ****
+  
+    case 49:
+! #line 681 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  source.filename = (yyvsp[(1) - (3)].word);
+--- 2539,2543 ----
+  
+    case 49:
+! #line 686 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  source.filename = (yyvsp[(1) - (3)].word);
+***************
+*** 2543,2547 ****
+  
+    case 50:
+! #line 687 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  source.dest = 1;
+--- 2548,2552 ----
+  
+    case 50:
+! #line 692 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  source.dest = 1;
+***************
+*** 2552,2556 ****
+  
+    case 51:
+! #line 693 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  source.dest = 1;
+--- 2557,2561 ----
+  
+    case 51:
+! #line 698 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  source.dest = 1;
+***************
+*** 2561,2580 ****
+  
+    case 52:
+! #line 701 "/usr/homes/chet/src/bash/src/parse.y"
+      { (yyval.element).word = (yyvsp[(1) - (1)].word); (yyval.element).redirect = 0; }
+      break;
+  
+    case 53:
+! #line 703 "/usr/homes/chet/src/bash/src/parse.y"
+      { (yyval.element).word = (yyvsp[(1) - (1)].word); (yyval.element).redirect = 0; }
+      break;
+  
+    case 54:
+! #line 705 "/usr/homes/chet/src/bash/src/parse.y"
+      { (yyval.element).redirect = (yyvsp[(1) - (1)].redirect); (yyval.element).word = 0; }
+      break;
+  
+    case 55:
+! #line 709 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  (yyval.redirect) = (yyvsp[(1) - (1)].redirect);
+--- 2566,2585 ----
+  
+    case 52:
+! #line 706 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      { (yyval.element).word = (yyvsp[(1) - (1)].word); (yyval.element).redirect = 0; }
+      break;
+  
+    case 53:
+! #line 708 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      { (yyval.element).word = (yyvsp[(1) - (1)].word); (yyval.element).redirect = 0; }
+      break;
+  
+    case 54:
+! #line 710 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      { (yyval.element).redirect = (yyvsp[(1) - (1)].redirect); (yyval.element).word = 0; }
+      break;
+  
+    case 55:
+! #line 714 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  (yyval.redirect) = (yyvsp[(1) - (1)].redirect);
+***************
+*** 2583,2587 ****
+  
+    case 56:
+! #line 713 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  register REDIRECT *t;
+--- 2588,2592 ----
+  
+    case 56:
+! #line 718 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  register REDIRECT *t;
+***************
+*** 2595,2619 ****
+  
+    case 57:
+! #line 724 "/usr/homes/chet/src/bash/src/parse.y"
+      { (yyval.command) = make_simple_command ((yyvsp[(1) - (1)].element), (COMMAND *)NULL); }
+      break;
+  
+    case 58:
+! #line 726 "/usr/homes/chet/src/bash/src/parse.y"
+      { (yyval.command) = make_simple_command ((yyvsp[(2) - (2)].element), (yyvsp[(1) - (2)].command)); }
+      break;
+  
+    case 59:
+! #line 730 "/usr/homes/chet/src/bash/src/parse.y"
+      { (yyval.command) = clean_simple_command ((yyvsp[(1) - (1)].command)); }
+      break;
+  
+    case 60:
+! #line 732 "/usr/homes/chet/src/bash/src/parse.y"
+      { (yyval.command) = (yyvsp[(1) - (1)].command); }
+      break;
+  
+    case 61:
+! #line 734 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  COMMAND *tc;
+--- 2600,2624 ----
+  
+    case 57:
+! #line 729 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      { (yyval.command) = make_simple_command ((yyvsp[(1) - (1)].element), (COMMAND *)NULL); }
+      break;
+  
+    case 58:
+! #line 731 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      { (yyval.command) = make_simple_command ((yyvsp[(2) - (2)].element), (yyvsp[(1) - (2)].command)); }
+      break;
+  
+    case 59:
+! #line 735 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      { (yyval.command) = clean_simple_command ((yyvsp[(1) - (1)].command)); }
+      break;
+  
+    case 60:
+! #line 737 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      { (yyval.command) = (yyvsp[(1) - (1)].command); }
+      break;
+  
+    case 61:
+! #line 739 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  COMMAND *tc;
+***************
+*** 2634,2703 ****
+  
+    case 62:
+! #line 750 "/usr/homes/chet/src/bash/src/parse.y"
+      { (yyval.command) = (yyvsp[(1) - (1)].command); }
+      break;
+  
+    case 63:
+! #line 752 "/usr/homes/chet/src/bash/src/parse.y"
+      { (yyval.command) = (yyvsp[(1) - (1)].command); }
+      break;
+  
+    case 64:
+! #line 756 "/usr/homes/chet/src/bash/src/parse.y"
+      { (yyval.command) = (yyvsp[(1) - (1)].command); }
+      break;
+  
+    case 65:
+! #line 758 "/usr/homes/chet/src/bash/src/parse.y"
+      { (yyval.command) = (yyvsp[(1) - (1)].command); }
+      break;
+  
+    case 66:
+! #line 760 "/usr/homes/chet/src/bash/src/parse.y"
+      { (yyval.command) = make_while_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command)); }
+      break;
+  
+    case 67:
+! #line 762 "/usr/homes/chet/src/bash/src/parse.y"
+      { (yyval.command) = make_until_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command)); }
+      break;
+  
+    case 68:
+! #line 764 "/usr/homes/chet/src/bash/src/parse.y"
+      { (yyval.command) = (yyvsp[(1) - (1)].command); }
+      break;
+  
+    case 69:
+! #line 766 "/usr/homes/chet/src/bash/src/parse.y"
+      { (yyval.command) = (yyvsp[(1) - (1)].command); }
+      break;
+  
+    case 70:
+! #line 768 "/usr/homes/chet/src/bash/src/parse.y"
+      { (yyval.command) = (yyvsp[(1) - (1)].command); }
+      break;
+  
+    case 71:
+! #line 770 "/usr/homes/chet/src/bash/src/parse.y"
+      { (yyval.command) = (yyvsp[(1) - (1)].command); }
+      break;
+  
+    case 72:
+! #line 772 "/usr/homes/chet/src/bash/src/parse.y"
+      { (yyval.command) = (yyvsp[(1) - (1)].command); }
+      break;
+  
+    case 73:
+! #line 774 "/usr/homes/chet/src/bash/src/parse.y"
+      { (yyval.command) = (yyvsp[(1) - (1)].command); }
+      break;
+  
+    case 74:
+! #line 776 "/usr/homes/chet/src/bash/src/parse.y"
+      { (yyval.command) = (yyvsp[(1) - (1)].command); }
+      break;
+  
+    case 75:
+! #line 780 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  (yyval.command) = make_for_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"[email protected]\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
+--- 2639,2708 ----
+  
+    case 62:
+! #line 755 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      { (yyval.command) = (yyvsp[(1) - (1)].command); }
+      break;
+  
+    case 63:
+! #line 757 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      { (yyval.command) = (yyvsp[(1) - (1)].command); }
+      break;
+  
+    case 64:
+! #line 761 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      { (yyval.command) = (yyvsp[(1) - (1)].command); }
+      break;
+  
+    case 65:
+! #line 763 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      { (yyval.command) = (yyvsp[(1) - (1)].command); }
+      break;
+  
+    case 66:
+! #line 765 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      { (yyval.command) = make_while_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command)); }
+      break;
+  
+    case 67:
+! #line 767 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      { (yyval.command) = make_until_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command)); }
+      break;
+  
+    case 68:
+! #line 769 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      { (yyval.command) = (yyvsp[(1) - (1)].command); }
+      break;
+  
+    case 69:
+! #line 771 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      { (yyval.command) = (yyvsp[(1) - (1)].command); }
+      break;
+  
+    case 70:
+! #line 773 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      { (yyval.command) = (yyvsp[(1) - (1)].command); }
+      break;
+  
+    case 71:
+! #line 775 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      { (yyval.command) = (yyvsp[(1) - (1)].command); }
+      break;
+  
+    case 72:
+! #line 777 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      { (yyval.command) = (yyvsp[(1) - (1)].command); }
+      break;
+  
+    case 73:
+! #line 779 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      { (yyval.command) = (yyvsp[(1) - (1)].command); }
+      break;
+  
+    case 74:
+! #line 781 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      { (yyval.command) = (yyvsp[(1) - (1)].command); }
+      break;
+  
+    case 75:
+! #line 785 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  (yyval.command) = make_for_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"[email protected]\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
+***************
+*** 2707,2711 ****
+  
+    case 76:
+! #line 785 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  (yyval.command) = make_for_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"[email protected]\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
+--- 2712,2716 ----
+  
+    case 76:
+! #line 790 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  (yyval.command) = make_for_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"[email protected]\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
+***************
+*** 2715,2719 ****
+  
+    case 77:
+! #line 790 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  (yyval.command) = make_for_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"[email protected]\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
+--- 2720,2724 ----
+  
+    case 77:
+! #line 795 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  (yyval.command) = make_for_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"[email protected]\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
+***************
+*** 2723,2727 ****
+  
+    case 78:
+! #line 795 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  (yyval.command) = make_for_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"[email protected]\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
+--- 2728,2732 ----
+  
+    case 78:
+! #line 800 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  (yyval.command) = make_for_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"[email protected]\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
+***************
+*** 2731,2735 ****
+  
+    case 79:
+! #line 800 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  (yyval.command) = make_for_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]);
+--- 2736,2740 ----
+  
+    case 79:
+! #line 805 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  (yyval.command) = make_for_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]);
+***************
+*** 2739,2743 ****
+  
+    case 80:
+! #line 805 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  (yyval.command) = make_for_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]);
+--- 2744,2748 ----
+  
+    case 80:
+! #line 810 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  (yyval.command) = make_for_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]);
+***************
+*** 2747,2751 ****
+  
+    case 81:
+! #line 810 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  (yyval.command) = make_for_command ((yyvsp[(2) - (9)].word), (WORD_LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]);
+--- 2752,2756 ----
+  
+    case 81:
+! #line 815 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  (yyval.command) = make_for_command ((yyvsp[(2) - (9)].word), (WORD_LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]);
+***************
+*** 2755,2759 ****
+  
+    case 82:
+! #line 815 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  (yyval.command) = make_for_command ((yyvsp[(2) - (9)].word), (WORD_LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]);
+--- 2760,2764 ----
+  
+    case 82:
+! #line 820 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  (yyval.command) = make_for_command ((yyvsp[(2) - (9)].word), (WORD_LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]);
+***************
+*** 2763,2767 ****
+  
+    case 83:
+! #line 822 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  				  (yyval.command) = make_arith_for_command ((yyvsp[(2) - (7)].word_list), (yyvsp[(6) - (7)].command), arith_for_lineno);
+--- 2768,2772 ----
+  
+    case 83:
+! #line 827 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  				  (yyval.command) = make_arith_for_command ((yyvsp[(2) - (7)].word_list), (yyvsp[(6) - (7)].command), arith_for_lineno);
+***************
+*** 2771,2775 ****
+  
+    case 84:
+! #line 827 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  				  (yyval.command) = make_arith_for_command ((yyvsp[(2) - (7)].word_list), (yyvsp[(6) - (7)].command), arith_for_lineno);
+--- 2776,2780 ----
+  
+    case 84:
+! #line 832 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  				  (yyval.command) = make_arith_for_command ((yyvsp[(2) - (7)].word_list), (yyvsp[(6) - (7)].command), arith_for_lineno);
+***************
+*** 2779,2783 ****
+  
+    case 85:
+! #line 832 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  				  (yyval.command) = make_arith_for_command ((yyvsp[(2) - (5)].word_list), (yyvsp[(4) - (5)].command), arith_for_lineno);
+--- 2784,2788 ----
+  
+    case 85:
+! #line 837 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  				  (yyval.command) = make_arith_for_command ((yyvsp[(2) - (5)].word_list), (yyvsp[(4) - (5)].command), arith_for_lineno);
+***************
+*** 2787,2791 ****
+  
+    case 86:
+! #line 837 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  				  (yyval.command) = make_arith_for_command ((yyvsp[(2) - (5)].word_list), (yyvsp[(4) - (5)].command), arith_for_lineno);
+--- 2792,2796 ----
+  
+    case 86:
+! #line 842 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  				  (yyval.command) = make_arith_for_command ((yyvsp[(2) - (5)].word_list), (yyvsp[(4) - (5)].command), arith_for_lineno);
+***************
+*** 2795,2799 ****
+  
+    case 87:
+! #line 844 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  (yyval.command) = make_select_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"[email protected]\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
+--- 2800,2804 ----
+  
+    case 87:
+! #line 849 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  (yyval.command) = make_select_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"[email protected]\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
+***************
+*** 2803,2807 ****
+  
+    case 88:
+! #line 849 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  (yyval.command) = make_select_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"[email protected]\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
+--- 2808,2812 ----
+  
+    case 88:
+! #line 854 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  (yyval.command) = make_select_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"[email protected]\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
+***************
+*** 2811,2815 ****
+  
+    case 89:
+! #line 854 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  (yyval.command) = make_select_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"[email protected]\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
+--- 2816,2820 ----
+  
+    case 89:
+! #line 859 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  (yyval.command) = make_select_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"[email protected]\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
+***************
+*** 2819,2823 ****
+  
+    case 90:
+! #line 859 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  (yyval.command) = make_select_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"[email protected]\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
+--- 2824,2828 ----
+  
+    case 90:
+! #line 864 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  (yyval.command) = make_select_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"[email protected]\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
+***************
+*** 2827,2831 ****
+  
+    case 91:
+! #line 864 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  (yyval.command) = make_select_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]);
+--- 2832,2836 ----
+  
+    case 91:
+! #line 869 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  (yyval.command) = make_select_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]);
+***************
+*** 2835,2839 ****
+  
+    case 92:
+! #line 869 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  (yyval.command) = make_select_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]);
+--- 2840,2844 ----
+  
+    case 92:
+! #line 874 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  (yyval.command) = make_select_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]);
+***************
+*** 2843,2847 ****
+  
+    case 93:
+! #line 876 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  (yyval.command) = make_case_command ((yyvsp[(2) - (6)].word), (PATTERN_LIST *)NULL, word_lineno[word_top]);
+--- 2848,2852 ----
+  
+    case 93:
+! #line 881 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  (yyval.command) = make_case_command ((yyvsp[(2) - (6)].word), (PATTERN_LIST *)NULL, word_lineno[word_top]);
+***************
+*** 2851,2855 ****
+  
+    case 94:
+! #line 881 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  (yyval.command) = make_case_command ((yyvsp[(2) - (7)].word), (yyvsp[(5) - (7)].pattern), word_lineno[word_top]);
+--- 2856,2860 ----
+  
+    case 94:
+! #line 886 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  (yyval.command) = make_case_command ((yyvsp[(2) - (7)].word), (yyvsp[(5) - (7)].pattern), word_lineno[word_top]);
+***************
+*** 2859,2863 ****
+  
+    case 95:
+! #line 886 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  (yyval.command) = make_case_command ((yyvsp[(2) - (6)].word), (yyvsp[(5) - (6)].pattern), word_lineno[word_top]);
+--- 2864,2868 ----
+  
+    case 95:
+! #line 891 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  (yyval.command) = make_case_command ((yyvsp[(2) - (6)].word), (yyvsp[(5) - (6)].pattern), word_lineno[word_top]);
+***************
+*** 2867,2891 ****
+  
+    case 96:
+! #line 893 "/usr/homes/chet/src/bash/src/parse.y"
+      { (yyval.command) = make_function_def ((yyvsp[(1) - (5)].word), (yyvsp[(5) - (5)].command), function_dstart, function_bstart); }
+      break;
+  
+    case 97:
+! #line 896 "/usr/homes/chet/src/bash/src/parse.y"
+      { (yyval.command) = make_function_def ((yyvsp[(2) - (6)].word), (yyvsp[(6) - (6)].command), function_dstart, function_bstart); }
+      break;
+  
+    case 98:
+! #line 899 "/usr/homes/chet/src/bash/src/parse.y"
+      { (yyval.command) = make_function_def ((yyvsp[(2) - (4)].word), (yyvsp[(4) - (4)].command), function_dstart, function_bstart); }
+      break;
+  
+    case 99:
+! #line 903 "/usr/homes/chet/src/bash/src/parse.y"
+      { (yyval.command) = (yyvsp[(1) - (1)].command); }
+      break;
+  
+    case 100:
+! #line 905 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  COMMAND *tc;
+--- 2872,2896 ----
+  
+    case 96:
+! #line 898 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      { (yyval.command) = make_function_def ((yyvsp[(1) - (5)].word), (yyvsp[(5) - (5)].command), function_dstart, function_bstart); }
+      break;
+  
+    case 97:
+! #line 901 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      { (yyval.command) = make_function_def ((yyvsp[(2) - (6)].word), (yyvsp[(6) - (6)].command), function_dstart, function_bstart); }
+      break;
+  
+    case 98:
+! #line 904 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      { (yyval.command) = make_function_def ((yyvsp[(2) - (4)].word), (yyvsp[(4) - (4)].command), function_dstart, function_bstart); }
+      break;
+  
+    case 99:
+! #line 908 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      { (yyval.command) = (yyvsp[(1) - (1)].command); }
+      break;
+  
+    case 100:
+! #line 910 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  COMMAND *tc;
+***************
+*** 2919,2923 ****
+  
+    case 101:
+! #line 936 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  (yyval.command) = make_subshell_command ((yyvsp[(2) - (3)].command));
+--- 2924,2928 ----
+  
+    case 101:
+! #line 941 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  (yyval.command) = make_subshell_command ((yyvsp[(2) - (3)].command));
+***************
+*** 2927,2931 ****
+  
+    case 102:
+! #line 943 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  (yyval.command) = make_coproc_command ("COPROC", (yyvsp[(2) - (2)].command));
+--- 2932,2936 ----
+  
+    case 102:
+! #line 948 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  (yyval.command) = make_coproc_command ("COPROC", (yyvsp[(2) - (2)].command));
+***************
+*** 2935,2939 ****
+  
+    case 103:
+! #line 948 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  COMMAND *tc;
+--- 2940,2944 ----
+  
+    case 103:
+! #line 953 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  COMMAND *tc;
+***************
+*** 2955,2959 ****
+  
+    case 104:
+! #line 965 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  (yyval.command) = make_coproc_command ((yyvsp[(2) - (3)].word)->word, (yyvsp[(3) - (3)].command));
+--- 2960,2964 ----
+  
+    case 104:
+! #line 970 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  (yyval.command) = make_coproc_command ((yyvsp[(2) - (3)].word)->word, (yyvsp[(3) - (3)].command));
+***************
+*** 2963,2967 ****
+  
+    case 105:
+! #line 970 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  COMMAND *tc;
+--- 2968,2972 ----
+  
+    case 105:
+! #line 975 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  COMMAND *tc;
+***************
+*** 2983,2987 ****
+  
+    case 106:
+! #line 987 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  (yyval.command) = make_coproc_command ("COPROC", clean_simple_command ((yyvsp[(2) - (2)].command)));
+--- 2988,2992 ----
+  
+    case 106:
+! #line 992 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      {
+  			  (yyval.command) = make_coproc_command ("COPROC", clean_simple_command ((yyvsp[(2) - (2)].command)));
+***************
+*** 2991,3105 ****
+  
+    case 107:
+! #line 994 "/usr/homes/chet/src/bash/src/parse.y"
+      { (yyval.command) = make_if_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command), (COMMAND *)NULL); }
+      break;
+  
+    case 108:
+! #line 996 "/usr/homes/chet/src/bash/src/parse.y"
+      { (yyval.command) = make_if_command ((yyvsp[(2) - (7)].command), (yyvsp[(4) - (7)].command), (yyvsp[(6) - (7)].command)); }
+      break;
+  
+    case 109:
+! #line 998 "/usr/homes/chet/src/bash/src/parse.y"
+      { (yyval.command) = make_if_command ((yyvsp[(2) - (6)].command), (yyvsp[(4) - (6)].command), (yyvsp[(5) - (6)].command)); }
+      break;
+  
+    case 110:
+! #line 1003 "/usr/homes/chet/src/bash/src/parse.y"
+      { (yyval.command) = make_group_command ((yyvsp[(2) - (3)].command)); }
+      break;
+  
+    case 111:
+! #line 1007 "/usr/homes/chet/src/bash/src/parse.y"
+      { (yyval.command) = make_arith_command ((yyvsp[(1) - (1)].word_list)); }
+      break;
+  
+    case 112:
+! #line 1011 "/usr/homes/chet/src/bash/src/parse.y"
+      { (yyval.command) = (yyvsp[(2) - (3)].command); }
+      break;
+  
+    case 113:
+! #line 1015 "/usr/homes/chet/src/bash/src/parse.y"
+      { (yyval.command) = make_if_command ((yyvsp[(2) - (4)].command), (yyvsp[(4) - (4)].command), (COMMAND *)NULL); }
+      break;
+  
+    case 114:
+! #line 1017 "/usr/homes/chet/src/bash/src/parse.y"
+      { (yyval.command) = make_if_command ((yyvsp[(2) - (6)].command), (yyvsp[(4) - (6)].command), (yyvsp[(6) - (6)].command)); }
+      break;
+  
+    case 115:
+! #line 1019 "/usr/homes/chet/src/bash/src/parse.y"
+      { (yyval.command) = make_if_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command), (yyvsp[(5) - (5)].command)); }
+      break;
+  
+    case 117:
+! #line 1024 "/usr/homes/chet/src/bash/src/parse.y"
+      { (yyvsp[(2) - (2)].pattern)->next = (yyvsp[(1) - (2)].pattern); (yyval.pattern) = (yyvsp[(2) - (2)].pattern); }
+      break;
+  
+    case 118:
+! #line 1028 "/usr/homes/chet/src/bash/src/parse.y"
+      { (yyval.pattern) = make_pattern_list ((yyvsp[(2) - (4)].word_list), (yyvsp[(4) - (4)].command)); }
+      break;
+  
+    case 119:
+! #line 1030 "/usr/homes/chet/src/bash/src/parse.y"
+      { (yyval.pattern) = make_pattern_list ((yyvsp[(2) - (4)].word_list), (COMMAND *)NULL); }
+      break;
+  
+    case 120:
+! #line 1032 "/usr/homes/chet/src/bash/src/parse.y"
+      { (yyval.pattern) = make_pattern_list ((yyvsp[(3) - (5)].word_list), (yyvsp[(5) - (5)].command)); }
+      break;
+  
+    case 121:
+! #line 1034 "/usr/homes/chet/src/bash/src/parse.y"
+      { (yyval.pattern) = make_pattern_list ((yyvsp[(3) - (5)].word_list), (COMMAND *)NULL); }
+      break;
+  
+    case 122:
+! #line 1038 "/usr/homes/chet/src/bash/src/parse.y"
+      { (yyval.pattern) = (yyvsp[(1) - (2)].pattern); }
+      break;
+  
+    case 123:
+! #line 1040 "/usr/homes/chet/src/bash/src/parse.y"
+      { (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); }
+      break;
+  
+    case 124:
+! #line 1042 "/usr/homes/chet/src/bash/src/parse.y"
+      { (yyvsp[(1) - (2)].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyval.pattern) = (yyvsp[(1) - (2)].pattern); }
+      break;
+  
+    case 125:
+! #line 1044 "/usr/homes/chet/src/bash/src/parse.y"
+      { (yyvsp[(2) - (3)].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); }
+      break;
+  
+    case 126:
+! #line 1046 "/usr/homes/chet/src/bash/src/parse.y"
+      { (yyvsp[(1) - (2)].pattern)->flags |= CASEPAT_TESTNEXT; (yyval.pattern) = (yyvsp[(1) - (2)].pattern); }
+      break;
+  
+    case 127:
+! #line 1048 "/usr/homes/chet/src/bash/src/parse.y"
+      { (yyvsp[(2) - (3)].pattern)->flags |= CASEPAT_TESTNEXT; (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); }
+      break;
+  
+    case 128:
+! #line 1052 "/usr/homes/chet/src/bash/src/parse.y"
+      { (yyval.word_list) = make_word_list ((yyvsp[(1) - (1)].word), (WORD_LIST *)NULL); }
+      break;
+  
+    case 129:
+! #line 1054 "/usr/homes/chet/src/bash/src/parse.y"
+      { (yyval.word_list) = make_word_list ((yyvsp[(3) - (3)].word), (yyvsp[(1) - (3)].word_list)); }
+      break;
+  
+    case 130:
+! #line 1063 "/usr/homes/chet/src/bash/src/parse.y"
+      {
+  			  (yyval.command) = (yyvsp[(2) - (2)].command);
+--- 2996,3110 ----
+  
+    case 107:
+! #line 999 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      { (yyval.command) = make_if_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command), (COMMAND *)NULL); }
+      break;
+  
+    case 108:
+! #line 1001 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      { (yyval.command) = make_if_command ((yyvsp[(2) - (7)].command), (yyvsp[(4) - (7)].command), (yyvsp[(6) - (7)].command)); }
+      break;
+  
+    case 109:
+! #line 1003 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      { (yyval.command) = make_if_command ((yyvsp[(2) - (6)].command), (yyvsp[(4) - (6)].command), (yyvsp[(5) - (6)].command)); }
+      break;
+  
+    case 110:
+! #line 1008 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      { (yyval.command) = make_group_command ((yyvsp[(2) - (3)].command)); }
+      break;
+  
+    case 111:
+! #line 1012 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      { (yyval.command) = make_arith_command ((yyvsp[(1) - (1)].word_list)); }
+      break;
+  
+    case 112:
+! #line 1016 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      { (yyval.command) = (yyvsp[(2) - (3)].command); }
+      break;
+  
+    case 113:
+! #line 1020 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      { (yyval.command) = make_if_command ((yyvsp[(2) - (4)].command), (yyvsp[(4) - (4)].command), (COMMAND *)NULL); }
+      break;
+  
+    case 114:
+! #line 1022 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      { (yyval.command) = make_if_command ((yyvsp[(2) - (6)].command), (yyvsp[(4) - (6)].command), (yyvsp[(6) - (6)].command)); }
+      break;
+  
+    case 115:
+! #line 1024 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+      { (yyval.command) = make_if_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command), (yyvsp[(5) - (5)].command)); }
+      break;
+  
+    case 117:
+! #