lede-packages-rs

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

130-upstream-bash43-030.patch (47862B)


      1 			     BASH PATCH REPORT
      2 			     =================
      3 
      4 Bash-Release:	4.3
      5 Patch-ID:	bash43-030
      6 
      7 Bug-Reported-by:	Michal Zalewski <lcamtuf@coredump.cx>
      8 Bug-Reference-ID:
      9 Bug-Reference-URL:
     10 
     11 Bug-Description:
     12 
     13 A combination of nested command substitutions and function importing from
     14 the environment can cause bash to execute code appearing in the environment
     15 variable value following the function definition.
     16 
     17 Patch (apply with `patch -p0'):
     18 
     19 --- a/builtins/evalstring.c
     20 +++ b/builtins/evalstring.c
     21 @@ -308,12 +308,25 @@ parse_and_execute (string, from_file, fl
     22  	    {
     23  	      struct fd_bitmap *bitmap;
     24  
     25 -	      if ((flags & SEVAL_FUNCDEF) && command->type != cm_function_def)
     26 +	      if (flags & SEVAL_FUNCDEF)
     27  		{
     28 -		  internal_warning ("%s: ignoring function definition attempt", from_file);
     29 -		  should_jump_to_top_level = 0;
     30 -		  last_result = last_command_exit_value = EX_BADUSAGE;
     31 -		  break;
     32 +		  char *x;
     33 +
     34 +		  /* If the command parses to something other than a straight
     35 +		     function definition, or if we have not consumed the entire
     36 +		     string, or if the parser has transformed the function
     37 +		     name (as parsing will if it begins or ends with shell
     38 +		     whitespace, for example), reject the attempt */
     39 +		  if (command->type != cm_function_def ||
     40 +		      ((x = parser_remaining_input ()) && *x) ||
     41 +		      (STREQ (from_file, command->value.Function_def->name->word) == 0))
     42 +		    {
     43 +		      internal_warning (_("%s: ignoring function definition attempt"), from_file);
     44 +		      should_jump_to_top_level = 0;
     45 +		      last_result = last_command_exit_value = EX_BADUSAGE;
     46 +		      reset_parser ();
     47 +		      break;
     48 +		    }
     49  		}
     50  
     51  	      bitmap = new_fd_bitmap (FD_BITMAP_SIZE);
     52 @@ -378,7 +391,10 @@ parse_and_execute (string, from_file, fl
     53  	      discard_unwind_frame ("pe_dispose");
     54  
     55  	      if (flags & SEVAL_ONECMD)
     56 -		break;
     57 +		{
     58 +		  reset_parser ();
     59 +		  break;
     60 +		}
     61  	    }
     62  	}
     63        else
     64 --- a/parse.y
     65 +++ b/parse.y
     66 @@ -2538,6 +2538,16 @@ shell_ungetc (c)
     67      eol_ungetc_lookahead = c;
     68  }
     69  
     70 +char *
     71 +parser_remaining_input ()
     72 +{
     73 +  if (shell_input_line == 0)
     74 +    return 0;
     75 +  if (shell_input_line_index < 0 || shell_input_line_index >= shell_input_line_len)
     76 +    return '\0';	/* XXX */
     77 +  return (shell_input_line + shell_input_line_index);
     78 +}
     79 +
     80  #ifdef INCLUDE_UNUSED
     81  /* Back the input pointer up by one, effectively `ungetting' a character. */
     82  static void
     83 @@ -4027,8 +4037,8 @@ xparse_dolparen (base, string, indp, fla
     84    reset_parser ();
     85    /* reset_parser clears shell_input_line and associated variables */
     86    restore_input_line_state (&ls);
     87 -  if (interactive)
     88 -    token_to_read = 0;
     89 +
     90 +  token_to_read = 0;
     91  
     92    /* Need to find how many characters parse_and_execute consumed, update
     93       *indp, if flags != 0, copy the portion of the string parsed into RET
     94 --- a/shell.h
     95 +++ b/shell.h
     96 @@ -180,6 +180,8 @@ typedef struct _sh_input_line_state_t {
     97  } sh_input_line_state_t;
     98  
     99  /* Let's try declaring these here. */
    100 +extern char *parser_remaining_input __P((void));
    101 +
    102  extern sh_parser_state_t *save_parser_state __P((sh_parser_state_t *));
    103  extern void restore_parser_state __P((sh_parser_state_t *));
    104  
    105 --- a/y.tab.c
    106 +++ b/y.tab.c
    107 @@ -168,7 +168,7 @@
    108  
    109  
    110  /* Copy the first part of user declarations.  */
    111 -#line 21 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    112 +#line 21 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    113  
    114  #include "config.h"
    115  
    116 @@ -497,7 +497,7 @@ static REDIRECTEE redir;
    117  
    118  #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
    119  typedef union YYSTYPE
    120 -#line 329 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    121 +#line 329 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    122  {
    123    WORD_DESC *word;		/* the word that we read. */
    124    int number;			/* the number that we read. */
    125 @@ -2098,7 +2098,7 @@ yyreduce:
    126    switch (yyn)
    127      {
    128          case 2:
    129 -#line 383 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    130 +#line 383 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    131      {
    132  			  /* Case of regular command.  Discard the error
    133  			     safety net,and return the command just parsed. */
    134 @@ -2112,7 +2112,7 @@ yyreduce:
    135      break;
    136  
    137    case 3:
    138 -#line 394 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    139 +#line 394 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    140      {
    141  			  /* Case of regular command, but not a very
    142  			     interesting one.  Return a NULL command. */
    143 @@ -2124,7 +2124,7 @@ yyreduce:
    144      break;
    145  
    146    case 4:
    147 -#line 403 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    148 +#line 403 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    149      {
    150  			  /* Error during parsing.  Return NULL command. */
    151  			  global_command = (COMMAND *)NULL;
    152 @@ -2142,7 +2142,7 @@ yyreduce:
    153      break;
    154  
    155    case 5:
    156 -#line 418 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    157 +#line 418 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    158      {
    159  			  /* Case of EOF seen by itself.  Do ignoreeof or
    160  			     not. */
    161 @@ -2153,17 +2153,17 @@ yyreduce:
    162      break;
    163  
    164    case 6:
    165 -#line 428 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    166 +#line 428 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    167      { (yyval.word_list) = make_word_list ((yyvsp[(1) - (1)].word), (WORD_LIST *)NULL); }
    168      break;
    169  
    170    case 7:
    171 -#line 430 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    172 +#line 430 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    173      { (yyval.word_list) = make_word_list ((yyvsp[(2) - (2)].word), (yyvsp[(1) - (2)].word_list)); }
    174      break;
    175  
    176    case 8:
    177 -#line 434 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    178 +#line 434 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    179      {
    180  			  source.dest = 1;
    181  			  redir.filename = (yyvsp[(2) - (2)].word);
    182 @@ -2172,7 +2172,7 @@ yyreduce:
    183      break;
    184  
    185    case 9:
    186 -#line 440 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    187 +#line 440 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    188      {
    189  			  source.dest = 0;
    190  			  redir.filename = (yyvsp[(2) - (2)].word);
    191 @@ -2181,7 +2181,7 @@ yyreduce:
    192      break;
    193  
    194    case 10:
    195 -#line 446 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    196 +#line 446 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    197      {
    198  			  source.dest = (yyvsp[(1) - (3)].number);
    199  			  redir.filename = (yyvsp[(3) - (3)].word);
    200 @@ -2190,7 +2190,7 @@ yyreduce:
    201      break;
    202  
    203    case 11:
    204 -#line 452 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    205 +#line 452 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    206      {
    207  			  source.dest = (yyvsp[(1) - (3)].number);
    208  			  redir.filename = (yyvsp[(3) - (3)].word);
    209 @@ -2199,7 +2199,7 @@ yyreduce:
    210      break;
    211  
    212    case 12:
    213 -#line 458 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    214 +#line 458 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    215      {
    216  			  source.filename = (yyvsp[(1) - (3)].word);
    217  			  redir.filename = (yyvsp[(3) - (3)].word);
    218 @@ -2208,7 +2208,7 @@ yyreduce:
    219      break;
    220  
    221    case 13:
    222 -#line 464 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    223 +#line 464 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    224      {
    225  			  source.filename = (yyvsp[(1) - (3)].word);
    226  			  redir.filename = (yyvsp[(3) - (3)].word);
    227 @@ -2217,7 +2217,7 @@ yyreduce:
    228      break;
    229  
    230    case 14:
    231 -#line 470 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    232 +#line 470 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    233      {
    234  			  source.dest = 1;
    235  			  redir.filename = (yyvsp[(2) - (2)].word);
    236 @@ -2226,7 +2226,7 @@ yyreduce:
    237      break;
    238  
    239    case 15:
    240 -#line 476 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    241 +#line 476 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    242      {
    243  			  source.dest = (yyvsp[(1) - (3)].number);
    244  			  redir.filename = (yyvsp[(3) - (3)].word);
    245 @@ -2235,7 +2235,7 @@ yyreduce:
    246      break;
    247  
    248    case 16:
    249 -#line 482 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    250 +#line 482 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    251      {
    252  			  source.filename = (yyvsp[(1) - (3)].word);
    253  			  redir.filename = (yyvsp[(3) - (3)].word);
    254 @@ -2244,7 +2244,7 @@ yyreduce:
    255      break;
    256  
    257    case 17:
    258 -#line 488 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    259 +#line 488 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    260      {
    261  			  source.dest = 1;
    262  			  redir.filename = (yyvsp[(2) - (2)].word);
    263 @@ -2253,7 +2253,7 @@ yyreduce:
    264      break;
    265  
    266    case 18:
    267 -#line 494 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    268 +#line 494 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    269      {
    270  			  source.dest = (yyvsp[(1) - (3)].number);
    271  			  redir.filename = (yyvsp[(3) - (3)].word);
    272 @@ -2262,7 +2262,7 @@ yyreduce:
    273      break;
    274  
    275    case 19:
    276 -#line 500 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    277 +#line 500 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    278      {
    279  			  source.filename = (yyvsp[(1) - (3)].word);
    280  			  redir.filename = (yyvsp[(3) - (3)].word);
    281 @@ -2271,7 +2271,7 @@ yyreduce:
    282      break;
    283  
    284    case 20:
    285 -#line 506 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    286 +#line 506 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    287      {
    288  			  source.dest = 0;
    289  			  redir.filename = (yyvsp[(2) - (2)].word);
    290 @@ -2280,7 +2280,7 @@ yyreduce:
    291      break;
    292  
    293    case 21:
    294 -#line 512 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    295 +#line 512 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    296      {
    297  			  source.dest = (yyvsp[(1) - (3)].number);
    298  			  redir.filename = (yyvsp[(3) - (3)].word);
    299 @@ -2289,7 +2289,7 @@ yyreduce:
    300      break;
    301  
    302    case 22:
    303 -#line 518 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    304 +#line 518 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    305      {
    306  			  source.filename = (yyvsp[(1) - (3)].word);
    307  			  redir.filename = (yyvsp[(3) - (3)].word);
    308 @@ -2298,7 +2298,7 @@ yyreduce:
    309      break;
    310  
    311    case 23:
    312 -#line 524 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    313 +#line 524 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    314      {
    315  			  source.dest = 0;
    316  			  redir.filename = (yyvsp[(2) - (2)].word);
    317 @@ -2308,7 +2308,7 @@ yyreduce:
    318      break;
    319  
    320    case 24:
    321 -#line 531 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    322 +#line 531 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    323      {
    324  			  source.dest = (yyvsp[(1) - (3)].number);
    325  			  redir.filename = (yyvsp[(3) - (3)].word);
    326 @@ -2318,7 +2318,7 @@ yyreduce:
    327      break;
    328  
    329    case 25:
    330 -#line 538 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    331 +#line 538 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    332      {
    333  			  source.filename = (yyvsp[(1) - (3)].word);
    334  			  redir.filename = (yyvsp[(3) - (3)].word);
    335 @@ -2328,7 +2328,7 @@ yyreduce:
    336      break;
    337  
    338    case 26:
    339 -#line 545 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    340 +#line 545 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    341      {
    342  			  source.dest = 0;
    343  			  redir.filename = (yyvsp[(2) - (2)].word);
    344 @@ -2338,7 +2338,7 @@ yyreduce:
    345      break;
    346  
    347    case 27:
    348 -#line 552 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    349 +#line 552 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    350      {
    351  			  source.dest = (yyvsp[(1) - (3)].number);
    352  			  redir.filename = (yyvsp[(3) - (3)].word);
    353 @@ -2348,7 +2348,7 @@ yyreduce:
    354      break;
    355  
    356    case 28:
    357 -#line 559 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    358 +#line 559 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    359      {
    360  			  source.filename = (yyvsp[(1) - (3)].word);
    361  			  redir.filename = (yyvsp[(3) - (3)].word);
    362 @@ -2358,7 +2358,7 @@ yyreduce:
    363      break;
    364  
    365    case 29:
    366 -#line 566 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    367 +#line 566 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    368      {
    369  			  source.dest = 0;
    370  			  redir.filename = (yyvsp[(2) - (2)].word);
    371 @@ -2367,7 +2367,7 @@ yyreduce:
    372      break;
    373  
    374    case 30:
    375 -#line 572 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    376 +#line 572 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    377      {
    378  			  source.dest = (yyvsp[(1) - (3)].number);
    379  			  redir.filename = (yyvsp[(3) - (3)].word);
    380 @@ -2376,7 +2376,7 @@ yyreduce:
    381      break;
    382  
    383    case 31:
    384 -#line 578 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    385 +#line 578 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    386      {
    387  			  source.filename = (yyvsp[(1) - (3)].word);
    388  			  redir.filename = (yyvsp[(3) - (3)].word);
    389 @@ -2385,7 +2385,7 @@ yyreduce:
    390      break;
    391  
    392    case 32:
    393 -#line 584 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    394 +#line 584 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    395      {
    396  			  source.dest = 0;
    397  			  redir.dest = (yyvsp[(2) - (2)].number);
    398 @@ -2394,7 +2394,7 @@ yyreduce:
    399      break;
    400  
    401    case 33:
    402 -#line 590 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    403 +#line 590 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    404      {
    405  			  source.dest = (yyvsp[(1) - (3)].number);
    406  			  redir.dest = (yyvsp[(3) - (3)].number);
    407 @@ -2403,7 +2403,7 @@ yyreduce:
    408      break;
    409  
    410    case 34:
    411 -#line 596 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    412 +#line 596 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    413      {
    414  			  source.filename = (yyvsp[(1) - (3)].word);
    415  			  redir.dest = (yyvsp[(3) - (3)].number);
    416 @@ -2412,7 +2412,7 @@ yyreduce:
    417      break;
    418  
    419    case 35:
    420 -#line 602 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    421 +#line 602 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    422      {
    423  			  source.dest = 1;
    424  			  redir.dest = (yyvsp[(2) - (2)].number);
    425 @@ -2421,7 +2421,7 @@ yyreduce:
    426      break;
    427  
    428    case 36:
    429 -#line 608 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    430 +#line 608 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    431      {
    432  			  source.dest = (yyvsp[(1) - (3)].number);
    433  			  redir.dest = (yyvsp[(3) - (3)].number);
    434 @@ -2430,7 +2430,7 @@ yyreduce:
    435      break;
    436  
    437    case 37:
    438 -#line 614 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    439 +#line 614 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    440      {
    441  			  source.filename = (yyvsp[(1) - (3)].word);
    442  			  redir.dest = (yyvsp[(3) - (3)].number);
    443 @@ -2439,7 +2439,7 @@ yyreduce:
    444      break;
    445  
    446    case 38:
    447 -#line 620 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    448 +#line 620 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    449      {
    450  			  source.dest = 0;
    451  			  redir.filename = (yyvsp[(2) - (2)].word);
    452 @@ -2448,7 +2448,7 @@ yyreduce:
    453      break;
    454  
    455    case 39:
    456 -#line 626 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    457 +#line 626 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    458      {
    459  			  source.dest = (yyvsp[(1) - (3)].number);
    460  			  redir.filename = (yyvsp[(3) - (3)].word);
    461 @@ -2457,7 +2457,7 @@ yyreduce:
    462      break;
    463  
    464    case 40:
    465 -#line 632 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    466 +#line 632 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    467      {
    468  			  source.filename = (yyvsp[(1) - (3)].word);
    469  			  redir.filename = (yyvsp[(3) - (3)].word);
    470 @@ -2466,7 +2466,7 @@ yyreduce:
    471      break;
    472  
    473    case 41:
    474 -#line 638 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    475 +#line 638 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    476      {
    477  			  source.dest = 1;
    478  			  redir.filename = (yyvsp[(2) - (2)].word);
    479 @@ -2475,7 +2475,7 @@ yyreduce:
    480      break;
    481  
    482    case 42:
    483 -#line 644 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    484 +#line 644 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    485      {
    486  			  source.dest = (yyvsp[(1) - (3)].number);
    487  			  redir.filename = (yyvsp[(3) - (3)].word);
    488 @@ -2484,7 +2484,7 @@ yyreduce:
    489      break;
    490  
    491    case 43:
    492 -#line 650 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    493 +#line 650 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    494      {
    495  			  source.filename = (yyvsp[(1) - (3)].word);
    496  			  redir.filename = (yyvsp[(3) - (3)].word);
    497 @@ -2493,7 +2493,7 @@ yyreduce:
    498      break;
    499  
    500    case 44:
    501 -#line 656 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    502 +#line 656 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    503      {
    504  			  source.dest = 1;
    505  			  redir.dest = 0;
    506 @@ -2502,7 +2502,7 @@ yyreduce:
    507      break;
    508  
    509    case 45:
    510 -#line 662 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    511 +#line 662 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    512      {
    513  			  source.dest = (yyvsp[(1) - (3)].number);
    514  			  redir.dest = 0;
    515 @@ -2511,7 +2511,7 @@ yyreduce:
    516      break;
    517  
    518    case 46:
    519 -#line 668 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    520 +#line 668 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    521      {
    522  			  source.filename = (yyvsp[(1) - (3)].word);
    523  			  redir.dest = 0;
    524 @@ -2520,7 +2520,7 @@ yyreduce:
    525      break;
    526  
    527    case 47:
    528 -#line 674 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    529 +#line 674 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    530      {
    531  			  source.dest = 0;
    532  			  redir.dest = 0;
    533 @@ -2529,7 +2529,7 @@ yyreduce:
    534      break;
    535  
    536    case 48:
    537 -#line 680 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    538 +#line 680 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    539      {
    540  			  source.dest = (yyvsp[(1) - (3)].number);
    541  			  redir.dest = 0;
    542 @@ -2538,7 +2538,7 @@ yyreduce:
    543      break;
    544  
    545    case 49:
    546 -#line 686 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    547 +#line 686 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    548      {
    549  			  source.filename = (yyvsp[(1) - (3)].word);
    550  			  redir.dest = 0;
    551 @@ -2547,7 +2547,7 @@ yyreduce:
    552      break;
    553  
    554    case 50:
    555 -#line 692 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    556 +#line 692 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    557      {
    558  			  source.dest = 1;
    559  			  redir.filename = (yyvsp[(2) - (2)].word);
    560 @@ -2556,7 +2556,7 @@ yyreduce:
    561      break;
    562  
    563    case 51:
    564 -#line 698 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    565 +#line 698 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    566      {
    567  			  source.dest = 1;
    568  			  redir.filename = (yyvsp[(2) - (2)].word);
    569 @@ -2565,29 +2565,29 @@ yyreduce:
    570      break;
    571  
    572    case 52:
    573 -#line 706 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    574 +#line 706 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    575      { (yyval.element).word = (yyvsp[(1) - (1)].word); (yyval.element).redirect = 0; }
    576      break;
    577  
    578    case 53:
    579 -#line 708 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    580 +#line 708 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    581      { (yyval.element).word = (yyvsp[(1) - (1)].word); (yyval.element).redirect = 0; }
    582      break;
    583  
    584    case 54:
    585 -#line 710 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    586 +#line 710 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    587      { (yyval.element).redirect = (yyvsp[(1) - (1)].redirect); (yyval.element).word = 0; }
    588      break;
    589  
    590    case 55:
    591 -#line 714 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    592 +#line 714 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    593      {
    594  			  (yyval.redirect) = (yyvsp[(1) - (1)].redirect);
    595  			}
    596      break;
    597  
    598    case 56:
    599 -#line 718 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    600 +#line 718 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    601      {
    602  			  register REDIRECT *t;
    603  
    604 @@ -2599,27 +2599,27 @@ yyreduce:
    605      break;
    606  
    607    case 57:
    608 -#line 729 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    609 +#line 729 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    610      { (yyval.command) = make_simple_command ((yyvsp[(1) - (1)].element), (COMMAND *)NULL); }
    611      break;
    612  
    613    case 58:
    614 -#line 731 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    615 +#line 731 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    616      { (yyval.command) = make_simple_command ((yyvsp[(2) - (2)].element), (yyvsp[(1) - (2)].command)); }
    617      break;
    618  
    619    case 59:
    620 -#line 735 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    621 +#line 735 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    622      { (yyval.command) = clean_simple_command ((yyvsp[(1) - (1)].command)); }
    623      break;
    624  
    625    case 60:
    626 -#line 737 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    627 +#line 737 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    628      { (yyval.command) = (yyvsp[(1) - (1)].command); }
    629      break;
    630  
    631    case 61:
    632 -#line 739 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    633 +#line 739 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    634      {
    635  			  COMMAND *tc;
    636  
    637 @@ -2638,72 +2638,72 @@ yyreduce:
    638      break;
    639  
    640    case 62:
    641 -#line 755 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    642 +#line 755 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    643      { (yyval.command) = (yyvsp[(1) - (1)].command); }
    644      break;
    645  
    646    case 63:
    647 -#line 757 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    648 +#line 757 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    649      { (yyval.command) = (yyvsp[(1) - (1)].command); }
    650      break;
    651  
    652    case 64:
    653 -#line 761 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    654 +#line 761 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    655      { (yyval.command) = (yyvsp[(1) - (1)].command); }
    656      break;
    657  
    658    case 65:
    659 -#line 763 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    660 +#line 763 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    661      { (yyval.command) = (yyvsp[(1) - (1)].command); }
    662      break;
    663  
    664    case 66:
    665 -#line 765 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    666 +#line 765 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    667      { (yyval.command) = make_while_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command)); }
    668      break;
    669  
    670    case 67:
    671 -#line 767 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    672 +#line 767 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    673      { (yyval.command) = make_until_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command)); }
    674      break;
    675  
    676    case 68:
    677 -#line 769 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    678 +#line 769 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    679      { (yyval.command) = (yyvsp[(1) - (1)].command); }
    680      break;
    681  
    682    case 69:
    683 -#line 771 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    684 +#line 771 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    685      { (yyval.command) = (yyvsp[(1) - (1)].command); }
    686      break;
    687  
    688    case 70:
    689 -#line 773 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    690 +#line 773 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    691      { (yyval.command) = (yyvsp[(1) - (1)].command); }
    692      break;
    693  
    694    case 71:
    695 -#line 775 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    696 +#line 775 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    697      { (yyval.command) = (yyvsp[(1) - (1)].command); }
    698      break;
    699  
    700    case 72:
    701 -#line 777 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    702 +#line 777 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    703      { (yyval.command) = (yyvsp[(1) - (1)].command); }
    704      break;
    705  
    706    case 73:
    707 -#line 779 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    708 +#line 779 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    709      { (yyval.command) = (yyvsp[(1) - (1)].command); }
    710      break;
    711  
    712    case 74:
    713 -#line 781 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    714 +#line 781 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    715      { (yyval.command) = (yyvsp[(1) - (1)].command); }
    716      break;
    717  
    718    case 75:
    719 -#line 785 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    720 +#line 785 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    721      {
    722  			  (yyval.command) = make_for_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
    723  			  if (word_top > 0) word_top--;
    724 @@ -2711,7 +2711,7 @@ yyreduce:
    725      break;
    726  
    727    case 76:
    728 -#line 790 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    729 +#line 790 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    730      {
    731  			  (yyval.command) = make_for_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
    732  			  if (word_top > 0) word_top--;
    733 @@ -2719,7 +2719,7 @@ yyreduce:
    734      break;
    735  
    736    case 77:
    737 -#line 795 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    738 +#line 795 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    739      {
    740  			  (yyval.command) = make_for_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
    741  			  if (word_top > 0) word_top--;
    742 @@ -2727,7 +2727,7 @@ yyreduce:
    743      break;
    744  
    745    case 78:
    746 -#line 800 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    747 +#line 800 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    748      {
    749  			  (yyval.command) = make_for_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
    750  			  if (word_top > 0) word_top--;
    751 @@ -2735,7 +2735,7 @@ yyreduce:
    752      break;
    753  
    754    case 79:
    755 -#line 805 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    756 +#line 805 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    757      {
    758  			  (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]);
    759  			  if (word_top > 0) word_top--;
    760 @@ -2743,7 +2743,7 @@ yyreduce:
    761      break;
    762  
    763    case 80:
    764 -#line 810 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    765 +#line 810 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    766      {
    767  			  (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]);
    768  			  if (word_top > 0) word_top--;
    769 @@ -2751,7 +2751,7 @@ yyreduce:
    770      break;
    771  
    772    case 81:
    773 -#line 815 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    774 +#line 815 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    775      {
    776  			  (yyval.command) = make_for_command ((yyvsp[(2) - (9)].word), (WORD_LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]);
    777  			  if (word_top > 0) word_top--;
    778 @@ -2759,7 +2759,7 @@ yyreduce:
    779      break;
    780  
    781    case 82:
    782 -#line 820 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    783 +#line 820 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    784      {
    785  			  (yyval.command) = make_for_command ((yyvsp[(2) - (9)].word), (WORD_LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]);
    786  			  if (word_top > 0) word_top--;
    787 @@ -2767,7 +2767,7 @@ yyreduce:
    788      break;
    789  
    790    case 83:
    791 -#line 827 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    792 +#line 827 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    793      {
    794  				  (yyval.command) = make_arith_for_command ((yyvsp[(2) - (7)].word_list), (yyvsp[(6) - (7)].command), arith_for_lineno);
    795  				  if (word_top > 0) word_top--;
    796 @@ -2775,7 +2775,7 @@ yyreduce:
    797      break;
    798  
    799    case 84:
    800 -#line 832 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    801 +#line 832 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    802      {
    803  				  (yyval.command) = make_arith_for_command ((yyvsp[(2) - (7)].word_list), (yyvsp[(6) - (7)].command), arith_for_lineno);
    804  				  if (word_top > 0) word_top--;
    805 @@ -2783,7 +2783,7 @@ yyreduce:
    806      break;
    807  
    808    case 85:
    809 -#line 837 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    810 +#line 837 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    811      {
    812  				  (yyval.command) = make_arith_for_command ((yyvsp[(2) - (5)].word_list), (yyvsp[(4) - (5)].command), arith_for_lineno);
    813  				  if (word_top > 0) word_top--;
    814 @@ -2791,7 +2791,7 @@ yyreduce:
    815      break;
    816  
    817    case 86:
    818 -#line 842 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    819 +#line 842 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    820      {
    821  				  (yyval.command) = make_arith_for_command ((yyvsp[(2) - (5)].word_list), (yyvsp[(4) - (5)].command), arith_for_lineno);
    822  				  if (word_top > 0) word_top--;
    823 @@ -2799,7 +2799,7 @@ yyreduce:
    824      break;
    825  
    826    case 87:
    827 -#line 849 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    828 +#line 849 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    829      {
    830  			  (yyval.command) = make_select_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
    831  			  if (word_top > 0) word_top--;
    832 @@ -2807,7 +2807,7 @@ yyreduce:
    833      break;
    834  
    835    case 88:
    836 -#line 854 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    837 +#line 854 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    838      {
    839  			  (yyval.command) = make_select_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
    840  			  if (word_top > 0) word_top--;
    841 @@ -2815,7 +2815,7 @@ yyreduce:
    842      break;
    843  
    844    case 89:
    845 -#line 859 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    846 +#line 859 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    847      {
    848  			  (yyval.command) = make_select_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
    849  			  if (word_top > 0) word_top--;
    850 @@ -2823,7 +2823,7 @@ yyreduce:
    851      break;
    852  
    853    case 90:
    854 -#line 864 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    855 +#line 864 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    856      {
    857  			  (yyval.command) = make_select_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
    858  			  if (word_top > 0) word_top--;
    859 @@ -2831,7 +2831,7 @@ yyreduce:
    860      break;
    861  
    862    case 91:
    863 -#line 869 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    864 +#line 869 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    865      {
    866  			  (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]);
    867  			  if (word_top > 0) word_top--;
    868 @@ -2839,7 +2839,7 @@ yyreduce:
    869      break;
    870  
    871    case 92:
    872 -#line 874 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    873 +#line 874 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    874      {
    875  			  (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]);
    876  			  if (word_top > 0) word_top--;
    877 @@ -2847,7 +2847,7 @@ yyreduce:
    878      break;
    879  
    880    case 93:
    881 -#line 881 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    882 +#line 881 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    883      {
    884  			  (yyval.command) = make_case_command ((yyvsp[(2) - (6)].word), (PATTERN_LIST *)NULL, word_lineno[word_top]);
    885  			  if (word_top > 0) word_top--;
    886 @@ -2855,7 +2855,7 @@ yyreduce:
    887      break;
    888  
    889    case 94:
    890 -#line 886 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    891 +#line 886 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    892      {
    893  			  (yyval.command) = make_case_command ((yyvsp[(2) - (7)].word), (yyvsp[(5) - (7)].pattern), word_lineno[word_top]);
    894  			  if (word_top > 0) word_top--;
    895 @@ -2863,7 +2863,7 @@ yyreduce:
    896      break;
    897  
    898    case 95:
    899 -#line 891 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    900 +#line 891 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    901      {
    902  			  (yyval.command) = make_case_command ((yyvsp[(2) - (6)].word), (yyvsp[(5) - (6)].pattern), word_lineno[word_top]);
    903  			  if (word_top > 0) word_top--;
    904 @@ -2871,27 +2871,27 @@ yyreduce:
    905      break;
    906  
    907    case 96:
    908 -#line 898 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    909 +#line 898 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    910      { (yyval.command) = make_function_def ((yyvsp[(1) - (5)].word), (yyvsp[(5) - (5)].command), function_dstart, function_bstart); }
    911      break;
    912  
    913    case 97:
    914 -#line 901 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    915 +#line 901 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    916      { (yyval.command) = make_function_def ((yyvsp[(2) - (6)].word), (yyvsp[(6) - (6)].command), function_dstart, function_bstart); }
    917      break;
    918  
    919    case 98:
    920 -#line 904 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    921 +#line 904 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    922      { (yyval.command) = make_function_def ((yyvsp[(2) - (4)].word), (yyvsp[(4) - (4)].command), function_dstart, function_bstart); }
    923      break;
    924  
    925    case 99:
    926 -#line 908 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    927 +#line 908 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    928      { (yyval.command) = (yyvsp[(1) - (1)].command); }
    929      break;
    930  
    931    case 100:
    932 -#line 910 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    933 +#line 910 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    934      {
    935  			  COMMAND *tc;
    936  
    937 @@ -2923,7 +2923,7 @@ yyreduce:
    938      break;
    939  
    940    case 101:
    941 -#line 941 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    942 +#line 941 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    943      {
    944  			  (yyval.command) = make_subshell_command ((yyvsp[(2) - (3)].command));
    945  			  (yyval.command)->flags |= CMD_WANT_SUBSHELL;
    946 @@ -2931,7 +2931,7 @@ yyreduce:
    947      break;
    948  
    949    case 102:
    950 -#line 948 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    951 +#line 948 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    952      {
    953  			  (yyval.command) = make_coproc_command ("COPROC", (yyvsp[(2) - (2)].command));
    954  			  (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
    955 @@ -2939,7 +2939,7 @@ yyreduce:
    956      break;
    957  
    958    case 103:
    959 -#line 953 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    960 +#line 953 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    961      {
    962  			  COMMAND *tc;
    963  
    964 @@ -2959,7 +2959,7 @@ yyreduce:
    965      break;
    966  
    967    case 104:
    968 -#line 970 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    969 +#line 970 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    970      {
    971  			  (yyval.command) = make_coproc_command ((yyvsp[(2) - (3)].word)->word, (yyvsp[(3) - (3)].command));
    972  			  (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
    973 @@ -2967,7 +2967,7 @@ yyreduce:
    974      break;
    975  
    976    case 105:
    977 -#line 975 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    978 +#line 975 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    979      {
    980  			  COMMAND *tc;
    981  
    982 @@ -2987,7 +2987,7 @@ yyreduce:
    983      break;
    984  
    985    case 106:
    986 -#line 992 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    987 +#line 992 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    988      {
    989  			  (yyval.command) = make_coproc_command ("COPROC", clean_simple_command ((yyvsp[(2) - (2)].command)));
    990  			  (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
    991 @@ -2995,117 +2995,117 @@ yyreduce:
    992      break;
    993  
    994    case 107:
    995 -#line 999 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
    996 +#line 999 "/usr/src/local/bash/bash-4.3-patched/parse.y"
    997      { (yyval.command) = make_if_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command), (COMMAND *)NULL); }
    998      break;
    999  
   1000    case 108:
   1001 -#line 1001 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1002 +#line 1001 "/usr/src/local/bash/bash-4.3-patched/parse.y"
   1003      { (yyval.command) = make_if_command ((yyvsp[(2) - (7)].command), (yyvsp[(4) - (7)].command), (yyvsp[(6) - (7)].command)); }
   1004      break;
   1005  
   1006    case 109:
   1007 -#line 1003 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1008 +#line 1003 "/usr/src/local/bash/bash-4.3-patched/parse.y"
   1009      { (yyval.command) = make_if_command ((yyvsp[(2) - (6)].command), (yyvsp[(4) - (6)].command), (yyvsp[(5) - (6)].command)); }
   1010      break;
   1011  
   1012    case 110:
   1013 -#line 1008 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1014 +#line 1008 "/usr/src/local/bash/bash-4.3-patched/parse.y"
   1015      { (yyval.command) = make_group_command ((yyvsp[(2) - (3)].command)); }
   1016      break;
   1017  
   1018    case 111:
   1019 -#line 1012 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1020 +#line 1012 "/usr/src/local/bash/bash-4.3-patched/parse.y"
   1021      { (yyval.command) = make_arith_command ((yyvsp[(1) - (1)].word_list)); }
   1022      break;
   1023  
   1024    case 112:
   1025 -#line 1016 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1026 +#line 1016 "/usr/src/local/bash/bash-4.3-patched/parse.y"
   1027      { (yyval.command) = (yyvsp[(2) - (3)].command); }
   1028      break;
   1029  
   1030    case 113:
   1031 -#line 1020 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1032 +#line 1020 "/usr/src/local/bash/bash-4.3-patched/parse.y"
   1033      { (yyval.command) = make_if_command ((yyvsp[(2) - (4)].command), (yyvsp[(4) - (4)].command), (COMMAND *)NULL); }
   1034      break;
   1035  
   1036    case 114:
   1037 -#line 1022 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1038 +#line 1022 "/usr/src/local/bash/bash-4.3-patched/parse.y"
   1039      { (yyval.command) = make_if_command ((yyvsp[(2) - (6)].command), (yyvsp[(4) - (6)].command), (yyvsp[(6) - (6)].command)); }
   1040      break;
   1041  
   1042    case 115:
   1043 -#line 1024 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1044 +#line 1024 "/usr/src/local/bash/bash-4.3-patched/parse.y"
   1045      { (yyval.command) = make_if_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command), (yyvsp[(5) - (5)].command)); }
   1046      break;
   1047  
   1048    case 117:
   1049 -#line 1029 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1050 +#line 1029 "/usr/src/local/bash/bash-4.3-patched/parse.y"
   1051      { (yyvsp[(2) - (2)].pattern)->next = (yyvsp[(1) - (2)].pattern); (yyval.pattern) = (yyvsp[(2) - (2)].pattern); }
   1052      break;
   1053  
   1054    case 118:
   1055 -#line 1033 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1056 +#line 1033 "/usr/src/local/bash/bash-4.3-patched/parse.y"
   1057      { (yyval.pattern) = make_pattern_list ((yyvsp[(2) - (4)].word_list), (yyvsp[(4) - (4)].command)); }
   1058      break;
   1059  
   1060    case 119:
   1061 -#line 1035 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1062 +#line 1035 "/usr/src/local/bash/bash-4.3-patched/parse.y"
   1063      { (yyval.pattern) = make_pattern_list ((yyvsp[(2) - (4)].word_list), (COMMAND *)NULL); }
   1064      break;
   1065  
   1066    case 120:
   1067 -#line 1037 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1068 +#line 1037 "/usr/src/local/bash/bash-4.3-patched/parse.y"
   1069      { (yyval.pattern) = make_pattern_list ((yyvsp[(3) - (5)].word_list), (yyvsp[(5) - (5)].command)); }
   1070      break;
   1071  
   1072    case 121:
   1073 -#line 1039 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1074 +#line 1039 "/usr/src/local/bash/bash-4.3-patched/parse.y"
   1075      { (yyval.pattern) = make_pattern_list ((yyvsp[(3) - (5)].word_list), (COMMAND *)NULL); }
   1076      break;
   1077  
   1078    case 122:
   1079 -#line 1043 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1080 +#line 1043 "/usr/src/local/bash/bash-4.3-patched/parse.y"
   1081      { (yyval.pattern) = (yyvsp[(1) - (2)].pattern); }
   1082      break;
   1083  
   1084    case 123:
   1085 -#line 1045 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1086 +#line 1045 "/usr/src/local/bash/bash-4.3-patched/parse.y"
   1087      { (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); }
   1088      break;
   1089  
   1090    case 124:
   1091 -#line 1047 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1092 +#line 1047 "/usr/src/local/bash/bash-4.3-patched/parse.y"
   1093      { (yyvsp[(1) - (2)].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyval.pattern) = (yyvsp[(1) - (2)].pattern); }
   1094      break;
   1095  
   1096    case 125:
   1097 -#line 1049 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1098 +#line 1049 "/usr/src/local/bash/bash-4.3-patched/parse.y"
   1099      { (yyvsp[(2) - (3)].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); }
   1100      break;
   1101  
   1102    case 126:
   1103 -#line 1051 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1104 +#line 1051 "/usr/src/local/bash/bash-4.3-patched/parse.y"
   1105      { (yyvsp[(1) - (2)].pattern)->flags |= CASEPAT_TESTNEXT; (yyval.pattern) = (yyvsp[(1) - (2)].pattern); }
   1106      break;
   1107  
   1108    case 127:
   1109 -#line 1053 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1110 +#line 1053 "/usr/src/local/bash/bash-4.3-patched/parse.y"
   1111      { (yyvsp[(2) - (3)].pattern)->flags |= CASEPAT_TESTNEXT; (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); }
   1112      break;
   1113  
   1114    case 128:
   1115 -#line 1057 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1116 +#line 1057 "/usr/src/local/bash/bash-4.3-patched/parse.y"
   1117      { (yyval.word_list) = make_word_list ((yyvsp[(1) - (1)].word), (WORD_LIST *)NULL); }
   1118      break;
   1119  
   1120    case 129:
   1121 -#line 1059 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1122 +#line 1059 "/usr/src/local/bash/bash-4.3-patched/parse.y"
   1123      { (yyval.word_list) = make_word_list ((yyvsp[(3) - (3)].word), (yyvsp[(1) - (3)].word_list)); }
   1124      break;
   1125  
   1126    case 130:
   1127 -#line 1068 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1128 +#line 1068 "/usr/src/local/bash/bash-4.3-patched/parse.y"
   1129      {
   1130  			  (yyval.command) = (yyvsp[(2) - (2)].command);
   1131  			  if (need_here_doc)
   1132 @@ -3114,14 +3114,14 @@ yyreduce:
   1133      break;
   1134  
   1135    case 132:
   1136 -#line 1077 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1137 +#line 1077 "/usr/src/local/bash/bash-4.3-patched/parse.y"
   1138      {
   1139  			  (yyval.command) = (yyvsp[(2) - (2)].command);
   1140  			}
   1141      break;
   1142  
   1143    case 134:
   1144 -#line 1084 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1145 +#line 1084 "/usr/src/local/bash/bash-4.3-patched/parse.y"
   1146      {
   1147  			  if ((yyvsp[(1) - (3)].command)->type == cm_connection)
   1148  			    (yyval.command) = connect_async_list ((yyvsp[(1) - (3)].command), (COMMAND *)NULL, '&');
   1149 @@ -3131,17 +3131,17 @@ yyreduce:
   1150      break;
   1151  
   1152    case 136:
   1153 -#line 1095 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1154 +#line 1095 "/usr/src/local/bash/bash-4.3-patched/parse.y"
   1155      { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), AND_AND); }
   1156      break;
   1157  
   1158    case 137:
   1159 -#line 1097 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1160 +#line 1097 "/usr/src/local/bash/bash-4.3-patched/parse.y"
   1161      { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), OR_OR); }
   1162      break;
   1163  
   1164    case 138:
   1165 -#line 1099 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1166 +#line 1099 "/usr/src/local/bash/bash-4.3-patched/parse.y"
   1167      {
   1168  			  if ((yyvsp[(1) - (4)].command)->type == cm_connection)
   1169  			    (yyval.command) = connect_async_list ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), '&');
   1170 @@ -3151,37 +3151,37 @@ yyreduce:
   1171      break;
   1172  
   1173    case 139:
   1174 -#line 1106 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1175 +#line 1106 "/usr/src/local/bash/bash-4.3-patched/parse.y"
   1176      { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), ';'); }
   1177      break;
   1178  
   1179    case 140:
   1180 -#line 1108 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1181 +#line 1108 "/usr/src/local/bash/bash-4.3-patched/parse.y"
   1182      { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), ';'); }
   1183      break;
   1184  
   1185    case 141:
   1186 -#line 1110 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1187 +#line 1110 "/usr/src/local/bash/bash-4.3-patched/parse.y"
   1188      { (yyval.command) = (yyvsp[(1) - (1)].command); }
   1189      break;
   1190  
   1191    case 144:
   1192 -#line 1118 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1193 +#line 1118 "/usr/src/local/bash/bash-4.3-patched/parse.y"
   1194      { (yyval.number) = '\n'; }
   1195      break;
   1196  
   1197    case 145:
   1198 -#line 1120 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1199 +#line 1120 "/usr/src/local/bash/bash-4.3-patched/parse.y"
   1200      { (yyval.number) = ';'; }
   1201      break;
   1202  
   1203    case 146:
   1204 -#line 1122 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1205 +#line 1122 "/usr/src/local/bash/bash-4.3-patched/parse.y"
   1206      { (yyval.number) = yacc_EOF; }
   1207      break;
   1208  
   1209    case 149:
   1210 -#line 1136 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1211 +#line 1136 "/usr/src/local/bash/bash-4.3-patched/parse.y"
   1212      {
   1213  			  (yyval.command) = (yyvsp[(1) - (1)].command);
   1214  			  if (need_here_doc)
   1215 @@ -3197,7 +3197,7 @@ yyreduce:
   1216      break;
   1217  
   1218    case 150:
   1219 -#line 1149 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1220 +#line 1149 "/usr/src/local/bash/bash-4.3-patched/parse.y"
   1221      {
   1222  			  if ((yyvsp[(1) - (2)].command)->type == cm_connection)
   1223  			    (yyval.command) = connect_async_list ((yyvsp[(1) - (2)].command), (COMMAND *)NULL, '&');
   1224 @@ -3216,7 +3216,7 @@ yyreduce:
   1225      break;
   1226  
   1227    case 151:
   1228 -#line 1165 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1229 +#line 1165 "/usr/src/local/bash/bash-4.3-patched/parse.y"
   1230      {
   1231  			  (yyval.command) = (yyvsp[(1) - (2)].command);
   1232  			  if (need_here_doc)
   1233 @@ -3232,17 +3232,17 @@ yyreduce:
   1234      break;
   1235  
   1236    case 152:
   1237 -#line 1180 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1238 +#line 1180 "/usr/src/local/bash/bash-4.3-patched/parse.y"
   1239      { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), AND_AND); }
   1240      break;
   1241  
   1242    case 153:
   1243 -#line 1182 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1244 +#line 1182 "/usr/src/local/bash/bash-4.3-patched/parse.y"
   1245      { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), OR_OR); }
   1246      break;
   1247  
   1248    case 154:
   1249 -#line 1184 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1250 +#line 1184 "/usr/src/local/bash/bash-4.3-patched/parse.y"
   1251      {
   1252  			  if ((yyvsp[(1) - (3)].command)->type == cm_connection)
   1253  			    (yyval.command) = connect_async_list ((yyvsp[(1) - (3)].command), (yyvsp[(3) - (3)].command), '&');
   1254 @@ -3252,22 +3252,22 @@ yyreduce:
   1255      break;
   1256  
   1257    case 155:
   1258 -#line 1191 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1259 +#line 1191 "/usr/src/local/bash/bash-4.3-patched/parse.y"
   1260      { (yyval.command) = command_connect ((yyvsp[(1) - (3)].command), (yyvsp[(3) - (3)].command), ';'); }
   1261      break;
   1262  
   1263    case 156:
   1264 -#line 1194 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1265 +#line 1194 "/usr/src/local/bash/bash-4.3-patched/parse.y"
   1266      { (yyval.command) = (yyvsp[(1) - (1)].command); }
   1267      break;
   1268  
   1269    case 157:
   1270 -#line 1198 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1271 +#line 1198 "/usr/src/local/bash/bash-4.3-patched/parse.y"
   1272      { (yyval.command) = (yyvsp[(1) - (1)].command); }
   1273      break;
   1274  
   1275    case 158:
   1276 -#line 1200 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1277 +#line 1200 "/usr/src/local/bash/bash-4.3-patched/parse.y"
   1278      {
   1279  			  if ((yyvsp[(2) - (2)].command))
   1280  			    (yyvsp[(2) - (2)].command)->flags ^= CMD_INVERT_RETURN;	/* toggle */
   1281 @@ -3276,7 +3276,7 @@ yyreduce:
   1282      break;
   1283  
   1284    case 159:
   1285 -#line 1206 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1286 +#line 1206 "/usr/src/local/bash/bash-4.3-patched/parse.y"
   1287      {
   1288  			  if ((yyvsp[(2) - (2)].command))
   1289  			    (yyvsp[(2) - (2)].command)->flags |= (yyvsp[(1) - (2)].number);
   1290 @@ -3285,7 +3285,7 @@ yyreduce:
   1291      break;
   1292  
   1293    case 160:
   1294 -#line 1212 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1295 +#line 1212 "/usr/src/local/bash/bash-4.3-patched/parse.y"
   1296      {
   1297  			  ELEMENT x;
   1298  
   1299 @@ -3305,7 +3305,7 @@ yyreduce:
   1300      break;
   1301  
   1302    case 161:
   1303 -#line 1229 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1304 +#line 1229 "/usr/src/local/bash/bash-4.3-patched/parse.y"
   1305      {
   1306  			  ELEMENT x;
   1307  
   1308 @@ -3326,12 +3326,12 @@ yyreduce:
   1309      break;
   1310  
   1311    case 162:
   1312 -#line 1249 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1313 +#line 1249 "/usr/src/local/bash/bash-4.3-patched/parse.y"
   1314      { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), '|'); }
   1315      break;
   1316  
   1317    case 163:
   1318 -#line 1251 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1319 +#line 1251 "/usr/src/local/bash/bash-4.3-patched/parse.y"
   1320      {
   1321  			  /* Make cmd1 |& cmd2 equivalent to cmd1 2>&1 | cmd2 */
   1322  			  COMMAND *tc;
   1323 @@ -3357,22 +3357,22 @@ yyreduce:
   1324      break;
   1325  
   1326    case 164:
   1327 -#line 1274 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1328 +#line 1274 "/usr/src/local/bash/bash-4.3-patched/parse.y"
   1329      { (yyval.command) = (yyvsp[(1) - (1)].command); }
   1330      break;
   1331  
   1332    case 165:
   1333 -#line 1278 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1334 +#line 1278 "/usr/src/local/bash/bash-4.3-patched/parse.y"
   1335      { (yyval.number) = CMD_TIME_PIPELINE; }
   1336      break;
   1337  
   1338    case 166:
   1339 -#line 1280 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1340 +#line 1280 "/usr/src/local/bash/bash-4.3-patched/parse.y"
   1341      { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
   1342      break;
   1343  
   1344    case 167:
   1345 -#line 1282 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1346 +#line 1282 "/usr/src/local/bash/bash-4.3-patched/parse.y"
   1347      { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
   1348      break;
   1349  
   1350 @@ -3592,7 +3592,7 @@ yyreturn:
   1351  }
   1352  
   1353  
   1354 -#line 1284 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
   1355 +#line 1284 "/usr/src/local/bash/bash-4.3-patched/parse.y"
   1356  
   1357  
   1358  /* Initial size to allocate for tokens, and the
   1359 @@ -4850,6 +4850,16 @@ shell_ungetc (c)
   1360      eol_ungetc_lookahead = c;
   1361  }
   1362  
   1363 +char *
   1364 +parser_remaining_input ()
   1365 +{
   1366 +  if (shell_input_line == 0)
   1367 +    return 0;
   1368 +  if (shell_input_line_index < 0 || shell_input_line_index >= shell_input_line_len)
   1369 +    return '\0';	/* XXX */
   1370 +  return (shell_input_line + shell_input_line_index);
   1371 +}
   1372 +
   1373  #ifdef INCLUDE_UNUSED
   1374  /* Back the input pointer up by one, effectively `ungetting' a character. */
   1375  static void
   1376 @@ -6339,8 +6349,8 @@ xparse_dolparen (base, string, indp, fla
   1377    reset_parser ();
   1378    /* reset_parser clears shell_input_line and associated variables */
   1379    restore_input_line_state (&ls);
   1380 -  if (interactive)
   1381 -    token_to_read = 0;
   1382 +
   1383 +  token_to_read = 0;
   1384  
   1385    /* Need to find how many characters parse_and_execute consumed, update
   1386       *indp, if flags != 0, copy the portion of the string parsed into RET
   1387 --- a/patchlevel.h
   1388 +++ b/patchlevel.h
   1389 @@ -25,6 +25,6 @@
   1390     regexp `^#define[ 	]*PATCHLEVEL', since that's what support/mkversion.sh
   1391     looks for to find the patch level (for the sccs version string). */
   1392  
   1393 -#define PATCHLEVEL 29
   1394 +#define PATCHLEVEL 30
   1395  
   1396  #endif /* _PATCHLEVEL_H_ */