jcapik pushed to bash (f21). "Revert "Patchlevel 28" (..more)"

notifications at fedoraproject.org notifications at fedoraproject.org
Mon Jun 15 16:17:08 UTC 2015


From 5b437302222a9bfb18eeb03a77442702e36264ad Mon Sep 17 00:00:00 2001
From: Ondrej Oprala <ooprala at redhat.com>
Date: Thu, 2 Oct 2014 13:49:36 +0200
Subject: Revert "Patchlevel 28"

This reverts commit 70b49a47e35610eb8e7ceedbf1083099705a1562.

diff --git a/bash-4.2-cve-2014-7169-0.patch b/bash-4.2-cve-2014-7169-0.patch
new file mode 100644
index 0000000..5f59b46
--- /dev/null
+++ b/bash-4.2-cve-2014-7169-0.patch
@@ -0,0 +1,12 @@
+*** ../bash-20140912/parse.y	2014-08-26 15:09:42.000000000 -0400
+--- parse.y	2014-09-24 22:47:28.000000000 -0400
+***************
+*** 2959,2962 ****
+--- 2959,2964 ----
+    word_desc_to_read = (WORD_DESC *)NULL;
+  
++   eol_ungetc_lookahead = 0;
++ 
+    current_token = '\n';		/* XXX */
+    last_read_token = '\n';
+
diff --git a/bash-4.2-cve-2014-7169-1.patch b/bash-4.2-cve-2014-7169-1.patch
new file mode 100644
index 0000000..77c6616
--- /dev/null
+++ b/bash-4.2-cve-2014-7169-1.patch
@@ -0,0 +1,155 @@
+--- ../bash-4.2-orig/variables.c	2014-09-25 13:07:59.313209541 +0200
++++ variables.c	2014-09-25 13:15:29.869420719 +0200
+@@ -268,7 +268,7 @@
+ static void propagate_temp_var __P((PTR_T));
+ static void dispose_temporary_env __P((sh_free_func_t *));     
+ 
+-static inline char *mk_env_string __P((const char *, const char *));
++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 *));
+ static char **make_func_export_array __P((void));
+@@ -301,6 +301,14 @@
+ #endif
+ }
+ 
++/* Prefix and suffix for environment variable names which contain
++   shell functions. */
++#define FUNCDEF_PREFIX "BASH_FUNC_"
++#define FUNCDEF_PREFIX_LEN (strlen (FUNCDEF_PREFIX))
++#define FUNCDEF_SUFFIX "()"
++#define FUNCDEF_SUFFIX_LEN (strlen (FUNCDEF_SUFFIX))
++
++
+ /* Initialize the shell variables from the current environment.
+    If PRIVMODE is nonzero, don't import functions from ENV or
+    parse $SHELLOPTS. */
+@@ -338,36 +346,48 @@
+ 
+       /* 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);
++      if (privmode == 0 && read_but_dont_execute == 0
++	  && STREQN (FUNCDEF_PREFIX, name, FUNCDEF_PREFIX_LEN)
++	  && STREQ (name + char_index - FUNCDEF_SUFFIX_LEN, FUNCDEF_SUFFIX)
++	  && STREQN ("() {", string, 4))
++	{
++	  size_t name_length
++	    = char_index - (FUNCDEF_PREFIX_LEN + FUNCDEF_SUFFIX_LEN);
++	  char *temp_name = name + FUNCDEF_PREFIX_LEN;
++	  /* Temporarily remove the suffix. */
++	  temp_name[name_length] = '\0';
+ 
+-	  strcpy (temp_string, name);
+-	  temp_string[char_index] = ' ';
+-	  strcpy (temp_string + char_index + 1, string);
++	  string_length = strlen (string);
++	  temp_string = (char *)xmalloc (name_length + 1 + string_length + 1);
++	  memcpy (temp_string, temp_name, name_length);
++	  temp_string[name_length] = ' ';
++	  memcpy (temp_string + name_length + 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 (legal_identifier (name))
+-	    parse_and_execute (temp_string, name, SEVAL_NONINT|SEVAL_NOHIST|SEVAL_FUNCDEF|SEVAL_ONECMD);
++	  if (legal_identifier (temp_name))
++	    parse_and_execute (temp_string, temp_name,
++			       SEVAL_NONINT|SEVAL_NOHIST|SEVAL_FUNCDEF|SEVAL_ONECMD);
+ 
+-	  if (temp_var = find_function (name))
++	  if (temp_var = find_function (temp_name))
+ 	    {
+ 	      VSETATTR (temp_var, (att_exported|att_imported));
+ 	      array_needs_making = 1;
+ 	    }
+ 	  else
+ 	    {
+ 	      if (temp_var = bind_variable (name, string, 0))
+ 		{
+ 		  VSETATTR (temp_var, (att_exported | att_imported | att_invisible));
+ 		  array_needs_making = 1;
+ 		}
+ 	      last_command_exit_value = 1;
+ 	      report_error (_("error importing function definition for `%s'"), name);
+ 	    }
++
++	  /* Restore the original suffix. */
++	  temp_name[name_length] = FUNCDEF_SUFFIX[0];
+ 	}
+ #if defined (ARRAY_VARS)
+ #  if ARRAY_EXPORT
+@@ -2537,7 +2557,7 @@
+   var->context = variable_context;	/* XXX */
+ 
+   INVALIDATE_EXPORTSTR (var);
+-  var->exportstr = mk_env_string (name, value);
++  var->exportstr = mk_env_string (name, value, 0);
+ 
+   array_needs_making = 1;
+ 
+@@ -3388,22 +3408,43 @@
+ /*								    */
+ /* **************************************************************** */
+ 
++/* Returns the string NAME=VALUE if !FUNCTIONP or if VALUE == NULL (in
++   which case it is treated as empty).  Otherwise, decorate NAME with
++   FUNCDEF_PREFIX and FUNCDEF_SUFFIX, and return a string of the form
++   FUNCDEF_PREFIX NAME FUNCDEF_SUFFIX = VALUE (without spaces).  */
+ static inline char *
+-mk_env_string (name, value)
++mk_env_string (name, value, functionp)
+      const char *name, *value;
++     int functionp;
+ {
+-  int name_len, value_len;
+-  char	*p;
++  size_t name_len, value_len;
++  char *p, *q;
+ 
+   name_len = strlen (name);
+   value_len = STRLEN (value);
+-  p = (char *)xmalloc (2 + name_len + value_len);
+-  strcpy (p, name);
+-  p[name_len] = '=';
++  if (functionp && value != NULL)
++    {
++      p = (char *)xmalloc (FUNCDEF_PREFIX_LEN + name_len + FUNCDEF_SUFFIX_LEN
++			   + 1 + value_len + 1);
++      q = p;
++      memcpy (q, FUNCDEF_PREFIX, FUNCDEF_PREFIX_LEN);
++      q += FUNCDEF_PREFIX_LEN;
++      memcpy (q, name, name_len);
++      q += name_len;
++      memcpy (q, FUNCDEF_SUFFIX, FUNCDEF_SUFFIX_LEN);
++      q += FUNCDEF_SUFFIX_LEN;
++    }
++  else
++    {
++      p = (char *)xmalloc (name_len + 1 + value_len + 1);
++      memcpy (p, name, name_len);
++      q = p + name_len;
++    }
++  q[0] = '=';
+   if (value && *value)
+-    strcpy (p + name_len + 1, value);
++    memcpy (q + 1, value, value_len + 1);
+   else
+-    p[name_len + 1] = '\0';
++    q[1] = '\0';
+   return (p);
+ }
+ 
+@@ -3489,7 +3530,7 @@
+ 	  /* Gee, I'd like to get away with not using savestring() if we're
+ 	     using the cached exportstr... */
+ 	  list[list_index] = USE_EXPORTSTR ? savestring (value)
+-					   : mk_env_string (var->name, value);
++	    : mk_env_string (var->name, value, function_p (var));
+ 
+ 	  if (USE_EXPORTSTR == 0)
+ 	    SAVE_EXPORTSTR (var, list[list_index]);
diff --git a/bash-4.2-cve-2014-7169-2.patch b/bash-4.2-cve-2014-7169-2.patch
new file mode 100644
index 0000000..3da05bb
--- /dev/null
+++ b/bash-4.2-cve-2014-7169-2.patch
@@ -0,0 +1,83 @@
+--- ../bash-4.2-orig/parse.y	2014-09-25 13:07:59.218209276 +0200
++++ parse.y	2014-09-25 15:26:52.813159810 +0200
+@@ -264,9 +264,21 @@
+ 
+ /* 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];
++static REDIRECT **redir_stack;
+ int need_here_doc;
+ 
++/* Pushes REDIR onto redir_stack, resizing it as needed. */
++static void
++push_redir_stack (REDIRECT *redir)
++{
++  /* Guard against oveflow. */
++  if (need_here_doc + 1 > INT_MAX / sizeof (*redir_stack))
++    abort ();
++  redir_stack = xrealloc (redir_stack,
++			  (need_here_doc + 1) * sizeof (*redir_stack));
++  redir_stack[need_here_doc++] = redir;
++}
++
+ /* Where shell input comes from.  History expansion is performed on each
+    line when the shell is interactive. */
+ static char *shell_input_line = (char *)NULL;
+@@ -519,42 +531,42 @@
+ 			  source.dest = 0;
+ 			  redir.filename = $2;
+ 			  $$ = make_redirection (source, r_reading_until, redir, 0);
+-			  redir_stack[need_here_doc++] = $$;
++			  push_redir_stack ($$);
+ 			}
+ 	|	NUMBER LESS_LESS WORD
+ 			{
+ 			  source.dest = $1;
+ 			  redir.filename = $3;
+ 			  $$ = make_redirection (source, r_reading_until, redir, 0);
+-			  redir_stack[need_here_doc++] = $$;
++			  push_redir_stack ($$);
+ 			}
+ 	|	REDIR_WORD LESS_LESS WORD
+ 			{
+ 			  source.filename = $1;
+ 			  redir.filename = $3;
+ 			  $$ = make_redirection (source, r_reading_until, redir, REDIR_VARASSIGN);
+-			  redir_stack[need_here_doc++] = $$;
++			  push_redir_stack ($$);
+ 			}
+ 	|	LESS_LESS_MINUS WORD
+ 			{
+ 			  source.dest = 0;
+ 			  redir.filename = $2;
+ 			  $$ = make_redirection (source, r_deblank_reading_until, redir, 0);
+-			  redir_stack[need_here_doc++] = $$;
++			  push_redir_stack ($$);
+ 			}
+ 	|	NUMBER LESS_LESS_MINUS WORD
+ 			{
+ 			  source.dest = $1;
+ 			  redir.filename = $3;
+ 			  $$ = make_redirection (source, r_deblank_reading_until, redir, 0);
+-			  redir_stack[need_here_doc++] = $$;
++			  push_redir_stack ($$);
+ 			}
+ 	|	REDIR_WORD  LESS_LESS_MINUS WORD
+ 			{
+ 			  source.filename = $1;
+ 			  redir.filename = $3;
+ 			  $$ = make_redirection (source, r_deblank_reading_until, redir, REDIR_VARASSIGN);
+-			  redir_stack[need_here_doc++] = $$;
++			  push_redir_stack ($$);
+ 			}
+ 	|	LESS_LESS_LESS WORD
+ 			{
+@@ -4757,7 +4769,7 @@
+     case CASE:
+     case SELECT:
+     case FOR:
+-      if (word_top < MAX_CASE_NEST)
++      if (word_top + 1 < MAX_CASE_NEST)
+ 	word_top++;
+       word_lineno[word_top] = line_number;
+       break;
diff --git a/bash.spec b/bash.spec
index 8017e7e..14d0e82 100644
--- a/bash.spec
+++ b/bash.spec
@@ -1,5 +1,5 @@
 #% define beta_tag rc2
-%define patchleveltag .28
+%define patchleveltag .25
 %define baseversion 4.3
 %bcond_without tests
 %{!?_pkgdocdir: %global _pkgdocdir %{_docdir}/%{name}-%{version}}
@@ -7,7 +7,7 @@
 Version: %{baseversion}%{patchleveltag}
 Name: bash
 Summary: The GNU Bourne Again shell
-Release: 1%{?dist}
+Release: 2%{?dist}
 Group: System Environment/Shells
 License: GPLv3+
 Url: http://www.gnu.org/software/bash
@@ -46,9 +46,6 @@ Patch022: ftp://ftp.gnu.org/gnu/bash/bash-4.3-patches/bash43-022
 Patch023: ftp://ftp.gnu.org/gnu/bash/bash-4.3-patches/bash43-023
 Patch024: ftp://ftp.gnu.org/gnu/bash/bash-4.3-patches/bash43-024
 Patch025: ftp://ftp.gnu.org/gnu/bash/bash-4.3-patches/bash43-025
-Patch026: ftp://ftp.gnu.org/gnu/bash/bash-4.3-patches/bash43-026
-Patch027: ftp://ftp.gnu.org/gnu/bash/bash-4.3-patches/bash43-027
-Patch028: ftp://ftp.gnu.org/gnu/bash/bash-4.3-patches/bash43-028
 
 # Other patches
 Patch101: bash-2.02-security.patch
@@ -106,6 +103,12 @@ Patch134: bash-4.3-pathexp-globignore-delim.patch
 # 1102815 - fix double echoes in vi visual mode
 Patch135: bash-4.3-noecho.patch
 
+# 1146319 - cve-2014-7169
+
+Patch136: bash-4.2-cve-2014-7169-0.patch
+Patch137: bash-4.2-cve-2014-7169-1.patch
+Patch138: bash-4.2-cve-2014-7169-2.patch
+
 BuildRequires: texinfo bison
 BuildRequires: ncurses-devel
 BuildRequires: autoconf, gettext
@@ -157,9 +160,6 @@ This package contains documentation files for %{name}.
 %patch023 -p0 -b .023
 %patch024 -p0 -b .024
 %patch025 -p0 -b .025
-%patch026 -p0 -b .026
-%patch027 -p0 -b .027
-%patch028 -p0 -b .028
 
 # Other patches
 %patch101 -p1 -b .security
@@ -190,6 +190,9 @@ This package contains documentation files for %{name}.
 %patch131 -p0 -b .keyword
 %patch134 -p0 -b .delim
 %patch135 -p1 -b .noecho
+%patch136 -p0 -b .7169-0
+%patch137 -p0 -b .7169-1
+%patch138 -p0 -b .7169-2
 
 echo %{version} > _distribution
 echo %{release} > _patchlevel
@@ -385,9 +388,6 @@ end
 %doc doc/*.ps doc/*.0 doc/*.html doc/article.txt
 
 %changelog
-* Thu Oct 02 2014 Ondrej Oprala <ooprala at redhat.com> - 4.3.28-1
-- Patchlevel 28
-
 * Thu Sep 25 2014 Ondrej Oprala <ooprala at redhat.com> - 4.3.25-2
 - CVE-2014-7169
   Resolves: #1146319
diff --git a/bash43-026 b/bash43-026
deleted file mode 100644
index d5d5b1d..0000000
--- a/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 at cmpxchg8b.com>
-Bug-Reference-ID:
-Bug-Reference-URL:	http://twitter.com/taviso/statuses/514887394294652929
-
-Bug-Description:
-
-Under certain circumstances, bash can incorrectly save a lookahead character and
-return it on a subsequent call, even when reading a new line.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-4.3.25/parse.y	2014-07-30 10:14:31.000000000 -0400
---- parse.y	2014-09-25 20:20:21.000000000 -0400
-***************
-*** 2954,2957 ****
---- 2954,2959 ----
-    word_desc_to_read = (WORD_DESC *)NULL;
-  
-+   eol_ungetc_lookahead = 0;
-+ 
-    current_token = '\n';		/* XXX */
-    last_read_token = '\n';
-*** ../bash-4.3.25/y.tab.c	2014-07-30 10:14:32.000000000 -0400
---- y.tab.c	2014-09-25 20:21:48.000000000 -0400
-***************
-*** 5266,5269 ****
---- 5266,5271 ----
-    word_desc_to_read = (WORD_DESC *)NULL;
-  
-+   eol_ungetc_lookahead = 0;
-+ 
-    current_token = '\n';		/* XXX */
-    last_read_token = '\n';
-***************
-*** 8540,8542 ****
-  }
-  #endif /* HANDLE_MULTIBYTE */
-- 
---- 8542,8543 ----
-*** ../bash-4.3/patchlevel.h	2012-12-29 10:47:57.000000000 -0500
---- patchlevel.h	2014-03-20 20:01:28.000000000 -0400
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 25
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 26
-  
-  #endif /* _PATCHLEVEL_H_ */
diff --git a/bash43-027 b/bash43-027
deleted file mode 100644
index ef48bd8..0000000
--- a/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 at 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/bash43-028 b/bash43-028
deleted file mode 100644
index 7448cf8..0000000
--- a/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 at 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_ */
-- 
cgit v0.10.2


	http://pkgs.fedoraproject.org/cgit/bash.git/commit/?h=f21&id=5b437302222a9bfb18eeb03a77442702e36264ad


More information about the scm-commits mailing list