From http://ftp.gnu.org/pub/gnu/bash/bash-4.3-patches/bash43-028 with
a slight tweak for the patch prefix.

Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>

			     BASH PATCH REPORT
			     =================

Bash-Release:	4.3
Patch-ID:	bash43-028

Bug-Reported-by:	Florian Weimer <fweimer@redhat.com>
Bug-Reference-ID:
Bug-Reference-URL:

Bug-Description:

There are two local buffer overflows in parse.y that can cause the shell
to dump core when given many here-documents attached to a single command
or many nested loops.

Patch (apply with `patch -p0'):

*** a/parse.y	2014-09-25 23:02:35.000000000 -0400
--- b/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 ()
*** a/y.tab.c	2014-10-01 11:38:24.000000000 -0400
--- b/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 */
+ 
*** a/patchlevel.h	2012-12-29 10:47:57.000000000 -0500
--- b/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_ */
