lede-packages-rs

git clone git://archive.git.mtrnord.blog/MTRNord/lede-packages-rs.git
Log | Files | Refs | README | LICENSE

128-upstream-bash43-028.patch (52055B)


      1 			     BASH PATCH REPORT
      2 			     =================
      3 
      4 Bash-Release:	4.3
      5 Patch-ID:	bash43-028
      6 
      7 Bug-Reported-by:	Florian Weimer <fweimer@redhat.com>
      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 --- a/parse.y
     20 +++ b/parse.y
     21 @@ -168,6 +168,9 @@ static char *read_a_line __P((int));
     22  
     23  static int reserved_word_acceptable __P((int));
     24  static int yylex __P((void));
     25 +
     26 +static void push_heredoc __P((REDIRECT *));
     27 +static char *mk_alexpansion __P((char *));
     28  static int alias_expand_token __P((char *));
     29  static int time_command_acceptable __P((void));
     30  static int special_case_tokens __P((char *));
     31 @@ -265,7 +268,9 @@ int parser_state;
     32  
     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 +#define HEREDOC_MAX 16
     37 +
     38 +static REDIRECT *redir_stack[HEREDOC_MAX];
     39  int need_here_doc;
     40  
     41  /* Where shell input comes from.  History expansion is performed on each
     42 @@ -307,7 +312,7 @@ static int global_extglob;
     43     or `for WORD' begins.  This is a nested command maximum, since the array
     44     index is decremented after a case, select, or for command is parsed. */
     45  #define MAX_CASE_NEST	128
     46 -static int word_lineno[MAX_CASE_NEST];
     47 +static int word_lineno[MAX_CASE_NEST+1];
     48  static int word_top = -1;
     49  
     50  /* If non-zero, it is the token that we want read_token to return
     51 @@ -520,42 +525,42 @@ redirection:	'>' WORD
     52  			  source.dest = 0;
     53  			  redir.filename = $2;
     54  			  $$ = make_redirection (source, r_reading_until, redir, 0);
     55 -			  redir_stack[need_here_doc++] = $$;
     56 +			  push_heredoc ($$);
     57  			}
     58  	|	NUMBER LESS_LESS WORD
     59  			{
     60  			  source.dest = $1;
     61  			  redir.filename = $3;
     62  			  $$ = make_redirection (source, r_reading_until, redir, 0);
     63 -			  redir_stack[need_here_doc++] = $$;
     64 +			  push_heredoc ($$);
     65  			}
     66  	|	REDIR_WORD LESS_LESS WORD
     67  			{
     68  			  source.filename = $1;
     69  			  redir.filename = $3;
     70  			  $$ = make_redirection (source, r_reading_until, redir, REDIR_VARASSIGN);
     71 -			  redir_stack[need_here_doc++] = $$;
     72 +			  push_heredoc ($$);
     73  			}
     74  	|	LESS_LESS_MINUS WORD
     75  			{
     76  			  source.dest = 0;
     77  			  redir.filename = $2;
     78  			  $$ = make_redirection (source, r_deblank_reading_until, redir, 0);
     79 -			  redir_stack[need_here_doc++] = $$;
     80 +			  push_heredoc ($$);
     81  			}
     82  	|	NUMBER LESS_LESS_MINUS WORD
     83  			{
     84  			  source.dest = $1;
     85  			  redir.filename = $3;
     86  			  $$ = make_redirection (source, r_deblank_reading_until, redir, 0);
     87 -			  redir_stack[need_here_doc++] = $$;
     88 +			  push_heredoc ($$);
     89  			}
     90  	|	REDIR_WORD  LESS_LESS_MINUS WORD
     91  			{
     92  			  source.filename = $1;
     93  			  redir.filename = $3;
     94  			  $$ = make_redirection (source, r_deblank_reading_until, redir, REDIR_VARASSIGN);
     95 -			  redir_stack[need_here_doc++] = $$;
     96 +			  push_heredoc ($$);
     97  			}
     98  	|	LESS_LESS_LESS WORD
     99  			{
    100 @@ -2636,6 +2641,21 @@ yylex ()
    101     which allow ESAC to be the next one read. */
    102  static int esacs_needed_count;
    103  
    104 +static void
    105 +push_heredoc (r)
    106 +     REDIRECT *r;
    107 +{
    108 +  if (need_here_doc >= HEREDOC_MAX)
    109 +    {
    110 +      last_command_exit_value = EX_BADUSAGE;
    111 +      need_here_doc = 0;
    112 +      report_syntax_error (_("maximum here-document count exceeded"));
    113 +      reset_parser ();
    114 +      exit_shell (last_command_exit_value);
    115 +    }
    116 +  redir_stack[need_here_doc++] = r;
    117 +}
    118 +
    119  void
    120  gather_here_documents ()
    121  {
    122 --- a/y.tab.c
    123 +++ b/y.tab.c
    124 @@ -168,7 +168,7 @@
    125  
    126  
    127  /* Copy the first part of user declarations.  */
    128 -#line 21 "/usr/homes/chet/src/bash/src/parse.y"
    129 +#line 21 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    130  
    131  #include "config.h"
    132  
    133 @@ -319,6 +319,9 @@ static char *read_a_line __P((int));
    134  
    135  static int reserved_word_acceptable __P((int));
    136  static int yylex __P((void));
    137 +
    138 +static void push_heredoc __P((REDIRECT *));
    139 +static char *mk_alexpansion __P((char *));
    140  static int alias_expand_token __P((char *));
    141  static int time_command_acceptable __P((void));
    142  static int special_case_tokens __P((char *));
    143 @@ -416,7 +419,9 @@ int parser_state;
    144  
    145  /* Variables to manage the task of reading here documents, because we need to
    146     defer the reading until after a complete command has been collected. */
    147 -static REDIRECT *redir_stack[10];
    148 +#define HEREDOC_MAX 16
    149 +
    150 +static REDIRECT *redir_stack[HEREDOC_MAX];
    151  int need_here_doc;
    152  
    153  /* Where shell input comes from.  History expansion is performed on each
    154 @@ -458,7 +463,7 @@ static int global_extglob;
    155     or `for WORD' begins.  This is a nested command maximum, since the array
    156     index is decremented after a case, select, or for command is parsed. */
    157  #define MAX_CASE_NEST	128
    158 -static int word_lineno[MAX_CASE_NEST];
    159 +static int word_lineno[MAX_CASE_NEST+1];
    160  static int word_top = -1;
    161  
    162  /* If non-zero, it is the token that we want read_token to return
    163 @@ -492,7 +497,7 @@ static REDIRECTEE redir;
    164  
    165  #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
    166  typedef union YYSTYPE
    167 -#line 324 "/usr/homes/chet/src/bash/src/parse.y"
    168 +#line 329 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    169  {
    170    WORD_DESC *word;		/* the word that we read. */
    171    int number;			/* the number that we read. */
    172 @@ -503,7 +508,7 @@ typedef union YYSTYPE
    173    PATTERN_LIST *pattern;
    174  }
    175  /* Line 193 of yacc.c.  */
    176 -#line 507 "y.tab.c"
    177 +#line 512 "y.tab.c"
    178  	YYSTYPE;
    179  # define yystype YYSTYPE /* obsolescent; will be withdrawn */
    180  # define YYSTYPE_IS_DECLARED 1
    181 @@ -516,7 +521,7 @@ typedef union YYSTYPE
    182  
    183  
    184  /* Line 216 of yacc.c.  */
    185 -#line 520 "y.tab.c"
    186 +#line 525 "y.tab.c"
    187  
    188  #ifdef short
    189  # undef short
    190 @@ -886,23 +891,23 @@ static const yytype_int8 yyrhs[] =
    191  /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
    192  static const yytype_uint16 yyrline[] =
    193  {
    194 -       0,   377,   377,   388,   397,   412,   422,   424,   428,   434,
    195 -     440,   446,   452,   458,   464,   470,   476,   482,   488,   494,
    196 -     500,   506,   512,   518,   525,   532,   539,   546,   553,   560,
    197 -     566,   572,   578,   584,   590,   596,   602,   608,   614,   620,
    198 -     626,   632,   638,   644,   650,   656,   662,   668,   674,   680,
    199 -     686,   692,   700,   702,   704,   708,   712,   723,   725,   729,
    200 -     731,   733,   749,   751,   755,   757,   759,   761,   763,   765,
    201 -     767,   769,   771,   773,   775,   779,   784,   789,   794,   799,
    202 -     804,   809,   814,   821,   826,   831,   836,   843,   848,   853,
    203 -     858,   863,   868,   875,   880,   885,   892,   895,   898,   902,
    204 -     904,   935,   942,   947,   964,   969,   986,   993,   995,   997,
    205 -    1002,  1006,  1010,  1014,  1016,  1018,  1022,  1023,  1027,  1029,
    206 -    1031,  1033,  1037,  1039,  1041,  1043,  1045,  1047,  1051,  1053,
    207 -    1062,  1070,  1071,  1077,  1078,  1085,  1089,  1091,  1093,  1100,
    208 -    1102,  1104,  1108,  1109,  1112,  1114,  1116,  1120,  1121,  1130,
    209 -    1143,  1159,  1174,  1176,  1178,  1185,  1188,  1192,  1194,  1200,
    210 -    1206,  1223,  1243,  1245,  1268,  1272,  1274,  1276
    211 +       0,   382,   382,   393,   402,   417,   427,   429,   433,   439,
    212 +     445,   451,   457,   463,   469,   475,   481,   487,   493,   499,
    213 +     505,   511,   517,   523,   530,   537,   544,   551,   558,   565,
    214 +     571,   577,   583,   589,   595,   601,   607,   613,   619,   625,
    215 +     631,   637,   643,   649,   655,   661,   667,   673,   679,   685,
    216 +     691,   697,   705,   707,   709,   713,   717,   728,   730,   734,
    217 +     736,   738,   754,   756,   760,   762,   764,   766,   768,   770,
    218 +     772,   774,   776,   778,   780,   784,   789,   794,   799,   804,
    219 +     809,   814,   819,   826,   831,   836,   841,   848,   853,   858,
    220 +     863,   868,   873,   880,   885,   890,   897,   900,   903,   907,
    221 +     909,   940,   947,   952,   969,   974,   991,   998,  1000,  1002,
    222 +    1007,  1011,  1015,  1019,  1021,  1023,  1027,  1028,  1032,  1034,
    223 +    1036,  1038,  1042,  1044,  1046,  1048,  1050,  1052,  1056,  1058,
    224 +    1067,  1075,  1076,  1082,  1083,  1090,  1094,  1096,  1098,  1105,
    225 +    1107,  1109,  1113,  1114,  1117,  1119,  1121,  1125,  1126,  1135,
    226 +    1148,  1164,  1179,  1181,  1183,  1190,  1193,  1197,  1199,  1205,
    227 +    1211,  1228,  1248,  1250,  1273,  1277,  1279,  1281
    228  };
    229  #endif
    230  
    231 @@ -2093,7 +2098,7 @@ yyreduce:
    232    switch (yyn)
    233      {
    234          case 2:
    235 -#line 378 "/usr/homes/chet/src/bash/src/parse.y"
    236 +#line 383 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    237      {
    238  			  /* Case of regular command.  Discard the error
    239  			     safety net,and return the command just parsed. */
    240 @@ -2107,7 +2112,7 @@ yyreduce:
    241      break;
    242  
    243    case 3:
    244 -#line 389 "/usr/homes/chet/src/bash/src/parse.y"
    245 +#line 394 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    246      {
    247  			  /* Case of regular command, but not a very
    248  			     interesting one.  Return a NULL command. */
    249 @@ -2119,7 +2124,7 @@ yyreduce:
    250      break;
    251  
    252    case 4:
    253 -#line 398 "/usr/homes/chet/src/bash/src/parse.y"
    254 +#line 403 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    255      {
    256  			  /* Error during parsing.  Return NULL command. */
    257  			  global_command = (COMMAND *)NULL;
    258 @@ -2137,7 +2142,7 @@ yyreduce:
    259      break;
    260  
    261    case 5:
    262 -#line 413 "/usr/homes/chet/src/bash/src/parse.y"
    263 +#line 418 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    264      {
    265  			  /* Case of EOF seen by itself.  Do ignoreeof or
    266  			     not. */
    267 @@ -2148,17 +2153,17 @@ yyreduce:
    268      break;
    269  
    270    case 6:
    271 -#line 423 "/usr/homes/chet/src/bash/src/parse.y"
    272 +#line 428 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    273      { (yyval.word_list) = make_word_list ((yyvsp[(1) - (1)].word), (WORD_LIST *)NULL); }
    274      break;
    275  
    276    case 7:
    277 -#line 425 "/usr/homes/chet/src/bash/src/parse.y"
    278 +#line 430 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    279      { (yyval.word_list) = make_word_list ((yyvsp[(2) - (2)].word), (yyvsp[(1) - (2)].word_list)); }
    280      break;
    281  
    282    case 8:
    283 -#line 429 "/usr/homes/chet/src/bash/src/parse.y"
    284 +#line 434 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    285      {
    286  			  source.dest = 1;
    287  			  redir.filename = (yyvsp[(2) - (2)].word);
    288 @@ -2167,7 +2172,7 @@ yyreduce:
    289      break;
    290  
    291    case 9:
    292 -#line 435 "/usr/homes/chet/src/bash/src/parse.y"
    293 +#line 440 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    294      {
    295  			  source.dest = 0;
    296  			  redir.filename = (yyvsp[(2) - (2)].word);
    297 @@ -2176,7 +2181,7 @@ yyreduce:
    298      break;
    299  
    300    case 10:
    301 -#line 441 "/usr/homes/chet/src/bash/src/parse.y"
    302 +#line 446 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    303      {
    304  			  source.dest = (yyvsp[(1) - (3)].number);
    305  			  redir.filename = (yyvsp[(3) - (3)].word);
    306 @@ -2185,7 +2190,7 @@ yyreduce:
    307      break;
    308  
    309    case 11:
    310 -#line 447 "/usr/homes/chet/src/bash/src/parse.y"
    311 +#line 452 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    312      {
    313  			  source.dest = (yyvsp[(1) - (3)].number);
    314  			  redir.filename = (yyvsp[(3) - (3)].word);
    315 @@ -2194,7 +2199,7 @@ yyreduce:
    316      break;
    317  
    318    case 12:
    319 -#line 453 "/usr/homes/chet/src/bash/src/parse.y"
    320 +#line 458 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    321      {
    322  			  source.filename = (yyvsp[(1) - (3)].word);
    323  			  redir.filename = (yyvsp[(3) - (3)].word);
    324 @@ -2203,7 +2208,7 @@ yyreduce:
    325      break;
    326  
    327    case 13:
    328 -#line 459 "/usr/homes/chet/src/bash/src/parse.y"
    329 +#line 464 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    330      {
    331  			  source.filename = (yyvsp[(1) - (3)].word);
    332  			  redir.filename = (yyvsp[(3) - (3)].word);
    333 @@ -2212,7 +2217,7 @@ yyreduce:
    334      break;
    335  
    336    case 14:
    337 -#line 465 "/usr/homes/chet/src/bash/src/parse.y"
    338 +#line 470 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    339      {
    340  			  source.dest = 1;
    341  			  redir.filename = (yyvsp[(2) - (2)].word);
    342 @@ -2221,7 +2226,7 @@ yyreduce:
    343      break;
    344  
    345    case 15:
    346 -#line 471 "/usr/homes/chet/src/bash/src/parse.y"
    347 +#line 476 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    348      {
    349  			  source.dest = (yyvsp[(1) - (3)].number);
    350  			  redir.filename = (yyvsp[(3) - (3)].word);
    351 @@ -2230,7 +2235,7 @@ yyreduce:
    352      break;
    353  
    354    case 16:
    355 -#line 477 "/usr/homes/chet/src/bash/src/parse.y"
    356 +#line 482 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    357      {
    358  			  source.filename = (yyvsp[(1) - (3)].word);
    359  			  redir.filename = (yyvsp[(3) - (3)].word);
    360 @@ -2239,7 +2244,7 @@ yyreduce:
    361      break;
    362  
    363    case 17:
    364 -#line 483 "/usr/homes/chet/src/bash/src/parse.y"
    365 +#line 488 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    366      {
    367  			  source.dest = 1;
    368  			  redir.filename = (yyvsp[(2) - (2)].word);
    369 @@ -2248,7 +2253,7 @@ yyreduce:
    370      break;
    371  
    372    case 18:
    373 -#line 489 "/usr/homes/chet/src/bash/src/parse.y"
    374 +#line 494 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    375      {
    376  			  source.dest = (yyvsp[(1) - (3)].number);
    377  			  redir.filename = (yyvsp[(3) - (3)].word);
    378 @@ -2257,7 +2262,7 @@ yyreduce:
    379      break;
    380  
    381    case 19:
    382 -#line 495 "/usr/homes/chet/src/bash/src/parse.y"
    383 +#line 500 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    384      {
    385  			  source.filename = (yyvsp[(1) - (3)].word);
    386  			  redir.filename = (yyvsp[(3) - (3)].word);
    387 @@ -2266,7 +2271,7 @@ yyreduce:
    388      break;
    389  
    390    case 20:
    391 -#line 501 "/usr/homes/chet/src/bash/src/parse.y"
    392 +#line 506 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    393      {
    394  			  source.dest = 0;
    395  			  redir.filename = (yyvsp[(2) - (2)].word);
    396 @@ -2275,7 +2280,7 @@ yyreduce:
    397      break;
    398  
    399    case 21:
    400 -#line 507 "/usr/homes/chet/src/bash/src/parse.y"
    401 +#line 512 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    402      {
    403  			  source.dest = (yyvsp[(1) - (3)].number);
    404  			  redir.filename = (yyvsp[(3) - (3)].word);
    405 @@ -2284,7 +2289,7 @@ yyreduce:
    406      break;
    407  
    408    case 22:
    409 -#line 513 "/usr/homes/chet/src/bash/src/parse.y"
    410 +#line 518 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    411      {
    412  			  source.filename = (yyvsp[(1) - (3)].word);
    413  			  redir.filename = (yyvsp[(3) - (3)].word);
    414 @@ -2293,67 +2298,67 @@ yyreduce:
    415      break;
    416  
    417    case 23:
    418 -#line 519 "/usr/homes/chet/src/bash/src/parse.y"
    419 +#line 524 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    420      {
    421  			  source.dest = 0;
    422  			  redir.filename = (yyvsp[(2) - (2)].word);
    423  			  (yyval.redirect) = make_redirection (source, r_reading_until, redir, 0);
    424 -			  redir_stack[need_here_doc++] = (yyval.redirect);
    425 +			  push_heredoc ((yyval.redirect));
    426  			}
    427      break;
    428  
    429    case 24:
    430 -#line 526 "/usr/homes/chet/src/bash/src/parse.y"
    431 +#line 531 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    432      {
    433  			  source.dest = (yyvsp[(1) - (3)].number);
    434  			  redir.filename = (yyvsp[(3) - (3)].word);
    435  			  (yyval.redirect) = make_redirection (source, r_reading_until, redir, 0);
    436 -			  redir_stack[need_here_doc++] = (yyval.redirect);
    437 +			  push_heredoc ((yyval.redirect));
    438  			}
    439      break;
    440  
    441    case 25:
    442 -#line 533 "/usr/homes/chet/src/bash/src/parse.y"
    443 +#line 538 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    444      {
    445  			  source.filename = (yyvsp[(1) - (3)].word);
    446  			  redir.filename = (yyvsp[(3) - (3)].word);
    447  			  (yyval.redirect) = make_redirection (source, r_reading_until, redir, REDIR_VARASSIGN);
    448 -			  redir_stack[need_here_doc++] = (yyval.redirect);
    449 +			  push_heredoc ((yyval.redirect));
    450  			}
    451      break;
    452  
    453    case 26:
    454 -#line 540 "/usr/homes/chet/src/bash/src/parse.y"
    455 +#line 545 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    456      {
    457  			  source.dest = 0;
    458  			  redir.filename = (yyvsp[(2) - (2)].word);
    459  			  (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, 0);
    460 -			  redir_stack[need_here_doc++] = (yyval.redirect);
    461 +			  push_heredoc ((yyval.redirect));
    462  			}
    463      break;
    464  
    465    case 27:
    466 -#line 547 "/usr/homes/chet/src/bash/src/parse.y"
    467 +#line 552 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    468      {
    469  			  source.dest = (yyvsp[(1) - (3)].number);
    470  			  redir.filename = (yyvsp[(3) - (3)].word);
    471  			  (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, 0);
    472 -			  redir_stack[need_here_doc++] = (yyval.redirect);
    473 +			  push_heredoc ((yyval.redirect));
    474  			}
    475      break;
    476  
    477    case 28:
    478 -#line 554 "/usr/homes/chet/src/bash/src/parse.y"
    479 +#line 559 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    480      {
    481  			  source.filename = (yyvsp[(1) - (3)].word);
    482  			  redir.filename = (yyvsp[(3) - (3)].word);
    483  			  (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, REDIR_VARASSIGN);
    484 -			  redir_stack[need_here_doc++] = (yyval.redirect);
    485 +			  push_heredoc ((yyval.redirect));
    486  			}
    487      break;
    488  
    489    case 29:
    490 -#line 561 "/usr/homes/chet/src/bash/src/parse.y"
    491 +#line 566 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    492      {
    493  			  source.dest = 0;
    494  			  redir.filename = (yyvsp[(2) - (2)].word);
    495 @@ -2362,7 +2367,7 @@ yyreduce:
    496      break;
    497  
    498    case 30:
    499 -#line 567 "/usr/homes/chet/src/bash/src/parse.y"
    500 +#line 572 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    501      {
    502  			  source.dest = (yyvsp[(1) - (3)].number);
    503  			  redir.filename = (yyvsp[(3) - (3)].word);
    504 @@ -2371,7 +2376,7 @@ yyreduce:
    505      break;
    506  
    507    case 31:
    508 -#line 573 "/usr/homes/chet/src/bash/src/parse.y"
    509 +#line 578 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    510      {
    511  			  source.filename = (yyvsp[(1) - (3)].word);
    512  			  redir.filename = (yyvsp[(3) - (3)].word);
    513 @@ -2380,7 +2385,7 @@ yyreduce:
    514      break;
    515  
    516    case 32:
    517 -#line 579 "/usr/homes/chet/src/bash/src/parse.y"
    518 +#line 584 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    519      {
    520  			  source.dest = 0;
    521  			  redir.dest = (yyvsp[(2) - (2)].number);
    522 @@ -2389,7 +2394,7 @@ yyreduce:
    523      break;
    524  
    525    case 33:
    526 -#line 585 "/usr/homes/chet/src/bash/src/parse.y"
    527 +#line 590 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    528      {
    529  			  source.dest = (yyvsp[(1) - (3)].number);
    530  			  redir.dest = (yyvsp[(3) - (3)].number);
    531 @@ -2398,7 +2403,7 @@ yyreduce:
    532      break;
    533  
    534    case 34:
    535 -#line 591 "/usr/homes/chet/src/bash/src/parse.y"
    536 +#line 596 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    537      {
    538  			  source.filename = (yyvsp[(1) - (3)].word);
    539  			  redir.dest = (yyvsp[(3) - (3)].number);
    540 @@ -2407,7 +2412,7 @@ yyreduce:
    541      break;
    542  
    543    case 35:
    544 -#line 597 "/usr/homes/chet/src/bash/src/parse.y"
    545 +#line 602 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    546      {
    547  			  source.dest = 1;
    548  			  redir.dest = (yyvsp[(2) - (2)].number);
    549 @@ -2416,7 +2421,7 @@ yyreduce:
    550      break;
    551  
    552    case 36:
    553 -#line 603 "/usr/homes/chet/src/bash/src/parse.y"
    554 +#line 608 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    555      {
    556  			  source.dest = (yyvsp[(1) - (3)].number);
    557  			  redir.dest = (yyvsp[(3) - (3)].number);
    558 @@ -2425,7 +2430,7 @@ yyreduce:
    559      break;
    560  
    561    case 37:
    562 -#line 609 "/usr/homes/chet/src/bash/src/parse.y"
    563 +#line 614 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    564      {
    565  			  source.filename = (yyvsp[(1) - (3)].word);
    566  			  redir.dest = (yyvsp[(3) - (3)].number);
    567 @@ -2434,7 +2439,7 @@ yyreduce:
    568      break;
    569  
    570    case 38:
    571 -#line 615 "/usr/homes/chet/src/bash/src/parse.y"
    572 +#line 620 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    573      {
    574  			  source.dest = 0;
    575  			  redir.filename = (yyvsp[(2) - (2)].word);
    576 @@ -2443,7 +2448,7 @@ yyreduce:
    577      break;
    578  
    579    case 39:
    580 -#line 621 "/usr/homes/chet/src/bash/src/parse.y"
    581 +#line 626 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    582      {
    583  			  source.dest = (yyvsp[(1) - (3)].number);
    584  			  redir.filename = (yyvsp[(3) - (3)].word);
    585 @@ -2452,7 +2457,7 @@ yyreduce:
    586      break;
    587  
    588    case 40:
    589 -#line 627 "/usr/homes/chet/src/bash/src/parse.y"
    590 +#line 632 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    591      {
    592  			  source.filename = (yyvsp[(1) - (3)].word);
    593  			  redir.filename = (yyvsp[(3) - (3)].word);
    594 @@ -2461,7 +2466,7 @@ yyreduce:
    595      break;
    596  
    597    case 41:
    598 -#line 633 "/usr/homes/chet/src/bash/src/parse.y"
    599 +#line 638 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    600      {
    601  			  source.dest = 1;
    602  			  redir.filename = (yyvsp[(2) - (2)].word);
    603 @@ -2470,7 +2475,7 @@ yyreduce:
    604      break;
    605  
    606    case 42:
    607 -#line 639 "/usr/homes/chet/src/bash/src/parse.y"
    608 +#line 644 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    609      {
    610  			  source.dest = (yyvsp[(1) - (3)].number);
    611  			  redir.filename = (yyvsp[(3) - (3)].word);
    612 @@ -2479,7 +2484,7 @@ yyreduce:
    613      break;
    614  
    615    case 43:
    616 -#line 645 "/usr/homes/chet/src/bash/src/parse.y"
    617 +#line 650 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    618      {
    619  			  source.filename = (yyvsp[(1) - (3)].word);
    620  			  redir.filename = (yyvsp[(3) - (3)].word);
    621 @@ -2488,7 +2493,7 @@ yyreduce:
    622      break;
    623  
    624    case 44:
    625 -#line 651 "/usr/homes/chet/src/bash/src/parse.y"
    626 +#line 656 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    627      {
    628  			  source.dest = 1;
    629  			  redir.dest = 0;
    630 @@ -2497,7 +2502,7 @@ yyreduce:
    631      break;
    632  
    633    case 45:
    634 -#line 657 "/usr/homes/chet/src/bash/src/parse.y"
    635 +#line 662 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    636      {
    637  			  source.dest = (yyvsp[(1) - (3)].number);
    638  			  redir.dest = 0;
    639 @@ -2506,7 +2511,7 @@ yyreduce:
    640      break;
    641  
    642    case 46:
    643 -#line 663 "/usr/homes/chet/src/bash/src/parse.y"
    644 +#line 668 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    645      {
    646  			  source.filename = (yyvsp[(1) - (3)].word);
    647  			  redir.dest = 0;
    648 @@ -2515,7 +2520,7 @@ yyreduce:
    649      break;
    650  
    651    case 47:
    652 -#line 669 "/usr/homes/chet/src/bash/src/parse.y"
    653 +#line 674 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    654      {
    655  			  source.dest = 0;
    656  			  redir.dest = 0;
    657 @@ -2524,7 +2529,7 @@ yyreduce:
    658      break;
    659  
    660    case 48:
    661 -#line 675 "/usr/homes/chet/src/bash/src/parse.y"
    662 +#line 680 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    663      {
    664  			  source.dest = (yyvsp[(1) - (3)].number);
    665  			  redir.dest = 0;
    666 @@ -2533,7 +2538,7 @@ yyreduce:
    667      break;
    668  
    669    case 49:
    670 -#line 681 "/usr/homes/chet/src/bash/src/parse.y"
    671 +#line 686 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    672      {
    673  			  source.filename = (yyvsp[(1) - (3)].word);
    674  			  redir.dest = 0;
    675 @@ -2542,7 +2547,7 @@ yyreduce:
    676      break;
    677  
    678    case 50:
    679 -#line 687 "/usr/homes/chet/src/bash/src/parse.y"
    680 +#line 692 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    681      {
    682  			  source.dest = 1;
    683  			  redir.filename = (yyvsp[(2) - (2)].word);
    684 @@ -2551,7 +2556,7 @@ yyreduce:
    685      break;
    686  
    687    case 51:
    688 -#line 693 "/usr/homes/chet/src/bash/src/parse.y"
    689 +#line 698 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    690      {
    691  			  source.dest = 1;
    692  			  redir.filename = (yyvsp[(2) - (2)].word);
    693 @@ -2560,29 +2565,29 @@ yyreduce:
    694      break;
    695  
    696    case 52:
    697 -#line 701 "/usr/homes/chet/src/bash/src/parse.y"
    698 +#line 706 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    699      { (yyval.element).word = (yyvsp[(1) - (1)].word); (yyval.element).redirect = 0; }
    700      break;
    701  
    702    case 53:
    703 -#line 703 "/usr/homes/chet/src/bash/src/parse.y"
    704 +#line 708 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    705      { (yyval.element).word = (yyvsp[(1) - (1)].word); (yyval.element).redirect = 0; }
    706      break;
    707  
    708    case 54:
    709 -#line 705 "/usr/homes/chet/src/bash/src/parse.y"
    710 +#line 710 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    711      { (yyval.element).redirect = (yyvsp[(1) - (1)].redirect); (yyval.element).word = 0; }
    712      break;
    713  
    714    case 55:
    715 -#line 709 "/usr/homes/chet/src/bash/src/parse.y"
    716 +#line 714 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    717      {
    718  			  (yyval.redirect) = (yyvsp[(1) - (1)].redirect);
    719  			}
    720      break;
    721  
    722    case 56:
    723 -#line 713 "/usr/homes/chet/src/bash/src/parse.y"
    724 +#line 718 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    725      {
    726  			  register REDIRECT *t;
    727  
    728 @@ -2594,27 +2599,27 @@ yyreduce:
    729      break;
    730  
    731    case 57:
    732 -#line 724 "/usr/homes/chet/src/bash/src/parse.y"
    733 +#line 729 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    734      { (yyval.command) = make_simple_command ((yyvsp[(1) - (1)].element), (COMMAND *)NULL); }
    735      break;
    736  
    737    case 58:
    738 -#line 726 "/usr/homes/chet/src/bash/src/parse.y"
    739 +#line 731 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    740      { (yyval.command) = make_simple_command ((yyvsp[(2) - (2)].element), (yyvsp[(1) - (2)].command)); }
    741      break;
    742  
    743    case 59:
    744 -#line 730 "/usr/homes/chet/src/bash/src/parse.y"
    745 +#line 735 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    746      { (yyval.command) = clean_simple_command ((yyvsp[(1) - (1)].command)); }
    747      break;
    748  
    749    case 60:
    750 -#line 732 "/usr/homes/chet/src/bash/src/parse.y"
    751 +#line 737 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    752      { (yyval.command) = (yyvsp[(1) - (1)].command); }
    753      break;
    754  
    755    case 61:
    756 -#line 734 "/usr/homes/chet/src/bash/src/parse.y"
    757 +#line 739 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    758      {
    759  			  COMMAND *tc;
    760  
    761 @@ -2633,72 +2638,72 @@ yyreduce:
    762      break;
    763  
    764    case 62:
    765 -#line 750 "/usr/homes/chet/src/bash/src/parse.y"
    766 +#line 755 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    767      { (yyval.command) = (yyvsp[(1) - (1)].command); }
    768      break;
    769  
    770    case 63:
    771 -#line 752 "/usr/homes/chet/src/bash/src/parse.y"
    772 +#line 757 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    773      { (yyval.command) = (yyvsp[(1) - (1)].command); }
    774      break;
    775  
    776    case 64:
    777 -#line 756 "/usr/homes/chet/src/bash/src/parse.y"
    778 +#line 761 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    779      { (yyval.command) = (yyvsp[(1) - (1)].command); }
    780      break;
    781  
    782    case 65:
    783 -#line 758 "/usr/homes/chet/src/bash/src/parse.y"
    784 +#line 763 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    785      { (yyval.command) = (yyvsp[(1) - (1)].command); }
    786      break;
    787  
    788    case 66:
    789 -#line 760 "/usr/homes/chet/src/bash/src/parse.y"
    790 +#line 765 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    791      { (yyval.command) = make_while_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command)); }
    792      break;
    793  
    794    case 67:
    795 -#line 762 "/usr/homes/chet/src/bash/src/parse.y"
    796 +#line 767 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    797      { (yyval.command) = make_until_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command)); }
    798      break;
    799  
    800    case 68:
    801 -#line 764 "/usr/homes/chet/src/bash/src/parse.y"
    802 +#line 769 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    803      { (yyval.command) = (yyvsp[(1) - (1)].command); }
    804      break;
    805  
    806    case 69:
    807 -#line 766 "/usr/homes/chet/src/bash/src/parse.y"
    808 +#line 771 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    809      { (yyval.command) = (yyvsp[(1) - (1)].command); }
    810      break;
    811  
    812    case 70:
    813 -#line 768 "/usr/homes/chet/src/bash/src/parse.y"
    814 +#line 773 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    815      { (yyval.command) = (yyvsp[(1) - (1)].command); }
    816      break;
    817  
    818    case 71:
    819 -#line 770 "/usr/homes/chet/src/bash/src/parse.y"
    820 +#line 775 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    821      { (yyval.command) = (yyvsp[(1) - (1)].command); }
    822      break;
    823  
    824    case 72:
    825 -#line 772 "/usr/homes/chet/src/bash/src/parse.y"
    826 +#line 777 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    827      { (yyval.command) = (yyvsp[(1) - (1)].command); }
    828      break;
    829  
    830    case 73:
    831 -#line 774 "/usr/homes/chet/src/bash/src/parse.y"
    832 +#line 779 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    833      { (yyval.command) = (yyvsp[(1) - (1)].command); }
    834      break;
    835  
    836    case 74:
    837 -#line 776 "/usr/homes/chet/src/bash/src/parse.y"
    838 +#line 781 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    839      { (yyval.command) = (yyvsp[(1) - (1)].command); }
    840      break;
    841  
    842    case 75:
    843 -#line 780 "/usr/homes/chet/src/bash/src/parse.y"
    844 +#line 785 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    845      {
    846  			  (yyval.command) = make_for_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
    847  			  if (word_top > 0) word_top--;
    848 @@ -2706,7 +2711,7 @@ yyreduce:
    849      break;
    850  
    851    case 76:
    852 -#line 785 "/usr/homes/chet/src/bash/src/parse.y"
    853 +#line 790 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    854      {
    855  			  (yyval.command) = make_for_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
    856  			  if (word_top > 0) word_top--;
    857 @@ -2714,7 +2719,7 @@ yyreduce:
    858      break;
    859  
    860    case 77:
    861 -#line 790 "/usr/homes/chet/src/bash/src/parse.y"
    862 +#line 795 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    863      {
    864  			  (yyval.command) = make_for_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
    865  			  if (word_top > 0) word_top--;
    866 @@ -2722,7 +2727,7 @@ yyreduce:
    867      break;
    868  
    869    case 78:
    870 -#line 795 "/usr/homes/chet/src/bash/src/parse.y"
    871 +#line 800 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    872      {
    873  			  (yyval.command) = make_for_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
    874  			  if (word_top > 0) word_top--;
    875 @@ -2730,7 +2735,7 @@ yyreduce:
    876      break;
    877  
    878    case 79:
    879 -#line 800 "/usr/homes/chet/src/bash/src/parse.y"
    880 +#line 805 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    881      {
    882  			  (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]);
    883  			  if (word_top > 0) word_top--;
    884 @@ -2738,7 +2743,7 @@ yyreduce:
    885      break;
    886  
    887    case 80:
    888 -#line 805 "/usr/homes/chet/src/bash/src/parse.y"
    889 +#line 810 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    890      {
    891  			  (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]);
    892  			  if (word_top > 0) word_top--;
    893 @@ -2746,7 +2751,7 @@ yyreduce:
    894      break;
    895  
    896    case 81:
    897 -#line 810 "/usr/homes/chet/src/bash/src/parse.y"
    898 +#line 815 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    899      {
    900  			  (yyval.command) = make_for_command ((yyvsp[(2) - (9)].word), (WORD_LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]);
    901  			  if (word_top > 0) word_top--;
    902 @@ -2754,7 +2759,7 @@ yyreduce:
    903      break;
    904  
    905    case 82:
    906 -#line 815 "/usr/homes/chet/src/bash/src/parse.y"
    907 +#line 820 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    908      {
    909  			  (yyval.command) = make_for_command ((yyvsp[(2) - (9)].word), (WORD_LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]);
    910  			  if (word_top > 0) word_top--;
    911 @@ -2762,7 +2767,7 @@ yyreduce:
    912      break;
    913  
    914    case 83:
    915 -#line 822 "/usr/homes/chet/src/bash/src/parse.y"
    916 +#line 827 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    917      {
    918  				  (yyval.command) = make_arith_for_command ((yyvsp[(2) - (7)].word_list), (yyvsp[(6) - (7)].command), arith_for_lineno);
    919  				  if (word_top > 0) word_top--;
    920 @@ -2770,7 +2775,7 @@ yyreduce:
    921      break;
    922  
    923    case 84:
    924 -#line 827 "/usr/homes/chet/src/bash/src/parse.y"
    925 +#line 832 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    926      {
    927  				  (yyval.command) = make_arith_for_command ((yyvsp[(2) - (7)].word_list), (yyvsp[(6) - (7)].command), arith_for_lineno);
    928  				  if (word_top > 0) word_top--;
    929 @@ -2778,7 +2783,7 @@ yyreduce:
    930      break;
    931  
    932    case 85:
    933 -#line 832 "/usr/homes/chet/src/bash/src/parse.y"
    934 +#line 837 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    935      {
    936  				  (yyval.command) = make_arith_for_command ((yyvsp[(2) - (5)].word_list), (yyvsp[(4) - (5)].command), arith_for_lineno);
    937  				  if (word_top > 0) word_top--;
    938 @@ -2786,7 +2791,7 @@ yyreduce:
    939      break;
    940  
    941    case 86:
    942 -#line 837 "/usr/homes/chet/src/bash/src/parse.y"
    943 +#line 842 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    944      {
    945  				  (yyval.command) = make_arith_for_command ((yyvsp[(2) - (5)].word_list), (yyvsp[(4) - (5)].command), arith_for_lineno);
    946  				  if (word_top > 0) word_top--;
    947 @@ -2794,7 +2799,7 @@ yyreduce:
    948      break;
    949  
    950    case 87:
    951 -#line 844 "/usr/homes/chet/src/bash/src/parse.y"
    952 +#line 849 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    953      {
    954  			  (yyval.command) = make_select_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
    955  			  if (word_top > 0) word_top--;
    956 @@ -2802,7 +2807,7 @@ yyreduce:
    957      break;
    958  
    959    case 88:
    960 -#line 849 "/usr/homes/chet/src/bash/src/parse.y"
    961 +#line 854 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    962      {
    963  			  (yyval.command) = make_select_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
    964  			  if (word_top > 0) word_top--;
    965 @@ -2810,7 +2815,7 @@ yyreduce:
    966      break;
    967  
    968    case 89:
    969 -#line 854 "/usr/homes/chet/src/bash/src/parse.y"
    970 +#line 859 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    971      {
    972  			  (yyval.command) = make_select_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
    973  			  if (word_top > 0) word_top--;
    974 @@ -2818,7 +2823,7 @@ yyreduce:
    975      break;
    976  
    977    case 90:
    978 -#line 859 "/usr/homes/chet/src/bash/src/parse.y"
    979 +#line 864 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    980      {
    981  			  (yyval.command) = make_select_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
    982  			  if (word_top > 0) word_top--;
    983 @@ -2826,7 +2831,7 @@ yyreduce:
    984      break;
    985  
    986    case 91:
    987 -#line 864 "/usr/homes/chet/src/bash/src/parse.y"
    988 +#line 869 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    989      {
    990  			  (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]);
    991  			  if (word_top > 0) word_top--;
    992 @@ -2834,7 +2839,7 @@ yyreduce:
    993      break;
    994  
    995    case 92:
    996 -#line 869 "/usr/homes/chet/src/bash/src/parse.y"
    997 +#line 874 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    998      {
    999  			  (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]);
   1000  			  if (word_top > 0) word_top--;
   1001 @@ -2842,7 +2847,7 @@ yyreduce:
   1002      break;
   1003  
   1004    case 93:
   1005 -#line 876 "/usr/homes/chet/src/bash/src/parse.y"
   1006 +#line 881 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1007      {
   1008  			  (yyval.command) = make_case_command ((yyvsp[(2) - (6)].word), (PATTERN_LIST *)NULL, word_lineno[word_top]);
   1009  			  if (word_top > 0) word_top--;
   1010 @@ -2850,7 +2855,7 @@ yyreduce:
   1011      break;
   1012  
   1013    case 94:
   1014 -#line 881 "/usr/homes/chet/src/bash/src/parse.y"
   1015 +#line 886 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1016      {
   1017  			  (yyval.command) = make_case_command ((yyvsp[(2) - (7)].word), (yyvsp[(5) - (7)].pattern), word_lineno[word_top]);
   1018  			  if (word_top > 0) word_top--;
   1019 @@ -2858,7 +2863,7 @@ yyreduce:
   1020      break;
   1021  
   1022    case 95:
   1023 -#line 886 "/usr/homes/chet/src/bash/src/parse.y"
   1024 +#line 891 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1025      {
   1026  			  (yyval.command) = make_case_command ((yyvsp[(2) - (6)].word), (yyvsp[(5) - (6)].pattern), word_lineno[word_top]);
   1027  			  if (word_top > 0) word_top--;
   1028 @@ -2866,27 +2871,27 @@ yyreduce:
   1029      break;
   1030  
   1031    case 96:
   1032 -#line 893 "/usr/homes/chet/src/bash/src/parse.y"
   1033 +#line 898 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1034      { (yyval.command) = make_function_def ((yyvsp[(1) - (5)].word), (yyvsp[(5) - (5)].command), function_dstart, function_bstart); }
   1035      break;
   1036  
   1037    case 97:
   1038 -#line 896 "/usr/homes/chet/src/bash/src/parse.y"
   1039 +#line 901 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1040      { (yyval.command) = make_function_def ((yyvsp[(2) - (6)].word), (yyvsp[(6) - (6)].command), function_dstart, function_bstart); }
   1041      break;
   1042  
   1043    case 98:
   1044 -#line 899 "/usr/homes/chet/src/bash/src/parse.y"
   1045 +#line 904 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1046      { (yyval.command) = make_function_def ((yyvsp[(2) - (4)].word), (yyvsp[(4) - (4)].command), function_dstart, function_bstart); }
   1047      break;
   1048  
   1049    case 99:
   1050 -#line 903 "/usr/homes/chet/src/bash/src/parse.y"
   1051 +#line 908 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1052      { (yyval.command) = (yyvsp[(1) - (1)].command); }
   1053      break;
   1054  
   1055    case 100:
   1056 -#line 905 "/usr/homes/chet/src/bash/src/parse.y"
   1057 +#line 910 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1058      {
   1059  			  COMMAND *tc;
   1060  
   1061 @@ -2918,7 +2923,7 @@ yyreduce:
   1062      break;
   1063  
   1064    case 101:
   1065 -#line 936 "/usr/homes/chet/src/bash/src/parse.y"
   1066 +#line 941 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1067      {
   1068  			  (yyval.command) = make_subshell_command ((yyvsp[(2) - (3)].command));
   1069  			  (yyval.command)->flags |= CMD_WANT_SUBSHELL;
   1070 @@ -2926,7 +2931,7 @@ yyreduce:
   1071      break;
   1072  
   1073    case 102:
   1074 -#line 943 "/usr/homes/chet/src/bash/src/parse.y"
   1075 +#line 948 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1076      {
   1077  			  (yyval.command) = make_coproc_command ("COPROC", (yyvsp[(2) - (2)].command));
   1078  			  (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
   1079 @@ -2934,7 +2939,7 @@ yyreduce:
   1080      break;
   1081  
   1082    case 103:
   1083 -#line 948 "/usr/homes/chet/src/bash/src/parse.y"
   1084 +#line 953 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1085      {
   1086  			  COMMAND *tc;
   1087  
   1088 @@ -2954,7 +2959,7 @@ yyreduce:
   1089      break;
   1090  
   1091    case 104:
   1092 -#line 965 "/usr/homes/chet/src/bash/src/parse.y"
   1093 +#line 970 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1094      {
   1095  			  (yyval.command) = make_coproc_command ((yyvsp[(2) - (3)].word)->word, (yyvsp[(3) - (3)].command));
   1096  			  (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
   1097 @@ -2962,7 +2967,7 @@ yyreduce:
   1098      break;
   1099  
   1100    case 105:
   1101 -#line 970 "/usr/homes/chet/src/bash/src/parse.y"
   1102 +#line 975 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1103      {
   1104  			  COMMAND *tc;
   1105  
   1106 @@ -2982,7 +2987,7 @@ yyreduce:
   1107      break;
   1108  
   1109    case 106:
   1110 -#line 987 "/usr/homes/chet/src/bash/src/parse.y"
   1111 +#line 992 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1112      {
   1113  			  (yyval.command) = make_coproc_command ("COPROC", clean_simple_command ((yyvsp[(2) - (2)].command)));
   1114  			  (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
   1115 @@ -2990,117 +2995,117 @@ yyreduce:
   1116      break;
   1117  
   1118    case 107:
   1119 -#line 994 "/usr/homes/chet/src/bash/src/parse.y"
   1120 +#line 999 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1121      { (yyval.command) = make_if_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command), (COMMAND *)NULL); }
   1122      break;
   1123  
   1124    case 108:
   1125 -#line 996 "/usr/homes/chet/src/bash/src/parse.y"
   1126 +#line 1001 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1127      { (yyval.command) = make_if_command ((yyvsp[(2) - (7)].command), (yyvsp[(4) - (7)].command), (yyvsp[(6) - (7)].command)); }
   1128      break;
   1129  
   1130    case 109:
   1131 -#line 998 "/usr/homes/chet/src/bash/src/parse.y"
   1132 +#line 1003 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1133      { (yyval.command) = make_if_command ((yyvsp[(2) - (6)].command), (yyvsp[(4) - (6)].command), (yyvsp[(5) - (6)].command)); }
   1134      break;
   1135  
   1136    case 110:
   1137 -#line 1003 "/usr/homes/chet/src/bash/src/parse.y"
   1138 +#line 1008 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1139      { (yyval.command) = make_group_command ((yyvsp[(2) - (3)].command)); }
   1140      break;
   1141  
   1142    case 111:
   1143 -#line 1007 "/usr/homes/chet/src/bash/src/parse.y"
   1144 +#line 1012 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1145      { (yyval.command) = make_arith_command ((yyvsp[(1) - (1)].word_list)); }
   1146      break;
   1147  
   1148    case 112:
   1149 -#line 1011 "/usr/homes/chet/src/bash/src/parse.y"
   1150 +#line 1016 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1151      { (yyval.command) = (yyvsp[(2) - (3)].command); }
   1152      break;
   1153  
   1154    case 113:
   1155 -#line 1015 "/usr/homes/chet/src/bash/src/parse.y"
   1156 +#line 1020 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1157      { (yyval.command) = make_if_command ((yyvsp[(2) - (4)].command), (yyvsp[(4) - (4)].command), (COMMAND *)NULL); }
   1158      break;
   1159  
   1160    case 114:
   1161 -#line 1017 "/usr/homes/chet/src/bash/src/parse.y"
   1162 +#line 1022 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1163      { (yyval.command) = make_if_command ((yyvsp[(2) - (6)].command), (yyvsp[(4) - (6)].command), (yyvsp[(6) - (6)].command)); }
   1164      break;
   1165  
   1166    case 115:
   1167 -#line 1019 "/usr/homes/chet/src/bash/src/parse.y"
   1168 +#line 1024 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1169      { (yyval.command) = make_if_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command), (yyvsp[(5) - (5)].command)); }
   1170      break;
   1171  
   1172    case 117:
   1173 -#line 1024 "/usr/homes/chet/src/bash/src/parse.y"
   1174 +#line 1029 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1175      { (yyvsp[(2) - (2)].pattern)->next = (yyvsp[(1) - (2)].pattern); (yyval.pattern) = (yyvsp[(2) - (2)].pattern); }
   1176      break;
   1177  
   1178    case 118:
   1179 -#line 1028 "/usr/homes/chet/src/bash/src/parse.y"
   1180 +#line 1033 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1181      { (yyval.pattern) = make_pattern_list ((yyvsp[(2) - (4)].word_list), (yyvsp[(4) - (4)].command)); }
   1182      break;
   1183  
   1184    case 119:
   1185 -#line 1030 "/usr/homes/chet/src/bash/src/parse.y"
   1186 +#line 1035 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1187      { (yyval.pattern) = make_pattern_list ((yyvsp[(2) - (4)].word_list), (COMMAND *)NULL); }
   1188      break;
   1189  
   1190    case 120:
   1191 -#line 1032 "/usr/homes/chet/src/bash/src/parse.y"
   1192 +#line 1037 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1193      { (yyval.pattern) = make_pattern_list ((yyvsp[(3) - (5)].word_list), (yyvsp[(5) - (5)].command)); }
   1194      break;
   1195  
   1196    case 121:
   1197 -#line 1034 "/usr/homes/chet/src/bash/src/parse.y"
   1198 +#line 1039 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1199      { (yyval.pattern) = make_pattern_list ((yyvsp[(3) - (5)].word_list), (COMMAND *)NULL); }
   1200      break;
   1201  
   1202    case 122:
   1203 -#line 1038 "/usr/homes/chet/src/bash/src/parse.y"
   1204 +#line 1043 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1205      { (yyval.pattern) = (yyvsp[(1) - (2)].pattern); }
   1206      break;
   1207  
   1208    case 123:
   1209 -#line 1040 "/usr/homes/chet/src/bash/src/parse.y"
   1210 +#line 1045 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1211      { (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); }
   1212      break;
   1213  
   1214    case 124:
   1215 -#line 1042 "/usr/homes/chet/src/bash/src/parse.y"
   1216 +#line 1047 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1217      { (yyvsp[(1) - (2)].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyval.pattern) = (yyvsp[(1) - (2)].pattern); }
   1218      break;
   1219  
   1220    case 125:
   1221 -#line 1044 "/usr/homes/chet/src/bash/src/parse.y"
   1222 +#line 1049 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1223      { (yyvsp[(2) - (3)].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); }
   1224      break;
   1225  
   1226    case 126:
   1227 -#line 1046 "/usr/homes/chet/src/bash/src/parse.y"
   1228 +#line 1051 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1229      { (yyvsp[(1) - (2)].pattern)->flags |= CASEPAT_TESTNEXT; (yyval.pattern) = (yyvsp[(1) - (2)].pattern); }
   1230      break;
   1231  
   1232    case 127:
   1233 -#line 1048 "/usr/homes/chet/src/bash/src/parse.y"
   1234 +#line 1053 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1235      { (yyvsp[(2) - (3)].pattern)->flags |= CASEPAT_TESTNEXT; (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); }
   1236      break;
   1237  
   1238    case 128:
   1239 -#line 1052 "/usr/homes/chet/src/bash/src/parse.y"
   1240 +#line 1057 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1241      { (yyval.word_list) = make_word_list ((yyvsp[(1) - (1)].word), (WORD_LIST *)NULL); }
   1242      break;
   1243  
   1244    case 129:
   1245 -#line 1054 "/usr/homes/chet/src/bash/src/parse.y"
   1246 +#line 1059 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1247      { (yyval.word_list) = make_word_list ((yyvsp[(3) - (3)].word), (yyvsp[(1) - (3)].word_list)); }
   1248      break;
   1249  
   1250    case 130:
   1251 -#line 1063 "/usr/homes/chet/src/bash/src/parse.y"
   1252 +#line 1068 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1253      {
   1254  			  (yyval.command) = (yyvsp[(2) - (2)].command);
   1255  			  if (need_here_doc)
   1256 @@ -3109,14 +3114,14 @@ yyreduce:
   1257      break;
   1258  
   1259    case 132:
   1260 -#line 1072 "/usr/homes/chet/src/bash/src/parse.y"
   1261 +#line 1077 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1262      {
   1263  			  (yyval.command) = (yyvsp[(2) - (2)].command);
   1264  			}
   1265      break;
   1266  
   1267    case 134:
   1268 -#line 1079 "/usr/homes/chet/src/bash/src/parse.y"
   1269 +#line 1084 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1270      {
   1271  			  if ((yyvsp[(1) - (3)].command)->type == cm_connection)
   1272  			    (yyval.command) = connect_async_list ((yyvsp[(1) - (3)].command), (COMMAND *)NULL, '&');
   1273 @@ -3126,17 +3131,17 @@ yyreduce:
   1274      break;
   1275  
   1276    case 136:
   1277 -#line 1090 "/usr/homes/chet/src/bash/src/parse.y"
   1278 +#line 1095 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1279      { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), AND_AND); }
   1280      break;
   1281  
   1282    case 137:
   1283 -#line 1092 "/usr/homes/chet/src/bash/src/parse.y"
   1284 +#line 1097 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1285      { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), OR_OR); }
   1286      break;
   1287  
   1288    case 138:
   1289 -#line 1094 "/usr/homes/chet/src/bash/src/parse.y"
   1290 +#line 1099 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1291      {
   1292  			  if ((yyvsp[(1) - (4)].command)->type == cm_connection)
   1293  			    (yyval.command) = connect_async_list ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), '&');
   1294 @@ -3146,37 +3151,37 @@ yyreduce:
   1295      break;
   1296  
   1297    case 139:
   1298 -#line 1101 "/usr/homes/chet/src/bash/src/parse.y"
   1299 +#line 1106 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1300      { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), ';'); }
   1301      break;
   1302  
   1303    case 140:
   1304 -#line 1103 "/usr/homes/chet/src/bash/src/parse.y"
   1305 +#line 1108 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1306      { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), ';'); }
   1307      break;
   1308  
   1309    case 141:
   1310 -#line 1105 "/usr/homes/chet/src/bash/src/parse.y"
   1311 +#line 1110 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1312      { (yyval.command) = (yyvsp[(1) - (1)].command); }
   1313      break;
   1314  
   1315    case 144:
   1316 -#line 1113 "/usr/homes/chet/src/bash/src/parse.y"
   1317 +#line 1118 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1318      { (yyval.number) = '\n'; }
   1319      break;
   1320  
   1321    case 145:
   1322 -#line 1115 "/usr/homes/chet/src/bash/src/parse.y"
   1323 +#line 1120 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1324      { (yyval.number) = ';'; }
   1325      break;
   1326  
   1327    case 146:
   1328 -#line 1117 "/usr/homes/chet/src/bash/src/parse.y"
   1329 +#line 1122 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1330      { (yyval.number) = yacc_EOF; }
   1331      break;
   1332  
   1333    case 149:
   1334 -#line 1131 "/usr/homes/chet/src/bash/src/parse.y"
   1335 +#line 1136 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1336      {
   1337  			  (yyval.command) = (yyvsp[(1) - (1)].command);
   1338  			  if (need_here_doc)
   1339 @@ -3192,7 +3197,7 @@ yyreduce:
   1340      break;
   1341  
   1342    case 150:
   1343 -#line 1144 "/usr/homes/chet/src/bash/src/parse.y"
   1344 +#line 1149 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1345      {
   1346  			  if ((yyvsp[(1) - (2)].command)->type == cm_connection)
   1347  			    (yyval.command) = connect_async_list ((yyvsp[(1) - (2)].command), (COMMAND *)NULL, '&');
   1348 @@ -3211,7 +3216,7 @@ yyreduce:
   1349      break;
   1350  
   1351    case 151:
   1352 -#line 1160 "/usr/homes/chet/src/bash/src/parse.y"
   1353 +#line 1165 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1354      {
   1355  			  (yyval.command) = (yyvsp[(1) - (2)].command);
   1356  			  if (need_here_doc)
   1357 @@ -3227,17 +3232,17 @@ yyreduce:
   1358      break;
   1359  
   1360    case 152:
   1361 -#line 1175 "/usr/homes/chet/src/bash/src/parse.y"
   1362 +#line 1180 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1363      { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), AND_AND); }
   1364      break;
   1365  
   1366    case 153:
   1367 -#line 1177 "/usr/homes/chet/src/bash/src/parse.y"
   1368 +#line 1182 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1369      { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), OR_OR); }
   1370      break;
   1371  
   1372    case 154:
   1373 -#line 1179 "/usr/homes/chet/src/bash/src/parse.y"
   1374 +#line 1184 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1375      {
   1376  			  if ((yyvsp[(1) - (3)].command)->type == cm_connection)
   1377  			    (yyval.command) = connect_async_list ((yyvsp[(1) - (3)].command), (yyvsp[(3) - (3)].command), '&');
   1378 @@ -3247,22 +3252,22 @@ yyreduce:
   1379      break;
   1380  
   1381    case 155:
   1382 -#line 1186 "/usr/homes/chet/src/bash/src/parse.y"
   1383 +#line 1191 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1384      { (yyval.command) = command_connect ((yyvsp[(1) - (3)].command), (yyvsp[(3) - (3)].command), ';'); }
   1385      break;
   1386  
   1387    case 156:
   1388 -#line 1189 "/usr/homes/chet/src/bash/src/parse.y"
   1389 +#line 1194 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1390      { (yyval.command) = (yyvsp[(1) - (1)].command); }
   1391      break;
   1392  
   1393    case 157:
   1394 -#line 1193 "/usr/homes/chet/src/bash/src/parse.y"
   1395 +#line 1198 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1396      { (yyval.command) = (yyvsp[(1) - (1)].command); }
   1397      break;
   1398  
   1399    case 158:
   1400 -#line 1195 "/usr/homes/chet/src/bash/src/parse.y"
   1401 +#line 1200 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1402      {
   1403  			  if ((yyvsp[(2) - (2)].command))
   1404  			    (yyvsp[(2) - (2)].command)->flags ^= CMD_INVERT_RETURN;	/* toggle */
   1405 @@ -3271,7 +3276,7 @@ yyreduce:
   1406      break;
   1407  
   1408    case 159:
   1409 -#line 1201 "/usr/homes/chet/src/bash/src/parse.y"
   1410 +#line 1206 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1411      {
   1412  			  if ((yyvsp[(2) - (2)].command))
   1413  			    (yyvsp[(2) - (2)].command)->flags |= (yyvsp[(1) - (2)].number);
   1414 @@ -3280,7 +3285,7 @@ yyreduce:
   1415      break;
   1416  
   1417    case 160:
   1418 -#line 1207 "/usr/homes/chet/src/bash/src/parse.y"
   1419 +#line 1212 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1420      {
   1421  			  ELEMENT x;
   1422  
   1423 @@ -3300,7 +3305,7 @@ yyreduce:
   1424      break;
   1425  
   1426    case 161:
   1427 -#line 1224 "/usr/homes/chet/src/bash/src/parse.y"
   1428 +#line 1229 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1429      {
   1430  			  ELEMENT x;
   1431  
   1432 @@ -3321,12 +3326,12 @@ yyreduce:
   1433      break;
   1434  
   1435    case 162:
   1436 -#line 1244 "/usr/homes/chet/src/bash/src/parse.y"
   1437 +#line 1249 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1438      { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), '|'); }
   1439      break;
   1440  
   1441    case 163:
   1442 -#line 1246 "/usr/homes/chet/src/bash/src/parse.y"
   1443 +#line 1251 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1444      {
   1445  			  /* Make cmd1 |& cmd2 equivalent to cmd1 2>&1 | cmd2 */
   1446  			  COMMAND *tc;
   1447 @@ -3352,28 +3357,28 @@ yyreduce:
   1448      break;
   1449  
   1450    case 164:
   1451 -#line 1269 "/usr/homes/chet/src/bash/src/parse.y"
   1452 +#line 1274 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1453      { (yyval.command) = (yyvsp[(1) - (1)].command); }
   1454      break;
   1455  
   1456    case 165:
   1457 -#line 1273 "/usr/homes/chet/src/bash/src/parse.y"
   1458 +#line 1278 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1459      { (yyval.number) = CMD_TIME_PIPELINE; }
   1460      break;
   1461  
   1462    case 166:
   1463 -#line 1275 "/usr/homes/chet/src/bash/src/parse.y"
   1464 +#line 1280 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1465      { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
   1466      break;
   1467  
   1468    case 167:
   1469 -#line 1277 "/usr/homes/chet/src/bash/src/parse.y"
   1470 +#line 1282 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1471      { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
   1472      break;
   1473  
   1474  
   1475  /* Line 1267 of yacc.c.  */
   1476 -#line 3377 "y.tab.c"
   1477 +#line 3382 "y.tab.c"
   1478        default: break;
   1479      }
   1480    YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
   1481 @@ -3587,7 +3592,7 @@ yyreturn:
   1482  }
   1483  
   1484  
   1485 -#line 1279 "/usr/homes/chet/src/bash/src/parse.y"
   1486 +#line 1284 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1487  
   1488  
   1489  /* Initial size to allocate for tokens, and the
   1490 @@ -4948,6 +4953,21 @@ yylex ()
   1491     which allow ESAC to be the next one read. */
   1492  static int esacs_needed_count;
   1493  
   1494 +static void
   1495 +push_heredoc (r)
   1496 +     REDIRECT *r;
   1497 +{
   1498 +  if (need_here_doc >= HEREDOC_MAX)
   1499 +    {
   1500 +      last_command_exit_value = EX_BADUSAGE;
   1501 +      need_here_doc = 0;
   1502 +      report_syntax_error (_("maximum here-document count exceeded"));
   1503 +      reset_parser ();
   1504 +      exit_shell (last_command_exit_value);
   1505 +    }
   1506 +  redir_stack[need_here_doc++] = r;
   1507 +}
   1508 +
   1509  void
   1510  gather_here_documents ()
   1511  {
   1512 @@ -8541,3 +8561,4 @@ set_line_mbstate ()
   1513      }
   1514  }
   1515  #endif /* HANDLE_MULTIBYTE */
   1516 +
   1517 --- a/patchlevel.h
   1518 +++ b/patchlevel.h
   1519 @@ -25,6 +25,6 @@
   1520     regexp `^#define[ 	]*PATCHLEVEL', since that's what support/mkversion.sh
   1521     looks for to find the patch level (for the sccs version string). */
   1522  
   1523 -#define PATCHLEVEL 27
   1524 +#define PATCHLEVEL 28
   1525  
   1526  #endif /* _PATCHLEVEL_H_ */