7 Bug-Reported-by: Michal Zalewski <lcamtuf@coredump.cx>
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.
17 Patch (apply with `patch -p0'):
19 *** ../bash-4.3.29/builtins/evalstring.c 2014-10-01 12:57:47.000000000 -0400
20 --- builtins/evalstring.c 2014-10-03 11:57:04.000000000 -0400
23 struct fd_bitmap *bitmap;
25 ! if ((flags & SEVAL_FUNCDEF) && command->type != cm_function_def)
27 ! internal_warning ("%s: ignoring function definition attempt", from_file);
28 ! should_jump_to_top_level = 0;
29 ! last_result = last_command_exit_value = EX_BADUSAGE;
34 struct fd_bitmap *bitmap;
36 ! if (flags & SEVAL_FUNCDEF)
40 ! /* If the command parses to something other than a straight
41 ! function definition, or if we have not consumed the entire
42 ! string, or if the parser has transformed the function
43 ! name (as parsing will if it begins or ends with shell
44 ! whitespace, for example), reject the attempt */
45 ! if (command->type != cm_function_def ||
46 ! ((x = parser_remaining_input ()) && *x) ||
47 ! (STREQ (from_file, command->value.Function_def->name->word) == 0))
49 ! internal_warning (_("%s: ignoring function definition attempt"), from_file);
50 ! should_jump_to_top_level = 0;
51 ! last_result = last_command_exit_value = EX_BADUSAGE;
60 if (flags & SEVAL_ONECMD)
66 if (flags & SEVAL_ONECMD)
73 *** ../bash-4.3.29/parse.y 2014-10-01 12:58:43.000000000 -0400
74 --- parse.y 2014-10-03 14:48:59.000000000 -0400
81 + parser_remaining_input ()
83 + if (shell_input_line == 0)
85 + if (shell_input_line_index < 0 || shell_input_line_index >= shell_input_line_len)
86 + return '\0'; /* XXX */
87 + return (shell_input_line + shell_input_line_index);
91 /* Back the input pointer up by one, effectively `ungetting' a character. */
94 /* reset_parser clears shell_input_line and associated variables */
95 restore_input_line_state (&ls);
99 /* Need to find how many characters parse_and_execute consumed, update
101 /* reset_parser clears shell_input_line and associated variables */
102 restore_input_line_state (&ls);
106 /* Need to find how many characters parse_and_execute consumed, update
107 *** ../bash-4.3.29/shell.h 2014-10-01 12:57:39.000000000 -0400
108 --- shell.h 2014-10-03 14:49:12.000000000 -0400
113 /* Let's try declaring these here. */
114 + extern char *parser_remaining_input __P((void));
116 extern sh_parser_state_t *save_parser_state __P((sh_parser_state_t *));
117 extern void restore_parser_state __P((sh_parser_state_t *));
118 *** ../bash-4.3.28/y.tab.c 2014-10-01 13:09:46.000000000 -0400
119 --- y.tab.c 2014-10-04 19:26:22.000000000 -0400
123 /* Copy the first part of user declarations. */
124 ! #line 21 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
129 /* Copy the first part of user declarations. */
130 ! #line 21 "/usr/src/local/bash/bash-4.3-patched/parse.y"
135 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
136 typedef union YYSTYPE
137 ! #line 329 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
139 WORD_DESC *word; /* the word that we read. */
141 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
142 typedef union YYSTYPE
143 ! #line 329 "/usr/src/local/bash/bash-4.3-patched/parse.y"
145 WORD_DESC *word; /* the word that we read. */
150 ! #line 383 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
152 /* Case of regular command. Discard the error
156 ! #line 383 "/usr/src/local/bash/bash-4.3-patched/parse.y"
158 /* Case of regular command. Discard the error
163 ! #line 394 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
165 /* Case of regular command, but not a very
169 ! #line 394 "/usr/src/local/bash/bash-4.3-patched/parse.y"
171 /* Case of regular command, but not a very
176 ! #line 403 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
178 /* Error during parsing. Return NULL command. */
182 ! #line 403 "/usr/src/local/bash/bash-4.3-patched/parse.y"
184 /* Error during parsing. Return NULL command. */
189 ! #line 418 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
191 /* Case of EOF seen by itself. Do ignoreeof or
195 ! #line 418 "/usr/src/local/bash/bash-4.3-patched/parse.y"
197 /* Case of EOF seen by itself. Do ignoreeof or
202 ! #line 428 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
203 { (yyval.word_list) = make_word_list ((yyvsp[(1) - (1)].word), (WORD_LIST *)NULL); }
207 ! #line 430 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
208 { (yyval.word_list) = make_word_list ((yyvsp[(2) - (2)].word), (yyvsp[(1) - (2)].word_list)); }
212 ! #line 434 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
218 ! #line 428 "/usr/src/local/bash/bash-4.3-patched/parse.y"
219 { (yyval.word_list) = make_word_list ((yyvsp[(1) - (1)].word), (WORD_LIST *)NULL); }
223 ! #line 430 "/usr/src/local/bash/bash-4.3-patched/parse.y"
224 { (yyval.word_list) = make_word_list ((yyvsp[(2) - (2)].word), (yyvsp[(1) - (2)].word_list)); }
228 ! #line 434 "/usr/src/local/bash/bash-4.3-patched/parse.y"
235 ! #line 440 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
241 ! #line 440 "/usr/src/local/bash/bash-4.3-patched/parse.y"
248 ! #line 446 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
250 source.dest = (yyvsp[(1) - (3)].number);
254 ! #line 446 "/usr/src/local/bash/bash-4.3-patched/parse.y"
256 source.dest = (yyvsp[(1) - (3)].number);
261 ! #line 452 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
263 source.dest = (yyvsp[(1) - (3)].number);
267 ! #line 452 "/usr/src/local/bash/bash-4.3-patched/parse.y"
269 source.dest = (yyvsp[(1) - (3)].number);
274 ! #line 458 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
276 source.filename = (yyvsp[(1) - (3)].word);
280 ! #line 458 "/usr/src/local/bash/bash-4.3-patched/parse.y"
282 source.filename = (yyvsp[(1) - (3)].word);
287 ! #line 464 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
289 source.filename = (yyvsp[(1) - (3)].word);
293 ! #line 464 "/usr/src/local/bash/bash-4.3-patched/parse.y"
295 source.filename = (yyvsp[(1) - (3)].word);
300 ! #line 470 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
306 ! #line 470 "/usr/src/local/bash/bash-4.3-patched/parse.y"
313 ! #line 476 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
315 source.dest = (yyvsp[(1) - (3)].number);
319 ! #line 476 "/usr/src/local/bash/bash-4.3-patched/parse.y"
321 source.dest = (yyvsp[(1) - (3)].number);
326 ! #line 482 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
328 source.filename = (yyvsp[(1) - (3)].word);
332 ! #line 482 "/usr/src/local/bash/bash-4.3-patched/parse.y"
334 source.filename = (yyvsp[(1) - (3)].word);
339 ! #line 488 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
345 ! #line 488 "/usr/src/local/bash/bash-4.3-patched/parse.y"
352 ! #line 494 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
354 source.dest = (yyvsp[(1) - (3)].number);
358 ! #line 494 "/usr/src/local/bash/bash-4.3-patched/parse.y"
360 source.dest = (yyvsp[(1) - (3)].number);
365 ! #line 500 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
367 source.filename = (yyvsp[(1) - (3)].word);
371 ! #line 500 "/usr/src/local/bash/bash-4.3-patched/parse.y"
373 source.filename = (yyvsp[(1) - (3)].word);
378 ! #line 506 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
384 ! #line 506 "/usr/src/local/bash/bash-4.3-patched/parse.y"
391 ! #line 512 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
393 source.dest = (yyvsp[(1) - (3)].number);
397 ! #line 512 "/usr/src/local/bash/bash-4.3-patched/parse.y"
399 source.dest = (yyvsp[(1) - (3)].number);
404 ! #line 518 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
406 source.filename = (yyvsp[(1) - (3)].word);
410 ! #line 518 "/usr/src/local/bash/bash-4.3-patched/parse.y"
412 source.filename = (yyvsp[(1) - (3)].word);
417 ! #line 524 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
423 ! #line 524 "/usr/src/local/bash/bash-4.3-patched/parse.y"
430 ! #line 531 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
432 source.dest = (yyvsp[(1) - (3)].number);
436 ! #line 531 "/usr/src/local/bash/bash-4.3-patched/parse.y"
438 source.dest = (yyvsp[(1) - (3)].number);
443 ! #line 538 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
445 source.filename = (yyvsp[(1) - (3)].word);
449 ! #line 538 "/usr/src/local/bash/bash-4.3-patched/parse.y"
451 source.filename = (yyvsp[(1) - (3)].word);
456 ! #line 545 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
462 ! #line 545 "/usr/src/local/bash/bash-4.3-patched/parse.y"
469 ! #line 552 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
471 source.dest = (yyvsp[(1) - (3)].number);
475 ! #line 552 "/usr/src/local/bash/bash-4.3-patched/parse.y"
477 source.dest = (yyvsp[(1) - (3)].number);
482 ! #line 559 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
484 source.filename = (yyvsp[(1) - (3)].word);
488 ! #line 559 "/usr/src/local/bash/bash-4.3-patched/parse.y"
490 source.filename = (yyvsp[(1) - (3)].word);
495 ! #line 566 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
501 ! #line 566 "/usr/src/local/bash/bash-4.3-patched/parse.y"
508 ! #line 572 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
510 source.dest = (yyvsp[(1) - (3)].number);
514 ! #line 572 "/usr/src/local/bash/bash-4.3-patched/parse.y"
516 source.dest = (yyvsp[(1) - (3)].number);
521 ! #line 578 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
523 source.filename = (yyvsp[(1) - (3)].word);
527 ! #line 578 "/usr/src/local/bash/bash-4.3-patched/parse.y"
529 source.filename = (yyvsp[(1) - (3)].word);
534 ! #line 584 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
540 ! #line 584 "/usr/src/local/bash/bash-4.3-patched/parse.y"
547 ! #line 590 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
549 source.dest = (yyvsp[(1) - (3)].number);
553 ! #line 590 "/usr/src/local/bash/bash-4.3-patched/parse.y"
555 source.dest = (yyvsp[(1) - (3)].number);
560 ! #line 596 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
562 source.filename = (yyvsp[(1) - (3)].word);
566 ! #line 596 "/usr/src/local/bash/bash-4.3-patched/parse.y"
568 source.filename = (yyvsp[(1) - (3)].word);
573 ! #line 602 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
579 ! #line 602 "/usr/src/local/bash/bash-4.3-patched/parse.y"
586 ! #line 608 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
588 source.dest = (yyvsp[(1) - (3)].number);
592 ! #line 608 "/usr/src/local/bash/bash-4.3-patched/parse.y"
594 source.dest = (yyvsp[(1) - (3)].number);
599 ! #line 614 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
601 source.filename = (yyvsp[(1) - (3)].word);
605 ! #line 614 "/usr/src/local/bash/bash-4.3-patched/parse.y"
607 source.filename = (yyvsp[(1) - (3)].word);
612 ! #line 620 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
618 ! #line 620 "/usr/src/local/bash/bash-4.3-patched/parse.y"
625 ! #line 626 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
627 source.dest = (yyvsp[(1) - (3)].number);
631 ! #line 626 "/usr/src/local/bash/bash-4.3-patched/parse.y"
633 source.dest = (yyvsp[(1) - (3)].number);
638 ! #line 632 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
640 source.filename = (yyvsp[(1) - (3)].word);
644 ! #line 632 "/usr/src/local/bash/bash-4.3-patched/parse.y"
646 source.filename = (yyvsp[(1) - (3)].word);
651 ! #line 638 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
657 ! #line 638 "/usr/src/local/bash/bash-4.3-patched/parse.y"
664 ! #line 644 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
666 source.dest = (yyvsp[(1) - (3)].number);
670 ! #line 644 "/usr/src/local/bash/bash-4.3-patched/parse.y"
672 source.dest = (yyvsp[(1) - (3)].number);
677 ! #line 650 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
679 source.filename = (yyvsp[(1) - (3)].word);
683 ! #line 650 "/usr/src/local/bash/bash-4.3-patched/parse.y"
685 source.filename = (yyvsp[(1) - (3)].word);
690 ! #line 656 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
696 ! #line 656 "/usr/src/local/bash/bash-4.3-patched/parse.y"
703 ! #line 662 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
705 source.dest = (yyvsp[(1) - (3)].number);
709 ! #line 662 "/usr/src/local/bash/bash-4.3-patched/parse.y"
711 source.dest = (yyvsp[(1) - (3)].number);
716 ! #line 668 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
718 source.filename = (yyvsp[(1) - (3)].word);
722 ! #line 668 "/usr/src/local/bash/bash-4.3-patched/parse.y"
724 source.filename = (yyvsp[(1) - (3)].word);
729 ! #line 674 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
735 ! #line 674 "/usr/src/local/bash/bash-4.3-patched/parse.y"
742 ! #line 680 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
744 source.dest = (yyvsp[(1) - (3)].number);
748 ! #line 680 "/usr/src/local/bash/bash-4.3-patched/parse.y"
750 source.dest = (yyvsp[(1) - (3)].number);
755 ! #line 686 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
757 source.filename = (yyvsp[(1) - (3)].word);
761 ! #line 686 "/usr/src/local/bash/bash-4.3-patched/parse.y"
763 source.filename = (yyvsp[(1) - (3)].word);
768 ! #line 692 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
774 ! #line 692 "/usr/src/local/bash/bash-4.3-patched/parse.y"
781 ! #line 698 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
787 ! #line 698 "/usr/src/local/bash/bash-4.3-patched/parse.y"
794 ! #line 706 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
795 { (yyval.element).word = (yyvsp[(1) - (1)].word); (yyval.element).redirect = 0; }
799 ! #line 708 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
800 { (yyval.element).word = (yyvsp[(1) - (1)].word); (yyval.element).redirect = 0; }
804 ! #line 710 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
805 { (yyval.element).redirect = (yyvsp[(1) - (1)].redirect); (yyval.element).word = 0; }
809 ! #line 714 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
811 (yyval.redirect) = (yyvsp[(1) - (1)].redirect);
815 ! #line 706 "/usr/src/local/bash/bash-4.3-patched/parse.y"
816 { (yyval.element).word = (yyvsp[(1) - (1)].word); (yyval.element).redirect = 0; }
820 ! #line 708 "/usr/src/local/bash/bash-4.3-patched/parse.y"
821 { (yyval.element).word = (yyvsp[(1) - (1)].word); (yyval.element).redirect = 0; }
825 ! #line 710 "/usr/src/local/bash/bash-4.3-patched/parse.y"
826 { (yyval.element).redirect = (yyvsp[(1) - (1)].redirect); (yyval.element).word = 0; }
830 ! #line 714 "/usr/src/local/bash/bash-4.3-patched/parse.y"
832 (yyval.redirect) = (yyvsp[(1) - (1)].redirect);
837 ! #line 718 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
839 register REDIRECT *t;
843 ! #line 718 "/usr/src/local/bash/bash-4.3-patched/parse.y"
845 register REDIRECT *t;
850 ! #line 729 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
851 { (yyval.command) = make_simple_command ((yyvsp[(1) - (1)].element), (COMMAND *)NULL); }
855 ! #line 731 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
856 { (yyval.command) = make_simple_command ((yyvsp[(2) - (2)].element), (yyvsp[(1) - (2)].command)); }
860 ! #line 735 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
861 { (yyval.command) = clean_simple_command ((yyvsp[(1) - (1)].command)); }
865 ! #line 737 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
866 { (yyval.command) = (yyvsp[(1) - (1)].command); }
870 ! #line 739 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
876 ! #line 729 "/usr/src/local/bash/bash-4.3-patched/parse.y"
877 { (yyval.command) = make_simple_command ((yyvsp[(1) - (1)].element), (COMMAND *)NULL); }
881 ! #line 731 "/usr/src/local/bash/bash-4.3-patched/parse.y"
882 { (yyval.command) = make_simple_command ((yyvsp[(2) - (2)].element), (yyvsp[(1) - (2)].command)); }
886 ! #line 735 "/usr/src/local/bash/bash-4.3-patched/parse.y"
887 { (yyval.command) = clean_simple_command ((yyvsp[(1) - (1)].command)); }
891 ! #line 737 "/usr/src/local/bash/bash-4.3-patched/parse.y"
892 { (yyval.command) = (yyvsp[(1) - (1)].command); }
896 ! #line 739 "/usr/src/local/bash/bash-4.3-patched/parse.y"
903 ! #line 755 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
904 { (yyval.command) = (yyvsp[(1) - (1)].command); }
908 ! #line 757 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
909 { (yyval.command) = (yyvsp[(1) - (1)].command); }
913 ! #line 761 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
914 { (yyval.command) = (yyvsp[(1) - (1)].command); }
918 ! #line 763 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
919 { (yyval.command) = (yyvsp[(1) - (1)].command); }
923 ! #line 765 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
924 { (yyval.command) = make_while_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command)); }
928 ! #line 767 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
929 { (yyval.command) = make_until_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command)); }
933 ! #line 769 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
934 { (yyval.command) = (yyvsp[(1) - (1)].command); }
938 ! #line 771 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
939 { (yyval.command) = (yyvsp[(1) - (1)].command); }
943 ! #line 773 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
944 { (yyval.command) = (yyvsp[(1) - (1)].command); }
948 ! #line 775 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
949 { (yyval.command) = (yyvsp[(1) - (1)].command); }
953 ! #line 777 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
954 { (yyval.command) = (yyvsp[(1) - (1)].command); }
958 ! #line 779 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
959 { (yyval.command) = (yyvsp[(1) - (1)].command); }
963 ! #line 781 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
964 { (yyval.command) = (yyvsp[(1) - (1)].command); }
968 ! #line 785 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
970 (yyval.command) = make_for_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
974 ! #line 755 "/usr/src/local/bash/bash-4.3-patched/parse.y"
975 { (yyval.command) = (yyvsp[(1) - (1)].command); }
979 ! #line 757 "/usr/src/local/bash/bash-4.3-patched/parse.y"
980 { (yyval.command) = (yyvsp[(1) - (1)].command); }
984 ! #line 761 "/usr/src/local/bash/bash-4.3-patched/parse.y"
985 { (yyval.command) = (yyvsp[(1) - (1)].command); }
989 ! #line 763 "/usr/src/local/bash/bash-4.3-patched/parse.y"
990 { (yyval.command) = (yyvsp[(1) - (1)].command); }
994 ! #line 765 "/usr/src/local/bash/bash-4.3-patched/parse.y"
995 { (yyval.command) = make_while_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command)); }
999 ! #line 767 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1000 { (yyval.command) = make_until_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command)); }
1004 ! #line 769 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1005 { (yyval.command) = (yyvsp[(1) - (1)].command); }
1009 ! #line 771 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1010 { (yyval.command) = (yyvsp[(1) - (1)].command); }
1014 ! #line 773 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1015 { (yyval.command) = (yyvsp[(1) - (1)].command); }
1019 ! #line 775 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1020 { (yyval.command) = (yyvsp[(1) - (1)].command); }
1024 ! #line 777 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1025 { (yyval.command) = (yyvsp[(1) - (1)].command); }
1029 ! #line 779 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1030 { (yyval.command) = (yyvsp[(1) - (1)].command); }
1034 ! #line 781 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1035 { (yyval.command) = (yyvsp[(1) - (1)].command); }
1039 ! #line 785 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1041 (yyval.command) = make_for_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
1046 ! #line 790 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1048 (yyval.command) = make_for_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
1052 ! #line 790 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1054 (yyval.command) = make_for_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
1059 ! #line 795 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1061 (yyval.command) = make_for_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
1065 ! #line 795 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1067 (yyval.command) = make_for_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
1072 ! #line 800 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1074 (yyval.command) = make_for_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
1078 ! #line 800 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1080 (yyval.command) = make_for_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
1085 ! #line 805 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1087 (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]);
1091 ! #line 805 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1093 (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]);
1098 ! #line 810 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1100 (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]);
1104 ! #line 810 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1106 (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]);
1111 ! #line 815 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1113 (yyval.command) = make_for_command ((yyvsp[(2) - (9)].word), (WORD_LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]);
1117 ! #line 815 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1119 (yyval.command) = make_for_command ((yyvsp[(2) - (9)].word), (WORD_LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]);
1124 ! #line 820 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1126 (yyval.command) = make_for_command ((yyvsp[(2) - (9)].word), (WORD_LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]);
1130 ! #line 820 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1132 (yyval.command) = make_for_command ((yyvsp[(2) - (9)].word), (WORD_LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]);
1137 ! #line 827 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1139 (yyval.command) = make_arith_for_command ((yyvsp[(2) - (7)].word_list), (yyvsp[(6) - (7)].command), arith_for_lineno);
1143 ! #line 827 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1145 (yyval.command) = make_arith_for_command ((yyvsp[(2) - (7)].word_list), (yyvsp[(6) - (7)].command), arith_for_lineno);
1150 ! #line 832 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1152 (yyval.command) = make_arith_for_command ((yyvsp[(2) - (7)].word_list), (yyvsp[(6) - (7)].command), arith_for_lineno);
1156 ! #line 832 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1158 (yyval.command) = make_arith_for_command ((yyvsp[(2) - (7)].word_list), (yyvsp[(6) - (7)].command), arith_for_lineno);
1163 ! #line 837 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1165 (yyval.command) = make_arith_for_command ((yyvsp[(2) - (5)].word_list), (yyvsp[(4) - (5)].command), arith_for_lineno);
1169 ! #line 837 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1171 (yyval.command) = make_arith_for_command ((yyvsp[(2) - (5)].word_list), (yyvsp[(4) - (5)].command), arith_for_lineno);
1176 ! #line 842 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1178 (yyval.command) = make_arith_for_command ((yyvsp[(2) - (5)].word_list), (yyvsp[(4) - (5)].command), arith_for_lineno);
1182 ! #line 842 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1184 (yyval.command) = make_arith_for_command ((yyvsp[(2) - (5)].word_list), (yyvsp[(4) - (5)].command), arith_for_lineno);
1189 ! #line 849 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1191 (yyval.command) = make_select_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
1195 ! #line 849 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1197 (yyval.command) = make_select_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
1202 ! #line 854 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1204 (yyval.command) = make_select_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
1208 ! #line 854 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1210 (yyval.command) = make_select_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
1215 ! #line 859 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1217 (yyval.command) = make_select_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
1221 ! #line 859 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1223 (yyval.command) = make_select_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
1228 ! #line 864 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1230 (yyval.command) = make_select_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
1234 ! #line 864 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1236 (yyval.command) = make_select_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
1241 ! #line 869 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1243 (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]);
1247 ! #line 869 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1249 (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]);
1254 ! #line 874 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1256 (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]);
1260 ! #line 874 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1262 (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]);
1267 ! #line 881 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1269 (yyval.command) = make_case_command ((yyvsp[(2) - (6)].word), (PATTERN_LIST *)NULL, word_lineno[word_top]);
1273 ! #line 881 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1275 (yyval.command) = make_case_command ((yyvsp[(2) - (6)].word), (PATTERN_LIST *)NULL, word_lineno[word_top]);
1280 ! #line 886 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1282 (yyval.command) = make_case_command ((yyvsp[(2) - (7)].word), (yyvsp[(5) - (7)].pattern), word_lineno[word_top]);
1286 ! #line 886 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1288 (yyval.command) = make_case_command ((yyvsp[(2) - (7)].word), (yyvsp[(5) - (7)].pattern), word_lineno[word_top]);
1293 ! #line 891 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1295 (yyval.command) = make_case_command ((yyvsp[(2) - (6)].word), (yyvsp[(5) - (6)].pattern), word_lineno[word_top]);
1299 ! #line 891 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1301 (yyval.command) = make_case_command ((yyvsp[(2) - (6)].word), (yyvsp[(5) - (6)].pattern), word_lineno[word_top]);
1306 ! #line 898 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1307 { (yyval.command) = make_function_def ((yyvsp[(1) - (5)].word), (yyvsp[(5) - (5)].command), function_dstart, function_bstart); }
1311 ! #line 901 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1312 { (yyval.command) = make_function_def ((yyvsp[(2) - (6)].word), (yyvsp[(6) - (6)].command), function_dstart, function_bstart); }
1316 ! #line 904 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1317 { (yyval.command) = make_function_def ((yyvsp[(2) - (4)].word), (yyvsp[(4) - (4)].command), function_dstart, function_bstart); }
1321 ! #line 908 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1322 { (yyval.command) = (yyvsp[(1) - (1)].command); }
1326 ! #line 910 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1332 ! #line 898 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1333 { (yyval.command) = make_function_def ((yyvsp[(1) - (5)].word), (yyvsp[(5) - (5)].command), function_dstart, function_bstart); }
1337 ! #line 901 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1338 { (yyval.command) = make_function_def ((yyvsp[(2) - (6)].word), (yyvsp[(6) - (6)].command), function_dstart, function_bstart); }
1342 ! #line 904 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1343 { (yyval.command) = make_function_def ((yyvsp[(2) - (4)].word), (yyvsp[(4) - (4)].command), function_dstart, function_bstart); }
1347 ! #line 908 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1348 { (yyval.command) = (yyvsp[(1) - (1)].command); }
1352 ! #line 910 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1359 ! #line 941 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1361 (yyval.command) = make_subshell_command ((yyvsp[(2) - (3)].command));
1365 ! #line 941 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1367 (yyval.command) = make_subshell_command ((yyvsp[(2) - (3)].command));
1372 ! #line 948 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1374 (yyval.command) = make_coproc_command ("COPROC", (yyvsp[(2) - (2)].command));
1378 ! #line 948 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1380 (yyval.command) = make_coproc_command ("COPROC", (yyvsp[(2) - (2)].command));
1385 ! #line 953 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1391 ! #line 953 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1398 ! #line 970 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1400 (yyval.command) = make_coproc_command ((yyvsp[(2) - (3)].word)->word, (yyvsp[(3) - (3)].command));
1404 ! #line 970 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1406 (yyval.command) = make_coproc_command ((yyvsp[(2) - (3)].word)->word, (yyvsp[(3) - (3)].command));
1411 ! #line 975 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1417 ! #line 975 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1424 ! #line 992 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1426 (yyval.command) = make_coproc_command ("COPROC", clean_simple_command ((yyvsp[(2) - (2)].command)));
1430 ! #line 992 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1432 (yyval.command) = make_coproc_command ("COPROC", clean_simple_command ((yyvsp[(2) - (2)].command)));
1437 ! #line 999 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1438 { (yyval.command) = make_if_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command), (COMMAND *)NULL); }
1442 ! #line 1001 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1443 { (yyval.command) = make_if_command ((yyvsp[(2) - (7)].command), (yyvsp[(4) - (7)].command), (yyvsp[(6) - (7)].command)); }
1447 ! #line 1003 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1448 { (yyval.command) = make_if_command ((yyvsp[(2) - (6)].command), (yyvsp[(4) - (6)].command), (yyvsp[(5) - (6)].command)); }
1452 ! #line 1008 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1453 { (yyval.command) = make_group_command ((yyvsp[(2) - (3)].command)); }
1457 ! #line 1012 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1458 { (yyval.command) = make_arith_command ((yyvsp[(1) - (1)].word_list)); }
1462 ! #line 1016 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1463 { (yyval.command) = (yyvsp[(2) - (3)].command); }
1467 ! #line 1020 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1468 { (yyval.command) = make_if_command ((yyvsp[(2) - (4)].command), (yyvsp[(4) - (4)].command), (COMMAND *)NULL); }
1472 ! #line 1022 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1473 { (yyval.command) = make_if_command ((yyvsp[(2) - (6)].command), (yyvsp[(4) - (6)].command), (yyvsp[(6) - (6)].command)); }
1477 ! #line 1024 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1478 { (yyval.command) = make_if_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command), (yyvsp[(5) - (5)].command)); }
1482 ! #line 1029 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1483 { (yyvsp[(2) - (2)].pattern)->next = (yyvsp[(1) - (2)].pattern); (yyval.pattern) = (yyvsp[(2) - (2)].pattern); }
1487 ! #line 1033 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1488 { (yyval.pattern) = make_pattern_list ((yyvsp[(2) - (4)].word_list), (yyvsp[(4) - (4)].command)); }
1492 ! #line 1035 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1493 { (yyval.pattern) = make_pattern_list ((yyvsp[(2) - (4)].word_list), (COMMAND *)NULL); }
1497 ! #line 1037 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1498 { (yyval.pattern) = make_pattern_list ((yyvsp[(3) - (5)].word_list), (yyvsp[(5) - (5)].command)); }
1502 ! #line 1039 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1503 { (yyval.pattern) = make_pattern_list ((yyvsp[(3) - (5)].word_list), (COMMAND *)NULL); }
1507 ! #line 1043 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1508 { (yyval.pattern) = (yyvsp[(1) - (2)].pattern); }
1512 ! #line 1045 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1513 { (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); }
1517 ! #line 1047 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1518 { (yyvsp[(1) - (2)].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyval.pattern) = (yyvsp[(1) - (2)].pattern); }
1522 ! #line 1049 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1523 { (yyvsp[(2) - (3)].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); }
1527 ! #line 1051 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1528 { (yyvsp[(1) - (2)].pattern)->flags |= CASEPAT_TESTNEXT; (yyval.pattern) = (yyvsp[(1) - (2)].pattern); }
1532 ! #line 1053 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1533 { (yyvsp[(2) - (3)].pattern)->flags |= CASEPAT_TESTNEXT; (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); }
1537 ! #line 1057 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1538 { (yyval.word_list) = make_word_list ((yyvsp[(1) - (1)].word), (WORD_LIST *)NULL); }
1542 ! #line 1059 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1543 { (yyval.word_list) = make_word_list ((yyvsp[(3) - (3)].word), (yyvsp[(1) - (3)].word_list)); }
1547 ! #line 1068 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1549 (yyval.command) = (yyvsp[(2) - (2)].command);
1553 ! #line 999 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1554 { (yyval.command) = make_if_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command), (COMMAND *)NULL); }
1558 ! #line 1001 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1559 { (yyval.command) = make_if_command ((yyvsp[(2) - (7)].command), (yyvsp[(4) - (7)].command), (yyvsp[(6) - (7)].command)); }
1563 ! #line 1003 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1564 { (yyval.command) = make_if_command ((yyvsp[(2) - (6)].command), (yyvsp[(4) - (6)].command), (yyvsp[(5) - (6)].command)); }
1568 ! #line 1008 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1569 { (yyval.command) = make_group_command ((yyvsp[(2) - (3)].command)); }
1573 ! #line 1012 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1574 { (yyval.command) = make_arith_command ((yyvsp[(1) - (1)].word_list)); }
1578 ! #line 1016 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1579 { (yyval.command) = (yyvsp[(2) - (3)].command); }
1583 ! #line 1020 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1584 { (yyval.command) = make_if_command ((yyvsp[(2) - (4)].command), (yyvsp[(4) - (4)].command), (COMMAND *)NULL); }
1588 ! #line 1022 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1589 { (yyval.command) = make_if_command ((yyvsp[(2) - (6)].command), (yyvsp[(4) - (6)].command), (yyvsp[(6) - (6)].command)); }
1593 ! #line 1024 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1594 { (yyval.command) = make_if_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command), (yyvsp[(5) - (5)].command)); }
1598 ! #line 1029 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1599 { (yyvsp[(2) - (2)].pattern)->next = (yyvsp[(1) - (2)].pattern); (yyval.pattern) = (yyvsp[(2) - (2)].pattern); }
1603 ! #line 1033 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1604 { (yyval.pattern) = make_pattern_list ((yyvsp[(2) - (4)].word_list), (yyvsp[(4) - (4)].command)); }
1608 ! #line 1035 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1609 { (yyval.pattern) = make_pattern_list ((yyvsp[(2) - (4)].word_list), (COMMAND *)NULL); }
1613 ! #line 1037 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1614 { (yyval.pattern) = make_pattern_list ((yyvsp[(3) - (5)].word_list), (yyvsp[(5) - (5)].command)); }
1618 ! #line 1039 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1619 { (yyval.pattern) = make_pattern_list ((yyvsp[(3) - (5)].word_list), (COMMAND *)NULL); }
1623 ! #line 1043 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1624 { (yyval.pattern) = (yyvsp[(1) - (2)].pattern); }
1628 ! #line 1045 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1629 { (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); }
1633 ! #line 1047 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1634 { (yyvsp[(1) - (2)].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyval.pattern) = (yyvsp[(1) - (2)].pattern); }
1638 ! #line 1049 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1639 { (yyvsp[(2) - (3)].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); }
1643 ! #line 1051 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1644 { (yyvsp[(1) - (2)].pattern)->flags |= CASEPAT_TESTNEXT; (yyval.pattern) = (yyvsp[(1) - (2)].pattern); }
1648 ! #line 1053 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1649 { (yyvsp[(2) - (3)].pattern)->flags |= CASEPAT_TESTNEXT; (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); }
1653 ! #line 1057 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1654 { (yyval.word_list) = make_word_list ((yyvsp[(1) - (1)].word), (WORD_LIST *)NULL); }
1658 ! #line 1059 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1659 { (yyval.word_list) = make_word_list ((yyvsp[(3) - (3)].word), (yyvsp[(1) - (3)].word_list)); }
1663 ! #line 1068 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1665 (yyval.command) = (yyvsp[(2) - (2)].command);
1670 ! #line 1077 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1672 (yyval.command) = (yyvsp[(2) - (2)].command);
1676 ! #line 1077 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1678 (yyval.command) = (yyvsp[(2) - (2)].command);
1683 ! #line 1084 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1685 if ((yyvsp[(1) - (3)].command)->type == cm_connection)
1689 ! #line 1084 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1691 if ((yyvsp[(1) - (3)].command)->type == cm_connection)
1696 ! #line 1095 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1697 { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), AND_AND); }
1701 ! #line 1097 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1702 { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), OR_OR); }
1706 ! #line 1099 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1708 if ((yyvsp[(1) - (4)].command)->type == cm_connection)
1712 ! #line 1095 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1713 { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), AND_AND); }
1717 ! #line 1097 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1718 { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), OR_OR); }
1722 ! #line 1099 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1724 if ((yyvsp[(1) - (4)].command)->type == cm_connection)
1729 ! #line 1106 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1730 { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), ';'); }
1734 ! #line 1108 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1735 { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), ';'); }
1739 ! #line 1110 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1740 { (yyval.command) = (yyvsp[(1) - (1)].command); }
1744 ! #line 1118 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1745 { (yyval.number) = '\n'; }
1749 ! #line 1120 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1750 { (yyval.number) = ';'; }
1754 ! #line 1122 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1755 { (yyval.number) = yacc_EOF; }
1759 ! #line 1136 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1761 (yyval.command) = (yyvsp[(1) - (1)].command);
1765 ! #line 1106 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1766 { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), ';'); }
1770 ! #line 1108 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1771 { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), ';'); }
1775 ! #line 1110 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1776 { (yyval.command) = (yyvsp[(1) - (1)].command); }
1780 ! #line 1118 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1781 { (yyval.number) = '\n'; }
1785 ! #line 1120 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1786 { (yyval.number) = ';'; }
1790 ! #line 1122 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1791 { (yyval.number) = yacc_EOF; }
1795 ! #line 1136 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1797 (yyval.command) = (yyvsp[(1) - (1)].command);
1802 ! #line 1149 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1804 if ((yyvsp[(1) - (2)].command)->type == cm_connection)
1808 ! #line 1149 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1810 if ((yyvsp[(1) - (2)].command)->type == cm_connection)
1815 ! #line 1165 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1817 (yyval.command) = (yyvsp[(1) - (2)].command);
1821 ! #line 1165 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1823 (yyval.command) = (yyvsp[(1) - (2)].command);
1828 ! #line 1180 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1829 { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), AND_AND); }
1833 ! #line 1182 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1834 { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), OR_OR); }
1838 ! #line 1184 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1840 if ((yyvsp[(1) - (3)].command)->type == cm_connection)
1844 ! #line 1180 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1845 { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), AND_AND); }
1849 ! #line 1182 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1850 { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), OR_OR); }
1854 ! #line 1184 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1856 if ((yyvsp[(1) - (3)].command)->type == cm_connection)
1861 ! #line 1191 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1862 { (yyval.command) = command_connect ((yyvsp[(1) - (3)].command), (yyvsp[(3) - (3)].command), ';'); }
1866 ! #line 1194 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1867 { (yyval.command) = (yyvsp[(1) - (1)].command); }
1871 ! #line 1198 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1872 { (yyval.command) = (yyvsp[(1) - (1)].command); }
1876 ! #line 1200 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1878 if ((yyvsp[(2) - (2)].command))
1882 ! #line 1191 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1883 { (yyval.command) = command_connect ((yyvsp[(1) - (3)].command), (yyvsp[(3) - (3)].command), ';'); }
1887 ! #line 1194 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1888 { (yyval.command) = (yyvsp[(1) - (1)].command); }
1892 ! #line 1198 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1893 { (yyval.command) = (yyvsp[(1) - (1)].command); }
1897 ! #line 1200 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1899 if ((yyvsp[(2) - (2)].command))
1904 ! #line 1206 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1906 if ((yyvsp[(2) - (2)].command))
1910 ! #line 1206 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1912 if ((yyvsp[(2) - (2)].command))
1917 ! #line 1212 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1923 ! #line 1212 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1930 ! #line 1229 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1936 ! #line 1229 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1943 ! #line 1249 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1944 { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), '|'); }
1948 ! #line 1251 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1950 /* Make cmd1 |& cmd2 equivalent to cmd1 2>&1 | cmd2 */
1954 ! #line 1249 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1955 { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), '|'); }
1959 ! #line 1251 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1961 /* Make cmd1 |& cmd2 equivalent to cmd1 2>&1 | cmd2 */
1966 ! #line 1274 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1967 { (yyval.command) = (yyvsp[(1) - (1)].command); }
1971 ! #line 1278 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1972 { (yyval.number) = CMD_TIME_PIPELINE; }
1976 ! #line 1280 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1977 { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
1981 ! #line 1282 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1982 { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
1987 ! #line 1274 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1988 { (yyval.command) = (yyvsp[(1) - (1)].command); }
1992 ! #line 1278 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1993 { (yyval.number) = CMD_TIME_PIPELINE; }
1997 ! #line 1280 "/usr/src/local/bash/bash-4.3-patched/parse.y"
1998 { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
2002 ! #line 1282 "/usr/src/local/bash/bash-4.3-patched/parse.y"
2003 { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
2009 ! #line 1284 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
2015 ! #line 1284 "/usr/src/local/bash/bash-4.3-patched/parse.y"
2024 + parser_remaining_input ()
2026 + if (shell_input_line == 0)
2028 + if (shell_input_line_index < 0 || shell_input_line_index >= shell_input_line_len)
2029 + return '\0'; /* XXX */
2030 + return (shell_input_line + shell_input_line_index);
2033 #ifdef INCLUDE_UNUSED
2034 /* Back the input pointer up by one, effectively `ungetting' a character. */
2037 /* reset_parser clears shell_input_line and associated variables */
2038 restore_input_line_state (&ls);
2040 ! token_to_read = 0;
2042 /* Need to find how many characters parse_and_execute consumed, update
2044 /* reset_parser clears shell_input_line and associated variables */
2045 restore_input_line_state (&ls);
2047 ! token_to_read = 0;
2049 /* Need to find how many characters parse_and_execute consumed, update
2050 *** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
2051 --- patchlevel.h 2014-03-20 20:01:28.000000000 -0400
2054 looks for to find the patch level (for the sccs version string). */
2056 ! #define PATCHLEVEL 29
2058 #endif /* _PATCHLEVEL_H_ */
2060 looks for to find the patch level (for the sccs version string). */
2062 ! #define PATCHLEVEL 30
2064 #endif /* _PATCHLEVEL_H_ */