components/bash/patches/bash43-028.patch
changeset 5518 c47fe0edc204
equal deleted inserted replaced
5517:7758049098f4 5518:c47fe0edc204
       
     1 			     BASH PATCH REPORT
       
     2 			     =================
       
     3 
       
     4 Bash-Release:	4.3
       
     5 Patch-ID:	bash43-028
       
     6 
       
     7 Bug-Reported-by:	Florian Weimer <[email protected]>
       
     8 Bug-Reference-ID:
       
     9 Bug-Reference-URL:
       
    10 
       
    11 Bug-Description:
       
    12 
       
    13 There are two local buffer overflows in parse.y that can cause the shell
       
    14 to dump core when given many here-documents attached to a single command
       
    15 or many nested loops.
       
    16 
       
    17 Patch (apply with `patch -p0'):
       
    18 
       
    19 *** ../bash-4.3-patched/parse.y	2014-09-25 23:02:35.000000000 -0400
       
    20 --- parse.y	2014-09-29 16:47:03.000000000 -0400
       
    21 ***************
       
    22 *** 169,172 ****
       
    23 --- 169,175 ----
       
    24   static int reserved_word_acceptable __P((int));
       
    25   static int yylex __P((void));
       
    26 + 
       
    27 + static void push_heredoc __P((REDIRECT *));
       
    28 + static char *mk_alexpansion __P((char *));
       
    29   static int alias_expand_token __P((char *));
       
    30   static int time_command_acceptable __P((void));
       
    31 ***************
       
    32 *** 266,270 ****
       
    33   /* Variables to manage the task of reading here documents, because we need to
       
    34      defer the reading until after a complete command has been collected. */
       
    35 ! static REDIRECT *redir_stack[10];
       
    36   int need_here_doc;
       
    37   
       
    38 --- 269,275 ----
       
    39   /* Variables to manage the task of reading here documents, because we need to
       
    40      defer the reading until after a complete command has been collected. */
       
    41 ! #define HEREDOC_MAX 16
       
    42 ! 
       
    43 ! static REDIRECT *redir_stack[HEREDOC_MAX];
       
    44   int need_here_doc;
       
    45   
       
    46 ***************
       
    47 *** 308,312 ****
       
    48      index is decremented after a case, select, or for command is parsed. */
       
    49   #define MAX_CASE_NEST	128
       
    50 ! static int word_lineno[MAX_CASE_NEST];
       
    51   static int word_top = -1;
       
    52   
       
    53 --- 313,317 ----
       
    54      index is decremented after a case, select, or for command is parsed. */
       
    55   #define MAX_CASE_NEST	128
       
    56 ! static int word_lineno[MAX_CASE_NEST+1];
       
    57   static int word_top = -1;
       
    58   
       
    59 ***************
       
    60 *** 521,525 ****
       
    61   			  redir.filename = $2;
       
    62   			  $$ = make_redirection (source, r_reading_until, redir, 0);
       
    63 ! 			  redir_stack[need_here_doc++] = $$;
       
    64   			}
       
    65   	|	NUMBER LESS_LESS WORD
       
    66 --- 526,530 ----
       
    67   			  redir.filename = $2;
       
    68   			  $$ = make_redirection (source, r_reading_until, redir, 0);
       
    69 ! 			  push_heredoc ($$);
       
    70   			}
       
    71   	|	NUMBER LESS_LESS WORD
       
    72 ***************
       
    73 *** 528,532 ****
       
    74   			  redir.filename = $3;
       
    75   			  $$ = make_redirection (source, r_reading_until, redir, 0);
       
    76 ! 			  redir_stack[need_here_doc++] = $$;
       
    77   			}
       
    78   	|	REDIR_WORD LESS_LESS WORD
       
    79 --- 533,537 ----
       
    80   			  redir.filename = $3;
       
    81   			  $$ = make_redirection (source, r_reading_until, redir, 0);
       
    82 ! 			  push_heredoc ($$);
       
    83   			}
       
    84   	|	REDIR_WORD LESS_LESS WORD
       
    85 ***************
       
    86 *** 535,539 ****
       
    87   			  redir.filename = $3;
       
    88   			  $$ = make_redirection (source, r_reading_until, redir, REDIR_VARASSIGN);
       
    89 ! 			  redir_stack[need_here_doc++] = $$;
       
    90   			}
       
    91   	|	LESS_LESS_MINUS WORD
       
    92 --- 540,544 ----
       
    93   			  redir.filename = $3;
       
    94   			  $$ = make_redirection (source, r_reading_until, redir, REDIR_VARASSIGN);
       
    95 ! 			  push_heredoc ($$);
       
    96   			}
       
    97   	|	LESS_LESS_MINUS WORD
       
    98 ***************
       
    99 *** 542,546 ****
       
   100   			  redir.filename = $2;
       
   101   			  $$ = make_redirection (source, r_deblank_reading_until, redir, 0);
       
   102 ! 			  redir_stack[need_here_doc++] = $$;
       
   103   			}
       
   104   	|	NUMBER LESS_LESS_MINUS WORD
       
   105 --- 547,551 ----
       
   106   			  redir.filename = $2;
       
   107   			  $$ = make_redirection (source, r_deblank_reading_until, redir, 0);
       
   108 ! 			  push_heredoc ($$);
       
   109   			}
       
   110   	|	NUMBER LESS_LESS_MINUS WORD
       
   111 ***************
       
   112 *** 549,553 ****
       
   113   			  redir.filename = $3;
       
   114   			  $$ = make_redirection (source, r_deblank_reading_until, redir, 0);
       
   115 ! 			  redir_stack[need_here_doc++] = $$;
       
   116   			}
       
   117   	|	REDIR_WORD  LESS_LESS_MINUS WORD
       
   118 --- 554,558 ----
       
   119   			  redir.filename = $3;
       
   120   			  $$ = make_redirection (source, r_deblank_reading_until, redir, 0);
       
   121 ! 			  push_heredoc ($$);
       
   122   			}
       
   123   	|	REDIR_WORD  LESS_LESS_MINUS WORD
       
   124 ***************
       
   125 *** 556,560 ****
       
   126   			  redir.filename = $3;
       
   127   			  $$ = make_redirection (source, r_deblank_reading_until, redir, REDIR_VARASSIGN);
       
   128 ! 			  redir_stack[need_here_doc++] = $$;
       
   129   			}
       
   130   	|	LESS_LESS_LESS WORD
       
   131 --- 561,565 ----
       
   132   			  redir.filename = $3;
       
   133   			  $$ = make_redirection (source, r_deblank_reading_until, redir, REDIR_VARASSIGN);
       
   134 ! 			  push_heredoc ($$);
       
   135   			}
       
   136   	|	LESS_LESS_LESS WORD
       
   137 ***************
       
   138 *** 2637,2640 ****
       
   139 --- 2642,2660 ----
       
   140   static int esacs_needed_count;
       
   141   
       
   142 + static void
       
   143 + push_heredoc (r)
       
   144 +      REDIRECT *r;
       
   145 + {
       
   146 +   if (need_here_doc >= HEREDOC_MAX)
       
   147 +     {
       
   148 +       last_command_exit_value = EX_BADUSAGE;
       
   149 +       need_here_doc = 0;
       
   150 +       report_syntax_error (_("maximum here-document count exceeded"));
       
   151 +       reset_parser ();
       
   152 +       exit_shell (last_command_exit_value);
       
   153 +     }
       
   154 +   redir_stack[need_here_doc++] = r;
       
   155 + }
       
   156 + 
       
   157   void
       
   158   gather_here_documents ()
       
   159 *** ../bash-4.3.27/y.tab.c	2014-10-01 11:38:24.000000000 -0400
       
   160 --- y.tab.c	2014-10-01 12:46:11.000000000 -0400
       
   161 ***************
       
   162 *** 169,173 ****
       
   163   
       
   164   /* Copy the first part of user declarations.  */
       
   165 ! #line 21 "/usr/homes/chet/src/bash/src/parse.y"
       
   166   
       
   167   #include "config.h"
       
   168 --- 169,173 ----
       
   169   
       
   170   /* Copy the first part of user declarations.  */
       
   171 ! #line 21 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
   172   
       
   173   #include "config.h"
       
   174 ***************
       
   175 *** 320,323 ****
       
   176 --- 320,326 ----
       
   177   static int reserved_word_acceptable __P((int));
       
   178   static int yylex __P((void));
       
   179 + 
       
   180 + static void push_heredoc __P((REDIRECT *));
       
   181 + static char *mk_alexpansion __P((char *));
       
   182   static int alias_expand_token __P((char *));
       
   183   static int time_command_acceptable __P((void));
       
   184 ***************
       
   185 *** 417,421 ****
       
   186   /* Variables to manage the task of reading here documents, because we need to
       
   187      defer the reading until after a complete command has been collected. */
       
   188 ! static REDIRECT *redir_stack[10];
       
   189   int need_here_doc;
       
   190   
       
   191 --- 420,426 ----
       
   192   /* Variables to manage the task of reading here documents, because we need to
       
   193      defer the reading until after a complete command has been collected. */
       
   194 ! #define HEREDOC_MAX 16
       
   195 ! 
       
   196 ! static REDIRECT *redir_stack[HEREDOC_MAX];
       
   197   int need_here_doc;
       
   198   
       
   199 ***************
       
   200 *** 459,463 ****
       
   201      index is decremented after a case, select, or for command is parsed. */
       
   202   #define MAX_CASE_NEST	128
       
   203 ! static int word_lineno[MAX_CASE_NEST];
       
   204   static int word_top = -1;
       
   205   
       
   206 --- 464,468 ----
       
   207      index is decremented after a case, select, or for command is parsed. */
       
   208   #define MAX_CASE_NEST	128
       
   209 ! static int word_lineno[MAX_CASE_NEST+1];
       
   210   static int word_top = -1;
       
   211   
       
   212 ***************
       
   213 *** 493,497 ****
       
   214   #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
       
   215   typedef union YYSTYPE
       
   216 ! #line 324 "/usr/homes/chet/src/bash/src/parse.y"
       
   217   {
       
   218     WORD_DESC *word;		/* the word that we read. */
       
   219 --- 498,502 ----
       
   220   #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
       
   221   typedef union YYSTYPE
       
   222 ! #line 329 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
   223   {
       
   224     WORD_DESC *word;		/* the word that we read. */
       
   225 ***************
       
   226 *** 504,508 ****
       
   227   }
       
   228   /* Line 193 of yacc.c.  */
       
   229 ! #line 507 "y.tab.c"
       
   230   	YYSTYPE;
       
   231   # define yystype YYSTYPE /* obsolescent; will be withdrawn */
       
   232 --- 509,513 ----
       
   233   }
       
   234   /* Line 193 of yacc.c.  */
       
   235 ! #line 512 "y.tab.c"
       
   236   	YYSTYPE;
       
   237   # define yystype YYSTYPE /* obsolescent; will be withdrawn */
       
   238 ***************
       
   239 *** 517,521 ****
       
   240   
       
   241   /* Line 216 of yacc.c.  */
       
   242 ! #line 520 "y.tab.c"
       
   243   
       
   244   #ifdef short
       
   245 --- 522,526 ----
       
   246   
       
   247   /* Line 216 of yacc.c.  */
       
   248 ! #line 525 "y.tab.c"
       
   249   
       
   250   #ifdef short
       
   251 ***************
       
   252 *** 887,907 ****
       
   253   static const yytype_uint16 yyrline[] =
       
   254   {
       
   255 !        0,   377,   377,   388,   397,   412,   422,   424,   428,   434,
       
   256 !      440,   446,   452,   458,   464,   470,   476,   482,   488,   494,
       
   257 !      500,   506,   512,   518,   525,   532,   539,   546,   553,   560,
       
   258 !      566,   572,   578,   584,   590,   596,   602,   608,   614,   620,
       
   259 !      626,   632,   638,   644,   650,   656,   662,   668,   674,   680,
       
   260 !      686,   692,   700,   702,   704,   708,   712,   723,   725,   729,
       
   261 !      731,   733,   749,   751,   755,   757,   759,   761,   763,   765,
       
   262 !      767,   769,   771,   773,   775,   779,   784,   789,   794,   799,
       
   263 !      804,   809,   814,   821,   826,   831,   836,   843,   848,   853,
       
   264 !      858,   863,   868,   875,   880,   885,   892,   895,   898,   902,
       
   265 !      904,   935,   942,   947,   964,   969,   986,   993,   995,   997,
       
   266 !     1002,  1006,  1010,  1014,  1016,  1018,  1022,  1023,  1027,  1029,
       
   267 !     1031,  1033,  1037,  1039,  1041,  1043,  1045,  1047,  1051,  1053,
       
   268 !     1062,  1070,  1071,  1077,  1078,  1085,  1089,  1091,  1093,  1100,
       
   269 !     1102,  1104,  1108,  1109,  1112,  1114,  1116,  1120,  1121,  1130,
       
   270 !     1143,  1159,  1174,  1176,  1178,  1185,  1188,  1192,  1194,  1200,
       
   271 !     1206,  1223,  1243,  1245,  1268,  1272,  1274,  1276
       
   272   };
       
   273   #endif
       
   274 --- 892,912 ----
       
   275   static const yytype_uint16 yyrline[] =
       
   276   {
       
   277 !        0,   382,   382,   393,   402,   417,   427,   429,   433,   439,
       
   278 !      445,   451,   457,   463,   469,   475,   481,   487,   493,   499,
       
   279 !      505,   511,   517,   523,   530,   537,   544,   551,   558,   565,
       
   280 !      571,   577,   583,   589,   595,   601,   607,   613,   619,   625,
       
   281 !      631,   637,   643,   649,   655,   661,   667,   673,   679,   685,
       
   282 !      691,   697,   705,   707,   709,   713,   717,   728,   730,   734,
       
   283 !      736,   738,   754,   756,   760,   762,   764,   766,   768,   770,
       
   284 !      772,   774,   776,   778,   780,   784,   789,   794,   799,   804,
       
   285 !      809,   814,   819,   826,   831,   836,   841,   848,   853,   858,
       
   286 !      863,   868,   873,   880,   885,   890,   897,   900,   903,   907,
       
   287 !      909,   940,   947,   952,   969,   974,   991,   998,  1000,  1002,
       
   288 !     1007,  1011,  1015,  1019,  1021,  1023,  1027,  1028,  1032,  1034,
       
   289 !     1036,  1038,  1042,  1044,  1046,  1048,  1050,  1052,  1056,  1058,
       
   290 !     1067,  1075,  1076,  1082,  1083,  1090,  1094,  1096,  1098,  1105,
       
   291 !     1107,  1109,  1113,  1114,  1117,  1119,  1121,  1125,  1126,  1135,
       
   292 !     1148,  1164,  1179,  1181,  1183,  1190,  1193,  1197,  1199,  1205,
       
   293 !     1211,  1228,  1248,  1250,  1273,  1277,  1279,  1281
       
   294   };
       
   295   #endif
       
   296 ***************
       
   297 *** 2094,2098 ****
       
   298       {
       
   299           case 2:
       
   300 ! #line 378 "/usr/homes/chet/src/bash/src/parse.y"
       
   301       {
       
   302   			  /* Case of regular command.  Discard the error
       
   303 --- 2099,2103 ----
       
   304       {
       
   305           case 2:
       
   306 ! #line 383 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
   307       {
       
   308   			  /* Case of regular command.  Discard the error
       
   309 ***************
       
   310 *** 2108,2112 ****
       
   311   
       
   312     case 3:
       
   313 ! #line 389 "/usr/homes/chet/src/bash/src/parse.y"
       
   314       {
       
   315   			  /* Case of regular command, but not a very
       
   316 --- 2113,2117 ----
       
   317   
       
   318     case 3:
       
   319 ! #line 394 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
   320       {
       
   321   			  /* Case of regular command, but not a very
       
   322 ***************
       
   323 *** 2120,2124 ****
       
   324   
       
   325     case 4:
       
   326 ! #line 398 "/usr/homes/chet/src/bash/src/parse.y"
       
   327       {
       
   328   			  /* Error during parsing.  Return NULL command. */
       
   329 --- 2125,2129 ----
       
   330   
       
   331     case 4:
       
   332 ! #line 403 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
   333       {
       
   334   			  /* Error during parsing.  Return NULL command. */
       
   335 ***************
       
   336 *** 2138,2142 ****
       
   337   
       
   338     case 5:
       
   339 ! #line 413 "/usr/homes/chet/src/bash/src/parse.y"
       
   340       {
       
   341   			  /* Case of EOF seen by itself.  Do ignoreeof or
       
   342 --- 2143,2147 ----
       
   343   
       
   344     case 5:
       
   345 ! #line 418 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
   346       {
       
   347   			  /* Case of EOF seen by itself.  Do ignoreeof or
       
   348 ***************
       
   349 *** 2149,2163 ****
       
   350   
       
   351     case 6:
       
   352 ! #line 423 "/usr/homes/chet/src/bash/src/parse.y"
       
   353       { (yyval.word_list) = make_word_list ((yyvsp[(1) - (1)].word), (WORD_LIST *)NULL); }
       
   354       break;
       
   355   
       
   356     case 7:
       
   357 ! #line 425 "/usr/homes/chet/src/bash/src/parse.y"
       
   358       { (yyval.word_list) = make_word_list ((yyvsp[(2) - (2)].word), (yyvsp[(1) - (2)].word_list)); }
       
   359       break;
       
   360   
       
   361     case 8:
       
   362 ! #line 429 "/usr/homes/chet/src/bash/src/parse.y"
       
   363       {
       
   364   			  source.dest = 1;
       
   365 --- 2154,2168 ----
       
   366   
       
   367     case 6:
       
   368 ! #line 428 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
   369       { (yyval.word_list) = make_word_list ((yyvsp[(1) - (1)].word), (WORD_LIST *)NULL); }
       
   370       break;
       
   371   
       
   372     case 7:
       
   373 ! #line 430 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
   374       { (yyval.word_list) = make_word_list ((yyvsp[(2) - (2)].word), (yyvsp[(1) - (2)].word_list)); }
       
   375       break;
       
   376   
       
   377     case 8:
       
   378 ! #line 434 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
   379       {
       
   380   			  source.dest = 1;
       
   381 ***************
       
   382 *** 2168,2172 ****
       
   383   
       
   384     case 9:
       
   385 ! #line 435 "/usr/homes/chet/src/bash/src/parse.y"
       
   386       {
       
   387   			  source.dest = 0;
       
   388 --- 2173,2177 ----
       
   389   
       
   390     case 9:
       
   391 ! #line 440 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
   392       {
       
   393   			  source.dest = 0;
       
   394 ***************
       
   395 *** 2177,2181 ****
       
   396   
       
   397     case 10:
       
   398 ! #line 441 "/usr/homes/chet/src/bash/src/parse.y"
       
   399       {
       
   400   			  source.dest = (yyvsp[(1) - (3)].number);
       
   401 --- 2182,2186 ----
       
   402   
       
   403     case 10:
       
   404 ! #line 446 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
   405       {
       
   406   			  source.dest = (yyvsp[(1) - (3)].number);
       
   407 ***************
       
   408 *** 2186,2190 ****
       
   409   
       
   410     case 11:
       
   411 ! #line 447 "/usr/homes/chet/src/bash/src/parse.y"
       
   412       {
       
   413   			  source.dest = (yyvsp[(1) - (3)].number);
       
   414 --- 2191,2195 ----
       
   415   
       
   416     case 11:
       
   417 ! #line 452 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
   418       {
       
   419   			  source.dest = (yyvsp[(1) - (3)].number);
       
   420 ***************
       
   421 *** 2195,2199 ****
       
   422   
       
   423     case 12:
       
   424 ! #line 453 "/usr/homes/chet/src/bash/src/parse.y"
       
   425       {
       
   426   			  source.filename = (yyvsp[(1) - (3)].word);
       
   427 --- 2200,2204 ----
       
   428   
       
   429     case 12:
       
   430 ! #line 458 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
   431       {
       
   432   			  source.filename = (yyvsp[(1) - (3)].word);
       
   433 ***************
       
   434 *** 2204,2208 ****
       
   435   
       
   436     case 13:
       
   437 ! #line 459 "/usr/homes/chet/src/bash/src/parse.y"
       
   438       {
       
   439   			  source.filename = (yyvsp[(1) - (3)].word);
       
   440 --- 2209,2213 ----
       
   441   
       
   442     case 13:
       
   443 ! #line 464 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
   444       {
       
   445   			  source.filename = (yyvsp[(1) - (3)].word);
       
   446 ***************
       
   447 *** 2213,2217 ****
       
   448   
       
   449     case 14:
       
   450 ! #line 465 "/usr/homes/chet/src/bash/src/parse.y"
       
   451       {
       
   452   			  source.dest = 1;
       
   453 --- 2218,2222 ----
       
   454   
       
   455     case 14:
       
   456 ! #line 470 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
   457       {
       
   458   			  source.dest = 1;
       
   459 ***************
       
   460 *** 2222,2226 ****
       
   461   
       
   462     case 15:
       
   463 ! #line 471 "/usr/homes/chet/src/bash/src/parse.y"
       
   464       {
       
   465   			  source.dest = (yyvsp[(1) - (3)].number);
       
   466 --- 2227,2231 ----
       
   467   
       
   468     case 15:
       
   469 ! #line 476 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
   470       {
       
   471   			  source.dest = (yyvsp[(1) - (3)].number);
       
   472 ***************
       
   473 *** 2231,2235 ****
       
   474   
       
   475     case 16:
       
   476 ! #line 477 "/usr/homes/chet/src/bash/src/parse.y"
       
   477       {
       
   478   			  source.filename = (yyvsp[(1) - (3)].word);
       
   479 --- 2236,2240 ----
       
   480   
       
   481     case 16:
       
   482 ! #line 482 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
   483       {
       
   484   			  source.filename = (yyvsp[(1) - (3)].word);
       
   485 ***************
       
   486 *** 2240,2244 ****
       
   487   
       
   488     case 17:
       
   489 ! #line 483 "/usr/homes/chet/src/bash/src/parse.y"
       
   490       {
       
   491   			  source.dest = 1;
       
   492 --- 2245,2249 ----
       
   493   
       
   494     case 17:
       
   495 ! #line 488 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
   496       {
       
   497   			  source.dest = 1;
       
   498 ***************
       
   499 *** 2249,2253 ****
       
   500   
       
   501     case 18:
       
   502 ! #line 489 "/usr/homes/chet/src/bash/src/parse.y"
       
   503       {
       
   504   			  source.dest = (yyvsp[(1) - (3)].number);
       
   505 --- 2254,2258 ----
       
   506   
       
   507     case 18:
       
   508 ! #line 494 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
   509       {
       
   510   			  source.dest = (yyvsp[(1) - (3)].number);
       
   511 ***************
       
   512 *** 2258,2262 ****
       
   513   
       
   514     case 19:
       
   515 ! #line 495 "/usr/homes/chet/src/bash/src/parse.y"
       
   516       {
       
   517   			  source.filename = (yyvsp[(1) - (3)].word);
       
   518 --- 2263,2267 ----
       
   519   
       
   520     case 19:
       
   521 ! #line 500 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
   522       {
       
   523   			  source.filename = (yyvsp[(1) - (3)].word);
       
   524 ***************
       
   525 *** 2267,2271 ****
       
   526   
       
   527     case 20:
       
   528 ! #line 501 "/usr/homes/chet/src/bash/src/parse.y"
       
   529       {
       
   530   			  source.dest = 0;
       
   531 --- 2272,2276 ----
       
   532   
       
   533     case 20:
       
   534 ! #line 506 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
   535       {
       
   536   			  source.dest = 0;
       
   537 ***************
       
   538 *** 2276,2280 ****
       
   539   
       
   540     case 21:
       
   541 ! #line 507 "/usr/homes/chet/src/bash/src/parse.y"
       
   542       {
       
   543   			  source.dest = (yyvsp[(1) - (3)].number);
       
   544 --- 2281,2285 ----
       
   545   
       
   546     case 21:
       
   547 ! #line 512 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
   548       {
       
   549   			  source.dest = (yyvsp[(1) - (3)].number);
       
   550 ***************
       
   551 *** 2285,2289 ****
       
   552   
       
   553     case 22:
       
   554 ! #line 513 "/usr/homes/chet/src/bash/src/parse.y"
       
   555       {
       
   556   			  source.filename = (yyvsp[(1) - (3)].word);
       
   557 --- 2290,2294 ----
       
   558   
       
   559     case 22:
       
   560 ! #line 518 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
   561       {
       
   562   			  source.filename = (yyvsp[(1) - (3)].word);
       
   563 ***************
       
   564 *** 2294,2358 ****
       
   565   
       
   566     case 23:
       
   567 ! #line 519 "/usr/homes/chet/src/bash/src/parse.y"
       
   568       {
       
   569   			  source.dest = 0;
       
   570   			  redir.filename = (yyvsp[(2) - (2)].word);
       
   571   			  (yyval.redirect) = make_redirection (source, r_reading_until, redir, 0);
       
   572 ! 			  redir_stack[need_here_doc++] = (yyval.redirect);
       
   573   			}
       
   574       break;
       
   575   
       
   576     case 24:
       
   577 ! #line 526 "/usr/homes/chet/src/bash/src/parse.y"
       
   578       {
       
   579   			  source.dest = (yyvsp[(1) - (3)].number);
       
   580   			  redir.filename = (yyvsp[(3) - (3)].word);
       
   581   			  (yyval.redirect) = make_redirection (source, r_reading_until, redir, 0);
       
   582 ! 			  redir_stack[need_here_doc++] = (yyval.redirect);
       
   583   			}
       
   584       break;
       
   585   
       
   586     case 25:
       
   587 ! #line 533 "/usr/homes/chet/src/bash/src/parse.y"
       
   588       {
       
   589   			  source.filename = (yyvsp[(1) - (3)].word);
       
   590   			  redir.filename = (yyvsp[(3) - (3)].word);
       
   591   			  (yyval.redirect) = make_redirection (source, r_reading_until, redir, REDIR_VARASSIGN);
       
   592 ! 			  redir_stack[need_here_doc++] = (yyval.redirect);
       
   593   			}
       
   594       break;
       
   595   
       
   596     case 26:
       
   597 ! #line 540 "/usr/homes/chet/src/bash/src/parse.y"
       
   598       {
       
   599   			  source.dest = 0;
       
   600   			  redir.filename = (yyvsp[(2) - (2)].word);
       
   601   			  (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, 0);
       
   602 ! 			  redir_stack[need_here_doc++] = (yyval.redirect);
       
   603   			}
       
   604       break;
       
   605   
       
   606     case 27:
       
   607 ! #line 547 "/usr/homes/chet/src/bash/src/parse.y"
       
   608       {
       
   609   			  source.dest = (yyvsp[(1) - (3)].number);
       
   610   			  redir.filename = (yyvsp[(3) - (3)].word);
       
   611   			  (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, 0);
       
   612 ! 			  redir_stack[need_here_doc++] = (yyval.redirect);
       
   613   			}
       
   614       break;
       
   615   
       
   616     case 28:
       
   617 ! #line 554 "/usr/homes/chet/src/bash/src/parse.y"
       
   618       {
       
   619   			  source.filename = (yyvsp[(1) - (3)].word);
       
   620   			  redir.filename = (yyvsp[(3) - (3)].word);
       
   621   			  (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, REDIR_VARASSIGN);
       
   622 ! 			  redir_stack[need_here_doc++] = (yyval.redirect);
       
   623   			}
       
   624       break;
       
   625   
       
   626     case 29:
       
   627 ! #line 561 "/usr/homes/chet/src/bash/src/parse.y"
       
   628       {
       
   629   			  source.dest = 0;
       
   630 --- 2299,2363 ----
       
   631   
       
   632     case 23:
       
   633 ! #line 524 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
   634       {
       
   635   			  source.dest = 0;
       
   636   			  redir.filename = (yyvsp[(2) - (2)].word);
       
   637   			  (yyval.redirect) = make_redirection (source, r_reading_until, redir, 0);
       
   638 ! 			  push_heredoc ((yyval.redirect));
       
   639   			}
       
   640       break;
       
   641   
       
   642     case 24:
       
   643 ! #line 531 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
   644       {
       
   645   			  source.dest = (yyvsp[(1) - (3)].number);
       
   646   			  redir.filename = (yyvsp[(3) - (3)].word);
       
   647   			  (yyval.redirect) = make_redirection (source, r_reading_until, redir, 0);
       
   648 ! 			  push_heredoc ((yyval.redirect));
       
   649   			}
       
   650       break;
       
   651   
       
   652     case 25:
       
   653 ! #line 538 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
   654       {
       
   655   			  source.filename = (yyvsp[(1) - (3)].word);
       
   656   			  redir.filename = (yyvsp[(3) - (3)].word);
       
   657   			  (yyval.redirect) = make_redirection (source, r_reading_until, redir, REDIR_VARASSIGN);
       
   658 ! 			  push_heredoc ((yyval.redirect));
       
   659   			}
       
   660       break;
       
   661   
       
   662     case 26:
       
   663 ! #line 545 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
   664       {
       
   665   			  source.dest = 0;
       
   666   			  redir.filename = (yyvsp[(2) - (2)].word);
       
   667   			  (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, 0);
       
   668 ! 			  push_heredoc ((yyval.redirect));
       
   669   			}
       
   670       break;
       
   671   
       
   672     case 27:
       
   673 ! #line 552 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
   674       {
       
   675   			  source.dest = (yyvsp[(1) - (3)].number);
       
   676   			  redir.filename = (yyvsp[(3) - (3)].word);
       
   677   			  (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, 0);
       
   678 ! 			  push_heredoc ((yyval.redirect));
       
   679   			}
       
   680       break;
       
   681   
       
   682     case 28:
       
   683 ! #line 559 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
   684       {
       
   685   			  source.filename = (yyvsp[(1) - (3)].word);
       
   686   			  redir.filename = (yyvsp[(3) - (3)].word);
       
   687   			  (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, REDIR_VARASSIGN);
       
   688 ! 			  push_heredoc ((yyval.redirect));
       
   689   			}
       
   690       break;
       
   691   
       
   692     case 29:
       
   693 ! #line 566 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
   694       {
       
   695   			  source.dest = 0;
       
   696 ***************
       
   697 *** 2363,2367 ****
       
   698   
       
   699     case 30:
       
   700 ! #line 567 "/usr/homes/chet/src/bash/src/parse.y"
       
   701       {
       
   702   			  source.dest = (yyvsp[(1) - (3)].number);
       
   703 --- 2368,2372 ----
       
   704   
       
   705     case 30:
       
   706 ! #line 572 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
   707       {
       
   708   			  source.dest = (yyvsp[(1) - (3)].number);
       
   709 ***************
       
   710 *** 2372,2376 ****
       
   711   
       
   712     case 31:
       
   713 ! #line 573 "/usr/homes/chet/src/bash/src/parse.y"
       
   714       {
       
   715   			  source.filename = (yyvsp[(1) - (3)].word);
       
   716 --- 2377,2381 ----
       
   717   
       
   718     case 31:
       
   719 ! #line 578 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
   720       {
       
   721   			  source.filename = (yyvsp[(1) - (3)].word);
       
   722 ***************
       
   723 *** 2381,2385 ****
       
   724   
       
   725     case 32:
       
   726 ! #line 579 "/usr/homes/chet/src/bash/src/parse.y"
       
   727       {
       
   728   			  source.dest = 0;
       
   729 --- 2386,2390 ----
       
   730   
       
   731     case 32:
       
   732 ! #line 584 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
   733       {
       
   734   			  source.dest = 0;
       
   735 ***************
       
   736 *** 2390,2394 ****
       
   737   
       
   738     case 33:
       
   739 ! #line 585 "/usr/homes/chet/src/bash/src/parse.y"
       
   740       {
       
   741   			  source.dest = (yyvsp[(1) - (3)].number);
       
   742 --- 2395,2399 ----
       
   743   
       
   744     case 33:
       
   745 ! #line 590 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
   746       {
       
   747   			  source.dest = (yyvsp[(1) - (3)].number);
       
   748 ***************
       
   749 *** 2399,2403 ****
       
   750   
       
   751     case 34:
       
   752 ! #line 591 "/usr/homes/chet/src/bash/src/parse.y"
       
   753       {
       
   754   			  source.filename = (yyvsp[(1) - (3)].word);
       
   755 --- 2404,2408 ----
       
   756   
       
   757     case 34:
       
   758 ! #line 596 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
   759       {
       
   760   			  source.filename = (yyvsp[(1) - (3)].word);
       
   761 ***************
       
   762 *** 2408,2412 ****
       
   763   
       
   764     case 35:
       
   765 ! #line 597 "/usr/homes/chet/src/bash/src/parse.y"
       
   766       {
       
   767   			  source.dest = 1;
       
   768 --- 2413,2417 ----
       
   769   
       
   770     case 35:
       
   771 ! #line 602 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
   772       {
       
   773   			  source.dest = 1;
       
   774 ***************
       
   775 *** 2417,2421 ****
       
   776   
       
   777     case 36:
       
   778 ! #line 603 "/usr/homes/chet/src/bash/src/parse.y"
       
   779       {
       
   780   			  source.dest = (yyvsp[(1) - (3)].number);
       
   781 --- 2422,2426 ----
       
   782   
       
   783     case 36:
       
   784 ! #line 608 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
   785       {
       
   786   			  source.dest = (yyvsp[(1) - (3)].number);
       
   787 ***************
       
   788 *** 2426,2430 ****
       
   789   
       
   790     case 37:
       
   791 ! #line 609 "/usr/homes/chet/src/bash/src/parse.y"
       
   792       {
       
   793   			  source.filename = (yyvsp[(1) - (3)].word);
       
   794 --- 2431,2435 ----
       
   795   
       
   796     case 37:
       
   797 ! #line 614 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
   798       {
       
   799   			  source.filename = (yyvsp[(1) - (3)].word);
       
   800 ***************
       
   801 *** 2435,2439 ****
       
   802   
       
   803     case 38:
       
   804 ! #line 615 "/usr/homes/chet/src/bash/src/parse.y"
       
   805       {
       
   806   			  source.dest = 0;
       
   807 --- 2440,2444 ----
       
   808   
       
   809     case 38:
       
   810 ! #line 620 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
   811       {
       
   812   			  source.dest = 0;
       
   813 ***************
       
   814 *** 2444,2448 ****
       
   815   
       
   816     case 39:
       
   817 ! #line 621 "/usr/homes/chet/src/bash/src/parse.y"
       
   818       {
       
   819   			  source.dest = (yyvsp[(1) - (3)].number);
       
   820 --- 2449,2453 ----
       
   821   
       
   822     case 39:
       
   823 ! #line 626 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
   824       {
       
   825   			  source.dest = (yyvsp[(1) - (3)].number);
       
   826 ***************
       
   827 *** 2453,2457 ****
       
   828   
       
   829     case 40:
       
   830 ! #line 627 "/usr/homes/chet/src/bash/src/parse.y"
       
   831       {
       
   832   			  source.filename = (yyvsp[(1) - (3)].word);
       
   833 --- 2458,2462 ----
       
   834   
       
   835     case 40:
       
   836 ! #line 632 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
   837       {
       
   838   			  source.filename = (yyvsp[(1) - (3)].word);
       
   839 ***************
       
   840 *** 2462,2466 ****
       
   841   
       
   842     case 41:
       
   843 ! #line 633 "/usr/homes/chet/src/bash/src/parse.y"
       
   844       {
       
   845   			  source.dest = 1;
       
   846 --- 2467,2471 ----
       
   847   
       
   848     case 41:
       
   849 ! #line 638 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
   850       {
       
   851   			  source.dest = 1;
       
   852 ***************
       
   853 *** 2471,2475 ****
       
   854   
       
   855     case 42:
       
   856 ! #line 639 "/usr/homes/chet/src/bash/src/parse.y"
       
   857       {
       
   858   			  source.dest = (yyvsp[(1) - (3)].number);
       
   859 --- 2476,2480 ----
       
   860   
       
   861     case 42:
       
   862 ! #line 644 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
   863       {
       
   864   			  source.dest = (yyvsp[(1) - (3)].number);
       
   865 ***************
       
   866 *** 2480,2484 ****
       
   867   
       
   868     case 43:
       
   869 ! #line 645 "/usr/homes/chet/src/bash/src/parse.y"
       
   870       {
       
   871   			  source.filename = (yyvsp[(1) - (3)].word);
       
   872 --- 2485,2489 ----
       
   873   
       
   874     case 43:
       
   875 ! #line 650 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
   876       {
       
   877   			  source.filename = (yyvsp[(1) - (3)].word);
       
   878 ***************
       
   879 *** 2489,2493 ****
       
   880   
       
   881     case 44:
       
   882 ! #line 651 "/usr/homes/chet/src/bash/src/parse.y"
       
   883       {
       
   884   			  source.dest = 1;
       
   885 --- 2494,2498 ----
       
   886   
       
   887     case 44:
       
   888 ! #line 656 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
   889       {
       
   890   			  source.dest = 1;
       
   891 ***************
       
   892 *** 2498,2502 ****
       
   893   
       
   894     case 45:
       
   895 ! #line 657 "/usr/homes/chet/src/bash/src/parse.y"
       
   896       {
       
   897   			  source.dest = (yyvsp[(1) - (3)].number);
       
   898 --- 2503,2507 ----
       
   899   
       
   900     case 45:
       
   901 ! #line 662 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
   902       {
       
   903   			  source.dest = (yyvsp[(1) - (3)].number);
       
   904 ***************
       
   905 *** 2507,2511 ****
       
   906   
       
   907     case 46:
       
   908 ! #line 663 "/usr/homes/chet/src/bash/src/parse.y"
       
   909       {
       
   910   			  source.filename = (yyvsp[(1) - (3)].word);
       
   911 --- 2512,2516 ----
       
   912   
       
   913     case 46:
       
   914 ! #line 668 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
   915       {
       
   916   			  source.filename = (yyvsp[(1) - (3)].word);
       
   917 ***************
       
   918 *** 2516,2520 ****
       
   919   
       
   920     case 47:
       
   921 ! #line 669 "/usr/homes/chet/src/bash/src/parse.y"
       
   922       {
       
   923   			  source.dest = 0;
       
   924 --- 2521,2525 ----
       
   925   
       
   926     case 47:
       
   927 ! #line 674 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
   928       {
       
   929   			  source.dest = 0;
       
   930 ***************
       
   931 *** 2525,2529 ****
       
   932   
       
   933     case 48:
       
   934 ! #line 675 "/usr/homes/chet/src/bash/src/parse.y"
       
   935       {
       
   936   			  source.dest = (yyvsp[(1) - (3)].number);
       
   937 --- 2530,2534 ----
       
   938   
       
   939     case 48:
       
   940 ! #line 680 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
   941       {
       
   942   			  source.dest = (yyvsp[(1) - (3)].number);
       
   943 ***************
       
   944 *** 2534,2538 ****
       
   945   
       
   946     case 49:
       
   947 ! #line 681 "/usr/homes/chet/src/bash/src/parse.y"
       
   948       {
       
   949   			  source.filename = (yyvsp[(1) - (3)].word);
       
   950 --- 2539,2543 ----
       
   951   
       
   952     case 49:
       
   953 ! #line 686 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
   954       {
       
   955   			  source.filename = (yyvsp[(1) - (3)].word);
       
   956 ***************
       
   957 *** 2543,2547 ****
       
   958   
       
   959     case 50:
       
   960 ! #line 687 "/usr/homes/chet/src/bash/src/parse.y"
       
   961       {
       
   962   			  source.dest = 1;
       
   963 --- 2548,2552 ----
       
   964   
       
   965     case 50:
       
   966 ! #line 692 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
   967       {
       
   968   			  source.dest = 1;
       
   969 ***************
       
   970 *** 2552,2556 ****
       
   971   
       
   972     case 51:
       
   973 ! #line 693 "/usr/homes/chet/src/bash/src/parse.y"
       
   974       {
       
   975   			  source.dest = 1;
       
   976 --- 2557,2561 ----
       
   977   
       
   978     case 51:
       
   979 ! #line 698 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
   980       {
       
   981   			  source.dest = 1;
       
   982 ***************
       
   983 *** 2561,2580 ****
       
   984   
       
   985     case 52:
       
   986 ! #line 701 "/usr/homes/chet/src/bash/src/parse.y"
       
   987       { (yyval.element).word = (yyvsp[(1) - (1)].word); (yyval.element).redirect = 0; }
       
   988       break;
       
   989   
       
   990     case 53:
       
   991 ! #line 703 "/usr/homes/chet/src/bash/src/parse.y"
       
   992       { (yyval.element).word = (yyvsp[(1) - (1)].word); (yyval.element).redirect = 0; }
       
   993       break;
       
   994   
       
   995     case 54:
       
   996 ! #line 705 "/usr/homes/chet/src/bash/src/parse.y"
       
   997       { (yyval.element).redirect = (yyvsp[(1) - (1)].redirect); (yyval.element).word = 0; }
       
   998       break;
       
   999   
       
  1000     case 55:
       
  1001 ! #line 709 "/usr/homes/chet/src/bash/src/parse.y"
       
  1002       {
       
  1003   			  (yyval.redirect) = (yyvsp[(1) - (1)].redirect);
       
  1004 --- 2566,2585 ----
       
  1005   
       
  1006     case 52:
       
  1007 ! #line 706 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1008       { (yyval.element).word = (yyvsp[(1) - (1)].word); (yyval.element).redirect = 0; }
       
  1009       break;
       
  1010   
       
  1011     case 53:
       
  1012 ! #line 708 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1013       { (yyval.element).word = (yyvsp[(1) - (1)].word); (yyval.element).redirect = 0; }
       
  1014       break;
       
  1015   
       
  1016     case 54:
       
  1017 ! #line 710 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1018       { (yyval.element).redirect = (yyvsp[(1) - (1)].redirect); (yyval.element).word = 0; }
       
  1019       break;
       
  1020   
       
  1021     case 55:
       
  1022 ! #line 714 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1023       {
       
  1024   			  (yyval.redirect) = (yyvsp[(1) - (1)].redirect);
       
  1025 ***************
       
  1026 *** 2583,2587 ****
       
  1027   
       
  1028     case 56:
       
  1029 ! #line 713 "/usr/homes/chet/src/bash/src/parse.y"
       
  1030       {
       
  1031   			  register REDIRECT *t;
       
  1032 --- 2588,2592 ----
       
  1033   
       
  1034     case 56:
       
  1035 ! #line 718 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1036       {
       
  1037   			  register REDIRECT *t;
       
  1038 ***************
       
  1039 *** 2595,2619 ****
       
  1040   
       
  1041     case 57:
       
  1042 ! #line 724 "/usr/homes/chet/src/bash/src/parse.y"
       
  1043       { (yyval.command) = make_simple_command ((yyvsp[(1) - (1)].element), (COMMAND *)NULL); }
       
  1044       break;
       
  1045   
       
  1046     case 58:
       
  1047 ! #line 726 "/usr/homes/chet/src/bash/src/parse.y"
       
  1048       { (yyval.command) = make_simple_command ((yyvsp[(2) - (2)].element), (yyvsp[(1) - (2)].command)); }
       
  1049       break;
       
  1050   
       
  1051     case 59:
       
  1052 ! #line 730 "/usr/homes/chet/src/bash/src/parse.y"
       
  1053       { (yyval.command) = clean_simple_command ((yyvsp[(1) - (1)].command)); }
       
  1054       break;
       
  1055   
       
  1056     case 60:
       
  1057 ! #line 732 "/usr/homes/chet/src/bash/src/parse.y"
       
  1058       { (yyval.command) = (yyvsp[(1) - (1)].command); }
       
  1059       break;
       
  1060   
       
  1061     case 61:
       
  1062 ! #line 734 "/usr/homes/chet/src/bash/src/parse.y"
       
  1063       {
       
  1064   			  COMMAND *tc;
       
  1065 --- 2600,2624 ----
       
  1066   
       
  1067     case 57:
       
  1068 ! #line 729 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1069       { (yyval.command) = make_simple_command ((yyvsp[(1) - (1)].element), (COMMAND *)NULL); }
       
  1070       break;
       
  1071   
       
  1072     case 58:
       
  1073 ! #line 731 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1074       { (yyval.command) = make_simple_command ((yyvsp[(2) - (2)].element), (yyvsp[(1) - (2)].command)); }
       
  1075       break;
       
  1076   
       
  1077     case 59:
       
  1078 ! #line 735 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1079       { (yyval.command) = clean_simple_command ((yyvsp[(1) - (1)].command)); }
       
  1080       break;
       
  1081   
       
  1082     case 60:
       
  1083 ! #line 737 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1084       { (yyval.command) = (yyvsp[(1) - (1)].command); }
       
  1085       break;
       
  1086   
       
  1087     case 61:
       
  1088 ! #line 739 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1089       {
       
  1090   			  COMMAND *tc;
       
  1091 ***************
       
  1092 *** 2634,2703 ****
       
  1093   
       
  1094     case 62:
       
  1095 ! #line 750 "/usr/homes/chet/src/bash/src/parse.y"
       
  1096       { (yyval.command) = (yyvsp[(1) - (1)].command); }
       
  1097       break;
       
  1098   
       
  1099     case 63:
       
  1100 ! #line 752 "/usr/homes/chet/src/bash/src/parse.y"
       
  1101       { (yyval.command) = (yyvsp[(1) - (1)].command); }
       
  1102       break;
       
  1103   
       
  1104     case 64:
       
  1105 ! #line 756 "/usr/homes/chet/src/bash/src/parse.y"
       
  1106       { (yyval.command) = (yyvsp[(1) - (1)].command); }
       
  1107       break;
       
  1108   
       
  1109     case 65:
       
  1110 ! #line 758 "/usr/homes/chet/src/bash/src/parse.y"
       
  1111       { (yyval.command) = (yyvsp[(1) - (1)].command); }
       
  1112       break;
       
  1113   
       
  1114     case 66:
       
  1115 ! #line 760 "/usr/homes/chet/src/bash/src/parse.y"
       
  1116       { (yyval.command) = make_while_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command)); }
       
  1117       break;
       
  1118   
       
  1119     case 67:
       
  1120 ! #line 762 "/usr/homes/chet/src/bash/src/parse.y"
       
  1121       { (yyval.command) = make_until_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command)); }
       
  1122       break;
       
  1123   
       
  1124     case 68:
       
  1125 ! #line 764 "/usr/homes/chet/src/bash/src/parse.y"
       
  1126       { (yyval.command) = (yyvsp[(1) - (1)].command); }
       
  1127       break;
       
  1128   
       
  1129     case 69:
       
  1130 ! #line 766 "/usr/homes/chet/src/bash/src/parse.y"
       
  1131       { (yyval.command) = (yyvsp[(1) - (1)].command); }
       
  1132       break;
       
  1133   
       
  1134     case 70:
       
  1135 ! #line 768 "/usr/homes/chet/src/bash/src/parse.y"
       
  1136       { (yyval.command) = (yyvsp[(1) - (1)].command); }
       
  1137       break;
       
  1138   
       
  1139     case 71:
       
  1140 ! #line 770 "/usr/homes/chet/src/bash/src/parse.y"
       
  1141       { (yyval.command) = (yyvsp[(1) - (1)].command); }
       
  1142       break;
       
  1143   
       
  1144     case 72:
       
  1145 ! #line 772 "/usr/homes/chet/src/bash/src/parse.y"
       
  1146       { (yyval.command) = (yyvsp[(1) - (1)].command); }
       
  1147       break;
       
  1148   
       
  1149     case 73:
       
  1150 ! #line 774 "/usr/homes/chet/src/bash/src/parse.y"
       
  1151       { (yyval.command) = (yyvsp[(1) - (1)].command); }
       
  1152       break;
       
  1153   
       
  1154     case 74:
       
  1155 ! #line 776 "/usr/homes/chet/src/bash/src/parse.y"
       
  1156       { (yyval.command) = (yyvsp[(1) - (1)].command); }
       
  1157       break;
       
  1158   
       
  1159     case 75:
       
  1160 ! #line 780 "/usr/homes/chet/src/bash/src/parse.y"
       
  1161       {
       
  1162   			  (yyval.command) = make_for_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
       
  1163 --- 2639,2708 ----
       
  1164   
       
  1165     case 62:
       
  1166 ! #line 755 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1167       { (yyval.command) = (yyvsp[(1) - (1)].command); }
       
  1168       break;
       
  1169   
       
  1170     case 63:
       
  1171 ! #line 757 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1172       { (yyval.command) = (yyvsp[(1) - (1)].command); }
       
  1173       break;
       
  1174   
       
  1175     case 64:
       
  1176 ! #line 761 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1177       { (yyval.command) = (yyvsp[(1) - (1)].command); }
       
  1178       break;
       
  1179   
       
  1180     case 65:
       
  1181 ! #line 763 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1182       { (yyval.command) = (yyvsp[(1) - (1)].command); }
       
  1183       break;
       
  1184   
       
  1185     case 66:
       
  1186 ! #line 765 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1187       { (yyval.command) = make_while_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command)); }
       
  1188       break;
       
  1189   
       
  1190     case 67:
       
  1191 ! #line 767 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1192       { (yyval.command) = make_until_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command)); }
       
  1193       break;
       
  1194   
       
  1195     case 68:
       
  1196 ! #line 769 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1197       { (yyval.command) = (yyvsp[(1) - (1)].command); }
       
  1198       break;
       
  1199   
       
  1200     case 69:
       
  1201 ! #line 771 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1202       { (yyval.command) = (yyvsp[(1) - (1)].command); }
       
  1203       break;
       
  1204   
       
  1205     case 70:
       
  1206 ! #line 773 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1207       { (yyval.command) = (yyvsp[(1) - (1)].command); }
       
  1208       break;
       
  1209   
       
  1210     case 71:
       
  1211 ! #line 775 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1212       { (yyval.command) = (yyvsp[(1) - (1)].command); }
       
  1213       break;
       
  1214   
       
  1215     case 72:
       
  1216 ! #line 777 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1217       { (yyval.command) = (yyvsp[(1) - (1)].command); }
       
  1218       break;
       
  1219   
       
  1220     case 73:
       
  1221 ! #line 779 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1222       { (yyval.command) = (yyvsp[(1) - (1)].command); }
       
  1223       break;
       
  1224   
       
  1225     case 74:
       
  1226 ! #line 781 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1227       { (yyval.command) = (yyvsp[(1) - (1)].command); }
       
  1228       break;
       
  1229   
       
  1230     case 75:
       
  1231 ! #line 785 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1232       {
       
  1233   			  (yyval.command) = make_for_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
       
  1234 ***************
       
  1235 *** 2707,2711 ****
       
  1236   
       
  1237     case 76:
       
  1238 ! #line 785 "/usr/homes/chet/src/bash/src/parse.y"
       
  1239       {
       
  1240   			  (yyval.command) = make_for_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
       
  1241 --- 2712,2716 ----
       
  1242   
       
  1243     case 76:
       
  1244 ! #line 790 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1245       {
       
  1246   			  (yyval.command) = make_for_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
       
  1247 ***************
       
  1248 *** 2715,2719 ****
       
  1249   
       
  1250     case 77:
       
  1251 ! #line 790 "/usr/homes/chet/src/bash/src/parse.y"
       
  1252       {
       
  1253   			  (yyval.command) = make_for_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
       
  1254 --- 2720,2724 ----
       
  1255   
       
  1256     case 77:
       
  1257 ! #line 795 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1258       {
       
  1259   			  (yyval.command) = make_for_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
       
  1260 ***************
       
  1261 *** 2723,2727 ****
       
  1262   
       
  1263     case 78:
       
  1264 ! #line 795 "/usr/homes/chet/src/bash/src/parse.y"
       
  1265       {
       
  1266   			  (yyval.command) = make_for_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
       
  1267 --- 2728,2732 ----
       
  1268   
       
  1269     case 78:
       
  1270 ! #line 800 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1271       {
       
  1272   			  (yyval.command) = make_for_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
       
  1273 ***************
       
  1274 *** 2731,2735 ****
       
  1275   
       
  1276     case 79:
       
  1277 ! #line 800 "/usr/homes/chet/src/bash/src/parse.y"
       
  1278       {
       
  1279   			  (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]);
       
  1280 --- 2736,2740 ----
       
  1281   
       
  1282     case 79:
       
  1283 ! #line 805 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1284       {
       
  1285   			  (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]);
       
  1286 ***************
       
  1287 *** 2739,2743 ****
       
  1288   
       
  1289     case 80:
       
  1290 ! #line 805 "/usr/homes/chet/src/bash/src/parse.y"
       
  1291       {
       
  1292   			  (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]);
       
  1293 --- 2744,2748 ----
       
  1294   
       
  1295     case 80:
       
  1296 ! #line 810 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1297       {
       
  1298   			  (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]);
       
  1299 ***************
       
  1300 *** 2747,2751 ****
       
  1301   
       
  1302     case 81:
       
  1303 ! #line 810 "/usr/homes/chet/src/bash/src/parse.y"
       
  1304       {
       
  1305   			  (yyval.command) = make_for_command ((yyvsp[(2) - (9)].word), (WORD_LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]);
       
  1306 --- 2752,2756 ----
       
  1307   
       
  1308     case 81:
       
  1309 ! #line 815 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1310       {
       
  1311   			  (yyval.command) = make_for_command ((yyvsp[(2) - (9)].word), (WORD_LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]);
       
  1312 ***************
       
  1313 *** 2755,2759 ****
       
  1314   
       
  1315     case 82:
       
  1316 ! #line 815 "/usr/homes/chet/src/bash/src/parse.y"
       
  1317       {
       
  1318   			  (yyval.command) = make_for_command ((yyvsp[(2) - (9)].word), (WORD_LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]);
       
  1319 --- 2760,2764 ----
       
  1320   
       
  1321     case 82:
       
  1322 ! #line 820 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1323       {
       
  1324   			  (yyval.command) = make_for_command ((yyvsp[(2) - (9)].word), (WORD_LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]);
       
  1325 ***************
       
  1326 *** 2763,2767 ****
       
  1327   
       
  1328     case 83:
       
  1329 ! #line 822 "/usr/homes/chet/src/bash/src/parse.y"
       
  1330       {
       
  1331   				  (yyval.command) = make_arith_for_command ((yyvsp[(2) - (7)].word_list), (yyvsp[(6) - (7)].command), arith_for_lineno);
       
  1332 --- 2768,2772 ----
       
  1333   
       
  1334     case 83:
       
  1335 ! #line 827 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1336       {
       
  1337   				  (yyval.command) = make_arith_for_command ((yyvsp[(2) - (7)].word_list), (yyvsp[(6) - (7)].command), arith_for_lineno);
       
  1338 ***************
       
  1339 *** 2771,2775 ****
       
  1340   
       
  1341     case 84:
       
  1342 ! #line 827 "/usr/homes/chet/src/bash/src/parse.y"
       
  1343       {
       
  1344   				  (yyval.command) = make_arith_for_command ((yyvsp[(2) - (7)].word_list), (yyvsp[(6) - (7)].command), arith_for_lineno);
       
  1345 --- 2776,2780 ----
       
  1346   
       
  1347     case 84:
       
  1348 ! #line 832 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1349       {
       
  1350   				  (yyval.command) = make_arith_for_command ((yyvsp[(2) - (7)].word_list), (yyvsp[(6) - (7)].command), arith_for_lineno);
       
  1351 ***************
       
  1352 *** 2779,2783 ****
       
  1353   
       
  1354     case 85:
       
  1355 ! #line 832 "/usr/homes/chet/src/bash/src/parse.y"
       
  1356       {
       
  1357   				  (yyval.command) = make_arith_for_command ((yyvsp[(2) - (5)].word_list), (yyvsp[(4) - (5)].command), arith_for_lineno);
       
  1358 --- 2784,2788 ----
       
  1359   
       
  1360     case 85:
       
  1361 ! #line 837 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1362       {
       
  1363   				  (yyval.command) = make_arith_for_command ((yyvsp[(2) - (5)].word_list), (yyvsp[(4) - (5)].command), arith_for_lineno);
       
  1364 ***************
       
  1365 *** 2787,2791 ****
       
  1366   
       
  1367     case 86:
       
  1368 ! #line 837 "/usr/homes/chet/src/bash/src/parse.y"
       
  1369       {
       
  1370   				  (yyval.command) = make_arith_for_command ((yyvsp[(2) - (5)].word_list), (yyvsp[(4) - (5)].command), arith_for_lineno);
       
  1371 --- 2792,2796 ----
       
  1372   
       
  1373     case 86:
       
  1374 ! #line 842 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1375       {
       
  1376   				  (yyval.command) = make_arith_for_command ((yyvsp[(2) - (5)].word_list), (yyvsp[(4) - (5)].command), arith_for_lineno);
       
  1377 ***************
       
  1378 *** 2795,2799 ****
       
  1379   
       
  1380     case 87:
       
  1381 ! #line 844 "/usr/homes/chet/src/bash/src/parse.y"
       
  1382       {
       
  1383   			  (yyval.command) = make_select_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
       
  1384 --- 2800,2804 ----
       
  1385   
       
  1386     case 87:
       
  1387 ! #line 849 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1388       {
       
  1389   			  (yyval.command) = make_select_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
       
  1390 ***************
       
  1391 *** 2803,2807 ****
       
  1392   
       
  1393     case 88:
       
  1394 ! #line 849 "/usr/homes/chet/src/bash/src/parse.y"
       
  1395       {
       
  1396   			  (yyval.command) = make_select_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
       
  1397 --- 2808,2812 ----
       
  1398   
       
  1399     case 88:
       
  1400 ! #line 854 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1401       {
       
  1402   			  (yyval.command) = make_select_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
       
  1403 ***************
       
  1404 *** 2811,2815 ****
       
  1405   
       
  1406     case 89:
       
  1407 ! #line 854 "/usr/homes/chet/src/bash/src/parse.y"
       
  1408       {
       
  1409   			  (yyval.command) = make_select_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
       
  1410 --- 2816,2820 ----
       
  1411   
       
  1412     case 89:
       
  1413 ! #line 859 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1414       {
       
  1415   			  (yyval.command) = make_select_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
       
  1416 ***************
       
  1417 *** 2819,2823 ****
       
  1418   
       
  1419     case 90:
       
  1420 ! #line 859 "/usr/homes/chet/src/bash/src/parse.y"
       
  1421       {
       
  1422   			  (yyval.command) = make_select_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
       
  1423 --- 2824,2828 ----
       
  1424   
       
  1425     case 90:
       
  1426 ! #line 864 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1427       {
       
  1428   			  (yyval.command) = make_select_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
       
  1429 ***************
       
  1430 *** 2827,2831 ****
       
  1431   
       
  1432     case 91:
       
  1433 ! #line 864 "/usr/homes/chet/src/bash/src/parse.y"
       
  1434       {
       
  1435   			  (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]);
       
  1436 --- 2832,2836 ----
       
  1437   
       
  1438     case 91:
       
  1439 ! #line 869 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1440       {
       
  1441   			  (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]);
       
  1442 ***************
       
  1443 *** 2835,2839 ****
       
  1444   
       
  1445     case 92:
       
  1446 ! #line 869 "/usr/homes/chet/src/bash/src/parse.y"
       
  1447       {
       
  1448   			  (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]);
       
  1449 --- 2840,2844 ----
       
  1450   
       
  1451     case 92:
       
  1452 ! #line 874 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1453       {
       
  1454   			  (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]);
       
  1455 ***************
       
  1456 *** 2843,2847 ****
       
  1457   
       
  1458     case 93:
       
  1459 ! #line 876 "/usr/homes/chet/src/bash/src/parse.y"
       
  1460       {
       
  1461   			  (yyval.command) = make_case_command ((yyvsp[(2) - (6)].word), (PATTERN_LIST *)NULL, word_lineno[word_top]);
       
  1462 --- 2848,2852 ----
       
  1463   
       
  1464     case 93:
       
  1465 ! #line 881 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1466       {
       
  1467   			  (yyval.command) = make_case_command ((yyvsp[(2) - (6)].word), (PATTERN_LIST *)NULL, word_lineno[word_top]);
       
  1468 ***************
       
  1469 *** 2851,2855 ****
       
  1470   
       
  1471     case 94:
       
  1472 ! #line 881 "/usr/homes/chet/src/bash/src/parse.y"
       
  1473       {
       
  1474   			  (yyval.command) = make_case_command ((yyvsp[(2) - (7)].word), (yyvsp[(5) - (7)].pattern), word_lineno[word_top]);
       
  1475 --- 2856,2860 ----
       
  1476   
       
  1477     case 94:
       
  1478 ! #line 886 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1479       {
       
  1480   			  (yyval.command) = make_case_command ((yyvsp[(2) - (7)].word), (yyvsp[(5) - (7)].pattern), word_lineno[word_top]);
       
  1481 ***************
       
  1482 *** 2859,2863 ****
       
  1483   
       
  1484     case 95:
       
  1485 ! #line 886 "/usr/homes/chet/src/bash/src/parse.y"
       
  1486       {
       
  1487   			  (yyval.command) = make_case_command ((yyvsp[(2) - (6)].word), (yyvsp[(5) - (6)].pattern), word_lineno[word_top]);
       
  1488 --- 2864,2868 ----
       
  1489   
       
  1490     case 95:
       
  1491 ! #line 891 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1492       {
       
  1493   			  (yyval.command) = make_case_command ((yyvsp[(2) - (6)].word), (yyvsp[(5) - (6)].pattern), word_lineno[word_top]);
       
  1494 ***************
       
  1495 *** 2867,2891 ****
       
  1496   
       
  1497     case 96:
       
  1498 ! #line 893 "/usr/homes/chet/src/bash/src/parse.y"
       
  1499       { (yyval.command) = make_function_def ((yyvsp[(1) - (5)].word), (yyvsp[(5) - (5)].command), function_dstart, function_bstart); }
       
  1500       break;
       
  1501   
       
  1502     case 97:
       
  1503 ! #line 896 "/usr/homes/chet/src/bash/src/parse.y"
       
  1504       { (yyval.command) = make_function_def ((yyvsp[(2) - (6)].word), (yyvsp[(6) - (6)].command), function_dstart, function_bstart); }
       
  1505       break;
       
  1506   
       
  1507     case 98:
       
  1508 ! #line 899 "/usr/homes/chet/src/bash/src/parse.y"
       
  1509       { (yyval.command) = make_function_def ((yyvsp[(2) - (4)].word), (yyvsp[(4) - (4)].command), function_dstart, function_bstart); }
       
  1510       break;
       
  1511   
       
  1512     case 99:
       
  1513 ! #line 903 "/usr/homes/chet/src/bash/src/parse.y"
       
  1514       { (yyval.command) = (yyvsp[(1) - (1)].command); }
       
  1515       break;
       
  1516   
       
  1517     case 100:
       
  1518 ! #line 905 "/usr/homes/chet/src/bash/src/parse.y"
       
  1519       {
       
  1520   			  COMMAND *tc;
       
  1521 --- 2872,2896 ----
       
  1522   
       
  1523     case 96:
       
  1524 ! #line 898 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1525       { (yyval.command) = make_function_def ((yyvsp[(1) - (5)].word), (yyvsp[(5) - (5)].command), function_dstart, function_bstart); }
       
  1526       break;
       
  1527   
       
  1528     case 97:
       
  1529 ! #line 901 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1530       { (yyval.command) = make_function_def ((yyvsp[(2) - (6)].word), (yyvsp[(6) - (6)].command), function_dstart, function_bstart); }
       
  1531       break;
       
  1532   
       
  1533     case 98:
       
  1534 ! #line 904 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1535       { (yyval.command) = make_function_def ((yyvsp[(2) - (4)].word), (yyvsp[(4) - (4)].command), function_dstart, function_bstart); }
       
  1536       break;
       
  1537   
       
  1538     case 99:
       
  1539 ! #line 908 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1540       { (yyval.command) = (yyvsp[(1) - (1)].command); }
       
  1541       break;
       
  1542   
       
  1543     case 100:
       
  1544 ! #line 910 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1545       {
       
  1546   			  COMMAND *tc;
       
  1547 ***************
       
  1548 *** 2919,2923 ****
       
  1549   
       
  1550     case 101:
       
  1551 ! #line 936 "/usr/homes/chet/src/bash/src/parse.y"
       
  1552       {
       
  1553   			  (yyval.command) = make_subshell_command ((yyvsp[(2) - (3)].command));
       
  1554 --- 2924,2928 ----
       
  1555   
       
  1556     case 101:
       
  1557 ! #line 941 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1558       {
       
  1559   			  (yyval.command) = make_subshell_command ((yyvsp[(2) - (3)].command));
       
  1560 ***************
       
  1561 *** 2927,2931 ****
       
  1562   
       
  1563     case 102:
       
  1564 ! #line 943 "/usr/homes/chet/src/bash/src/parse.y"
       
  1565       {
       
  1566   			  (yyval.command) = make_coproc_command ("COPROC", (yyvsp[(2) - (2)].command));
       
  1567 --- 2932,2936 ----
       
  1568   
       
  1569     case 102:
       
  1570 ! #line 948 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1571       {
       
  1572   			  (yyval.command) = make_coproc_command ("COPROC", (yyvsp[(2) - (2)].command));
       
  1573 ***************
       
  1574 *** 2935,2939 ****
       
  1575   
       
  1576     case 103:
       
  1577 ! #line 948 "/usr/homes/chet/src/bash/src/parse.y"
       
  1578       {
       
  1579   			  COMMAND *tc;
       
  1580 --- 2940,2944 ----
       
  1581   
       
  1582     case 103:
       
  1583 ! #line 953 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1584       {
       
  1585   			  COMMAND *tc;
       
  1586 ***************
       
  1587 *** 2955,2959 ****
       
  1588   
       
  1589     case 104:
       
  1590 ! #line 965 "/usr/homes/chet/src/bash/src/parse.y"
       
  1591       {
       
  1592   			  (yyval.command) = make_coproc_command ((yyvsp[(2) - (3)].word)->word, (yyvsp[(3) - (3)].command));
       
  1593 --- 2960,2964 ----
       
  1594   
       
  1595     case 104:
       
  1596 ! #line 970 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1597       {
       
  1598   			  (yyval.command) = make_coproc_command ((yyvsp[(2) - (3)].word)->word, (yyvsp[(3) - (3)].command));
       
  1599 ***************
       
  1600 *** 2963,2967 ****
       
  1601   
       
  1602     case 105:
       
  1603 ! #line 970 "/usr/homes/chet/src/bash/src/parse.y"
       
  1604       {
       
  1605   			  COMMAND *tc;
       
  1606 --- 2968,2972 ----
       
  1607   
       
  1608     case 105:
       
  1609 ! #line 975 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1610       {
       
  1611   			  COMMAND *tc;
       
  1612 ***************
       
  1613 *** 2983,2987 ****
       
  1614   
       
  1615     case 106:
       
  1616 ! #line 987 "/usr/homes/chet/src/bash/src/parse.y"
       
  1617       {
       
  1618   			  (yyval.command) = make_coproc_command ("COPROC", clean_simple_command ((yyvsp[(2) - (2)].command)));
       
  1619 --- 2988,2992 ----
       
  1620   
       
  1621     case 106:
       
  1622 ! #line 992 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1623       {
       
  1624   			  (yyval.command) = make_coproc_command ("COPROC", clean_simple_command ((yyvsp[(2) - (2)].command)));
       
  1625 ***************
       
  1626 *** 2991,3105 ****
       
  1627   
       
  1628     case 107:
       
  1629 ! #line 994 "/usr/homes/chet/src/bash/src/parse.y"
       
  1630       { (yyval.command) = make_if_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command), (COMMAND *)NULL); }
       
  1631       break;
       
  1632   
       
  1633     case 108:
       
  1634 ! #line 996 "/usr/homes/chet/src/bash/src/parse.y"
       
  1635       { (yyval.command) = make_if_command ((yyvsp[(2) - (7)].command), (yyvsp[(4) - (7)].command), (yyvsp[(6) - (7)].command)); }
       
  1636       break;
       
  1637   
       
  1638     case 109:
       
  1639 ! #line 998 "/usr/homes/chet/src/bash/src/parse.y"
       
  1640       { (yyval.command) = make_if_command ((yyvsp[(2) - (6)].command), (yyvsp[(4) - (6)].command), (yyvsp[(5) - (6)].command)); }
       
  1641       break;
       
  1642   
       
  1643     case 110:
       
  1644 ! #line 1003 "/usr/homes/chet/src/bash/src/parse.y"
       
  1645       { (yyval.command) = make_group_command ((yyvsp[(2) - (3)].command)); }
       
  1646       break;
       
  1647   
       
  1648     case 111:
       
  1649 ! #line 1007 "/usr/homes/chet/src/bash/src/parse.y"
       
  1650       { (yyval.command) = make_arith_command ((yyvsp[(1) - (1)].word_list)); }
       
  1651       break;
       
  1652   
       
  1653     case 112:
       
  1654 ! #line 1011 "/usr/homes/chet/src/bash/src/parse.y"
       
  1655       { (yyval.command) = (yyvsp[(2) - (3)].command); }
       
  1656       break;
       
  1657   
       
  1658     case 113:
       
  1659 ! #line 1015 "/usr/homes/chet/src/bash/src/parse.y"
       
  1660       { (yyval.command) = make_if_command ((yyvsp[(2) - (4)].command), (yyvsp[(4) - (4)].command), (COMMAND *)NULL); }
       
  1661       break;
       
  1662   
       
  1663     case 114:
       
  1664 ! #line 1017 "/usr/homes/chet/src/bash/src/parse.y"
       
  1665       { (yyval.command) = make_if_command ((yyvsp[(2) - (6)].command), (yyvsp[(4) - (6)].command), (yyvsp[(6) - (6)].command)); }
       
  1666       break;
       
  1667   
       
  1668     case 115:
       
  1669 ! #line 1019 "/usr/homes/chet/src/bash/src/parse.y"
       
  1670       { (yyval.command) = make_if_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command), (yyvsp[(5) - (5)].command)); }
       
  1671       break;
       
  1672   
       
  1673     case 117:
       
  1674 ! #line 1024 "/usr/homes/chet/src/bash/src/parse.y"
       
  1675       { (yyvsp[(2) - (2)].pattern)->next = (yyvsp[(1) - (2)].pattern); (yyval.pattern) = (yyvsp[(2) - (2)].pattern); }
       
  1676       break;
       
  1677   
       
  1678     case 118:
       
  1679 ! #line 1028 "/usr/homes/chet/src/bash/src/parse.y"
       
  1680       { (yyval.pattern) = make_pattern_list ((yyvsp[(2) - (4)].word_list), (yyvsp[(4) - (4)].command)); }
       
  1681       break;
       
  1682   
       
  1683     case 119:
       
  1684 ! #line 1030 "/usr/homes/chet/src/bash/src/parse.y"
       
  1685       { (yyval.pattern) = make_pattern_list ((yyvsp[(2) - (4)].word_list), (COMMAND *)NULL); }
       
  1686       break;
       
  1687   
       
  1688     case 120:
       
  1689 ! #line 1032 "/usr/homes/chet/src/bash/src/parse.y"
       
  1690       { (yyval.pattern) = make_pattern_list ((yyvsp[(3) - (5)].word_list), (yyvsp[(5) - (5)].command)); }
       
  1691       break;
       
  1692   
       
  1693     case 121:
       
  1694 ! #line 1034 "/usr/homes/chet/src/bash/src/parse.y"
       
  1695       { (yyval.pattern) = make_pattern_list ((yyvsp[(3) - (5)].word_list), (COMMAND *)NULL); }
       
  1696       break;
       
  1697   
       
  1698     case 122:
       
  1699 ! #line 1038 "/usr/homes/chet/src/bash/src/parse.y"
       
  1700       { (yyval.pattern) = (yyvsp[(1) - (2)].pattern); }
       
  1701       break;
       
  1702   
       
  1703     case 123:
       
  1704 ! #line 1040 "/usr/homes/chet/src/bash/src/parse.y"
       
  1705       { (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); }
       
  1706       break;
       
  1707   
       
  1708     case 124:
       
  1709 ! #line 1042 "/usr/homes/chet/src/bash/src/parse.y"
       
  1710       { (yyvsp[(1) - (2)].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyval.pattern) = (yyvsp[(1) - (2)].pattern); }
       
  1711       break;
       
  1712   
       
  1713     case 125:
       
  1714 ! #line 1044 "/usr/homes/chet/src/bash/src/parse.y"
       
  1715       { (yyvsp[(2) - (3)].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); }
       
  1716       break;
       
  1717   
       
  1718     case 126:
       
  1719 ! #line 1046 "/usr/homes/chet/src/bash/src/parse.y"
       
  1720       { (yyvsp[(1) - (2)].pattern)->flags |= CASEPAT_TESTNEXT; (yyval.pattern) = (yyvsp[(1) - (2)].pattern); }
       
  1721       break;
       
  1722   
       
  1723     case 127:
       
  1724 ! #line 1048 "/usr/homes/chet/src/bash/src/parse.y"
       
  1725       { (yyvsp[(2) - (3)].pattern)->flags |= CASEPAT_TESTNEXT; (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); }
       
  1726       break;
       
  1727   
       
  1728     case 128:
       
  1729 ! #line 1052 "/usr/homes/chet/src/bash/src/parse.y"
       
  1730       { (yyval.word_list) = make_word_list ((yyvsp[(1) - (1)].word), (WORD_LIST *)NULL); }
       
  1731       break;
       
  1732   
       
  1733     case 129:
       
  1734 ! #line 1054 "/usr/homes/chet/src/bash/src/parse.y"
       
  1735       { (yyval.word_list) = make_word_list ((yyvsp[(3) - (3)].word), (yyvsp[(1) - (3)].word_list)); }
       
  1736       break;
       
  1737   
       
  1738     case 130:
       
  1739 ! #line 1063 "/usr/homes/chet/src/bash/src/parse.y"
       
  1740       {
       
  1741   			  (yyval.command) = (yyvsp[(2) - (2)].command);
       
  1742 --- 2996,3110 ----
       
  1743   
       
  1744     case 107:
       
  1745 ! #line 999 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1746       { (yyval.command) = make_if_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command), (COMMAND *)NULL); }
       
  1747       break;
       
  1748   
       
  1749     case 108:
       
  1750 ! #line 1001 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1751       { (yyval.command) = make_if_command ((yyvsp[(2) - (7)].command), (yyvsp[(4) - (7)].command), (yyvsp[(6) - (7)].command)); }
       
  1752       break;
       
  1753   
       
  1754     case 109:
       
  1755 ! #line 1003 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1756       { (yyval.command) = make_if_command ((yyvsp[(2) - (6)].command), (yyvsp[(4) - (6)].command), (yyvsp[(5) - (6)].command)); }
       
  1757       break;
       
  1758   
       
  1759     case 110:
       
  1760 ! #line 1008 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1761       { (yyval.command) = make_group_command ((yyvsp[(2) - (3)].command)); }
       
  1762       break;
       
  1763   
       
  1764     case 111:
       
  1765 ! #line 1012 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1766       { (yyval.command) = make_arith_command ((yyvsp[(1) - (1)].word_list)); }
       
  1767       break;
       
  1768   
       
  1769     case 112:
       
  1770 ! #line 1016 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1771       { (yyval.command) = (yyvsp[(2) - (3)].command); }
       
  1772       break;
       
  1773   
       
  1774     case 113:
       
  1775 ! #line 1020 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1776       { (yyval.command) = make_if_command ((yyvsp[(2) - (4)].command), (yyvsp[(4) - (4)].command), (COMMAND *)NULL); }
       
  1777       break;
       
  1778   
       
  1779     case 114:
       
  1780 ! #line 1022 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1781       { (yyval.command) = make_if_command ((yyvsp[(2) - (6)].command), (yyvsp[(4) - (6)].command), (yyvsp[(6) - (6)].command)); }
       
  1782       break;
       
  1783   
       
  1784     case 115:
       
  1785 ! #line 1024 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1786       { (yyval.command) = make_if_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command), (yyvsp[(5) - (5)].command)); }
       
  1787       break;
       
  1788   
       
  1789     case 117:
       
  1790 ! #line 1029 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1791       { (yyvsp[(2) - (2)].pattern)->next = (yyvsp[(1) - (2)].pattern); (yyval.pattern) = (yyvsp[(2) - (2)].pattern); }
       
  1792       break;
       
  1793   
       
  1794     case 118:
       
  1795 ! #line 1033 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1796       { (yyval.pattern) = make_pattern_list ((yyvsp[(2) - (4)].word_list), (yyvsp[(4) - (4)].command)); }
       
  1797       break;
       
  1798   
       
  1799     case 119:
       
  1800 ! #line 1035 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1801       { (yyval.pattern) = make_pattern_list ((yyvsp[(2) - (4)].word_list), (COMMAND *)NULL); }
       
  1802       break;
       
  1803   
       
  1804     case 120:
       
  1805 ! #line 1037 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1806       { (yyval.pattern) = make_pattern_list ((yyvsp[(3) - (5)].word_list), (yyvsp[(5) - (5)].command)); }
       
  1807       break;
       
  1808   
       
  1809     case 121:
       
  1810 ! #line 1039 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1811       { (yyval.pattern) = make_pattern_list ((yyvsp[(3) - (5)].word_list), (COMMAND *)NULL); }
       
  1812       break;
       
  1813   
       
  1814     case 122:
       
  1815 ! #line 1043 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1816       { (yyval.pattern) = (yyvsp[(1) - (2)].pattern); }
       
  1817       break;
       
  1818   
       
  1819     case 123:
       
  1820 ! #line 1045 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1821       { (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); }
       
  1822       break;
       
  1823   
       
  1824     case 124:
       
  1825 ! #line 1047 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1826       { (yyvsp[(1) - (2)].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyval.pattern) = (yyvsp[(1) - (2)].pattern); }
       
  1827       break;
       
  1828   
       
  1829     case 125:
       
  1830 ! #line 1049 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1831       { (yyvsp[(2) - (3)].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); }
       
  1832       break;
       
  1833   
       
  1834     case 126:
       
  1835 ! #line 1051 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1836       { (yyvsp[(1) - (2)].pattern)->flags |= CASEPAT_TESTNEXT; (yyval.pattern) = (yyvsp[(1) - (2)].pattern); }
       
  1837       break;
       
  1838   
       
  1839     case 127:
       
  1840 ! #line 1053 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1841       { (yyvsp[(2) - (3)].pattern)->flags |= CASEPAT_TESTNEXT; (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); }
       
  1842       break;
       
  1843   
       
  1844     case 128:
       
  1845 ! #line 1057 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1846       { (yyval.word_list) = make_word_list ((yyvsp[(1) - (1)].word), (WORD_LIST *)NULL); }
       
  1847       break;
       
  1848   
       
  1849     case 129:
       
  1850 ! #line 1059 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1851       { (yyval.word_list) = make_word_list ((yyvsp[(3) - (3)].word), (yyvsp[(1) - (3)].word_list)); }
       
  1852       break;
       
  1853   
       
  1854     case 130:
       
  1855 ! #line 1068 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1856       {
       
  1857   			  (yyval.command) = (yyvsp[(2) - (2)].command);
       
  1858 ***************
       
  1859 *** 3110,3114 ****
       
  1860   
       
  1861     case 132:
       
  1862 ! #line 1072 "/usr/homes/chet/src/bash/src/parse.y"
       
  1863       {
       
  1864   			  (yyval.command) = (yyvsp[(2) - (2)].command);
       
  1865 --- 3115,3119 ----
       
  1866   
       
  1867     case 132:
       
  1868 ! #line 1077 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1869       {
       
  1870   			  (yyval.command) = (yyvsp[(2) - (2)].command);
       
  1871 ***************
       
  1872 *** 3117,3121 ****
       
  1873   
       
  1874     case 134:
       
  1875 ! #line 1079 "/usr/homes/chet/src/bash/src/parse.y"
       
  1876       {
       
  1877   			  if ((yyvsp[(1) - (3)].command)->type == cm_connection)
       
  1878 --- 3122,3126 ----
       
  1879   
       
  1880     case 134:
       
  1881 ! #line 1084 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1882       {
       
  1883   			  if ((yyvsp[(1) - (3)].command)->type == cm_connection)
       
  1884 ***************
       
  1885 *** 3127,3141 ****
       
  1886   
       
  1887     case 136:
       
  1888 ! #line 1090 "/usr/homes/chet/src/bash/src/parse.y"
       
  1889       { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), AND_AND); }
       
  1890       break;
       
  1891   
       
  1892     case 137:
       
  1893 ! #line 1092 "/usr/homes/chet/src/bash/src/parse.y"
       
  1894       { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), OR_OR); }
       
  1895       break;
       
  1896   
       
  1897     case 138:
       
  1898 ! #line 1094 "/usr/homes/chet/src/bash/src/parse.y"
       
  1899       {
       
  1900   			  if ((yyvsp[(1) - (4)].command)->type == cm_connection)
       
  1901 --- 3132,3146 ----
       
  1902   
       
  1903     case 136:
       
  1904 ! #line 1095 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1905       { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), AND_AND); }
       
  1906       break;
       
  1907   
       
  1908     case 137:
       
  1909 ! #line 1097 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1910       { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), OR_OR); }
       
  1911       break;
       
  1912   
       
  1913     case 138:
       
  1914 ! #line 1099 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1915       {
       
  1916   			  if ((yyvsp[(1) - (4)].command)->type == cm_connection)
       
  1917 ***************
       
  1918 *** 3147,3181 ****
       
  1919   
       
  1920     case 139:
       
  1921 ! #line 1101 "/usr/homes/chet/src/bash/src/parse.y"
       
  1922       { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), ';'); }
       
  1923       break;
       
  1924   
       
  1925     case 140:
       
  1926 ! #line 1103 "/usr/homes/chet/src/bash/src/parse.y"
       
  1927       { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), ';'); }
       
  1928       break;
       
  1929   
       
  1930     case 141:
       
  1931 ! #line 1105 "/usr/homes/chet/src/bash/src/parse.y"
       
  1932       { (yyval.command) = (yyvsp[(1) - (1)].command); }
       
  1933       break;
       
  1934   
       
  1935     case 144:
       
  1936 ! #line 1113 "/usr/homes/chet/src/bash/src/parse.y"
       
  1937       { (yyval.number) = '\n'; }
       
  1938       break;
       
  1939   
       
  1940     case 145:
       
  1941 ! #line 1115 "/usr/homes/chet/src/bash/src/parse.y"
       
  1942       { (yyval.number) = ';'; }
       
  1943       break;
       
  1944   
       
  1945     case 146:
       
  1946 ! #line 1117 "/usr/homes/chet/src/bash/src/parse.y"
       
  1947       { (yyval.number) = yacc_EOF; }
       
  1948       break;
       
  1949   
       
  1950     case 149:
       
  1951 ! #line 1131 "/usr/homes/chet/src/bash/src/parse.y"
       
  1952       {
       
  1953   			  (yyval.command) = (yyvsp[(1) - (1)].command);
       
  1954 --- 3152,3186 ----
       
  1955   
       
  1956     case 139:
       
  1957 ! #line 1106 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1958       { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), ';'); }
       
  1959       break;
       
  1960   
       
  1961     case 140:
       
  1962 ! #line 1108 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1963       { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), ';'); }
       
  1964       break;
       
  1965   
       
  1966     case 141:
       
  1967 ! #line 1110 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1968       { (yyval.command) = (yyvsp[(1) - (1)].command); }
       
  1969       break;
       
  1970   
       
  1971     case 144:
       
  1972 ! #line 1118 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1973       { (yyval.number) = '\n'; }
       
  1974       break;
       
  1975   
       
  1976     case 145:
       
  1977 ! #line 1120 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1978       { (yyval.number) = ';'; }
       
  1979       break;
       
  1980   
       
  1981     case 146:
       
  1982 ! #line 1122 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1983       { (yyval.number) = yacc_EOF; }
       
  1984       break;
       
  1985   
       
  1986     case 149:
       
  1987 ! #line 1136 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  1988       {
       
  1989   			  (yyval.command) = (yyvsp[(1) - (1)].command);
       
  1990 ***************
       
  1991 *** 3193,3197 ****
       
  1992   
       
  1993     case 150:
       
  1994 ! #line 1144 "/usr/homes/chet/src/bash/src/parse.y"
       
  1995       {
       
  1996   			  if ((yyvsp[(1) - (2)].command)->type == cm_connection)
       
  1997 --- 3198,3202 ----
       
  1998   
       
  1999     case 150:
       
  2000 ! #line 1149 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  2001       {
       
  2002   			  if ((yyvsp[(1) - (2)].command)->type == cm_connection)
       
  2003 ***************
       
  2004 *** 3212,3216 ****
       
  2005   
       
  2006     case 151:
       
  2007 ! #line 1160 "/usr/homes/chet/src/bash/src/parse.y"
       
  2008       {
       
  2009   			  (yyval.command) = (yyvsp[(1) - (2)].command);
       
  2010 --- 3217,3221 ----
       
  2011   
       
  2012     case 151:
       
  2013 ! #line 1165 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  2014       {
       
  2015   			  (yyval.command) = (yyvsp[(1) - (2)].command);
       
  2016 ***************
       
  2017 *** 3228,3242 ****
       
  2018   
       
  2019     case 152:
       
  2020 ! #line 1175 "/usr/homes/chet/src/bash/src/parse.y"
       
  2021       { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), AND_AND); }
       
  2022       break;
       
  2023   
       
  2024     case 153:
       
  2025 ! #line 1177 "/usr/homes/chet/src/bash/src/parse.y"
       
  2026       { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), OR_OR); }
       
  2027       break;
       
  2028   
       
  2029     case 154:
       
  2030 ! #line 1179 "/usr/homes/chet/src/bash/src/parse.y"
       
  2031       {
       
  2032   			  if ((yyvsp[(1) - (3)].command)->type == cm_connection)
       
  2033 --- 3233,3247 ----
       
  2034   
       
  2035     case 152:
       
  2036 ! #line 1180 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  2037       { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), AND_AND); }
       
  2038       break;
       
  2039   
       
  2040     case 153:
       
  2041 ! #line 1182 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  2042       { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), OR_OR); }
       
  2043       break;
       
  2044   
       
  2045     case 154:
       
  2046 ! #line 1184 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  2047       {
       
  2048   			  if ((yyvsp[(1) - (3)].command)->type == cm_connection)
       
  2049 ***************
       
  2050 *** 3248,3267 ****
       
  2051   
       
  2052     case 155:
       
  2053 ! #line 1186 "/usr/homes/chet/src/bash/src/parse.y"
       
  2054       { (yyval.command) = command_connect ((yyvsp[(1) - (3)].command), (yyvsp[(3) - (3)].command), ';'); }
       
  2055       break;
       
  2056   
       
  2057     case 156:
       
  2058 ! #line 1189 "/usr/homes/chet/src/bash/src/parse.y"
       
  2059       { (yyval.command) = (yyvsp[(1) - (1)].command); }
       
  2060       break;
       
  2061   
       
  2062     case 157:
       
  2063 ! #line 1193 "/usr/homes/chet/src/bash/src/parse.y"
       
  2064       { (yyval.command) = (yyvsp[(1) - (1)].command); }
       
  2065       break;
       
  2066   
       
  2067     case 158:
       
  2068 ! #line 1195 "/usr/homes/chet/src/bash/src/parse.y"
       
  2069       {
       
  2070   			  if ((yyvsp[(2) - (2)].command))
       
  2071 --- 3253,3272 ----
       
  2072   
       
  2073     case 155:
       
  2074 ! #line 1191 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  2075       { (yyval.command) = command_connect ((yyvsp[(1) - (3)].command), (yyvsp[(3) - (3)].command), ';'); }
       
  2076       break;
       
  2077   
       
  2078     case 156:
       
  2079 ! #line 1194 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  2080       { (yyval.command) = (yyvsp[(1) - (1)].command); }
       
  2081       break;
       
  2082   
       
  2083     case 157:
       
  2084 ! #line 1198 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  2085       { (yyval.command) = (yyvsp[(1) - (1)].command); }
       
  2086       break;
       
  2087   
       
  2088     case 158:
       
  2089 ! #line 1200 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  2090       {
       
  2091   			  if ((yyvsp[(2) - (2)].command))
       
  2092 ***************
       
  2093 *** 3272,3276 ****
       
  2094   
       
  2095     case 159:
       
  2096 ! #line 1201 "/usr/homes/chet/src/bash/src/parse.y"
       
  2097       {
       
  2098   			  if ((yyvsp[(2) - (2)].command))
       
  2099 --- 3277,3281 ----
       
  2100   
       
  2101     case 159:
       
  2102 ! #line 1206 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  2103       {
       
  2104   			  if ((yyvsp[(2) - (2)].command))
       
  2105 ***************
       
  2106 *** 3281,3285 ****
       
  2107   
       
  2108     case 160:
       
  2109 ! #line 1207 "/usr/homes/chet/src/bash/src/parse.y"
       
  2110       {
       
  2111   			  ELEMENT x;
       
  2112 --- 3286,3290 ----
       
  2113   
       
  2114     case 160:
       
  2115 ! #line 1212 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  2116       {
       
  2117   			  ELEMENT x;
       
  2118 ***************
       
  2119 *** 3301,3305 ****
       
  2120   
       
  2121     case 161:
       
  2122 ! #line 1224 "/usr/homes/chet/src/bash/src/parse.y"
       
  2123       {
       
  2124   			  ELEMENT x;
       
  2125 --- 3306,3310 ----
       
  2126   
       
  2127     case 161:
       
  2128 ! #line 1229 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  2129       {
       
  2130   			  ELEMENT x;
       
  2131 ***************
       
  2132 *** 3322,3331 ****
       
  2133   
       
  2134     case 162:
       
  2135 ! #line 1244 "/usr/homes/chet/src/bash/src/parse.y"
       
  2136       { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), '|'); }
       
  2137       break;
       
  2138   
       
  2139     case 163:
       
  2140 ! #line 1246 "/usr/homes/chet/src/bash/src/parse.y"
       
  2141       {
       
  2142   			  /* Make cmd1 |& cmd2 equivalent to cmd1 2>&1 | cmd2 */
       
  2143 --- 3327,3336 ----
       
  2144   
       
  2145     case 162:
       
  2146 ! #line 1249 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  2147       { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), '|'); }
       
  2148       break;
       
  2149   
       
  2150     case 163:
       
  2151 ! #line 1251 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  2152       {
       
  2153   			  /* Make cmd1 |& cmd2 equivalent to cmd1 2>&1 | cmd2 */
       
  2154 ***************
       
  2155 *** 3353,3372 ****
       
  2156   
       
  2157     case 164:
       
  2158 ! #line 1269 "/usr/homes/chet/src/bash/src/parse.y"
       
  2159       { (yyval.command) = (yyvsp[(1) - (1)].command); }
       
  2160       break;
       
  2161   
       
  2162     case 165:
       
  2163 ! #line 1273 "/usr/homes/chet/src/bash/src/parse.y"
       
  2164       { (yyval.number) = CMD_TIME_PIPELINE; }
       
  2165       break;
       
  2166   
       
  2167     case 166:
       
  2168 ! #line 1275 "/usr/homes/chet/src/bash/src/parse.y"
       
  2169       { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
       
  2170       break;
       
  2171   
       
  2172     case 167:
       
  2173 ! #line 1277 "/usr/homes/chet/src/bash/src/parse.y"
       
  2174       { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
       
  2175       break;
       
  2176 --- 3358,3377 ----
       
  2177   
       
  2178     case 164:
       
  2179 ! #line 1274 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  2180       { (yyval.command) = (yyvsp[(1) - (1)].command); }
       
  2181       break;
       
  2182   
       
  2183     case 165:
       
  2184 ! #line 1278 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  2185       { (yyval.number) = CMD_TIME_PIPELINE; }
       
  2186       break;
       
  2187   
       
  2188     case 166:
       
  2189 ! #line 1280 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  2190       { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
       
  2191       break;
       
  2192   
       
  2193     case 167:
       
  2194 ! #line 1282 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  2195       { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
       
  2196       break;
       
  2197 ***************
       
  2198 *** 3374,3378 ****
       
  2199   
       
  2200   /* Line 1267 of yacc.c.  */
       
  2201 ! #line 3377 "y.tab.c"
       
  2202         default: break;
       
  2203       }
       
  2204 --- 3379,3383 ----
       
  2205   
       
  2206   /* Line 1267 of yacc.c.  */
       
  2207 ! #line 3382 "y.tab.c"
       
  2208         default: break;
       
  2209       }
       
  2210 ***************
       
  2211 *** 3588,3592 ****
       
  2212   
       
  2213   
       
  2214 ! #line 1279 "/usr/homes/chet/src/bash/src/parse.y"
       
  2215   
       
  2216   
       
  2217 --- 3593,3597 ----
       
  2218   
       
  2219   
       
  2220 ! #line 1284 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
       
  2221   
       
  2222   
       
  2223 ***************
       
  2224 *** 4949,4952 ****
       
  2225 --- 4954,4972 ----
       
  2226   static int esacs_needed_count;
       
  2227   
       
  2228 + static void
       
  2229 + push_heredoc (r)
       
  2230 +      REDIRECT *r;
       
  2231 + {
       
  2232 +   if (need_here_doc >= HEREDOC_MAX)
       
  2233 +     {
       
  2234 +       last_command_exit_value = EX_BADUSAGE;
       
  2235 +       need_here_doc = 0;
       
  2236 +       report_syntax_error (_("maximum here-document count exceeded"));
       
  2237 +       reset_parser ();
       
  2238 +       exit_shell (last_command_exit_value);
       
  2239 +     }
       
  2240 +   redir_stack[need_here_doc++] = r;
       
  2241 + }
       
  2242 + 
       
  2243   void
       
  2244   gather_here_documents ()
       
  2245 ***************
       
  2246 *** 8542,8543 ****
       
  2247 --- 8562,8564 ----
       
  2248   }
       
  2249   #endif /* HANDLE_MULTIBYTE */
       
  2250 + 
       
  2251 *** ../bash-4.3/patchlevel.h	2012-12-29 10:47:57.000000000 -0500
       
  2252 --- patchlevel.h	2014-03-20 20:01:28.000000000 -0400
       
  2253 ***************
       
  2254 *** 26,30 ****
       
  2255      looks for to find the patch level (for the sccs version string). */
       
  2256   
       
  2257 ! #define PATCHLEVEL 27
       
  2258   
       
  2259   #endif /* _PATCHLEVEL_H_ */
       
  2260 --- 26,30 ----
       
  2261      looks for to find the patch level (for the sccs version string). */
       
  2262   
       
  2263 ! #define PATCHLEVEL 28
       
  2264   
       
  2265   #endif /* _PATCHLEVEL_H_ */