mbox

[1/3] bash: update to 4.4 with patch 1-12

Message ID 20170606082537.13830-1-marcel.lorenz@ipfire.org
State Dropped
Headers

Message

Marcel Lorenz June 6, 2017, 6:25 p.m. UTC
  Signed-off-by: Marcel Lorenz <marcel.lorenz@ipfire.org>
---
 config/rootfiles/common/bash |   92 +-
 lfs/bash                     |   33 +-
 src/patches/bash/bash43-001  |   58 --
 src/patches/bash/bash43-002  |   62 --
 src/patches/bash/bash43-003  |   48 -
 src/patches/bash/bash43-004  |   47 -
 src/patches/bash/bash43-005  |   63 --
 src/patches/bash/bash43-006  |   48 -
 src/patches/bash/bash43-007  |   50 -
 src/patches/bash/bash43-008  |  188 ----
 src/patches/bash/bash43-009  |   64 --
 src/patches/bash/bash43-010  |  157 ---
 src/patches/bash/bash43-011  |   49 -
 src/patches/bash/bash43-012  |   43 -
 src/patches/bash/bash43-013  |   66 --
 src/patches/bash/bash43-014  |  102 --
 src/patches/bash/bash43-015  |   58 --
 src/patches/bash/bash43-016  |  132 ---
 src/patches/bash/bash43-017  |   51 -
 src/patches/bash/bash43-018  |   44 -
 src/patches/bash/bash43-019  |   84 --
 src/patches/bash/bash43-020  |  110 --
 src/patches/bash/bash43-021  |   52 -
 src/patches/bash/bash43-022  |   56 --
 src/patches/bash/bash43-023  |  104 --
 src/patches/bash/bash43-024  |   54 -
 src/patches/bash/bash43-025  |  123 ---
 src/patches/bash/bash43-026  |   60 --
 src/patches/bash/bash43-027  |  221 -----
 src/patches/bash/bash43-028  | 2265 ------------------------------------------
 src/patches/bash/bash43-029  |   59 --
 src/patches/bash/bash43-030  | 2064 --------------------------------------
 src/patches/bash/bash44-001  |   60 ++
 src/patches/bash/bash44-002  |   69 ++
 src/patches/bash/bash44-003  |   58 ++
 src/patches/bash/bash44-004  |   84 ++
 src/patches/bash/bash44-005  |   47 +
 src/patches/bash/bash44-006  |   59 ++
 src/patches/bash/bash44-007  |  151 +++
 src/patches/bash/bash44-008  |   84 ++
 src/patches/bash/bash44-009  |  107 ++
 src/patches/bash/bash44-010  |   49 +
 src/patches/bash/bash44-011  |   50 +
 src/patches/bash/bash44-012  |  161 +++
 44 files changed, 1085 insertions(+), 6601 deletions(-)
 delete mode 100644 src/patches/bash/bash43-001
 delete mode 100644 src/patches/bash/bash43-002
 delete mode 100644 src/patches/bash/bash43-003
 delete mode 100644 src/patches/bash/bash43-004
 delete mode 100644 src/patches/bash/bash43-005
 delete mode 100644 src/patches/bash/bash43-006
 delete mode 100644 src/patches/bash/bash43-007
 delete mode 100644 src/patches/bash/bash43-008
 delete mode 100644 src/patches/bash/bash43-009
 delete mode 100644 src/patches/bash/bash43-010
 delete mode 100644 src/patches/bash/bash43-011
 delete mode 100644 src/patches/bash/bash43-012
 delete mode 100644 src/patches/bash/bash43-013
 delete mode 100644 src/patches/bash/bash43-014
 delete mode 100644 src/patches/bash/bash43-015
 delete mode 100644 src/patches/bash/bash43-016
 delete mode 100644 src/patches/bash/bash43-017
 delete mode 100644 src/patches/bash/bash43-018
 delete mode 100644 src/patches/bash/bash43-019
 delete mode 100644 src/patches/bash/bash43-020
 delete mode 100644 src/patches/bash/bash43-021
 delete mode 100644 src/patches/bash/bash43-022
 delete mode 100644 src/patches/bash/bash43-023
 delete mode 100644 src/patches/bash/bash43-024
 delete mode 100644 src/patches/bash/bash43-025
 delete mode 100644 src/patches/bash/bash43-026
 delete mode 100644 src/patches/bash/bash43-027
 delete mode 100644 src/patches/bash/bash43-028
 delete mode 100644 src/patches/bash/bash43-029
 delete mode 100644 src/patches/bash/bash43-030
 create mode 100644 src/patches/bash/bash44-001
 create mode 100644 src/patches/bash/bash44-002
 create mode 100644 src/patches/bash/bash44-003
 create mode 100644 src/patches/bash/bash44-004
 create mode 100644 src/patches/bash/bash44-005
 create mode 100644 src/patches/bash/bash44-006
 create mode 100644 src/patches/bash/bash44-007
 create mode 100644 src/patches/bash/bash44-008
 create mode 100644 src/patches/bash/bash44-009
 create mode 100644 src/patches/bash/bash44-010
 create mode 100644 src/patches/bash/bash44-011
 create mode 100644 src/patches/bash/bash44-012
  

Comments

Michael Tremer June 7, 2017, 6:59 p.m. UTC | #1
Hello,

I cannot accept this patch. Read below.

On Tue, 2017-06-06 at 10:25 +0200, Marcel Lorenz wrote:
> Signed-off-by: Marcel Lorenz <marcel.lorenz@ipfire.org>
> ---
>  config/rootfiles/common/bash |   92 +-
>  lfs/bash                     |   33 +-
>  src/patches/bash/bash43-001  |   58 --
>  src/patches/bash/bash43-002  |   62 --
>  src/patches/bash/bash43-003  |   48 -
>  src/patches/bash/bash43-004  |   47 -
>  src/patches/bash/bash43-005  |   63 --
>  src/patches/bash/bash43-006  |   48 -
>  src/patches/bash/bash43-007  |   50 -
>  src/patches/bash/bash43-008  |  188 ----
>  src/patches/bash/bash43-009  |   64 --
>  src/patches/bash/bash43-010  |  157 ---
>  src/patches/bash/bash43-011  |   49 -
>  src/patches/bash/bash43-012  |   43 -
>  src/patches/bash/bash43-013  |   66 --
>  src/patches/bash/bash43-014  |  102 --
>  src/patches/bash/bash43-015  |   58 --
>  src/patches/bash/bash43-016  |  132 ---
>  src/patches/bash/bash43-017  |   51 -
>  src/patches/bash/bash43-018  |   44 -
>  src/patches/bash/bash43-019  |   84 --
>  src/patches/bash/bash43-020  |  110 --
>  src/patches/bash/bash43-021  |   52 -
>  src/patches/bash/bash43-022  |   56 --
>  src/patches/bash/bash43-023  |  104 --
>  src/patches/bash/bash43-024  |   54 -
>  src/patches/bash/bash43-025  |  123 ---
>  src/patches/bash/bash43-026  |   60 --
>  src/patches/bash/bash43-027  |  221 -----
>  src/patches/bash/bash43-028  | 2265 ---------------------------------------
> ---
>  src/patches/bash/bash43-029  |   59 --
>  src/patches/bash/bash43-030  | 2064 --------------------------------------
>  src/patches/bash/bash44-001  |   60 ++
>  src/patches/bash/bash44-002  |   69 ++
>  src/patches/bash/bash44-003  |   58 ++
>  src/patches/bash/bash44-004  |   84 ++
>  src/patches/bash/bash44-005  |   47 +
>  src/patches/bash/bash44-006  |   59 ++
>  src/patches/bash/bash44-007  |  151 +++
>  src/patches/bash/bash44-008  |   84 ++
>  src/patches/bash/bash44-009  |  107 ++
>  src/patches/bash/bash44-010  |   49 +
>  src/patches/bash/bash44-011  |   50 +
>  src/patches/bash/bash44-012  |  161 +++
>  44 files changed, 1085 insertions(+), 6601 deletions(-)
>  delete mode 100644 src/patches/bash/bash43-001
>  delete mode 100644 src/patches/bash/bash43-002
>  delete mode 100644 src/patches/bash/bash43-003
>  delete mode 100644 src/patches/bash/bash43-004
>  delete mode 100644 src/patches/bash/bash43-005
>  delete mode 100644 src/patches/bash/bash43-006
>  delete mode 100644 src/patches/bash/bash43-007
>  delete mode 100644 src/patches/bash/bash43-008
>  delete mode 100644 src/patches/bash/bash43-009
>  delete mode 100644 src/patches/bash/bash43-010
>  delete mode 100644 src/patches/bash/bash43-011
>  delete mode 100644 src/patches/bash/bash43-012
>  delete mode 100644 src/patches/bash/bash43-013
>  delete mode 100644 src/patches/bash/bash43-014
>  delete mode 100644 src/patches/bash/bash43-015
>  delete mode 100644 src/patches/bash/bash43-016
>  delete mode 100644 src/patches/bash/bash43-017
>  delete mode 100644 src/patches/bash/bash43-018
>  delete mode 100644 src/patches/bash/bash43-019
>  delete mode 100644 src/patches/bash/bash43-020
>  delete mode 100644 src/patches/bash/bash43-021
>  delete mode 100644 src/patches/bash/bash43-022
>  delete mode 100644 src/patches/bash/bash43-023
>  delete mode 100644 src/patches/bash/bash43-024
>  delete mode 100644 src/patches/bash/bash43-025
>  delete mode 100644 src/patches/bash/bash43-026
>  delete mode 100644 src/patches/bash/bash43-027
>  delete mode 100644 src/patches/bash/bash43-028
>  delete mode 100644 src/patches/bash/bash43-029
>  delete mode 100644 src/patches/bash/bash43-030
>  create mode 100644 src/patches/bash/bash44-001
>  create mode 100644 src/patches/bash/bash44-002
>  create mode 100644 src/patches/bash/bash44-003
>  create mode 100644 src/patches/bash/bash44-004
>  create mode 100644 src/patches/bash/bash44-005
>  create mode 100644 src/patches/bash/bash44-006
>  create mode 100644 src/patches/bash/bash44-007
>  create mode 100644 src/patches/bash/bash44-008
>  create mode 100644 src/patches/bash/bash44-009
>  create mode 100644 src/patches/bash/bash44-010
>  create mode 100644 src/patches/bash/bash44-011
>  create mode 100644 src/patches/bash/bash44-012
> 
> diff --git a/config/rootfiles/common/bash b/config/rootfiles/common/bash
> index 84f587f..6eee6cc 100644
> --- a/config/rootfiles/common/bash
> +++ b/config/rootfiles/common/bash
> @@ -1,6 +1,95 @@
>  bin/sh
>  bin/bash
>  #bin/bashbug
> +#usr/include/bash
> +#usr/include/bash/alias.h
> +#usr/include/bash/array.h
> +#usr/include/bash/arrayfunc.h
> +#usr/include/bash/assoc.h
> +#usr/include/bash/bashansi.h
> +#usr/include/bash/bashintl.h
> +#usr/include/bash/bashjmp.h
> +#usr/include/bash/bashtypes.h
> +#usr/include/bash/builtins
> +#usr/include/bash/builtins.h
> +#usr/include/bash/builtins/bashgetopt.h
> +#usr/include/bash/builtins/builtext.h
> +#usr/include/bash/builtins/common.h
> +#usr/include/bash/builtins/getopt.h
> +#usr/include/bash/command.h
> +#usr/include/bash/config-bot.h
> +#usr/include/bash/config-top.h
> +#usr/include/bash/config.h
> +#usr/include/bash/conftypes.h
> +#usr/include/bash/dispose_cmd.h
> +#usr/include/bash/error.h
> +#usr/include/bash/externs.h
> +#usr/include/bash/general.h
> +#usr/include/bash/hashlib.h
> +#usr/include/bash/include
> +#usr/include/bash/include/ansi_stdlib.h
> +#usr/include/bash/include/chartypes.h
> +#usr/include/bash/include/filecntl.h
> +#usr/include/bash/include/gettext.h
> +#usr/include/bash/include/maxpath.h
> +#usr/include/bash/include/memalloc.h
> +#usr/include/bash/include/ocache.h
> +#usr/include/bash/include/posixdir.h
> +#usr/include/bash/include/posixjmp.h
> +#usr/include/bash/include/posixstat.h
> +#usr/include/bash/include/posixtime.h
> +#usr/include/bash/include/posixwait.h
> +#usr/include/bash/include/shmbchar.h
> +#usr/include/bash/include/shmbutil.h
> +#usr/include/bash/include/shtty.h
> +#usr/include/bash/include/stat-time.h
> +#usr/include/bash/include/stdc.h
> +#usr/include/bash/include/systimes.h
> +#usr/include/bash/include/typemax.h
> +#usr/include/bash/include/unionwait.h
> +#usr/include/bash/jobs.h
> +#usr/include/bash/make_cmd.h
> +#usr/include/bash/pathnames.h
> +#usr/include/bash/quit.h
> +#usr/include/bash/shell.h
> +#usr/include/bash/sig.h
> +#usr/include/bash/siglist.h
> +#usr/include/bash/signames.h
> +#usr/include/bash/subst.h
> +#usr/include/bash/syntax.h
> +#usr/include/bash/unwind_prot.h
> +#usr/include/bash/variables.h
> +#usr/include/bash/version.h
> +#usr/include/bash/xmalloc.h
> +#usr/include/bash/y.tab.h
> +#usr/lib/bash
> +#usr/lib/bash/Makefile.inc
> +usr/lib/bash/basename
> +usr/lib/bash/dirname
> +usr/lib/bash/finfo
> +usr/lib/bash/head
> +usr/lib/bash/id
> +usr/lib/bash/ln
> +usr/lib/bash/logname
> +usr/lib/bash/mkdir
> +usr/lib/bash/mypid
> +usr/lib/bash/pathchk
> +usr/lib/bash/print
> +usr/lib/bash/printenv
> +usr/lib/bash/push
> +usr/lib/bash/realpath
> +usr/lib/bash/rmdir
> +usr/lib/bash/setpgid
> +usr/lib/bash/sleep
> +usr/lib/bash/strftime
> +usr/lib/bash/sync
> +usr/lib/bash/tee
> +usr/lib/bash/truefalse
> +usr/lib/bash/tty
> +usr/lib/bash/uname
> +usr/lib/bash/unlink
> +usr/lib/bash/whoami
> +#usr/lib/pkgconfig/bash.pc
>  #usr/share/doc/bash
>  #usr/share/doc/bash/CHANGES
>  #usr/share/doc/bash/COMPAT
> @@ -39,6 +128,7 @@ bin/bash
>  #usr/share/locale/it/LC_MESSAGES/bash.mo
>  #usr/share/locale/ja/LC_MESSAGES/bash.mo
>  #usr/share/locale/lt/LC_MESSAGES/bash.mo
> +#usr/share/locale/nb/LC_MESSAGES/bash.mo
>  #usr/share/locale/nl/LC_MESSAGES/bash.mo
>  #usr/share/locale/pl/LC_MESSAGES/bash.mo
>  #usr/share/locale/pt_BR/LC_MESSAGES/bash.mo
> @@ -46,8 +136,6 @@ bin/bash
>  #usr/share/locale/ru/LC_MESSAGES/bash.mo
>  #usr/share/locale/sk/LC_MESSAGES/bash.mo
>  #usr/share/locale/sl/LC_MESSAGES/bash.mo
> -#usr/share/locale/sr
> -#usr/share/locale/sr/LC_MESSAGES
>  #usr/share/locale/sr/LC_MESSAGES/bash.mo
>  #usr/share/locale/sv/LC_MESSAGES/bash.mo
>  #usr/share/locale/tr/LC_MESSAGES/bash.mo
> diff --git a/lfs/bash b/lfs/bash
> index 04e6c50..a07f6bc 100644
> --- a/lfs/bash
> +++ b/lfs/bash
> @@ -1,7 +1,7 @@
>  #############################################################################
> ##
>  #                                                                            
>  #
>  # IPFire.org - A linux based
> firewall                                         #
> -# Copyright (C) 2007-2014   IPFire Team   <info@ipfire.org>                  
>  #
> +# Copyright (C) 2007-2017   IPFire Team   <info@ipfire.org>                  
>  #
>  #                                                                            
>  #
>  # This program is free software: you can redistribute it and/or
> modify        #
>  # it under the terms of the GNU General Public License as published
> by        #
> @@ -24,7 +24,7 @@
>  
>  include Config
>  
> -VER        = 4.3
> +VER        = 4.4
>  
>  THISAPP    = bash-$(VER)
>  DL_FILE    = $(THISAPP).tar.gz
> @@ -36,14 +36,15 @@ DIR_APP    = $(DIR_SRC)/$(THISAPP)
>  ifeq "$(ROOT)" ""
>    TARGET = $(DIR_INFO)/$(THISAPP)
>    CONFIGURE_OPTIONS = --prefix=/usr --bindir=/bin \
> -    --with-installed-readline
> +    --with-installed-readline --without-bash-malloc

That parameter is already added below.

>  else
>    TARGET = $(DIR_INFO)/$(THISAPP)-tools
>    CONFIGURE_OPTIONS = --prefix=/tools
>  endif
>  
>  CONFIGURE_OPTIONS += \
> -	--without-bash-malloc
> +	--without-bash-malloc \
> +	--docdir=/usr/share/doc/bash
>  
>  #############################################################################
> ##
>  # Top-level Rules
> @@ -53,7 +54,7 @@ objects = $(DL_FILE)
>  
>  $(DL_FILE)             = $(DL_FROM)/$(DL_FILE)
>  
> -$(DL_FILE)_MD5         = 81348932d5da294953e15d4814c74dd1
> +$(DL_FILE)_MD5         = 148888a7c95ac23705559b6f477dfe25
>  
>  install : $(TARGET)
>  
> @@ -84,26 +85,24 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
>  	@$(PREBUILD)
>  	@rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zaxf $(DIR_DL)/$(DL_FILE)
>  
> -	sed -e "s/filename, RTLD_LAZY/filename, RTLD_NOW/" \
> -		-i $(DIR_APP)/builtins/enable.def
> -
> -	for i in $$(seq 1 30); do \
> -		cd $(DIR_APP) && patch -Np0 <
> $(DIR_SRC)/src/patches/bash/bash43-$$(printf "%03d" "$${i}") || exit 1; \
> +	for i in $$(seq 1 12); do \
> +	  cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/bash/bash44-
> $$(printf "%03d" "$${i}") || exit 1; \
>  	done
> 

Indentation is broken here. It should be a tab instead of spaces.

>  

> +	cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/bash-3.2-
> ssh_source_bash.patch
>  	cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/bash-4.0-paths-
> 1.patch
>  	cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/bash-4.0-
> profile-1.patch
> -	cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/bash-3.2-
> ssh_source_bash.patch
> -
>  	cd $(DIR_APP) && ./configure $(CONFIGURE_OPTIONS)
>  	cd $(DIR_APP) && make $(MAKETUNING)
>  	cd $(DIR_APP) && make install
>  
> -ifeq "$(TOOLCHAIN)" "1"
> -	ln -svf bash /tools/bin/sh
> -	ln -svf ../tools/bin/bash $(ROOT)/bin/sh
> -else
> -	ln -svf bash /bin/sh
> +	ln -sf bash /bin/sh
> +
> +ifneq "$(ROOT)" ""
> +	-mkdir -p $(ROOT)/bin
> +	-mkdir -p $(ROOT)/usr/bin
> +	ln -sf bash /tools/bin/sh
> +	-ln -sf /tools/bin/bash $(ROOT)/bin/sh
>  endif

This block here overwrites changes that have been done in other commits. Please
do not change files out of tree and please check again that everything is
rebased on master or next when you send patches.

Best,
-Michael

>  
>  	@rm -rf $(DIR_APP)
> diff --git a/src/patches/bash/bash43-001 b/src/patches/bash/bash43-001
> deleted file mode 100644
> index ea1c6b2..0000000
> --- a/src/patches/bash/bash43-001
> +++ /dev/null
> @@ -1,58 +0,0 @@
> -			     BASH PATCH REPORT
> -			     =================
> -
> -Bash-Release:	4.3
> -Patch-ID:	bash43-001
> -
> -Bug-Reported-by:	NBaH <nbah@sfr.fr>
> -Bug-Reference-ID:	<ler0b5$iu9$1@speranza.aioe.org>
> -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_ */
> diff --git a/src/patches/bash/bash43-002 b/src/patches/bash/bash43-002
> deleted file mode 100644
> index 735b7b8..0000000
> --- a/src/patches/bash/bash43-002
> +++ /dev/null
> @@ -1,62 +0,0 @@
> -			     BASH PATCH REPORT
> -			     =================
> -
> -Bash-Release:	4.3
> -Patch-ID:	bash43-002
> -
> -Bug-Reported-by:	Moe Tunes <moetunes42@gmail.com>
> -Bug-Reference-ID:	<53103F49.3070100@gmail.com>
> -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_ */
> diff --git a/src/patches/bash/bash43-003 b/src/patches/bash/bash43-003
> deleted file mode 100644
> index 0f32f41..0000000
> --- a/src/patches/bash/bash43-003
> +++ /dev/null
> @@ -1,48 +0,0 @@
> -			     BASH PATCH REPORT
> -			     =================
> -
> -Bash-Release:	4.3
> -Patch-ID:	bash43-003
> -
> -Bug-Reported-by:	Anatol Pomozov <anatol.pomozov@gmail.com>
> -Bug-Reference-ID:	<CAOMFOmXy3mT2So5GQ5F-smCVArQuAeBwZ2QKzgCtMeXJoDeYOQ
> @mail.gmail.com>
> -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_ */
> diff --git a/src/patches/bash/bash43-004 b/src/patches/bash/bash43-004
> deleted file mode 100644
> index 010f04a..0000000
> --- a/src/patches/bash/bash43-004
> +++ /dev/null
> @@ -1,47 +0,0 @@
> -			     BASH PATCH REPORT
> -			     =================
> -
> -Bash-Release:	4.3
> -Patch-ID:	bash43-004
> -
> -Bug-Reported-by:	Daan van Rossum <daan@flash.uchicago.edu>
> -Bug-Reference-ID:	<20140307072523.GA14250@flash.uchicago.edu>
> -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_ */
> diff --git a/src/patches/bash/bash43-005 b/src/patches/bash/bash43-005
> deleted file mode 100644
> index bcd4069..0000000
> --- a/src/patches/bash/bash43-005
> +++ /dev/null
> @@ -1,63 +0,0 @@
> -			     BASH PATCH REPORT
> -			     =================
> -
> -Bash-Release:	4.3
> -Patch-ID:	bash43-005
> -
> -Bug-Reported-by:	David Sines <dave.gma@googlemail.com>
> -Bug-Reference-ID:	<CAO3BAa_CK_Rgkhdfzs+NJ4KFYdB9qW3pvXQK0xLCi6GMmDU8bw
> @mail.gmail.com>
> -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_ */
> diff --git a/src/patches/bash/bash43-006 b/src/patches/bash/bash43-006
> deleted file mode 100644
> index 24ff057..0000000
> --- a/src/patches/bash/bash43-006
> +++ /dev/null
> @@ -1,48 +0,0 @@
> -			     BASH PATCH REPORT
> -			     =================
> -
> -Bash-Release:	4.3
> -Patch-ID:	bash43-006
> -
> -Bug-Reported-by:	Eduardo A . Bustamante Lopez <dualbus@gmail.com>
> -Bug-Reference-ID:	<20140228170013.GA16015@dualbus.me>
> -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_ */
> diff --git a/src/patches/bash/bash43-007 b/src/patches/bash/bash43-007
> deleted file mode 100644
> index 0d62c9e..0000000
> --- a/src/patches/bash/bash43-007
> +++ /dev/null
> @@ -1,50 +0,0 @@
> -			     BASH PATCH REPORT
> -			     =================
> -
> -Bash-Release:	4.3
> -Patch-ID:	bash43-007
> -
> -Bug-Reported-by:	geir.hauge@gmail.com
> -Bug-Reference-ID:	<20140318093650.B181C1C5B0B@gina.itea.ntnu.no>
> -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_ */
> diff --git a/src/patches/bash/bash43-008 b/src/patches/bash/bash43-008
> deleted file mode 100644
> index 0ae7c95..0000000
> --- a/src/patches/bash/bash43-008
> +++ /dev/null
> @@ -1,188 +0,0 @@
> -			     BASH PATCH REPORT
> -			     =================
> -
> -Bash-Release:	4.3
> -Patch-ID:	bash43-008
> -
> -Bug-Reported-by:	Stephane Chazelas <stephane.chazelas@gmail.com>
> -Bug-Reference-ID:	<20140318135901.GB22158@chaz.gmail.com>
> -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_ */
> diff --git a/src/patches/bash/bash43-009 b/src/patches/bash/bash43-009
> deleted file mode 100644
> index 015835c..0000000
> --- a/src/patches/bash/bash43-009
> +++ /dev/null
> @@ -1,64 +0,0 @@
> -			     BASH PATCH REPORT
> -			     =================
> -
> -Bash-Release:	4.3
> -Patch-ID:	bash43-009
> -
> -Bug-Reported-by:	Matthias Klose <doko@debian.org>
> -Bug-Reference-ID:	<53346FC8.6090005@debian.org>
> -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_ */
> diff --git a/src/patches/bash/bash43-010 b/src/patches/bash/bash43-010
> deleted file mode 100644
> index 835a96e..0000000
> --- a/src/patches/bash/bash43-010
> +++ /dev/null
> @@ -1,157 +0,0 @@
> -			     BASH PATCH REPORT
> -			     =================
> -
> -Bash-Release:	4.3
> -Patch-ID:	bash43-010
> -
> -Bug-Reported-by:	Albert Shih <Albert.Shih@obspm.fr>
> -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_ */
> diff --git a/src/patches/bash/bash43-011 b/src/patches/bash/bash43-011
> deleted file mode 100644
> index cdc1572..0000000
> --- a/src/patches/bash/bash43-011
> +++ /dev/null
> @@ -1,49 +0,0 @@
> -			     BASH PATCH REPORT
> -			     =================
> -
> -Bash-Release:	4.3
> -Patch-ID:	bash43-011
> -
> -Bug-Reported-by:	Egmont Koblinger <egmont@gmail.com>
> -Bug-Reference-ID:	<CAGWcZk+bU5Jo1M+tutGvL-250UBE9DXjpeJVofYJSFcqFEVfMg
> @mail.gmail.com>
> -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_ */
> diff --git a/src/patches/bash/bash43-012 b/src/patches/bash/bash43-012
> deleted file mode 100644
> index 176fa15..0000000
> --- a/src/patches/bash/bash43-012
> +++ /dev/null
> @@ -1,43 +0,0 @@
> -			     BASH PATCH REPORT
> -			     =================
> -
> -Bash-Release:	4.3
> -Patch-ID:	bash43-012
> -
> -Bug-Reported-by:	Eduardo A. Bustamante López<dualbus@gmail.com>
> -Bug-Reference-ID:	<5346B54C.4070205@case.edu>
> -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_ */
> diff --git a/src/patches/bash/bash43-013 b/src/patches/bash/bash43-013
> deleted file mode 100644
> index 8f4006b..0000000
> --- a/src/patches/bash/bash43-013
> +++ /dev/null
> @@ -1,66 +0,0 @@
> -			     BASH PATCH REPORT
> -			     =================
> -
> -Bash-Release:	4.3
> -Patch-ID:	bash43-013
> -
> -Bug-Reported-by:	<Trond.Endrestol@ximalas.info>
> -Bug-Reference-ID:	<alpine.BSF.2.03.1404192114310.1973@enterprise.ximal
> as.info>
> -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_ */
> diff --git a/src/patches/bash/bash43-014 b/src/patches/bash/bash43-014
> deleted file mode 100644
> index f837196..0000000
> --- a/src/patches/bash/bash43-014
> +++ /dev/null
> @@ -1,102 +0,0 @@
> -			     BASH PATCH REPORT
> -			     =================
> -
> -Bash-Release:	4.3
> -Patch-ID:	bash43-014
> -
> -Bug-Reported-by:	Greg Wooledge <wooledg@eeg.ccf.org>
> -Bug-Reference-ID:	<20140418202123.GB7660@eeg.ccf.org>
> -Bug-Reference-URL:	http://lists.gnu.org/archive/html/help-bash/2014-04
> /msg00004.html
> -
> -Bug-Description:
> -
> -Under certain circumstances, $@ 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 $@ (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 $@ 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_ */
> diff --git a/src/patches/bash/bash43-015 b/src/patches/bash/bash43-015
> deleted file mode 100644
> index 9c4e5ea..0000000
> --- a/src/patches/bash/bash43-015
> +++ /dev/null
> @@ -1,58 +0,0 @@
> -			     BASH PATCH REPORT
> -			     =================
> -
> -Bash-Release:	4.3
> -Patch-ID:	bash43-015
> -
> -Bug-Reported-by:	Clark Wang <dearvoid@gmail.com>
> -Bug-Reference-ID:	<CADv8-og2TOSoabXeNVXVGaXN3tEMHnYVq1rwOLe5meaRPSGRig
> @mail.gmail.com>
> -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_ */
> diff --git a/src/patches/bash/bash43-016 b/src/patches/bash/bash43-016
> deleted file mode 100644
> index 882d593..0000000
> --- a/src/patches/bash/bash43-016
> +++ /dev/null
> @@ -1,132 +0,0 @@
> -			     BASH PATCH REPORT
> -			     =================
> -
> -Bash-Release:	4.3
> -Patch-ID:	bash43-016
> -
> -Bug-Reported-by:	Pierre Gaston <pierre.gaston@gmail.com>
> -Bug-Reference-ID:	<CAPSX3sTCD61k1VQLJ5r-LWzEt+e7Xc-fxXmwn2u8EA5gJJej8Q
> @mail.gmail.com>
> -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_ */
> diff --git a/src/patches/bash/bash43-017 b/src/patches/bash/bash43-017
> deleted file mode 100644
> index 4016fb9..0000000
> --- a/src/patches/bash/bash43-017
> +++ /dev/null
> @@ -1,51 +0,0 @@
> -			     BASH PATCH REPORT
> -			     =================
> -
> -Bash-Release:	4.3
> -Patch-ID:	bash43-017
> -
> -Bug-Reported-by:	Dan Douglas <ormaaj@gmail.com>
> -Bug-Reference-ID:	<7781746.RhfoTROLxF@smorgbox>
> -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_ */
> diff --git a/src/patches/bash/bash43-018 b/src/patches/bash/bash43-018
> deleted file mode 100644
> index 39499f6..0000000
> --- a/src/patches/bash/bash43-018
> +++ /dev/null
> @@ -1,44 +0,0 @@
> -			     BASH PATCH REPORT
> -			     =================
> -
> -Bash-Release:	4.3
> -Patch-ID:	bash43-018
> -
> -Bug-Reported-by:	Geir Hauge <geir.hauge@gmail.com>
> -Bug-Reference-ID:	<CAO-BiTLOvfPXDypg61jcBausADrxUKJejakV2WTWP26cW0=rgA
> @mail.gmail.com>
> -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_ */
> diff --git a/src/patches/bash/bash43-019 b/src/patches/bash/bash43-019
> deleted file mode 100644
> index a93714b..0000000
> --- a/src/patches/bash/bash43-019
> +++ /dev/null
> @@ -1,84 +0,0 @@
> -			     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_ */
> diff --git a/src/patches/bash/bash43-020 b/src/patches/bash/bash43-020
> deleted file mode 100644
> index 5f533ef..0000000
> --- a/src/patches/bash/bash43-020
> +++ /dev/null
> @@ -1,110 +0,0 @@
> -			     BASH PATCH REPORT
> -			     =================
> -
> -Bash-Release:	4.3
> -Patch-ID:	bash43-020
> -
> -Bug-Reported-by:	Jared Yanovich <slovichon@gmail.com>
> -Bug-Reference-ID:	<20140417073654.GB26875@nightderanger.psc.edu>
> -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_ */
> diff --git a/src/patches/bash/bash43-021 b/src/patches/bash/bash43-021
> deleted file mode 100644
> index fd1c945..0000000
> --- a/src/patches/bash/bash43-021
> +++ /dev/null
> @@ -1,52 +0,0 @@
> -			     BASH PATCH REPORT
> -			     =================
> -
> -Bash-Release:	4.3
> -Patch-ID:	bash43-021
> -
> -Bug-Reported-by:	Jared Yanovich <slovichon@gmail.com>
> -Bug-Reference-ID:	<20140625225019.GJ17044@nightderanger.psc.edu>
> -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_ */
> diff --git a/src/patches/bash/bash43-022 b/src/patches/bash/bash43-022
> deleted file mode 100644
> index 7ce39ec..0000000
> --- a/src/patches/bash/bash43-022
> +++ /dev/null
> @@ -1,56 +0,0 @@
> -			     BASH PATCH REPORT
> -			     =================
> -
> -Bash-Release:	4.3
> -Patch-ID:	bash43-022
> -
> -Bug-Reported-by:	scorp.dev.null@gmail.com
> -Bug-Reference-ID:	<E1WxXw8-0007iE-Bi@pcm14>
> -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_ */
> diff --git a/src/patches/bash/bash43-023 b/src/patches/bash/bash43-023
> deleted file mode 100644
> index d1e4e9d..0000000
> --- a/src/patches/bash/bash43-023
> +++ /dev/null
> @@ -1,104 +0,0 @@
> -			     BASH PATCH REPORT
> -			     =================
> -
> -Bash-Release:	4.3
> -Patch-ID:	bash43-023
> -
> -Bug-Reported-by:	Tim Friske <me@timfriske.com>
> -Bug-Reference-ID:	<CAM1RzOcOR9zzC2i+aeES6LtbHNHoOV+0pZEYPrqxv_QAii-RXA
> @mail.gmail.com>
> -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_ */
> diff --git a/src/patches/bash/bash43-024 b/src/patches/bash/bash43-024
> deleted file mode 100644
> index a24b8fb..0000000
> --- a/src/patches/bash/bash43-024
> +++ /dev/null
> @@ -1,54 +0,0 @@
> -			     BASH PATCH REPORT
> -			     =================
> -
> -Bash-Release:	4.3
> -Patch-ID:	bash43-024
> -
> -Bug-Reported-by:	Corentin Peuvrel <cpeuvrel@pom-monitoring.com>
> -Bug-Reference-ID:	<53CE9E5D.6050203@pom-monitoring.com>
> -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_ */
> diff --git a/src/patches/bash/bash43-025 b/src/patches/bash/bash43-025
> deleted file mode 100644
> index 721aca0..0000000
> --- a/src/patches/bash/bash43-025
> +++ /dev/null
> @@ -1,123 +0,0 @@
> -			     BASH PATCH REPORT
> -			     =================
> -
> -Bash-Release:	4.3
> -Patch-ID:	bash43-025
> -
> -Bug-Reported-by:	Stephane Chazelas <stephane.chazelas@gmail.com>
> -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_ */
> diff --git a/src/patches/bash/bash43-026 b/src/patches/bash/bash43-026
> deleted file mode 100644
> index e48141b..0000000
> --- a/src/patches/bash/bash43-026
> +++ /dev/null
> @@ -1,60 +0,0 @@
> -			     BASH PATCH REPORT
> -			     =================
> -
> -Bash-Release:	4.3
> -Patch-ID:	bash43-026
> -
> -Bug-Reported-by:	Tavis Ormandy <taviso () cmpxchg8b com>
> -Bug-Reference-ID:
> -Bug-Reference-URL:	http://twitter.com/taviso/statuses/5148873942946529
> 29
> -
> -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_ */
> diff --git a/src/patches/bash/bash43-027 b/src/patches/bash/bash43-027
> deleted file mode 100644
> index ef48bd8..0000000
> --- a/src/patches/bash/bash43-027
> +++ /dev/null
> @@ -1,221 +0,0 @@
> -			     BASH PATCH REPORT
> -			     =================
> -
> -Bash-Release:	4.3
> -Patch-ID:	bash43-027
> -
> -Bug-Reported-by:	Florian Weimer <fweimer@redhat.com>
> -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_ */
> diff --git a/src/patches/bash/bash43-028 b/src/patches/bash/bash43-028
> deleted file mode 100644
> index 7448cf8..0000000
> --- a/src/patches/bash/bash43-028
> +++ /dev/null
> @@ -1,2265 +0,0 @@
> -			     BASH PATCH REPORT
> -			     =================
> -
> -Bash-Release:	4.3
> -Patch-ID:	bash43-028
> -
> -Bug-Reported-by:	Florian Weimer <fweimer@redhat.com>
> -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 ("\"$@\"", (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 ("\"$@\"", (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 ("\"$@\"", (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 ("\"$@\"", (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 ("\"$@\"", (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 ("\"$@\"", (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 ("\"$@\"", (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 ("\"$@\"", (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 ("\"$@\"", (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 ("\"$@\"", (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 ("\"$@\"", (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 ("\"$@\"", (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 ("\"$@\"", (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 ("\"$@\"", (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 ("\"$@\"", (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 ("\"$@\"", (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:
> -! #line 1029 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      { (yyvsp[(2) - (2)].pattern)->next = (yyvsp[(1) - (2)].pattern);
> (yyval.pattern) = (yyvsp[(2) - (2)].pattern); }
> -      break;
> -  
> -    case 118:
> -! #line 1033 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      { (yyval.pattern) = make_pattern_list ((yyvsp[(2) - (4)].word_list),
> (yyvsp[(4) - (4)].command)); }
> -      break;
> -  
> -    case 119:
> -! #line 1035 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      { (yyval.pattern) = make_pattern_list ((yyvsp[(2) - (4)].word_list),
> (COMMAND *)NULL); }
> -      break;
> -  
> -    case 120:
> -! #line 1037 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      { (yyval.pattern) = make_pattern_list ((yyvsp[(3) - (5)].word_list),
> (yyvsp[(5) - (5)].command)); }
> -      break;
> -  
> -    case 121:
> -! #line 1039 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      { (yyval.pattern) = make_pattern_list ((yyvsp[(3) - (5)].word_list),
> (COMMAND *)NULL); }
> -      break;
> -  
> -    case 122:
> -! #line 1043 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      { (yyval.pattern) = (yyvsp[(1) - (2)].pattern); }
> -      break;
> -  
> -    case 123:
> -! #line 1045 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      { (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern);
> (yyval.pattern) = (yyvsp[(2) - (3)].pattern); }
> -      break;
> -  
> -    case 124:
> -! #line 1047 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      { (yyvsp[(1) - (2)].pattern)->flags |= CASEPAT_FALLTHROUGH;
> (yyval.pattern) = (yyvsp[(1) - (2)].pattern); }
> -      break;
> -  
> -    case 125:
> -! #line 1049 "/usr/src/local/chet/src/bash/bash-4.3.28/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 1051 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      { (yyvsp[(1) - (2)].pattern)->flags |= CASEPAT_TESTNEXT;
> (yyval.pattern) = (yyvsp[(1) - (2)].pattern); }
> -      break;
> -  
> -    case 127:
> -! #line 1053 "/usr/src/local/chet/src/bash/bash-4.3.28/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 1057 "/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 129:
> -! #line 1059 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      { (yyval.word_list) = make_word_list ((yyvsp[(3) - (3)].word),
> (yyvsp[(1) - (3)].word_list)); }
> -      break;
> -  
> -    case 130:
> -! #line 1068 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  (yyval.command) = (yyvsp[(2) - (2)].command);
> -***************
> -*** 3110,3114 ****
> -  
> -    case 132:
> -! #line 1072 "/usr/homes/chet/src/bash/src/parse.y"
> -      {
> -  			  (yyval.command) = (yyvsp[(2) - (2)].command);
> ---- 3115,3119 ----
> -  
> -    case 132:
> -! #line 1077 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  (yyval.command) = (yyvsp[(2) - (2)].command);
> -***************
> -*** 3117,3121 ****
> -  
> -    case 134:
> -! #line 1079 "/usr/homes/chet/src/bash/src/parse.y"
> -      {
> -  			  if ((yyvsp[(1) - (3)].command)->type ==
> cm_connection)
> ---- 3122,3126 ----
> -  
> -    case 134:
> -! #line 1084 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  if ((yyvsp[(1) - (3)].command)->type ==
> cm_connection)
> -***************
> -*** 3127,3141 ****
> -  
> -    case 136:
> -! #line 1090 "/usr/homes/chet/src/bash/src/parse.y"
> -      { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command),
> (yyvsp[(4) - (4)].command), AND_AND); }
> -      break;
> -  
> -    case 137:
> -! #line 1092 "/usr/homes/chet/src/bash/src/parse.y"
> -      { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command),
> (yyvsp[(4) - (4)].command), OR_OR); }
> -      break;
> -  
> -    case 138:
> -! #line 1094 "/usr/homes/chet/src/bash/src/parse.y"
> -      {
> -  			  if ((yyvsp[(1) - (4)].command)->type ==
> cm_connection)
> ---- 3132,3146 ----
> -  
> -    case 136:
> -! #line 1095 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command),
> (yyvsp[(4) - (4)].command), AND_AND); }
> -      break;
> -  
> -    case 137:
> -! #line 1097 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command),
> (yyvsp[(4) - (4)].command), OR_OR); }
> -      break;
> -  
> -    case 138:
> -! #line 1099 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  if ((yyvsp[(1) - (4)].command)->type ==
> cm_connection)
> -***************
> -*** 3147,3181 ****
> -  
> -    case 139:
> -! #line 1101 "/usr/homes/chet/src/bash/src/parse.y"
> -      { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command),
> (yyvsp[(4) - (4)].command), ';'); }
> -      break;
> -  
> -    case 140:
> -! #line 1103 "/usr/homes/chet/src/bash/src/parse.y"
> -      { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command),
> (yyvsp[(4) - (4)].command), ';'); }
> -      break;
> -  
> -    case 141:
> -! #line 1105 "/usr/homes/chet/src/bash/src/parse.y"
> -      { (yyval.command) = (yyvsp[(1) - (1)].command); }
> -      break;
> -  
> -    case 144:
> -! #line 1113 "/usr/homes/chet/src/bash/src/parse.y"
> -      { (yyval.number) = '\n'; }
> -      break;
> -  
> -    case 145:
> -! #line 1115 "/usr/homes/chet/src/bash/src/parse.y"
> -      { (yyval.number) = ';'; }
> -      break;
> -  
> -    case 146:
> -! #line 1117 "/usr/homes/chet/src/bash/src/parse.y"
> -      { (yyval.number) = yacc_EOF; }
> -      break;
> -  
> -    case 149:
> -! #line 1131 "/usr/homes/chet/src/bash/src/parse.y"
> -      {
> -  			  (yyval.command) = (yyvsp[(1) - (1)].command);
> ---- 3152,3186 ----
> -  
> -    case 139:
> -! #line 1106 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command),
> (yyvsp[(4) - (4)].command), ';'); }
> -      break;
> -  
> -    case 140:
> -! #line 1108 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command),
> (yyvsp[(4) - (4)].command), ';'); }
> -      break;
> -  
> -    case 141:
> -! #line 1110 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      { (yyval.command) = (yyvsp[(1) - (1)].command); }
> -      break;
> -  
> -    case 144:
> -! #line 1118 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      { (yyval.number) = '\n'; }
> -      break;
> -  
> -    case 145:
> -! #line 1120 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      { (yyval.number) = ';'; }
> -      break;
> -  
> -    case 146:
> -! #line 1122 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      { (yyval.number) = yacc_EOF; }
> -      break;
> -  
> -    case 149:
> -! #line 1136 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  (yyval.command) = (yyvsp[(1) - (1)].command);
> -***************
> -*** 3193,3197 ****
> -  
> -    case 150:
> -! #line 1144 "/usr/homes/chet/src/bash/src/parse.y"
> -      {
> -  			  if ((yyvsp[(1) - (2)].command)->type ==
> cm_connection)
> ---- 3198,3202 ----
> -  
> -    case 150:
> -! #line 1149 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  if ((yyvsp[(1) - (2)].command)->type ==
> cm_connection)
> -***************
> -*** 3212,3216 ****
> -  
> -    case 151:
> -! #line 1160 "/usr/homes/chet/src/bash/src/parse.y"
> -      {
> -  			  (yyval.command) = (yyvsp[(1) - (2)].command);
> ---- 3217,3221 ----
> -  
> -    case 151:
> -! #line 1165 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  (yyval.command) = (yyvsp[(1) - (2)].command);
> -***************
> -*** 3228,3242 ****
> -  
> -    case 152:
> -! #line 1175 "/usr/homes/chet/src/bash/src/parse.y"
> -      { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command),
> (yyvsp[(4) - (4)].command), AND_AND); }
> -      break;
> -  
> -    case 153:
> -! #line 1177 "/usr/homes/chet/src/bash/src/parse.y"
> -      { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command),
> (yyvsp[(4) - (4)].command), OR_OR); }
> -      break;
> -  
> -    case 154:
> -! #line 1179 "/usr/homes/chet/src/bash/src/parse.y"
> -      {
> -  			  if ((yyvsp[(1) - (3)].command)->type ==
> cm_connection)
> ---- 3233,3247 ----
> -  
> -    case 152:
> -! #line 1180 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command),
> (yyvsp[(4) - (4)].command), AND_AND); }
> -      break;
> -  
> -    case 153:
> -! #line 1182 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command),
> (yyvsp[(4) - (4)].command), OR_OR); }
> -      break;
> -  
> -    case 154:
> -! #line 1184 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  if ((yyvsp[(1) - (3)].command)->type ==
> cm_connection)
> -***************
> -*** 3248,3267 ****
> -  
> -    case 155:
> -! #line 1186 "/usr/homes/chet/src/bash/src/parse.y"
> -      { (yyval.command) = command_connect ((yyvsp[(1) - (3)].command),
> (yyvsp[(3) - (3)].command), ';'); }
> -      break;
> -  
> -    case 156:
> -! #line 1189 "/usr/homes/chet/src/bash/src/parse.y"
> -      { (yyval.command) = (yyvsp[(1) - (1)].command); }
> -      break;
> -  
> -    case 157:
> -! #line 1193 "/usr/homes/chet/src/bash/src/parse.y"
> -      { (yyval.command) = (yyvsp[(1) - (1)].command); }
> -      break;
> -  
> -    case 158:
> -! #line 1195 "/usr/homes/chet/src/bash/src/parse.y"
> -      {
> -  			  if ((yyvsp[(2) - (2)].command))
> ---- 3253,3272 ----
> -  
> -    case 155:
> -! #line 1191 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      { (yyval.command) = command_connect ((yyvsp[(1) - (3)].command),
> (yyvsp[(3) - (3)].command), ';'); }
> -      break;
> -  
> -    case 156:
> -! #line 1194 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      { (yyval.command) = (yyvsp[(1) - (1)].command); }
> -      break;
> -  
> -    case 157:
> -! #line 1198 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      { (yyval.command) = (yyvsp[(1) - (1)].command); }
> -      break;
> -  
> -    case 158:
> -! #line 1200 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  if ((yyvsp[(2) - (2)].command))
> -***************
> -*** 3272,3276 ****
> -  
> -    case 159:
> -! #line 1201 "/usr/homes/chet/src/bash/src/parse.y"
> -      {
> -  			  if ((yyvsp[(2) - (2)].command))
> ---- 3277,3281 ----
> -  
> -    case 159:
> -! #line 1206 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  if ((yyvsp[(2) - (2)].command))
> -***************
> -*** 3281,3285 ****
> -  
> -    case 160:
> -! #line 1207 "/usr/homes/chet/src/bash/src/parse.y"
> -      {
> -  			  ELEMENT x;
> ---- 3286,3290 ----
> -  
> -    case 160:
> -! #line 1212 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  ELEMENT x;
> -***************
> -*** 3301,3305 ****
> -  
> -    case 161:
> -! #line 1224 "/usr/homes/chet/src/bash/src/parse.y"
> -      {
> -  			  ELEMENT x;
> ---- 3306,3310 ----
> -  
> -    case 161:
> -! #line 1229 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  ELEMENT x;
> -***************
> -*** 3322,3331 ****
> -  
> -    case 162:
> -! #line 1244 "/usr/homes/chet/src/bash/src/parse.y"
> -      { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command),
> (yyvsp[(4) - (4)].command), '|'); }
> -      break;
> -  
> -    case 163:
> -! #line 1246 "/usr/homes/chet/src/bash/src/parse.y"
> -      {
> -  			  /* Make cmd1 |& cmd2 equivalent to cmd1 2>&1 |
> cmd2 */
> ---- 3327,3336 ----
> -  
> -    case 162:
> -! #line 1249 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command),
> (yyvsp[(4) - (4)].command), '|'); }
> -      break;
> -  
> -    case 163:
> -! #line 1251 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  /* Make cmd1 |& cmd2 equivalent to cmd1 2>&1 |
> cmd2 */
> -***************
> -*** 3353,3372 ****
> -  
> -    case 164:
> -! #line 1269 "/usr/homes/chet/src/bash/src/parse.y"
> -      { (yyval.command) = (yyvsp[(1) - (1)].command); }
> -      break;
> -  
> -    case 165:
> -! #line 1273 "/usr/homes/chet/src/bash/src/parse.y"
> -      { (yyval.number) = CMD_TIME_PIPELINE; }
> -      break;
> -  
> -    case 166:
> -! #line 1275 "/usr/homes/chet/src/bash/src/parse.y"
> -      { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
> -      break;
> -  
> -    case 167:
> -! #line 1277 "/usr/homes/chet/src/bash/src/parse.y"
> -      { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
> -      break;
> ---- 3358,3377 ----
> -  
> -    case 164:
> -! #line 1274 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      { (yyval.command) = (yyvsp[(1) - (1)].command); }
> -      break;
> -  
> -    case 165:
> -! #line 1278 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      { (yyval.number) = CMD_TIME_PIPELINE; }
> -      break;
> -  
> -    case 166:
> -! #line 1280 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
> -      break;
> -  
> -    case 167:
> -! #line 1282 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
> -      break;
> -***************
> -*** 3374,3378 ****
> -  
> -  /* Line 1267 of yacc.c.  */
> -! #line 3377 "y.tab.c"
> -        default: break;
> -      }
> ---- 3379,3383 ----
> -  
> -  /* Line 1267 of yacc.c.  */
> -! #line 3382 "y.tab.c"
> -        default: break;
> -      }
> -***************
> -*** 3588,3592 ****
> -  
> -  
> -! #line 1279 "/usr/homes/chet/src/bash/src/parse.y"
> -  
> -  
> ---- 3593,3597 ----
> -  
> -  
> -! #line 1284 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -  
> -  
> -***************
> -*** 4949,4952 ****
> ---- 4954,4972 ----
> -  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 ()
> -***************
> -*** 8542,8543 ****
> ---- 8562,8564 ----
> -  }
> -  #endif /* HANDLE_MULTIBYTE */
> -+ 
> -*** ../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 27
> -  
> -  #endif /* _PATCHLEVEL_H_ */
> ---- 26,30 ----
> -     looks for to find the patch level (for the sccs version string). */
> -  
> -! #define PATCHLEVEL 28
> -  
> -  #endif /* _PATCHLEVEL_H_ */
> diff --git a/src/patches/bash/bash43-029 b/src/patches/bash/bash43-029
> deleted file mode 100644
> index 93bd390..0000000
> --- a/src/patches/bash/bash43-029
> +++ /dev/null
> @@ -1,59 +0,0 @@
> -			     BASH PATCH REPORT
> -			     =================
> -
> -Bash-Release:	4.3
> -Patch-ID:	bash43-029
> -
> -Bug-Reported-by:	Michal Zalewski <lcamtuf@coredump.cx>
> -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.3.28/make_cmd.c	2011-12-16 08:08:01.000000000 -0500
> ---- make_cmd.c	2014-10-02 11:24:23.000000000 -0400
> -***************
> -*** 693,696 ****
> ---- 693,697 ----
> -    temp->redirector = source;
> -    temp->redirectee = dest_and_filename;
> -+   temp->here_doc_eof = 0;
> -    temp->instruction = instruction;
> -    temp->flags = 0;
> -*** ../bash-4.3.28/copy_cmd.c	2009-09-11 16:28:02.000000000 -0400
> ---- copy_cmd.c	2014-10-02 11:24:23.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.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 28
> -  
> -  #endif /* _PATCHLEVEL_H_ */
> ---- 26,30 ----
> -     looks for to find the patch level (for the sccs version string). */
> -  
> -! #define PATCHLEVEL 29
> -  
> -  #endif /* _PATCHLEVEL_H_ */
> diff --git a/src/patches/bash/bash43-030 b/src/patches/bash/bash43-030
> deleted file mode 100644
> index 78984da..0000000
> --- a/src/patches/bash/bash43-030
> +++ /dev/null
> @@ -1,2064 +0,0 @@
> -			     BASH PATCH REPORT
> -			     =================
> -
> -Bash-Release:	4.3
> -Patch-ID:	bash43-030
> -
> -Bug-Reported-by:	Michal Zalewski <lcamtuf@coredump.cx>
> -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.3.29/builtins/evalstring.c	2014-10-01 12:57:47.000000000
> -0400
> ---- builtins/evalstring.c	2014-10-03 11:57:04.000000000 -0400
> -***************
> -*** 309,318 ****
> -  	      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;
> -  		}
> -  
> ---- 313,335 ----
> -  	      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;
> -! 		    }
> -  		}
> -  
> -***************
> -*** 379,383 ****
> -  
> -  	      if (flags & SEVAL_ONECMD)
> -! 		break;
> -  	    }
> -  	}
> ---- 396,403 ----
> -  
> -  	      if (flags & SEVAL_ONECMD)
> -! 		{
> -! 		  reset_parser ();
> -! 		  break;
> -! 		}
> -  	    }
> -  	}
> -*** ../bash-4.3.29/parse.y	2014-10-01 12:58:43.000000000 -0400
> ---- parse.y	2014-10-03 14:48:59.000000000 -0400
> -***************
> -*** 2539,2542 ****
> ---- 2539,2552 ----
> -  }
> -  
> -+ 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.
> */
> -***************
> -*** 4028,4033 ****
> -    /* 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
> ---- 4053,4058 ----
> -    /* 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.3.29/shell.h	2014-10-01 12:57:39.000000000 -0400
> ---- shell.h	2014-10-03 14:49:12.000000000 -0400
> -***************
> -*** 181,184 ****
> ---- 181,186 ----
> -  
> -  /* 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.3.28/y.tab.c	2014-10-01 13:09:46.000000000 -0400
> ---- y.tab.c	2014-10-04 19:26:22.000000000 -0400
> -***************
> -*** 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"
> ---- 169,173 ----
> -  
> -  /* Copy the first part of user declarations.  */
> -! #line 21 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -  
> -  #include "config.h"
> -***************
> -*** 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. */
> ---- 498,502 ----
> -  #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
> -  typedef union YYSTYPE
> -! #line 329 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -  {
> -    WORD_DESC *word;		/* the word that we read. */
> -***************
> -*** 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
> ---- 2099,2103 ----
> -      {
> -          case 2:
> -! #line 383 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  /* Case of regular command.  Discard the error
> -***************
> -*** 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
> ---- 2113,2117 ----
> -  
> -    case 3:
> -! #line 394 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  /* Case of regular command, but not a very
> -***************
> -*** 2125,2129 ****
> -  
> -    case 4:
> -! #line 403 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  /* Error during parsing.  Return NULL command. */
> ---- 2125,2129 ----
> -  
> -    case 4:
> -! #line 403 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  /* Error during parsing.  Return NULL command. */
> -***************
> -*** 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
> ---- 2143,2147 ----
> -  
> -    case 5:
> -! #line 418 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  /* Case of EOF seen by itself.  Do ignoreeof or
> -***************
> -*** 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;
> ---- 2154,2168 ----
> -  
> -    case 6:
> -! #line 428 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      { (yyval.word_list) = make_word_list ((yyvsp[(1) - (1)].word),
> (WORD_LIST *)NULL); }
> -      break;
> -  
> -    case 7:
> -! #line 430 "/usr/src/local/bash/bash-4.3-patched/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/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  source.dest = 1;
> -***************
> -*** 2173,2177 ****
> -  
> -    case 9:
> -! #line 440 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  source.dest = 0;
> ---- 2173,2177 ----
> -  
> -    case 9:
> -! #line 440 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  source.dest = 0;
> -***************
> -*** 2182,2186 ****
> -  
> -    case 10:
> -! #line 446 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  source.dest = (yyvsp[(1) - (3)].number);
> ---- 2182,2186 ----
> -  
> -    case 10:
> -! #line 446 "/usr/src/local/bash/bash-4.3-patched/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);
> ---- 2191,2195 ----
> -  
> -    case 11:
> -! #line 452 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  source.dest = (yyvsp[(1) - (3)].number);
> -***************
> -*** 2200,2204 ****
> -  
> -    case 12:
> -! #line 458 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  source.filename = (yyvsp[(1) - (3)].word);
> ---- 2200,2204 ----
> -  
> -    case 12:
> -! #line 458 "/usr/src/local/bash/bash-4.3-patched/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);
> ---- 2209,2213 ----
> -  
> -    case 13:
> -! #line 464 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  source.filename = (yyvsp[(1) - (3)].word);
> -***************
> -*** 2218,2222 ****
> -  
> -    case 14:
> -! #line 470 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  source.dest = 1;
> ---- 2218,2222 ----
> -  
> -    case 14:
> -! #line 470 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  source.dest = 1;
> -***************
> -*** 2227,2231 ****
> -  
> -    case 15:
> -! #line 476 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  source.dest = (yyvsp[(1) - (3)].number);
> ---- 2227,2231 ----
> -  
> -    case 15:
> -! #line 476 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  source.dest = (yyvsp[(1) - (3)].number);
> -***************
> -*** 2236,2240 ****
> -  
> -    case 16:
> -! #line 482 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  source.filename = (yyvsp[(1) - (3)].word);
> ---- 2236,2240 ----
> -  
> -    case 16:
> -! #line 482 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  source.filename = (yyvsp[(1) - (3)].word);
> -***************
> -*** 2245,2249 ****
> -  
> -    case 17:
> -! #line 488 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  source.dest = 1;
> ---- 2245,2249 ----
> -  
> -    case 17:
> -! #line 488 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  source.dest = 1;
> -***************
> -*** 2254,2258 ****
> -  
> -    case 18:
> -! #line 494 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  source.dest = (yyvsp[(1) - (3)].number);
> ---- 2254,2258 ----
> -  
> -    case 18:
> -! #line 494 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  source.dest = (yyvsp[(1) - (3)].number);
> -***************
> -*** 2263,2267 ****
> -  
> -    case 19:
> -! #line 500 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  source.filename = (yyvsp[(1) - (3)].word);
> ---- 2263,2267 ----
> -  
> -    case 19:
> -! #line 500 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  source.filename = (yyvsp[(1) - (3)].word);
> -***************
> -*** 2272,2276 ****
> -  
> -    case 20:
> -! #line 506 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  source.dest = 0;
> ---- 2272,2276 ----
> -  
> -    case 20:
> -! #line 506 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  source.dest = 0;
> -***************
> -*** 2281,2285 ****
> -  
> -    case 21:
> -! #line 512 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  source.dest = (yyvsp[(1) - (3)].number);
> ---- 2281,2285 ----
> -  
> -    case 21:
> -! #line 512 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  source.dest = (yyvsp[(1) - (3)].number);
> -***************
> -*** 2290,2294 ****
> -  
> -    case 22:
> -! #line 518 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  source.filename = (yyvsp[(1) - (3)].word);
> ---- 2290,2294 ----
> -  
> -    case 22:
> -! #line 518 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  source.filename = (yyvsp[(1) - (3)].word);
> -***************
> -*** 2299,2303 ****
> -  
> -    case 23:
> -! #line 524 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  source.dest = 0;
> ---- 2299,2303 ----
> -  
> -    case 23:
> -! #line 524 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  source.dest = 0;
> -***************
> -*** 2309,2313 ****
> -  
> -    case 24:
> -! #line 531 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  source.dest = (yyvsp[(1) - (3)].number);
> ---- 2309,2313 ----
> -  
> -    case 24:
> -! #line 531 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  source.dest = (yyvsp[(1) - (3)].number);
> -***************
> -*** 2319,2323 ****
> -  
> -    case 25:
> -! #line 538 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  source.filename = (yyvsp[(1) - (3)].word);
> ---- 2319,2323 ----
> -  
> -    case 25:
> -! #line 538 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  source.filename = (yyvsp[(1) - (3)].word);
> -***************
> -*** 2329,2333 ****
> -  
> -    case 26:
> -! #line 545 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  source.dest = 0;
> ---- 2329,2333 ----
> -  
> -    case 26:
> -! #line 545 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  source.dest = 0;
> -***************
> -*** 2339,2343 ****
> -  
> -    case 27:
> -! #line 552 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  source.dest = (yyvsp[(1) - (3)].number);
> ---- 2339,2343 ----
> -  
> -    case 27:
> -! #line 552 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  source.dest = (yyvsp[(1) - (3)].number);
> -***************
> -*** 2349,2353 ****
> -  
> -    case 28:
> -! #line 559 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  source.filename = (yyvsp[(1) - (3)].word);
> ---- 2349,2353 ----
> -  
> -    case 28:
> -! #line 559 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  source.filename = (yyvsp[(1) - (3)].word);
> -***************
> -*** 2359,2363 ****
> -  
> -    case 29:
> -! #line 566 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  source.dest = 0;
> ---- 2359,2363 ----
> -  
> -    case 29:
> -! #line 566 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  source.dest = 0;
> -***************
> -*** 2368,2372 ****
> -  
> -    case 30:
> -! #line 572 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  source.dest = (yyvsp[(1) - (3)].number);
> ---- 2368,2372 ----
> -  
> -    case 30:
> -! #line 572 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  source.dest = (yyvsp[(1) - (3)].number);
> -***************
> -*** 2377,2381 ****
> -  
> -    case 31:
> -! #line 578 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  source.filename = (yyvsp[(1) - (3)].word);
> ---- 2377,2381 ----
> -  
> -    case 31:
> -! #line 578 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  source.filename = (yyvsp[(1) - (3)].word);
> -***************
> -*** 2386,2390 ****
> -  
> -    case 32:
> -! #line 584 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  source.dest = 0;
> ---- 2386,2390 ----
> -  
> -    case 32:
> -! #line 584 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  source.dest = 0;
> -***************
> -*** 2395,2399 ****
> -  
> -    case 33:
> -! #line 590 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  source.dest = (yyvsp[(1) - (3)].number);
> ---- 2395,2399 ----
> -  
> -    case 33:
> -! #line 590 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  source.dest = (yyvsp[(1) - (3)].number);
> -***************
> -*** 2404,2408 ****
> -  
> -    case 34:
> -! #line 596 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  source.filename = (yyvsp[(1) - (3)].word);
> ---- 2404,2408 ----
> -  
> -    case 34:
> -! #line 596 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  source.filename = (yyvsp[(1) - (3)].word);
> -***************
> -*** 2413,2417 ****
> -  
> -    case 35:
> -! #line 602 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  source.dest = 1;
> ---- 2413,2417 ----
> -  
> -    case 35:
> -! #line 602 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  source.dest = 1;
> -***************
> -*** 2422,2426 ****
> -  
> -    case 36:
> -! #line 608 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  source.dest = (yyvsp[(1) - (3)].number);
> ---- 2422,2426 ----
> -  
> -    case 36:
> -! #line 608 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  source.dest = (yyvsp[(1) - (3)].number);
> -***************
> -*** 2431,2435 ****
> -  
> -    case 37:
> -! #line 614 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  source.filename = (yyvsp[(1) - (3)].word);
> ---- 2431,2435 ----
> -  
> -    case 37:
> -! #line 614 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  source.filename = (yyvsp[(1) - (3)].word);
> -***************
> -*** 2440,2444 ****
> -  
> -    case 38:
> -! #line 620 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  source.dest = 0;
> ---- 2440,2444 ----
> -  
> -    case 38:
> -! #line 620 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  source.dest = 0;
> -***************
> -*** 2449,2453 ****
> -  
> -    case 39:
> -! #line 626 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  source.dest = (yyvsp[(1) - (3)].number);
> ---- 2449,2453 ----
> -  
> -    case 39:
> -! #line 626 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  source.dest = (yyvsp[(1) - (3)].number);
> -***************
> -*** 2458,2462 ****
> -  
> -    case 40:
> -! #line 632 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  source.filename = (yyvsp[(1) - (3)].word);
> ---- 2458,2462 ----
> -  
> -    case 40:
> -! #line 632 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  source.filename = (yyvsp[(1) - (3)].word);
> -***************
> -*** 2467,2471 ****
> -  
> -    case 41:
> -! #line 638 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  source.dest = 1;
> ---- 2467,2471 ----
> -  
> -    case 41:
> -! #line 638 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  source.dest = 1;
> -***************
> -*** 2476,2480 ****
> -  
> -    case 42:
> -! #line 644 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  source.dest = (yyvsp[(1) - (3)].number);
> ---- 2476,2480 ----
> -  
> -    case 42:
> -! #line 644 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  source.dest = (yyvsp[(1) - (3)].number);
> -***************
> -*** 2485,2489 ****
> -  
> -    case 43:
> -! #line 650 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  source.filename = (yyvsp[(1) - (3)].word);
> ---- 2485,2489 ----
> -  
> -    case 43:
> -! #line 650 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  source.filename = (yyvsp[(1) - (3)].word);
> -***************
> -*** 2494,2498 ****
> -  
> -    case 44:
> -! #line 656 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  source.dest = 1;
> ---- 2494,2498 ----
> -  
> -    case 44:
> -! #line 656 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  source.dest = 1;
> -***************
> -*** 2503,2507 ****
> -  
> -    case 45:
> -! #line 662 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  source.dest = (yyvsp[(1) - (3)].number);
> ---- 2503,2507 ----
> -  
> -    case 45:
> -! #line 662 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  source.dest = (yyvsp[(1) - (3)].number);
> -***************
> -*** 2512,2516 ****
> -  
> -    case 46:
> -! #line 668 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  source.filename = (yyvsp[(1) - (3)].word);
> ---- 2512,2516 ----
> -  
> -    case 46:
> -! #line 668 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  source.filename = (yyvsp[(1) - (3)].word);
> -***************
> -*** 2521,2525 ****
> -  
> -    case 47:
> -! #line 674 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  source.dest = 0;
> ---- 2521,2525 ----
> -  
> -    case 47:
> -! #line 674 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  source.dest = 0;
> -***************
> -*** 2530,2534 ****
> -  
> -    case 48:
> -! #line 680 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  source.dest = (yyvsp[(1) - (3)].number);
> ---- 2530,2534 ----
> -  
> -    case 48:
> -! #line 680 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  source.dest = (yyvsp[(1) - (3)].number);
> -***************
> -*** 2539,2543 ****
> -  
> -    case 49:
> -! #line 686 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  source.filename = (yyvsp[(1) - (3)].word);
> ---- 2539,2543 ----
> -  
> -    case 49:
> -! #line 686 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  source.filename = (yyvsp[(1) - (3)].word);
> -***************
> -*** 2548,2552 ****
> -  
> -    case 50:
> -! #line 692 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  source.dest = 1;
> ---- 2548,2552 ----
> -  
> -    case 50:
> -! #line 692 "/usr/src/local/bash/bash-4.3-patched/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;
> ---- 2557,2561 ----
> -  
> -    case 51:
> -! #line 698 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  source.dest = 1;
> -***************
> -*** 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);
> ---- 2566,2585 ----
> -  
> -    case 52:
> -! #line 706 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      { (yyval.element).word = (yyvsp[(1) - (1)].word);
> (yyval.element).redirect = 0; }
> -      break;
> -  
> -    case 53:
> -! #line 708 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      { (yyval.element).word = (yyvsp[(1) - (1)].word);
> (yyval.element).redirect = 0; }
> -      break;
> -  
> -    case 54:
> -! #line 710 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      { (yyval.element).redirect = (yyvsp[(1) - (1)].redirect);
> (yyval.element).word = 0; }
> -      break;
> -  
> -    case 55:
> -! #line 714 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  (yyval.redirect) = (yyvsp[(1) - (1)].redirect);
> -***************
> -*** 2588,2592 ****
> -  
> -    case 56:
> -! #line 718 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  register REDIRECT *t;
> ---- 2588,2592 ----
> -  
> -    case 56:
> -! #line 718 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  register REDIRECT *t;
> -***************
> -*** 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;
> ---- 2600,2624 ----
> -  
> -    case 57:
> -! #line 729 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      { (yyval.command) = make_simple_command ((yyvsp[(1) - (1)].element),
> (COMMAND *)NULL); }
> -      break;
> -  
> -    case 58:
> -! #line 731 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      { (yyval.command) = make_simple_command ((yyvsp[(2) - (2)].element),
> (yyvsp[(1) - (2)].command)); }
> -      break;
> -  
> -    case 59:
> -! #line 735 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      { (yyval.command) = clean_simple_command ((yyvsp[(1) - (1)].command));
> }
> -      break;
> -  
> -    case 60:
> -! #line 737 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      { (yyval.command) = (yyvsp[(1) - (1)].command); }
> -      break;
> -  
> -    case 61:
> -! #line 739 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  COMMAND *tc;
> -***************
> -*** 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 ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) -
> (6)].command), word_lineno[word_top]);
> ---- 2639,2708 ----
> -  
> -    case 62:
> -! #line 755 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      { (yyval.command) = (yyvsp[(1) - (1)].command); }
> -      break;
> -  
> -    case 63:
> -! #line 757 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      { (yyval.command) = (yyvsp[(1) - (1)].command); }
> -      break;
> -  
> -    case 64:
> -! #line 761 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      { (yyval.command) = (yyvsp[(1) - (1)].command); }
> -      break;
> -  
> -    case 65:
> -! #line 763 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      { (yyval.command) = (yyvsp[(1) - (1)].command); }
> -      break;
> -  
> -    case 66:
> -! #line 765 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      { (yyval.command) = make_while_command ((yyvsp[(2) - (5)].command),
> (yyvsp[(4) - (5)].command)); }
> -      break;
> -  
> -    case 67:
> -! #line 767 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      { (yyval.command) = make_until_command ((yyvsp[(2) - (5)].command),
> (yyvsp[(4) - (5)].command)); }
> -      break;
> -  
> -    case 68:
> -! #line 769 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      { (yyval.command) = (yyvsp[(1) - (1)].command); }
> -      break;
> -  
> -    case 69:
> -! #line 771 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      { (yyval.command) = (yyvsp[(1) - (1)].command); }
> -      break;
> -  
> -    case 70:
> -! #line 773 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      { (yyval.command) = (yyvsp[(1) - (1)].command); }
> -      break;
> -  
> -    case 71:
> -! #line 775 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      { (yyval.command) = (yyvsp[(1) - (1)].command); }
> -      break;
> -  
> -    case 72:
> -! #line 777 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      { (yyval.command) = (yyvsp[(1) - (1)].command); }
> -      break;
> -  
> -    case 73:
> -! #line 779 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      { (yyval.command) = (yyvsp[(1) - (1)].command); }
> -      break;
> -  
> -    case 74:
> -! #line 781 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      { (yyval.command) = (yyvsp[(1) - (1)].command); }
> -      break;
> -  
> -    case 75:
> -! #line 785 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  (yyval.command) = make_for_command ((yyvsp[(2) -
> (6)].word), add_string_to_list ("\"$@\"", (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 ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) -
> (6)].command), word_lineno[word_top]);
> ---- 2712,2716 ----
> -  
> -    case 76:
> -! #line 790 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  (yyval.command) = make_for_command ((yyvsp[(2) -
> (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) -
> (6)].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 ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) -
> (7)].command), word_lineno[word_top]);
> ---- 2720,2724 ----
> -  
> -    case 77:
> -! #line 795 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  (yyval.command) = make_for_command ((yyvsp[(2) -
> (7)].word), add_string_to_list ("\"$@\"", (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 ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) -
> (7)].command), word_lineno[word_top]);
> ---- 2728,2732 ----
> -  
> -    case 78:
> -! #line 800 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  (yyval.command) = make_for_command ((yyvsp[(2) -
> (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) -
> (7)].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]);
> ---- 2736,2740 ----
> -  
> -    case 79:
> -! #line 805 "/usr/src/local/bash/bash-4.3-patched/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]);
> ---- 2744,2748 ----
> -  
> -    case 80:
> -! #line 810 "/usr/src/local/bash/bash-4.3-patched/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]);
> -***************
> -*** 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]);
> ---- 2752,2756 ----
> -  
> -    case 81:
> -! #line 815 "/usr/src/local/bash/bash-4.3-patched/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]);
> ---- 2760,2764 ----
> -  
> -    case 82:
> -! #line 820 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  (yyval.command) = make_for_command ((yyvsp[(2) -
> (9)].word), (WORD_LIST *)NULL, (yyvsp[(8) - (9)].command),
> word_lineno[word_top]);
> -***************
> -*** 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);
> ---- 2768,2772 ----
> -  
> -    case 83:
> -! #line 827 "/usr/src/local/bash/bash-4.3-patched/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);
> ---- 2776,2780 ----
> -  
> -    case 84:
> -! #line 832 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  				  (yyval.command) = make_arith_for_command
> ((yyvsp[(2) - (7)].word_list), (yyvsp[(6) - (7)].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);
> ---- 2784,2788 ----
> -  
> -    case 85:
> -! #line 837 "/usr/src/local/bash/bash-4.3-patched/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);
> ---- 2792,2796 ----
> -  
> -    case 86:
> -! #line 842 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  				  (yyval.command) = make_arith_for_command
> ((yyvsp[(2) - (5)].word_list), (yyvsp[(4) - (5)].command), arith_for_lineno);
> -***************
> -*** 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 ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) -
> (6)].command), word_lineno[word_top]);
> ---- 2800,2804 ----
> -  
> -    case 87:
> -! #line 849 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  (yyval.command) = make_select_command ((yyvsp[(2)
> - (6)].word), add_string_to_list ("\"$@\"", (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 ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) -
> (6)].command), word_lineno[word_top]);
> ---- 2808,2812 ----
> -  
> -    case 88:
> -! #line 854 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  (yyval.command) = make_select_command ((yyvsp[(2)
> - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) -
> (6)].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 ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) -
> (7)].command), word_lineno[word_top]);
> ---- 2816,2820 ----
> -  
> -    case 89:
> -! #line 859 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  (yyval.command) = make_select_command ((yyvsp[(2)
> - (7)].word), add_string_to_list ("\"$@\"", (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 ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) -
> (7)].command), word_lineno[word_top]);
> ---- 2824,2828 ----
> -  
> -    case 90:
> -! #line 864 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  (yyval.command) = make_select_command ((yyvsp[(2)
> - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) -
> (7)].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]);
> ---- 2832,2836 ----
> -  
> -    case 91:
> -! #line 869 "/usr/src/local/bash/bash-4.3-patched/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]);
> ---- 2840,2844 ----
> -  
> -    case 92:
> -! #line 874 "/usr/src/local/bash/bash-4.3-patched/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]);
> -***************
> -*** 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]);
> ---- 2848,2852 ----
> -  
> -    case 93:
> -! #line 881 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  (yyval.command) = make_case_command ((yyvsp[(2) -
> (6)].word), (PATTERN_LIST *)NULL, 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]);
> ---- 2856,2860 ----
> -  
> -    case 94:
> -! #line 886 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  (yyval.command) = make_case_command ((yyvsp[(2) -
> (7)].word), (yyvsp[(5) - (7)].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]);
> ---- 2864,2868 ----
> -  
> -    case 95:
> -! #line 891 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  (yyval.command) = make_case_command ((yyvsp[(2) -
> (6)].word), (yyvsp[(5) - (6)].pattern), word_lineno[word_top]);
> -***************
> -*** 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;
> ---- 2872,2896 ----
> -  
> -    case 96:
> -! #line 898 "/usr/src/local/bash/bash-4.3-patched/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/bash/bash-4.3-patched/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/bash/bash-4.3-patched/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/bash/bash-4.3-patched/parse.y"
> -      { (yyval.command) = (yyvsp[(1) - (1)].command); }
> -      break;
> -  
> -    case 100:
> -! #line 910 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  COMMAND *tc;
> -***************
> -*** 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));
> ---- 2924,2928 ----
> -  
> -    case 101:
> -! #line 941 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  (yyval.command) = make_subshell_command
> ((yyvsp[(2) - (3)].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));
> ---- 2932,2936 ----
> -  
> -    case 102:
> -! #line 948 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  (yyval.command) = make_coproc_command ("COPROC",
> (yyvsp[(2) - (2)].command));
> -***************
> -*** 2940,2944 ****
> -  
> -    case 103:
> -! #line 953 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  COMMAND *tc;
> ---- 2940,2944 ----
> -  
> -    case 103:
> -! #line 953 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  COMMAND *tc;
> -***************
> -*** 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));
> ---- 2960,2964 ----
> -  
> -    case 104:
> -! #line 970 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  (yyval.command) = make_coproc_command ((yyvsp[(2)
> - (3)].word)->word, (yyvsp[(3) - (3)].command));
> -***************
> -*** 2968,2972 ****
> -  
> -    case 105:
> -! #line 975 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  COMMAND *tc;
> ---- 2968,2972 ----
> -  
> -    case 105:
> -! #line 975 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  COMMAND *tc;
> -***************
> -*** 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)));
> ---- 2988,2992 ----
> -  
> -    case 106:
> -! #line 992 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  (yyval.command) = make_coproc_command ("COPROC",
> clean_simple_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:
> -! #line 1029 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      { (yyvsp[(2) - (2)].pattern)->next = (yyvsp[(1) - (2)].pattern);
> (yyval.pattern) = (yyvsp[(2) - (2)].pattern); }
> -      break;
> -  
> -    case 118:
> -! #line 1033 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      { (yyval.pattern) = make_pattern_list ((yyvsp[(2) - (4)].word_list),
> (yyvsp[(4) - (4)].command)); }
> -      break;
> -  
> -    case 119:
> -! #line 1035 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      { (yyval.pattern) = make_pattern_list ((yyvsp[(2) - (4)].word_list),
> (COMMAND *)NULL); }
> -      break;
> -  
> -    case 120:
> -! #line 1037 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      { (yyval.pattern) = make_pattern_list ((yyvsp[(3) - (5)].word_list),
> (yyvsp[(5) - (5)].command)); }
> -      break;
> -  
> -    case 121:
> -! #line 1039 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      { (yyval.pattern) = make_pattern_list ((yyvsp[(3) - (5)].word_list),
> (COMMAND *)NULL); }
> -      break;
> -  
> -    case 122:
> -! #line 1043 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      { (yyval.pattern) = (yyvsp[(1) - (2)].pattern); }
> -      break;
> -  
> -    case 123:
> -! #line 1045 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      { (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern);
> (yyval.pattern) = (yyvsp[(2) - (3)].pattern); }
> -      break;
> -  
> -    case 124:
> -! #line 1047 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      { (yyvsp[(1) - (2)].pattern)->flags |= CASEPAT_FALLTHROUGH;
> (yyval.pattern) = (yyvsp[(1) - (2)].pattern); }
> -      break;
> -  
> -    case 125:
> -! #line 1049 "/usr/src/local/chet/src/bash/bash-4.3.28/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 1051 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      { (yyvsp[(1) - (2)].pattern)->flags |= CASEPAT_TESTNEXT;
> (yyval.pattern) = (yyvsp[(1) - (2)].pattern); }
> -      break;
> -  
> -    case 127:
> -! #line 1053 "/usr/src/local/chet/src/bash/bash-4.3.28/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 1057 "/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 129:
> -! #line 1059 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      { (yyval.word_list) = make_word_list ((yyvsp[(3) - (3)].word),
> (yyvsp[(1) - (3)].word_list)); }
> -      break;
> -  
> -    case 130:
> -! #line 1068 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  (yyval.command) = (yyvsp[(2) - (2)].command);
> ---- 2996,3110 ----
> -  
> -    case 107:
> -! #line 999 "/usr/src/local/bash/bash-4.3-patched/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/bash/bash-4.3-patched/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/bash/bash-4.3-patched/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/bash/bash-4.3-patched/parse.y"
> -      { (yyval.command) = make_group_command ((yyvsp[(2) - (3)].command)); }
> -      break;
> -  
> -    case 111:
> -! #line 1012 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      { (yyval.command) = make_arith_command ((yyvsp[(1) - (1)].word_list));
> }
> -      break;
> -  
> -    case 112:
> -! #line 1016 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      { (yyval.command) = (yyvsp[(2) - (3)].command); }
> -      break;
> -  
> -    case 113:
> -! #line 1020 "/usr/src/local/bash/bash-4.3-patched/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/bash/bash-4.3-patched/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/bash/bash-4.3-patched/parse.y"
> -      { (yyval.command) = make_if_command ((yyvsp[(2) - (5)].command),
> (yyvsp[(4) - (5)].command), (yyvsp[(5) - (5)].command)); }
> -      break;
> -  
> -    case 117:
> -! #line 1029 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      { (yyvsp[(2) - (2)].pattern)->next = (yyvsp[(1) - (2)].pattern);
> (yyval.pattern) = (yyvsp[(2) - (2)].pattern); }
> -      break;
> -  
> -    case 118:
> -! #line 1033 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      { (yyval.pattern) = make_pattern_list ((yyvsp[(2) - (4)].word_list),
> (yyvsp[(4) - (4)].command)); }
> -      break;
> -  
> -    case 119:
> -! #line 1035 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      { (yyval.pattern) = make_pattern_list ((yyvsp[(2) - (4)].word_list),
> (COMMAND *)NULL); }
> -      break;
> -  
> -    case 120:
> -! #line 1037 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      { (yyval.pattern) = make_pattern_list ((yyvsp[(3) - (5)].word_list),
> (yyvsp[(5) - (5)].command)); }
> -      break;
> -  
> -    case 121:
> -! #line 1039 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      { (yyval.pattern) = make_pattern_list ((yyvsp[(3) - (5)].word_list),
> (COMMAND *)NULL); }
> -      break;
> -  
> -    case 122:
> -! #line 1043 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      { (yyval.pattern) = (yyvsp[(1) - (2)].pattern); }
> -      break;
> -  
> -    case 123:
> -! #line 1045 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      { (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern);
> (yyval.pattern) = (yyvsp[(2) - (3)].pattern); }
> -      break;
> -  
> -    case 124:
> -! #line 1047 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      { (yyvsp[(1) - (2)].pattern)->flags |= CASEPAT_FALLTHROUGH;
> (yyval.pattern) = (yyvsp[(1) - (2)].pattern); }
> -      break;
> -  
> -    case 125:
> -! #line 1049 "/usr/src/local/bash/bash-4.3-patched/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 1051 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      { (yyvsp[(1) - (2)].pattern)->flags |= CASEPAT_TESTNEXT;
> (yyval.pattern) = (yyvsp[(1) - (2)].pattern); }
> -      break;
> -  
> -    case 127:
> -! #line 1053 "/usr/src/local/bash/bash-4.3-patched/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 1057 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      { (yyval.word_list) = make_word_list ((yyvsp[(1) - (1)].word),
> (WORD_LIST *)NULL); }
> -      break;
> -  
> -    case 129:
> -! #line 1059 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      { (yyval.word_list) = make_word_list ((yyvsp[(3) - (3)].word),
> (yyvsp[(1) - (3)].word_list)); }
> -      break;
> -  
> -    case 130:
> -! #line 1068 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  (yyval.command) = (yyvsp[(2) - (2)].command);
> -***************
> -*** 3115,3119 ****
> -  
> -    case 132:
> -! #line 1077 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  (yyval.command) = (yyvsp[(2) - (2)].command);
> ---- 3115,3119 ----
> -  
> -    case 132:
> -! #line 1077 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  (yyval.command) = (yyvsp[(2) - (2)].command);
> -***************
> -*** 3122,3126 ****
> -  
> -    case 134:
> -! #line 1084 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  if ((yyvsp[(1) - (3)].command)->type ==
> cm_connection)
> ---- 3122,3126 ----
> -  
> -    case 134:
> -! #line 1084 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  if ((yyvsp[(1) - (3)].command)->type ==
> cm_connection)
> -***************
> -*** 3132,3146 ****
> -  
> -    case 136:
> -! #line 1095 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command),
> (yyvsp[(4) - (4)].command), AND_AND); }
> -      break;
> -  
> -    case 137:
> -! #line 1097 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command),
> (yyvsp[(4) - (4)].command), OR_OR); }
> -      break;
> -  
> -    case 138:
> -! #line 1099 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  if ((yyvsp[(1) - (4)].command)->type ==
> cm_connection)
> ---- 3132,3146 ----
> -  
> -    case 136:
> -! #line 1095 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command),
> (yyvsp[(4) - (4)].command), AND_AND); }
> -      break;
> -  
> -    case 137:
> -! #line 1097 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command),
> (yyvsp[(4) - (4)].command), OR_OR); }
> -      break;
> -  
> -    case 138:
> -! #line 1099 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  if ((yyvsp[(1) - (4)].command)->type ==
> cm_connection)
> -***************
> -*** 3152,3186 ****
> -  
> -    case 139:
> -! #line 1106 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command),
> (yyvsp[(4) - (4)].command), ';'); }
> -      break;
> -  
> -    case 140:
> -! #line 1108 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command),
> (yyvsp[(4) - (4)].command), ';'); }
> -      break;
> -  
> -    case 141:
> -! #line 1110 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      { (yyval.command) = (yyvsp[(1) - (1)].command); }
> -      break;
> -  
> -    case 144:
> -! #line 1118 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      { (yyval.number) = '\n'; }
> -      break;
> -  
> -    case 145:
> -! #line 1120 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      { (yyval.number) = ';'; }
> -      break;
> -  
> -    case 146:
> -! #line 1122 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      { (yyval.number) = yacc_EOF; }
> -      break;
> -  
> -    case 149:
> -! #line 1136 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  (yyval.command) = (yyvsp[(1) - (1)].command);
> ---- 3152,3186 ----
> -  
> -    case 139:
> -! #line 1106 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command),
> (yyvsp[(4) - (4)].command), ';'); }
> -      break;
> -  
> -    case 140:
> -! #line 1108 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command),
> (yyvsp[(4) - (4)].command), ';'); }
> -      break;
> -  
> -    case 141:
> -! #line 1110 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      { (yyval.command) = (yyvsp[(1) - (1)].command); }
> -      break;
> -  
> -    case 144:
> -! #line 1118 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      { (yyval.number) = '\n'; }
> -      break;
> -  
> -    case 145:
> -! #line 1120 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      { (yyval.number) = ';'; }
> -      break;
> -  
> -    case 146:
> -! #line 1122 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      { (yyval.number) = yacc_EOF; }
> -      break;
> -  
> -    case 149:
> -! #line 1136 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  (yyval.command) = (yyvsp[(1) - (1)].command);
> -***************
> -*** 3198,3202 ****
> -  
> -    case 150:
> -! #line 1149 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  if ((yyvsp[(1) - (2)].command)->type ==
> cm_connection)
> ---- 3198,3202 ----
> -  
> -    case 150:
> -! #line 1149 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  if ((yyvsp[(1) - (2)].command)->type ==
> cm_connection)
> -***************
> -*** 3217,3221 ****
> -  
> -    case 151:
> -! #line 1165 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  (yyval.command) = (yyvsp[(1) - (2)].command);
> ---- 3217,3221 ----
> -  
> -    case 151:
> -! #line 1165 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  (yyval.command) = (yyvsp[(1) - (2)].command);
> -***************
> -*** 3233,3247 ****
> -  
> -    case 152:
> -! #line 1180 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command),
> (yyvsp[(4) - (4)].command), AND_AND); }
> -      break;
> -  
> -    case 153:
> -! #line 1182 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command),
> (yyvsp[(4) - (4)].command), OR_OR); }
> -      break;
> -  
> -    case 154:
> -! #line 1184 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  if ((yyvsp[(1) - (3)].command)->type ==
> cm_connection)
> ---- 3233,3247 ----
> -  
> -    case 152:
> -! #line 1180 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command),
> (yyvsp[(4) - (4)].command), AND_AND); }
> -      break;
> -  
> -    case 153:
> -! #line 1182 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command),
> (yyvsp[(4) - (4)].command), OR_OR); }
> -      break;
> -  
> -    case 154:
> -! #line 1184 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  if ((yyvsp[(1) - (3)].command)->type ==
> cm_connection)
> -***************
> -*** 3253,3272 ****
> -  
> -    case 155:
> -! #line 1191 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      { (yyval.command) = command_connect ((yyvsp[(1) - (3)].command),
> (yyvsp[(3) - (3)].command), ';'); }
> -      break;
> -  
> -    case 156:
> -! #line 1194 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      { (yyval.command) = (yyvsp[(1) - (1)].command); }
> -      break;
> -  
> -    case 157:
> -! #line 1198 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      { (yyval.command) = (yyvsp[(1) - (1)].command); }
> -      break;
> -  
> -    case 158:
> -! #line 1200 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  if ((yyvsp[(2) - (2)].command))
> ---- 3253,3272 ----
> -  
> -    case 155:
> -! #line 1191 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      { (yyval.command) = command_connect ((yyvsp[(1) - (3)].command),
> (yyvsp[(3) - (3)].command), ';'); }
> -      break;
> -  
> -    case 156:
> -! #line 1194 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      { (yyval.command) = (yyvsp[(1) - (1)].command); }
> -      break;
> -  
> -    case 157:
> -! #line 1198 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      { (yyval.command) = (yyvsp[(1) - (1)].command); }
> -      break;
> -  
> -    case 158:
> -! #line 1200 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  if ((yyvsp[(2) - (2)].command))
> -***************
> -*** 3277,3281 ****
> -  
> -    case 159:
> -! #line 1206 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  if ((yyvsp[(2) - (2)].command))
> ---- 3277,3281 ----
> -  
> -    case 159:
> -! #line 1206 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  if ((yyvsp[(2) - (2)].command))
> -***************
> -*** 3286,3290 ****
> -  
> -    case 160:
> -! #line 1212 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  ELEMENT x;
> ---- 3286,3290 ----
> -  
> -    case 160:
> -! #line 1212 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  ELEMENT x;
> -***************
> -*** 3306,3310 ****
> -  
> -    case 161:
> -! #line 1229 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  ELEMENT x;
> ---- 3306,3310 ----
> -  
> -    case 161:
> -! #line 1229 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  ELEMENT x;
> -***************
> -*** 3327,3336 ****
> -  
> -    case 162:
> -! #line 1249 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command),
> (yyvsp[(4) - (4)].command), '|'); }
> -      break;
> -  
> -    case 163:
> -! #line 1251 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      {
> -  			  /* Make cmd1 |& cmd2 equivalent to cmd1 2>&1 |
> cmd2 */
> ---- 3327,3336 ----
> -  
> -    case 162:
> -! #line 1249 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command),
> (yyvsp[(4) - (4)].command), '|'); }
> -      break;
> -  
> -    case 163:
> -! #line 1251 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      {
> -  			  /* Make cmd1 |& cmd2 equivalent to cmd1 2>&1 |
> cmd2 */
> -***************
> -*** 3358,3377 ****
> -  
> -    case 164:
> -! #line 1274 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      { (yyval.command) = (yyvsp[(1) - (1)].command); }
> -      break;
> -  
> -    case 165:
> -! #line 1278 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      { (yyval.number) = CMD_TIME_PIPELINE; }
> -      break;
> -  
> -    case 166:
> -! #line 1280 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
> -      break;
> -  
> -    case 167:
> -! #line 1282 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -      { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
> -      break;
> ---- 3358,3377 ----
> -  
> -    case 164:
> -! #line 1274 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      { (yyval.command) = (yyvsp[(1) - (1)].command); }
> -      break;
> -  
> -    case 165:
> -! #line 1278 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      { (yyval.number) = CMD_TIME_PIPELINE; }
> -      break;
> -  
> -    case 166:
> -! #line 1280 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
> -      break;
> -  
> -    case 167:
> -! #line 1282 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -      { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
> -      break;
> -***************
> -*** 3593,3597 ****
> -  
> -  
> -! #line 1284 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
> -  
> -  
> ---- 3593,3597 ----
> -  
> -  
> -! #line 1284 "/usr/src/local/bash/bash-4.3-patched/parse.y"
> -  
> -  
> -***************
> -*** 4851,4854 ****
> ---- 4851,4864 ----
> -  }
> -  
> -+ 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.
> */
> -***************
> -*** 6340,6345 ****
> -    /* 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
> ---- 6350,6355 ----
> -    /* 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.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 29
> -  
> -  #endif /* _PATCHLEVEL_H_ */
> ---- 26,30 ----
> -     looks for to find the patch level (for the sccs version string). */
> -  
> -! #define PATCHLEVEL 30
> -  
> -  #endif /* _PATCHLEVEL_H_ */
> diff --git a/src/patches/bash/bash44-001 b/src/patches/bash/bash44-001
> new file mode 100644
> index 0000000..7b848fe
> --- /dev/null
> +++ b/src/patches/bash/bash44-001
> @@ -0,0 +1,60 @@
> +			     BASH PATCH REPORT
> +			     =================
> +
> +Bash-Release:	4.4
> +Patch-ID:	bash44-001
> +
> +Bug-Reported-by:	Sean Zha <freeman_cha@hotmail.com>
> +Bug-Reference-ID:	<BN3PR01MB13657D9303EB94BF6E54216E8CCA0@BN3PR01MB136
> 5.prod.exchangelabs.com>
> +Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2016-09/
> msg00107.html
> +
> +Bug-Description:
> +
> +Bash-4.4 changed the way the history list is initially allocated to reduce
> +the number of reallocations and copies.  Users who set HISTSIZE to a very
> +large number to essentially unlimit the size of the history list will get
> +memory allocation errors 
> +
> +Patch (apply with `patch -p0'):
> +
> +*** ../bash-4.4/lib/readline/history.c	2015-12-28 13:50:31.000000000
> -0500
> +--- lib/readline/history.c	2016-09-30 14:28:40.000000000 -0400
> +***************
> +*** 58,61 ****
> +--- 58,63 ----
> +  #define DEFAULT_HISTORY_INITIAL_SIZE	502
> +  
> ++ #define MAX_HISTORY_INITIAL_SIZE	8192
> ++ 
> +  /* The number of slots to increase the_history by. */
> +  #define DEFAULT_HISTORY_GROW_SIZE 50
> +***************
> +*** 308,312 ****
> +  	{
> +  	  if (history_stifled && history_max_entries > 0)
> +! 	    history_size = history_max_entries + 2;
> +  	  else
> +  	    history_size = DEFAULT_HISTORY_INITIAL_SIZE;
> +--- 310,316 ----
> +  	{
> +  	  if (history_stifled && history_max_entries > 0)
> +! 	    history_size = (history_max_entries > MAX_HISTORY_INITIAL_SIZE)
> +! 				? MAX_HISTORY_INITIAL_SIZE
> +! 				: history_max_entries + 2;
> +  	  else
> +  	    history_size = DEFAULT_HISTORY_INITIAL_SIZE;
> +*** ../bash-4.4/patchlevel.h	2016-06-22 14:51:03.000000000 -0400
> +--- patchlevel.h	2016-10-01 11: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_ */
> diff --git a/src/patches/bash/bash44-002 b/src/patches/bash/bash44-002
> new file mode 100644
> index 0000000..6d8baef
> --- /dev/null
> +++ b/src/patches/bash/bash44-002
> @@ -0,0 +1,69 @@
> +			     BASH PATCH REPORT
> +			     =================
> +
> +Bash-Release:	4.4
> +Patch-ID:	bash44-002
> +
> +Bug-Reported-by:	Eric Pruitt <eric.pruitt@gmail.com>
> +Bug-Reference-ID:	<20160916055120.GA28272@sinister.codevat.com>
> +Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2016-09/
> msg00015.html
> +
> +Bug-Description:
> +
> +Bash-4.4 warns when discarding NUL bytes in command substitution output
> +instead of silently dropping them.  This patch changes the warnings from
> +one per NUL byte encountered to one warning per command substitution.
> +
> +Patch (apply with `patch -p0'):
> +
> +*** ../bash-4.4/subst.c	2016-08-30 16:46:38.000000000 -0400
> +--- subst.c	2016-09-26 10:20:19.000000000 -0400
> +***************
> +*** 5932,5935 ****
> +--- 5933,5937 ----
> +    int istring_index, istring_size, c, tflag, skip_ctlesc, skip_ctlnul;
> +    ssize_t bufn;
> ++   int nullbyte;
> +  
> +    istring = (char *)NULL;
> +***************
> +*** 5939,5942 ****
> +--- 5941,5946 ----
> +      skip_ctlesc |= *s == CTLESC, skip_ctlnul |= *s == CTLNUL;
> +  
> ++   nullbyte = 0;
> ++ 
> +    /* Read the output of the command through the pipe.  This may need to be
> +       changed to understand multibyte characters in the future. */
> +***************
> +*** 5957,5961 ****
> +  	{
> +  #if 1
> +! 	  internal_warning ("%s", _("command substitution: ignored null
> byte in input"));
> +  #endif
> +  	  continue;
> +--- 5961,5969 ----
> +  	{
> +  #if 1
> +! 	  if (nullbyte == 0)
> +! 	    {
> +! 	      internal_warning ("%s", _("command substitution: ignored null
> byte in input"));
> +! 	      nullbyte = 1;
> +! 	    }
> +  #endif
> +  	  continue;
> +*** ../bash-4.4/patchlevel.h	2016-06-22 14:51:03.000000000 -0400
> +--- patchlevel.h	2016-10-01 11: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_ */
> diff --git a/src/patches/bash/bash44-003 b/src/patches/bash/bash44-003
> new file mode 100644
> index 0000000..01b6b6c
> --- /dev/null
> +++ b/src/patches/bash/bash44-003
> @@ -0,0 +1,58 @@
> +			     BASH PATCH REPORT
> +			     =================
> +
> +Bash-Release:	4.4
> +Patch-ID:	bash44-003
> +
> +Bug-Reported-by:	op7ic \x00 <op7ica@gmail.com>
> +Bug-Reference-ID:	<CAFHyJTopWC5Jx+U7WcvxSZKu+KrqSf+_3sHPiRWo=VzXSiPq=w
> @mail.gmail.com>
> +Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2016-11/
> msg00005.html
> +
> +Bug-Description:
> +
> +Specially-crafted input, in this case an incomplete pathname expansion
> +bracket expression containing an invalid collating symbol, can cause the
> +shell to crash.
> +
> +Patch (apply with `patch -p0'):
> +
> +*** ../bash-4.4/lib/glob/sm_loop.c	2016-04-10 11:23:21.000000000 -0400
> +--- lib/glob/sm_loop.c	2016-11-02 14:03:34.000000000 -0400
> +***************
> +*** 331,334 ****
> +--- 331,340 ----
> +      if (p[pc] == L('.') && p[pc+1] == L(']'))
> +        break;
> ++    if (p[pc] == 0)
> ++     {
> ++       if (vp)
> ++ 	*vp = INVALID;
> ++       return (p + pc);
> ++     }
> +     val = COLLSYM (p, pc);
> +     if (vp)
> +***************
> +*** 484,487 ****
> +--- 490,496 ----
> +        c = FOLD (c);
> +  
> ++       if (c == L('\0'))
> ++ 	return ((test == L('[')) ? savep : (CHAR *)0);
> ++ 
> +        if ((flags & FNM_PATHNAME) && c == L('/'))
> +  	/* [/] can never match when matching a pathname.  */
> +*** ../bash-4.4/patchlevel.h	2016-06-22 14:51:03.000000000 -0400
> +--- patchlevel.h	2016-10-01 11: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_ */
> diff --git a/src/patches/bash/bash44-004 b/src/patches/bash/bash44-004
> new file mode 100644
> index 0000000..1d8af26
> --- /dev/null
> +++ b/src/patches/bash/bash44-004
> @@ -0,0 +1,84 @@
> +			     BASH PATCH REPORT
> +			     =================
> +
> +Bash-Release:	4.4
> +Patch-ID:	bash44-004
> +
> +Bug-Reported-by:	Christian Weisgerber <naddy@mips.inka.de>
> +Bug-Reference-ID:	<20161101160302.GB54856@lorvorc.mips.inka.de>
> +Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2016-11/
> msg00004.html
> +
> +Bug-Description:
> +
> +There is a race condition that can result in bash referencing freed memory
> +when freeing data associated with the last process substitution.
> +
> +Patch (apply with `patch -p0'):
> +
> +*** ../bash-4.4/jobs.c	2016-08-23 16:38:44.000000000 -0400
> +--- jobs.c	2016-11-02 18:24:45.000000000 -0400
> +***************
> +*** 454,457 ****
> +--- 454,472 ----
> +  }
> +  
> ++ void
> ++ discard_last_procsub_child ()
> ++ {
> ++   PROCESS *disposer;
> ++   sigset_t set, oset;
> ++ 
> ++   BLOCK_CHILD (set, oset);
> ++   disposer = last_procsub_child;
> ++   last_procsub_child = (PROCESS *)NULL;
> ++   UNBLOCK_CHILD (oset);
> ++ 
> ++   if (disposer)
> ++     discard_pipeline (disposer);
> ++ }
> ++ 
> +  struct pipeline_saver *
> +  alloc_pipeline_saver ()
> +*** ../bash-4.4/jobs.h	2016-04-27 10:35:51.000000000 -0400
> +--- jobs.h	2016-11-02 18:25:08.000000000 -0400
> +***************
> +*** 191,194 ****
> +--- 191,195 ----
> +  extern void stop_making_children __P((void));
> +  extern void cleanup_the_pipeline __P((void));
> ++ extern void discard_last_procsub_child __P((void));
> +  extern void save_pipeline __P((int));
> +  extern PROCESS *restore_pipeline __P((int));
> +*** ../bash-4.4/subst.c	2016-08-30 16:46:38.000000000 -0400
> +--- subst.c	2016-11-02 18:23:24.000000000 -0400
> +***************
> +*** 5809,5816 ****
> +  #if defined (JOB_CONTROL)
> +        if (last_procsub_child)
> +! 	{
> +! 	  discard_pipeline (last_procsub_child);
> +! 	  last_procsub_child = (PROCESS *)NULL;
> +! 	}
> +        last_procsub_child = restore_pipeline (0);
> +  #endif
> +--- 5834,5838 ----
> +  #if defined (JOB_CONTROL)
> +        if (last_procsub_child)
> +! 	discard_last_procsub_child ();
> +        last_procsub_child = restore_pipeline (0);
> +  #endif
> +*** ../bash-4.4/patchlevel.h	2016-06-22 14:51:03.000000000 -0400
> +--- patchlevel.h	2016-10-01 11: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_ */
> diff --git a/src/patches/bash/bash44-005 b/src/patches/bash/bash44-005
> new file mode 100644
> index 0000000..bacd67a
> --- /dev/null
> +++ b/src/patches/bash/bash44-005
> @@ -0,0 +1,47 @@
> +			     BASH PATCH REPORT
> +			     =================
> +
> +Bash-Release:	4.4
> +Patch-ID:	bash44-005
> +
> +Bug-Reported-by:	Dr. Werner Fink <werner@suse.de>
> +Bug-Reference-ID:	<20161107100936.ajnojd7dspirdflf@noether.suse.de>
> +Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2016-11/
> msg00054.html
> +
> +Bug-Description:
> +
> +Under certain circumstances, a simple command is optimized to eliminate a
> +fork, resulting in an EXIT trap not being executed.
> +
> +Patch (apply with `patch -p0'):
> +
> +*** ../bash-4.4/builtins/evalstring.c	2016-08-11 14:18:51.000000000
> -0400
> +--- builtins/evalstring.c	2016-11-08 15:05:07.000000000 -0500
> +***************
> +*** 105,114 ****
> +  	  *bash_input.location.string == '\0' &&
> +  	  command->type == cm_simple &&
> +- #if 0
> +  	  signal_is_trapped (EXIT_TRAP) == 0 &&
> +  	  signal_is_trapped (ERROR_TRAP) == 0 &&
> +- #else
> +  	  any_signals_trapped () < 0 &&
> +- #endif
> +  	  command->redirects == 0 && command->value.Simple->redirects == 0
> &&
> +  	  ((command->flags & CMD_TIME_PIPELINE) == 0) &&
> +--- 105,111 ----
> +*** ../bash-4.4/patchlevel.h	2016-06-22 14:51:03.000000000 -0400
> +--- patchlevel.h	2016-10-01 11: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_ */
> diff --git a/src/patches/bash/bash44-006 b/src/patches/bash/bash44-006
> new file mode 100644
> index 0000000..f68c7ab
> --- /dev/null
> +++ b/src/patches/bash/bash44-006
> @@ -0,0 +1,59 @@
> +			     BASH PATCH REPORT
> +			     =================
> +
> +Bash-Release:	4.4
> +Patch-ID:	bash44-006
> +
> +Bug-Reported-by:	<fernando@null-life.com>
> +Bug-Reference-ID:	<CAEr-gPFPvqheiAeENmMkEwWRd4U=1iqCsYmR3sLdULOqL++_tQ
> @mail.gmail.com>
> +Bug-Reference-URL:	
> +
> +Bug-Description:
> +
> +Out-of-range negative offsets to popd can cause the shell to crash attempting
> +to free an invalid memory block.
> +
> +Patch (apply with `patch -p0'):
> +
> +*** ../bash-4.4-patched/builtins/pushd.def	2016-01-25
> 13:31:49.000000000 -0500
> +--- builtins/pushd.def	2016-10-28 10:46:49.000000000 -0400
> +***************
> +*** 366,370 ****
> +      }
> +  
> +!   if (which > directory_list_offset || (directory_list_offset == 0 && which
> == 0))
> +      {
> +        pushd_error (directory_list_offset, which_word ? which_word : "");
> +--- 366,370 ----
> +      }
> +  
> +!   if (which > directory_list_offset || (which < -directory_list_offset) ||
> (directory_list_offset == 0 && which == 0))
> +      {
> +        pushd_error (directory_list_offset, which_word ? which_word : "");
> +***************
> +*** 388,391 ****
> +--- 388,396 ----
> +  	 of the list into place. */
> +        i = (direction == '+') ? directory_list_offset - which : which;
> ++       if (i < 0 || i > directory_list_offset)
> ++ 	{
> ++ 	  pushd_error (directory_list_offset, which_word ? which_word :
> "");
> ++ 	  return (EXECUTION_FAILURE);
> ++ 	}
> +        free (pushd_directory_list[i]);
> +        directory_list_offset--;
> +*** ../bash-4.4/patchlevel.h	2016-06-22 14:51:03.000000000 -0400
> +--- patchlevel.h	2016-10-01 11: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_ */
> diff --git a/src/patches/bash/bash44-007 b/src/patches/bash/bash44-007
> new file mode 100644
> index 0000000..5fb55ca
> --- /dev/null
> +++ b/src/patches/bash/bash44-007
> @@ -0,0 +1,151 @@
> +			     BASH PATCH REPORT
> +			     =================
> +
> +Bash-Release:	4.4
> +Patch-ID:	bash44-007
> +
> +Bug-Reported-by:	Jens Heyens <jens.heyens@cispa.saarland>
> +Bug-Reference-ID:	
> +Bug-Reference-URL:	https://savannah.gnu.org/support/?109224
> +
> +Bug-Description:
> +
> +When performing filename completion, bash dequotes the directory name being
> +completed, which can result in match failures and potential unwanted
> +expansion.
> +
> +Patch (apply with `patch -p0'):
> +
> +*** ../bash-4.4-patched/bashline.c	2016-08-05 21:44:05.000000000 -0400
> +--- bashline.c	2017-01-19 13:15:51.000000000 -0500
> +***************
> +*** 143,147 ****
> +  static void restore_directory_hook __P((rl_icppfunc_t));
> +  
> +! static int directory_exists __P((const char *));
> +  
> +  static void cleanup_expansion_error __P((void));
> +--- 144,148 ----
> +  static void restore_directory_hook __P((rl_icppfunc_t));
> +  
> +! static int directory_exists __P((const char *, int));
> +  
> +  static void cleanup_expansion_error __P((void));
> +***************
> +*** 3103,3111 ****
> +  }
> +  
> +! /* Check whether not the (dequoted) version of DIRNAME, with any trailing
> slash
> +!    removed, exists. */
> +  static int
> +! directory_exists (dirname)
> +       const char *dirname;
> +  {
> +    char *new_dirname;
> +--- 3107,3116 ----
> +  }
> +  
> +! /* Check whether not DIRNAME, with any trailing slash removed, exists.  If
> +!    SHOULD_DEQUOTE is non-zero, we dequote the directory name first. */
> +  static int
> +! directory_exists (dirname, should_dequote)
> +       const char *dirname;
> ++      int should_dequote;
> +  {
> +    char *new_dirname;
> +***************
> +*** 3113,3118 ****
> +    struct stat sb;
> +  
> +!   /* First, dequote the directory name */
> +!   new_dirname = bash_dequote_filename ((char *)dirname,
> rl_completion_quote_character);
> +    dirlen = STRLEN (new_dirname);
> +    if (new_dirname[dirlen - 1] == '/')
> +--- 3118,3124 ----
> +    struct stat sb;
> +  
> +!   /* We save the string and chop the trailing slash because stat/lstat
> behave
> +!      inconsistently if one is present. */
> +!   new_dirname = should_dequote ? bash_dequote_filename ((char *)dirname,
> rl_completion_quote_character) : savestring (dirname);
> +    dirlen = STRLEN (new_dirname);
> +    if (new_dirname[dirlen - 1] == '/')
> +***************
> +*** 3146,3150 ****
> +      should_expand_dirname = '`';
> +  
> +!   if (should_expand_dirname && directory_exists (local_dirname))
> +      should_expand_dirname = 0;
> +    
> +--- 3152,3156 ----
> +      should_expand_dirname = '`';
> +  
> +!   if (should_expand_dirname && directory_exists (local_dirname, 0))
> +      should_expand_dirname = 0;
> +    
> +***************
> +*** 3156,3160 ****
> +        global_nounset = unbound_vars_is_error;
> +        unbound_vars_is_error = 0;
> +!       wl = expand_prompt_string (new_dirname, 0, W_NOCOMSUB|W_COMPLETE);	
> /* does the right thing */
> +        unbound_vars_is_error = global_nounset;
> +        if (wl)
> +--- 3162,3166 ----
> +        global_nounset = unbound_vars_is_error;
> +        unbound_vars_is_error = 0;
> +!       wl = expand_prompt_string (new_dirname, 0,
> W_NOCOMSUB|W_NOPROCSUB|W_COMPLETE);	/* does the right thing */
> +        unbound_vars_is_error = global_nounset;
> +        if (wl)
> +***************
> +*** 3245,3249 ****
> +      }
> +  
> +!   if (should_expand_dirname && directory_exists (local_dirname))
> +      should_expand_dirname = 0;
> +  
> +--- 3262,3266 ----
> +      }
> +  
> +!   if (should_expand_dirname && directory_exists (local_dirname, 1))
> +      should_expand_dirname = 0;
> +  
> +***************
> +*** 3251,3255 ****
> +      {
> +        new_dirname = savestring (local_dirname);
> +!       wl = expand_prompt_string (new_dirname, 0, W_NOCOMSUB|W_COMPLETE);	
> /* does the right thing */
> +        if (wl)
> +  	{
> +--- 3268,3272 ----
> +      {
> +        new_dirname = savestring (local_dirname);
> +!       wl = expand_prompt_string (new_dirname, 0,
> W_NOCOMSUB|W_NOPROCSUB|W_COMPLETE);	/* does the right thing */
> +        if (wl)
> +  	{
> +*** ../bash-4.4/subst.c	2016-08-30 16:46:38.000000000 -0400
> +--- subst.c	2017-01-19 07:09:57.000000000 -0500
> +***************
> +*** 9459,9462 ****
> +--- 9459,9466 ----
> +  	      if (word->flags & W_COMPLETE)
> +  		tword->flags |= W_COMPLETE;	/* for command
> substitutions */
> ++ 	      if (word->flags & W_NOCOMSUB)
> ++ 		tword->flags |= W_NOCOMSUB;
> ++ 	      if (word->flags & W_NOPROCSUB)
> ++ 		tword->flags |= W_NOPROCSUB;
> +  
> +  	      temp = (char *)NULL;
> +*** ../bash-4.4/patchlevel.h	2016-06-22 14:51:03.000000000 -0400
> +--- patchlevel.h	2016-10-01 11: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_ */
> diff --git a/src/patches/bash/bash44-008 b/src/patches/bash/bash44-008
> new file mode 100644
> index 0000000..94c5d4a
> --- /dev/null
> +++ b/src/patches/bash/bash44-008
> @@ -0,0 +1,84 @@
> +			     BASH PATCH REPORT
> +			     =================
> +
> +Bash-Release:	4.4
> +Patch-ID:	bash44-008
> +
> +Bug-Reported-by:	Koichi MURASE <myoga.murase@gmail.com>
> +Bug-Reference-ID:	<CAFLRLk-V+1AeQ2k=pY7ih6V+MfQ_w8EF3YWL2E+wmLfgKBtzXA
> @mail.gmail.com>
> +Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2016-11/
> msg00050.html
> +
> +Bug-Description:
> +
> +Under certain circumstances, bash will evaluate arithmetic expressions as
> +part of reading an expression token even when evaluation is suppressed. This
> +happens while evaluating a conditional expression and skipping over the
> +failed branch of the expression.
> +
> +Patch (apply with `patch -p0'):
> +
> +*** ../bash-4.4-patched/expr.c	2015-10-11 14:46:36.000000000 -0400
> +--- expr.c	2016-11-08 11:55:46.000000000 -0500
> +***************
> +*** 579,585 ****
> +    if (curtok == QUES)		/* found conditional expr */
> +      {
> +-       readtok ();
> +-       if (curtok == 0 || curtok == COL)
> +- 	evalerror (_("expression expected"));
> +        if (cval == 0)
> +  	{
> +--- 579,582 ----
> +***************
> +*** 588,591 ****
> +--- 585,592 ----
> +  	}
> +  
> ++       readtok ();
> ++       if (curtok == 0 || curtok == COL)
> ++ 	evalerror (_("expression expected"));
> ++ 
> +        val1 = EXP_HIGHEST ();
> +  
> +***************
> +*** 594,600 ****
> +        if (curtok != COL)
> +  	evalerror (_("`:' expected for conditional expression"));
> +!       readtok ();
> +!       if (curtok == 0)
> +! 	evalerror (_("expression expected"));
> +        set_noeval = 0;
> +        if (cval)
> +--- 595,599 ----
> +        if (curtok != COL)
> +  	evalerror (_("`:' expected for conditional expression"));
> +! 
> +        set_noeval = 0;
> +        if (cval)
> +***************
> +*** 604,608 ****
> +--- 603,611 ----
> +   	}
> +  
> ++       readtok ();
> ++       if (curtok == 0)
> ++ 	evalerror (_("expression expected"));
> +        val2 = expcond ();
> ++ 
> +        if (set_noeval)
> +  	noeval--;
> +*** ../bash-4.4/patchlevel.h	2016-06-22 14:51:03.000000000 -0400
> +--- patchlevel.h	2016-10-01 11: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_ */
> diff --git a/src/patches/bash/bash44-009 b/src/patches/bash/bash44-009
> new file mode 100644
> index 0000000..26a054a
> --- /dev/null
> +++ b/src/patches/bash/bash44-009
> @@ -0,0 +1,107 @@
> +			     BASH PATCH REPORT
> +			     =================
> +
> +Bash-Release:	4.4
> +Patch-ID:	bash44-009
> +
> +Bug-Reported-by:	Hong Cho <hong.cho@citrix.com>
> +Bug-Reference-ID:	<c30b5fe62b2543af8297e47ca487c29c@SJCPEX02CL02.citri
> te.net>
> +Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2016-12/
> msg00043.html
> +
> +Bug-Description:
> +
> +There is a race condition in add_history() that can be triggered by a fatal
> +signal arriving between the time the history length is updated and the time
> +the history list update is completed. A later attempt to reference an
> +invalid history entry can cause a crash.
> +
> +Patch (apply with `patch -p0'):
> +
> +*** ../bash-4.4-patched/lib/readline/history.c	2016-11-11
> 13:42:49.000000000 -0500
> +--- lib/readline/history.c	2016-12-05 10:37:51.000000000 -0500
> +***************
> +*** 280,283 ****
> +--- 280,284 ----
> +  {
> +    HIST_ENTRY *temp;
> ++   int new_length;
> +  
> +    if (history_stifled && (history_length == history_max_entries))
> +***************
> +*** 296,306 ****
> +        /* Copy the rest of the entries, moving down one slot.  Copy includes
> +  	 trailing NULL.  */
> +- #if 0
> +-       for (i = 0; i < history_length; i++)
> +- 	the_history[i] = the_history[i + 1];
> +- #else
> +        memmove (the_history, the_history + 1, history_length * sizeof
> (HIST_ENTRY *));
> +- #endif
> +  
> +        history_base++;
> +      }
> +--- 297,303 ----
> +        /* Copy the rest of the entries, moving down one slot.  Copy includes
> +  	 trailing NULL.  */
> +        memmove (the_history, the_history + 1, history_length * sizeof
> (HIST_ENTRY *));
> +  
> ++       new_length = history_length;
> +        history_base++;
> +      }
> +***************
> +*** 316,320 ****
> +  	    history_size = DEFAULT_HISTORY_INITIAL_SIZE;
> +  	  the_history = (HIST_ENTRY **)xmalloc (history_size * sizeof
> (HIST_ENTRY *));
> +! 	  history_length = 1;
> +  	}
> +        else
> +--- 313,317 ----
> +  	    history_size = DEFAULT_HISTORY_INITIAL_SIZE;
> +  	  the_history = (HIST_ENTRY **)xmalloc (history_size * sizeof
> (HIST_ENTRY *));
> +! 	  new_length = 1;
> +  	}
> +        else
> +***************
> +*** 326,330 ****
> +  		xrealloc (the_history, history_size * sizeof (HIST_ENTRY
> *));
> +  	    }
> +! 	  history_length++;
> +  	}
> +      }
> +--- 323,327 ----
> +  		xrealloc (the_history, history_size * sizeof (HIST_ENTRY
> *));
> +  	    }
> +! 	  new_length = history_length + 1;
> +  	}
> +      }
> +***************
> +*** 332,337 ****
> +    temp = alloc_history_entry ((char *)string, hist_inittime ());
> +  
> +!   the_history[history_length] = (HIST_ENTRY *)NULL;
> +!   the_history[history_length - 1] = temp;
> +  }
> +  
> +--- 329,335 ----
> +    temp = alloc_history_entry ((char *)string, hist_inittime ());
> +  
> +!   the_history[new_length] = (HIST_ENTRY *)NULL;
> +!   the_history[new_length - 1] = temp;
> +!   history_length = new_length;
> +  }
> +  
> +*** ../bash-4.4/patchlevel.h	2016-06-22 14:51:03.000000000 -0400
> +--- patchlevel.h	2016-10-01 11: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_ */
> diff --git a/src/patches/bash/bash44-010 b/src/patches/bash/bash44-010
> new file mode 100644
> index 0000000..2346005
> --- /dev/null
> +++ b/src/patches/bash/bash44-010
> @@ -0,0 +1,49 @@
> +			     BASH PATCH REPORT
> +			     =================
> +
> +Bash-Release:	4.4
> +Patch-ID:	bash44-010
> +
> +Bug-Reported-by:	Clark Wang <dearvoid@gmail.com>
> +Bug-Reference-ID:	<CADv8-og092RvvUUHy46=BPKChCXw5g=GOOqgN0V3f4a3TpLebQ
> @mail.gmail.com>
> +Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2016-11/
> msg00104.html
> +
> +Bug-Description:
> +
> +Depending on compiler optimizations and behavior, the `read' builtin may not
> +save partial input when a timeout occurs.
> +
> +Patch (apply with `patch -p0'):
> +
> +*** ../bash-4.4-patched/builtins/read.def	2016-05-16
> 14:24:56.000000000 -0400
> +--- builtins/read.def	2016-11-25 12:37:56.000000000 -0500
> +***************
> +*** 182,186 ****
> +  {
> +    register char *varname;
> +!   int size, i, nr, pass_next, saw_escape, eof, opt, retval, code,
> print_ps2;
> +    int input_is_tty, input_is_pipe, unbuffered_read, skip_ctlesc,
> skip_ctlnul;
> +    int raw, edit, nchars, silent, have_timeout, ignore_delim, fd, lastsig,
> t_errno;
> +--- 182,187 ----
> +  {
> +    register char *varname;
> +!   int size, nr, pass_next, saw_escape, eof, opt, retval, code, print_ps2;
> +!   volatile int i;
> +    int input_is_tty, input_is_pipe, unbuffered_read, skip_ctlesc,
> skip_ctlnul;
> +    int raw, edit, nchars, silent, have_timeout, ignore_delim, fd, lastsig,
> t_errno;
> +
> +*** ../bash-4.4/patchlevel.h	2016-06-22 14:51:03.000000000 -0400
> +--- patchlevel.h	2016-10-01 11: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_ */
> diff --git a/src/patches/bash/bash44-011 b/src/patches/bash/bash44-011
> new file mode 100644
> index 0000000..2eb9957
> --- /dev/null
> +++ b/src/patches/bash/bash44-011
> @@ -0,0 +1,50 @@
> +			     BASH PATCH REPORT
> +			     =================
> +
> +Bash-Release:	4.4
> +Patch-ID:	bash44-011
> +
> +Bug-Reported-by:	Russell King <rmk@armlinux.org.uk>
> +Bug-Reference-ID:	<E1cNnFx-0007G2-S2@flint.armlinux.org.uk>
> +Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2017-01/
> msg00000.html
> +
> +Bug-Description:
> +
> +Subshells begun to run command and process substitutions may attempt to
> +set the terminal's process group to an incorrect value if they receive
> +a fatal signal.  This depends on the behavior of the process that starts
> +the shell.
> +
> +Patch (apply with `patch -p0'):
> +
> +*** ../bash-4.4-patched/sig.c	2016-02-11 15:02:45.000000000 -0500
> +--- sig.c	2017-01-04 09:09:47.000000000 -0500
> +***************
> +*** 586,590 ****
> +    if (sig == SIGHUP && (interactive || (subshell_environment &
> (SUBSHELL_COMSUB|SUBSHELL_PROCSUB))))
> +      hangup_all_jobs ();
> +!   end_job_control ();
> +  #endif /* JOB_CONTROL */
> +  
> +--- 571,576 ----
> +    if (sig == SIGHUP && (interactive || (subshell_environment &
> (SUBSHELL_COMSUB|SUBSHELL_PROCSUB))))
> +      hangup_all_jobs ();
> +!   if ((subshell_environment & (SUBSHELL_COMSUB|SUBSHELL_PROCSUB)) == 0)
> +!     end_job_control ();
> +  #endif /* JOB_CONTROL */
> +  
> +*** ../bash-4.4/patchlevel.h	2016-06-22 14:51:03.000000000 -0400
> +--- patchlevel.h	2016-10-01 11: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_ */
> diff --git a/src/patches/bash/bash44-012 b/src/patches/bash/bash44-012
> new file mode 100644
> index 0000000..182fd7c
> --- /dev/null
> +++ b/src/patches/bash/bash44-012
> @@ -0,0 +1,161 @@
> +			     BASH PATCH REPORT
> +			     =================
> +
> +Bash-Release:	4.4
> +Patch-ID:	bash44-012
> +
> +Bug-Reported-by:	Clark Wang <dearvoid@gmail.com>
> +Bug-Reference-ID:	<CADv8-ojttPUFOZXqbjsvy83LfaJtQKZ5qejGdF6j0VJ3vtrYOA
> @mail.gmail.com>
> +Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2016-11/
> msg00106.html
> +
> +Bug-Description:
> +
> +When -N is used, the input is not supposed to be split using $IFS, but
> +leading and trailing IFS whitespace was still removed.
> +
> +Patch (apply with `patch -p0'):
> +
> +*** ../bash-4.4-patched/subst.c	2017-01-20 14:22:01.000000000 -0500
> +--- subst.c	2017-01-25 13:43:22.000000000 -0500
> +***************
> +*** 2826,2834 ****
> +  /* Parse a single word from STRING, using SEPARATORS to separate fields.
> +     ENDPTR is set to the first character after the word.  This is used by
> +!    the `read' builtin.  This is never called with SEPARATORS != $IFS;
> +!    it should be simplified.
> +  
> +     XXX - this function is very similar to list_string; they should be
> +  	 combined - XXX */
> +  char *
> +  get_word_from_string (stringp, separators, endptr)
> +--- 2826,2838 ----
> +  /* Parse a single word from STRING, using SEPARATORS to separate fields.
> +     ENDPTR is set to the first character after the word.  This is used by
> +!    the `read' builtin.
> +!    
> +!    This is never called with SEPARATORS != $IFS, and takes advantage of
> that.
> +  
> +     XXX - this function is very similar to list_string; they should be
> +  	 combined - XXX */
> ++ 
> ++ #define islocalsep(c)	(local_cmap[(unsigned char)(c)] != 0)
> ++ 
> +  char *
> +  get_word_from_string (stringp, separators, endptr)
> +***************
> +*** 2838,2841 ****
> +--- 2842,2846 ----
> +    char *current_word;
> +    int sindex, sh_style_split, whitesep, xflags;
> ++   unsigned char local_cmap[UCHAR_MAX+1];	/* really only need single-
> byte chars here */
> +    size_t slen;
> +  
> +***************
> +*** 2847,2854 ****
> +  				 separators[2] == '\n' &&
> +  				 separators[3] == '\0';
> +!   for (xflags = 0, s = ifs_value; s && *s; s++)
> +      {
> +        if (*s == CTLESC) xflags |= SX_NOCTLESC;
> +        if (*s == CTLNUL) xflags |= SX_NOESCCTLNUL;
> +      }
> +  
> +--- 2852,2861 ----
> +  				 separators[2] == '\n' &&
> +  				 separators[3] == '\0';
> +!   memset (local_cmap, '\0', sizeof (local_cmap));
> +!   for (xflags = 0, s = separators; s && *s; s++)
> +      {
> +        if (*s == CTLESC) xflags |= SX_NOCTLESC;
> +        if (*s == CTLNUL) xflags |= SX_NOESCCTLNUL;
> ++       local_cmap[(unsigned char)*s] = 1;	/* local charmap of
> separators */
> +      }
> +  
> +***************
> +*** 2857,2864 ****
> +  
> +    /* Remove sequences of whitespace at the beginning of STRING, as
> +!      long as those characters appear in IFS. */
> +!   if (sh_style_split || !separators || !*separators)
> +      {
> +!       for (; *s && spctabnl (*s) && isifs (*s); s++);
> +  
> +        /* If the string is nothing but whitespace, update it and return. */
> +--- 2864,2872 ----
> +  
> +    /* Remove sequences of whitespace at the beginning of STRING, as
> +!      long as those characters appear in SEPARATORS.  This happens if
> +!      SEPARATORS == $' \t\n' or if IFS is unset. */
> +!   if (sh_style_split || separators == 0)
> +      {
> +!       for (; *s && spctabnl (*s) && islocalsep (*s); s++);
> +  
> +        /* If the string is nothing but whitespace, update it and return. */
> +***************
> +*** 2879,2885 ****
> +       This obeys the field splitting rules in Posix.2. */
> +    sindex = 0;
> +!   /* Don't need string length in ADVANCE_CHAR or string_extract_verbatim
> +!      unless multibyte chars are possible. */
> +!   slen = (MB_CUR_MAX > 1) ? STRLEN (s) : 1;
> +    current_word = string_extract_verbatim (s, slen, &sindex, separators,
> xflags);
> +  
> +--- 2887,2893 ----
> +       This obeys the field splitting rules in Posix.2. */
> +    sindex = 0;
> +!   /* Don't need string length in ADVANCE_CHAR unless multibyte chars are
> +!      possible, but need it in string_extract_verbatim for bounds checking
> */
> +!   slen = STRLEN (s);
> +    current_word = string_extract_verbatim (s, slen, &sindex, separators,
> xflags);
> +  
> +***************
> +*** 2900,2904 ****
> +    /* Now skip sequences of space, tab, or newline characters if they are
> +       in the list of separators. */
> +!   while (s[sindex] && spctabnl (s[sindex]) && isifs (s[sindex]))
> +      sindex++;
> +  
> +--- 2908,2912 ----
> +    /* Now skip sequences of space, tab, or newline characters if they are
> +       in the list of separators. */
> +!   while (s[sindex] && spctabnl (s[sindex]) && islocalsep (s[sindex]))
> +      sindex++;
> +  
> +***************
> +*** 2907,2916 ****
> +       delimiter, not a separate delimiter that would result in an empty
> field.
> +       Look at POSIX.2, 3.6.5, (3)(b). */
> +!   if (s[sindex] && whitesep && isifs (s[sindex]) && !spctabnl (s[sindex]))
> +      {
> +        sindex++;
> +        /* An IFS character that is not IFS white space, along with any
> adjacent
> +  	 IFS white space, shall delimit a field. */
> +!       while (s[sindex] && spctabnl (s[sindex]) && isifs (s[sindex]))
> +  	sindex++;
> +      }
> +--- 2915,2924 ----
> +       delimiter, not a separate delimiter that would result in an empty
> field.
> +       Look at POSIX.2, 3.6.5, (3)(b). */
> +!   if (s[sindex] && whitesep && islocalsep (s[sindex]) && !spctabnl
> (s[sindex]))
> +      {
> +        sindex++;
> +        /* An IFS character that is not IFS white space, along with any
> adjacent
> +  	 IFS white space, shall delimit a field. */
> +!       while (s[sindex] && spctabnl (s[sindex]) && islocalsep(s[sindex]))
> +  	sindex++;
> +      }
> +*** ../bash-4.4/patchlevel.h	2016-06-22 14:51:03.000000000 -0400
> +--- patchlevel.h	2016-10-01 11: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_ */