7 Bug-Reported-by: Florian Weimer <fweimer@redhat.com>
13 There are two local buffer overflows in parse.y that can cause the shell
14 to dump core when given many here-documents attached to a single command
17 Patch (apply with `patch -p0'):
19 *** ../bash-4.3-patched/parse.y 2014-09-25 23:02:35.000000000 -0400
20 --- parse.y 2014-09-29 16:47:03.000000000 -0400
24 static int reserved_word_acceptable __P((int));
25 static int yylex __P((void));
27 + static void push_heredoc __P((REDIRECT *));
28 + static char *mk_alexpansion __P((char *));
29 static int alias_expand_token __P((char *));
30 static int time_command_acceptable __P((void));
33 /* Variables to manage the task of reading here documents, because we need to
34 defer the reading until after a complete command has been collected. */
35 ! static REDIRECT *redir_stack[10];
39 /* Variables to manage the task of reading here documents, because we need to
40 defer the reading until after a complete command has been collected. */
41 ! #define HEREDOC_MAX 16
43 ! static REDIRECT *redir_stack[HEREDOC_MAX];
48 index is decremented after a case, select, or for command is parsed. */
49 #define MAX_CASE_NEST 128
50 ! static int word_lineno[MAX_CASE_NEST];
51 static int word_top = -1;
54 index is decremented after a case, select, or for command is parsed. */
55 #define MAX_CASE_NEST 128
56 ! static int word_lineno[MAX_CASE_NEST+1];
57 static int word_top = -1;
62 $$ = make_redirection (source, r_reading_until, redir, 0);
63 ! redir_stack[need_here_doc++] = $$;
65 | NUMBER LESS_LESS WORD
68 $$ = make_redirection (source, r_reading_until, redir, 0);
71 | NUMBER LESS_LESS WORD
75 $$ = make_redirection (source, r_reading_until, redir, 0);
76 ! redir_stack[need_here_doc++] = $$;
78 | REDIR_WORD LESS_LESS WORD
81 $$ = make_redirection (source, r_reading_until, redir, 0);
84 | REDIR_WORD LESS_LESS WORD
88 $$ = make_redirection (source, r_reading_until, redir, REDIR_VARASSIGN);
89 ! redir_stack[need_here_doc++] = $$;
91 | LESS_LESS_MINUS WORD
94 $$ = make_redirection (source, r_reading_until, redir, REDIR_VARASSIGN);
97 | LESS_LESS_MINUS WORD
101 $$ = make_redirection (source, r_deblank_reading_until, redir, 0);
102 ! redir_stack[need_here_doc++] = $$;
104 | NUMBER LESS_LESS_MINUS WORD
107 $$ = make_redirection (source, r_deblank_reading_until, redir, 0);
110 | NUMBER LESS_LESS_MINUS WORD
114 $$ = make_redirection (source, r_deblank_reading_until, redir, 0);
115 ! redir_stack[need_here_doc++] = $$;
117 | REDIR_WORD LESS_LESS_MINUS WORD
120 $$ = make_redirection (source, r_deblank_reading_until, redir, 0);
123 | REDIR_WORD LESS_LESS_MINUS WORD
127 $$ = make_redirection (source, r_deblank_reading_until, redir, REDIR_VARASSIGN);
128 ! redir_stack[need_here_doc++] = $$;
130 | LESS_LESS_LESS WORD
133 $$ = make_redirection (source, r_deblank_reading_until, redir, REDIR_VARASSIGN);
136 | LESS_LESS_LESS WORD
140 static int esacs_needed_count;
146 + if (need_here_doc >= HEREDOC_MAX)
148 + last_command_exit_value = EX_BADUSAGE;
150 + report_syntax_error (_("maximum here-document count exceeded"));
152 + exit_shell (last_command_exit_value);
154 + redir_stack[need_here_doc++] = r;
158 gather_here_documents ()
159 *** ../bash-4.3.27/y.tab.c 2014-10-01 11:38:24.000000000 -0400
160 --- y.tab.c 2014-10-01 12:46:11.000000000 -0400
164 /* Copy the first part of user declarations. */
165 ! #line 21 "/usr/homes/chet/src/bash/src/parse.y"
170 /* Copy the first part of user declarations. */
171 ! #line 21 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
177 static int reserved_word_acceptable __P((int));
178 static int yylex __P((void));
180 + static void push_heredoc __P((REDIRECT *));
181 + static char *mk_alexpansion __P((char *));
182 static int alias_expand_token __P((char *));
183 static int time_command_acceptable __P((void));
186 /* Variables to manage the task of reading here documents, because we need to
187 defer the reading until after a complete command has been collected. */
188 ! static REDIRECT *redir_stack[10];
192 /* Variables to manage the task of reading here documents, because we need to
193 defer the reading until after a complete command has been collected. */
194 ! #define HEREDOC_MAX 16
196 ! static REDIRECT *redir_stack[HEREDOC_MAX];
201 index is decremented after a case, select, or for command is parsed. */
202 #define MAX_CASE_NEST 128
203 ! static int word_lineno[MAX_CASE_NEST];
204 static int word_top = -1;
207 index is decremented after a case, select, or for command is parsed. */
208 #define MAX_CASE_NEST 128
209 ! static int word_lineno[MAX_CASE_NEST+1];
210 static int word_top = -1;
214 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
215 typedef union YYSTYPE
216 ! #line 324 "/usr/homes/chet/src/bash/src/parse.y"
218 WORD_DESC *word; /* the word that we read. */
220 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
221 typedef union YYSTYPE
222 ! #line 329 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
224 WORD_DESC *word; /* the word that we read. */
228 /* Line 193 of yacc.c. */
229 ! #line 507 "y.tab.c"
231 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
234 /* Line 193 of yacc.c. */
235 ! #line 512 "y.tab.c"
237 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
241 /* Line 216 of yacc.c. */
242 ! #line 520 "y.tab.c"
247 /* Line 216 of yacc.c. */
248 ! #line 525 "y.tab.c"
253 static const yytype_uint16 yyrline[] =
255 ! 0, 377, 377, 388, 397, 412, 422, 424, 428, 434,
256 ! 440, 446, 452, 458, 464, 470, 476, 482, 488, 494,
257 ! 500, 506, 512, 518, 525, 532, 539, 546, 553, 560,
258 ! 566, 572, 578, 584, 590, 596, 602, 608, 614, 620,
259 ! 626, 632, 638, 644, 650, 656, 662, 668, 674, 680,
260 ! 686, 692, 700, 702, 704, 708, 712, 723, 725, 729,
261 ! 731, 733, 749, 751, 755, 757, 759, 761, 763, 765,
262 ! 767, 769, 771, 773, 775, 779, 784, 789, 794, 799,
263 ! 804, 809, 814, 821, 826, 831, 836, 843, 848, 853,
264 ! 858, 863, 868, 875, 880, 885, 892, 895, 898, 902,
265 ! 904, 935, 942, 947, 964, 969, 986, 993, 995, 997,
266 ! 1002, 1006, 1010, 1014, 1016, 1018, 1022, 1023, 1027, 1029,
267 ! 1031, 1033, 1037, 1039, 1041, 1043, 1045, 1047, 1051, 1053,
268 ! 1062, 1070, 1071, 1077, 1078, 1085, 1089, 1091, 1093, 1100,
269 ! 1102, 1104, 1108, 1109, 1112, 1114, 1116, 1120, 1121, 1130,
270 ! 1143, 1159, 1174, 1176, 1178, 1185, 1188, 1192, 1194, 1200,
271 ! 1206, 1223, 1243, 1245, 1268, 1272, 1274, 1276
275 static const yytype_uint16 yyrline[] =
277 ! 0, 382, 382, 393, 402, 417, 427, 429, 433, 439,
278 ! 445, 451, 457, 463, 469, 475, 481, 487, 493, 499,
279 ! 505, 511, 517, 523, 530, 537, 544, 551, 558, 565,
280 ! 571, 577, 583, 589, 595, 601, 607, 613, 619, 625,
281 ! 631, 637, 643, 649, 655, 661, 667, 673, 679, 685,
282 ! 691, 697, 705, 707, 709, 713, 717, 728, 730, 734,
283 ! 736, 738, 754, 756, 760, 762, 764, 766, 768, 770,
284 ! 772, 774, 776, 778, 780, 784, 789, 794, 799, 804,
285 ! 809, 814, 819, 826, 831, 836, 841, 848, 853, 858,
286 ! 863, 868, 873, 880, 885, 890, 897, 900, 903, 907,
287 ! 909, 940, 947, 952, 969, 974, 991, 998, 1000, 1002,
288 ! 1007, 1011, 1015, 1019, 1021, 1023, 1027, 1028, 1032, 1034,
289 ! 1036, 1038, 1042, 1044, 1046, 1048, 1050, 1052, 1056, 1058,
290 ! 1067, 1075, 1076, 1082, 1083, 1090, 1094, 1096, 1098, 1105,
291 ! 1107, 1109, 1113, 1114, 1117, 1119, 1121, 1125, 1126, 1135,
292 ! 1148, 1164, 1179, 1181, 1183, 1190, 1193, 1197, 1199, 1205,
293 ! 1211, 1228, 1248, 1250, 1273, 1277, 1279, 1281
300 ! #line 378 "/usr/homes/chet/src/bash/src/parse.y"
302 /* Case of regular command. Discard the error
306 ! #line 383 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
308 /* Case of regular command. Discard the error
313 ! #line 389 "/usr/homes/chet/src/bash/src/parse.y"
315 /* Case of regular command, but not a very
319 ! #line 394 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
321 /* Case of regular command, but not a very
326 ! #line 398 "/usr/homes/chet/src/bash/src/parse.y"
328 /* Error during parsing. Return NULL command. */
332 ! #line 403 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
334 /* Error during parsing. Return NULL command. */
339 ! #line 413 "/usr/homes/chet/src/bash/src/parse.y"
341 /* Case of EOF seen by itself. Do ignoreeof or
345 ! #line 418 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
347 /* Case of EOF seen by itself. Do ignoreeof or
352 ! #line 423 "/usr/homes/chet/src/bash/src/parse.y"
353 { (yyval.word_list) = make_word_list ((yyvsp[(1) - (1)].word), (WORD_LIST *)NULL); }
357 ! #line 425 "/usr/homes/chet/src/bash/src/parse.y"
358 { (yyval.word_list) = make_word_list ((yyvsp[(2) - (2)].word), (yyvsp[(1) - (2)].word_list)); }
362 ! #line 429 "/usr/homes/chet/src/bash/src/parse.y"
368 ! #line 428 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
369 { (yyval.word_list) = make_word_list ((yyvsp[(1) - (1)].word), (WORD_LIST *)NULL); }
373 ! #line 430 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
374 { (yyval.word_list) = make_word_list ((yyvsp[(2) - (2)].word), (yyvsp[(1) - (2)].word_list)); }
378 ! #line 434 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
385 ! #line 435 "/usr/homes/chet/src/bash/src/parse.y"
391 ! #line 440 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
398 ! #line 441 "/usr/homes/chet/src/bash/src/parse.y"
400 source.dest = (yyvsp[(1) - (3)].number);
404 ! #line 446 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
406 source.dest = (yyvsp[(1) - (3)].number);
411 ! #line 447 "/usr/homes/chet/src/bash/src/parse.y"
413 source.dest = (yyvsp[(1) - (3)].number);
417 ! #line 452 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
419 source.dest = (yyvsp[(1) - (3)].number);
424 ! #line 453 "/usr/homes/chet/src/bash/src/parse.y"
426 source.filename = (yyvsp[(1) - (3)].word);
430 ! #line 458 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
432 source.filename = (yyvsp[(1) - (3)].word);
437 ! #line 459 "/usr/homes/chet/src/bash/src/parse.y"
439 source.filename = (yyvsp[(1) - (3)].word);
443 ! #line 464 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
445 source.filename = (yyvsp[(1) - (3)].word);
450 ! #line 465 "/usr/homes/chet/src/bash/src/parse.y"
456 ! #line 470 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
463 ! #line 471 "/usr/homes/chet/src/bash/src/parse.y"
465 source.dest = (yyvsp[(1) - (3)].number);
469 ! #line 476 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
471 source.dest = (yyvsp[(1) - (3)].number);
476 ! #line 477 "/usr/homes/chet/src/bash/src/parse.y"
478 source.filename = (yyvsp[(1) - (3)].word);
482 ! #line 482 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
484 source.filename = (yyvsp[(1) - (3)].word);
489 ! #line 483 "/usr/homes/chet/src/bash/src/parse.y"
495 ! #line 488 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
502 ! #line 489 "/usr/homes/chet/src/bash/src/parse.y"
504 source.dest = (yyvsp[(1) - (3)].number);
508 ! #line 494 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
510 source.dest = (yyvsp[(1) - (3)].number);
515 ! #line 495 "/usr/homes/chet/src/bash/src/parse.y"
517 source.filename = (yyvsp[(1) - (3)].word);
521 ! #line 500 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
523 source.filename = (yyvsp[(1) - (3)].word);
528 ! #line 501 "/usr/homes/chet/src/bash/src/parse.y"
534 ! #line 506 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
541 ! #line 507 "/usr/homes/chet/src/bash/src/parse.y"
543 source.dest = (yyvsp[(1) - (3)].number);
547 ! #line 512 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
549 source.dest = (yyvsp[(1) - (3)].number);
554 ! #line 513 "/usr/homes/chet/src/bash/src/parse.y"
556 source.filename = (yyvsp[(1) - (3)].word);
560 ! #line 518 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
562 source.filename = (yyvsp[(1) - (3)].word);
567 ! #line 519 "/usr/homes/chet/src/bash/src/parse.y"
570 redir.filename = (yyvsp[(2) - (2)].word);
571 (yyval.redirect) = make_redirection (source, r_reading_until, redir, 0);
572 ! redir_stack[need_here_doc++] = (yyval.redirect);
577 ! #line 526 "/usr/homes/chet/src/bash/src/parse.y"
579 source.dest = (yyvsp[(1) - (3)].number);
580 redir.filename = (yyvsp[(3) - (3)].word);
581 (yyval.redirect) = make_redirection (source, r_reading_until, redir, 0);
582 ! redir_stack[need_here_doc++] = (yyval.redirect);
587 ! #line 533 "/usr/homes/chet/src/bash/src/parse.y"
589 source.filename = (yyvsp[(1) - (3)].word);
590 redir.filename = (yyvsp[(3) - (3)].word);
591 (yyval.redirect) = make_redirection (source, r_reading_until, redir, REDIR_VARASSIGN);
592 ! redir_stack[need_here_doc++] = (yyval.redirect);
597 ! #line 540 "/usr/homes/chet/src/bash/src/parse.y"
600 redir.filename = (yyvsp[(2) - (2)].word);
601 (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, 0);
602 ! redir_stack[need_here_doc++] = (yyval.redirect);
607 ! #line 547 "/usr/homes/chet/src/bash/src/parse.y"
609 source.dest = (yyvsp[(1) - (3)].number);
610 redir.filename = (yyvsp[(3) - (3)].word);
611 (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, 0);
612 ! redir_stack[need_here_doc++] = (yyval.redirect);
617 ! #line 554 "/usr/homes/chet/src/bash/src/parse.y"
619 source.filename = (yyvsp[(1) - (3)].word);
620 redir.filename = (yyvsp[(3) - (3)].word);
621 (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, REDIR_VARASSIGN);
622 ! redir_stack[need_here_doc++] = (yyval.redirect);
627 ! #line 561 "/usr/homes/chet/src/bash/src/parse.y"
633 ! #line 524 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
636 redir.filename = (yyvsp[(2) - (2)].word);
637 (yyval.redirect) = make_redirection (source, r_reading_until, redir, 0);
638 ! push_heredoc ((yyval.redirect));
643 ! #line 531 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
645 source.dest = (yyvsp[(1) - (3)].number);
646 redir.filename = (yyvsp[(3) - (3)].word);
647 (yyval.redirect) = make_redirection (source, r_reading_until, redir, 0);
648 ! push_heredoc ((yyval.redirect));
653 ! #line 538 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
655 source.filename = (yyvsp[(1) - (3)].word);
656 redir.filename = (yyvsp[(3) - (3)].word);
657 (yyval.redirect) = make_redirection (source, r_reading_until, redir, REDIR_VARASSIGN);
658 ! push_heredoc ((yyval.redirect));
663 ! #line 545 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
666 redir.filename = (yyvsp[(2) - (2)].word);
667 (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, 0);
668 ! push_heredoc ((yyval.redirect));
673 ! #line 552 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
675 source.dest = (yyvsp[(1) - (3)].number);
676 redir.filename = (yyvsp[(3) - (3)].word);
677 (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, 0);
678 ! push_heredoc ((yyval.redirect));
683 ! #line 559 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
685 source.filename = (yyvsp[(1) - (3)].word);
686 redir.filename = (yyvsp[(3) - (3)].word);
687 (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, REDIR_VARASSIGN);
688 ! push_heredoc ((yyval.redirect));
693 ! #line 566 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
700 ! #line 567 "/usr/homes/chet/src/bash/src/parse.y"
702 source.dest = (yyvsp[(1) - (3)].number);
706 ! #line 572 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
708 source.dest = (yyvsp[(1) - (3)].number);
713 ! #line 573 "/usr/homes/chet/src/bash/src/parse.y"
715 source.filename = (yyvsp[(1) - (3)].word);
719 ! #line 578 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
721 source.filename = (yyvsp[(1) - (3)].word);
726 ! #line 579 "/usr/homes/chet/src/bash/src/parse.y"
732 ! #line 584 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
739 ! #line 585 "/usr/homes/chet/src/bash/src/parse.y"
741 source.dest = (yyvsp[(1) - (3)].number);
745 ! #line 590 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
747 source.dest = (yyvsp[(1) - (3)].number);
752 ! #line 591 "/usr/homes/chet/src/bash/src/parse.y"
754 source.filename = (yyvsp[(1) - (3)].word);
758 ! #line 596 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
760 source.filename = (yyvsp[(1) - (3)].word);
765 ! #line 597 "/usr/homes/chet/src/bash/src/parse.y"
771 ! #line 602 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
778 ! #line 603 "/usr/homes/chet/src/bash/src/parse.y"
780 source.dest = (yyvsp[(1) - (3)].number);
784 ! #line 608 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
786 source.dest = (yyvsp[(1) - (3)].number);
791 ! #line 609 "/usr/homes/chet/src/bash/src/parse.y"
793 source.filename = (yyvsp[(1) - (3)].word);
797 ! #line 614 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
799 source.filename = (yyvsp[(1) - (3)].word);
804 ! #line 615 "/usr/homes/chet/src/bash/src/parse.y"
810 ! #line 620 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
817 ! #line 621 "/usr/homes/chet/src/bash/src/parse.y"
819 source.dest = (yyvsp[(1) - (3)].number);
823 ! #line 626 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
825 source.dest = (yyvsp[(1) - (3)].number);
830 ! #line 627 "/usr/homes/chet/src/bash/src/parse.y"
832 source.filename = (yyvsp[(1) - (3)].word);
836 ! #line 632 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
838 source.filename = (yyvsp[(1) - (3)].word);
843 ! #line 633 "/usr/homes/chet/src/bash/src/parse.y"
849 ! #line 638 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
856 ! #line 639 "/usr/homes/chet/src/bash/src/parse.y"
858 source.dest = (yyvsp[(1) - (3)].number);
862 ! #line 644 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
864 source.dest = (yyvsp[(1) - (3)].number);
869 ! #line 645 "/usr/homes/chet/src/bash/src/parse.y"
871 source.filename = (yyvsp[(1) - (3)].word);
875 ! #line 650 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
877 source.filename = (yyvsp[(1) - (3)].word);
882 ! #line 651 "/usr/homes/chet/src/bash/src/parse.y"
888 ! #line 656 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
895 ! #line 657 "/usr/homes/chet/src/bash/src/parse.y"
897 source.dest = (yyvsp[(1) - (3)].number);
901 ! #line 662 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
903 source.dest = (yyvsp[(1) - (3)].number);
908 ! #line 663 "/usr/homes/chet/src/bash/src/parse.y"
910 source.filename = (yyvsp[(1) - (3)].word);
914 ! #line 668 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
916 source.filename = (yyvsp[(1) - (3)].word);
921 ! #line 669 "/usr/homes/chet/src/bash/src/parse.y"
927 ! #line 674 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
934 ! #line 675 "/usr/homes/chet/src/bash/src/parse.y"
936 source.dest = (yyvsp[(1) - (3)].number);
940 ! #line 680 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
942 source.dest = (yyvsp[(1) - (3)].number);
947 ! #line 681 "/usr/homes/chet/src/bash/src/parse.y"
949 source.filename = (yyvsp[(1) - (3)].word);
953 ! #line 686 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
955 source.filename = (yyvsp[(1) - (3)].word);
960 ! #line 687 "/usr/homes/chet/src/bash/src/parse.y"
966 ! #line 692 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
973 ! #line 693 "/usr/homes/chet/src/bash/src/parse.y"
979 ! #line 698 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
986 ! #line 701 "/usr/homes/chet/src/bash/src/parse.y"
987 { (yyval.element).word = (yyvsp[(1) - (1)].word); (yyval.element).redirect = 0; }
991 ! #line 703 "/usr/homes/chet/src/bash/src/parse.y"
992 { (yyval.element).word = (yyvsp[(1) - (1)].word); (yyval.element).redirect = 0; }
996 ! #line 705 "/usr/homes/chet/src/bash/src/parse.y"
997 { (yyval.element).redirect = (yyvsp[(1) - (1)].redirect); (yyval.element).word = 0; }
1001 ! #line 709 "/usr/homes/chet/src/bash/src/parse.y"
1003 (yyval.redirect) = (yyvsp[(1) - (1)].redirect);
1007 ! #line 706 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1008 { (yyval.element).word = (yyvsp[(1) - (1)].word); (yyval.element).redirect = 0; }
1012 ! #line 708 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1013 { (yyval.element).word = (yyvsp[(1) - (1)].word); (yyval.element).redirect = 0; }
1017 ! #line 710 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1018 { (yyval.element).redirect = (yyvsp[(1) - (1)].redirect); (yyval.element).word = 0; }
1022 ! #line 714 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1024 (yyval.redirect) = (yyvsp[(1) - (1)].redirect);
1029 ! #line 713 "/usr/homes/chet/src/bash/src/parse.y"
1031 register REDIRECT *t;
1035 ! #line 718 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1037 register REDIRECT *t;
1042 ! #line 724 "/usr/homes/chet/src/bash/src/parse.y"
1043 { (yyval.command) = make_simple_command ((yyvsp[(1) - (1)].element), (COMMAND *)NULL); }
1047 ! #line 726 "/usr/homes/chet/src/bash/src/parse.y"
1048 { (yyval.command) = make_simple_command ((yyvsp[(2) - (2)].element), (yyvsp[(1) - (2)].command)); }
1052 ! #line 730 "/usr/homes/chet/src/bash/src/parse.y"
1053 { (yyval.command) = clean_simple_command ((yyvsp[(1) - (1)].command)); }
1057 ! #line 732 "/usr/homes/chet/src/bash/src/parse.y"
1058 { (yyval.command) = (yyvsp[(1) - (1)].command); }
1062 ! #line 734 "/usr/homes/chet/src/bash/src/parse.y"
1068 ! #line 729 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1069 { (yyval.command) = make_simple_command ((yyvsp[(1) - (1)].element), (COMMAND *)NULL); }
1073 ! #line 731 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1074 { (yyval.command) = make_simple_command ((yyvsp[(2) - (2)].element), (yyvsp[(1) - (2)].command)); }
1078 ! #line 735 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1079 { (yyval.command) = clean_simple_command ((yyvsp[(1) - (1)].command)); }
1083 ! #line 737 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1084 { (yyval.command) = (yyvsp[(1) - (1)].command); }
1088 ! #line 739 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1095 ! #line 750 "/usr/homes/chet/src/bash/src/parse.y"
1096 { (yyval.command) = (yyvsp[(1) - (1)].command); }
1100 ! #line 752 "/usr/homes/chet/src/bash/src/parse.y"
1101 { (yyval.command) = (yyvsp[(1) - (1)].command); }
1105 ! #line 756 "/usr/homes/chet/src/bash/src/parse.y"
1106 { (yyval.command) = (yyvsp[(1) - (1)].command); }
1110 ! #line 758 "/usr/homes/chet/src/bash/src/parse.y"
1111 { (yyval.command) = (yyvsp[(1) - (1)].command); }
1115 ! #line 760 "/usr/homes/chet/src/bash/src/parse.y"
1116 { (yyval.command) = make_while_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command)); }
1120 ! #line 762 "/usr/homes/chet/src/bash/src/parse.y"
1121 { (yyval.command) = make_until_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command)); }
1125 ! #line 764 "/usr/homes/chet/src/bash/src/parse.y"
1126 { (yyval.command) = (yyvsp[(1) - (1)].command); }
1130 ! #line 766 "/usr/homes/chet/src/bash/src/parse.y"
1131 { (yyval.command) = (yyvsp[(1) - (1)].command); }
1135 ! #line 768 "/usr/homes/chet/src/bash/src/parse.y"
1136 { (yyval.command) = (yyvsp[(1) - (1)].command); }
1140 ! #line 770 "/usr/homes/chet/src/bash/src/parse.y"
1141 { (yyval.command) = (yyvsp[(1) - (1)].command); }
1145 ! #line 772 "/usr/homes/chet/src/bash/src/parse.y"
1146 { (yyval.command) = (yyvsp[(1) - (1)].command); }
1150 ! #line 774 "/usr/homes/chet/src/bash/src/parse.y"
1151 { (yyval.command) = (yyvsp[(1) - (1)].command); }
1155 ! #line 776 "/usr/homes/chet/src/bash/src/parse.y"
1156 { (yyval.command) = (yyvsp[(1) - (1)].command); }
1160 ! #line 780 "/usr/homes/chet/src/bash/src/parse.y"
1162 (yyval.command) = make_for_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
1166 ! #line 755 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1167 { (yyval.command) = (yyvsp[(1) - (1)].command); }
1171 ! #line 757 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1172 { (yyval.command) = (yyvsp[(1) - (1)].command); }
1176 ! #line 761 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1177 { (yyval.command) = (yyvsp[(1) - (1)].command); }
1181 ! #line 763 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1182 { (yyval.command) = (yyvsp[(1) - (1)].command); }
1186 ! #line 765 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1187 { (yyval.command) = make_while_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command)); }
1191 ! #line 767 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1192 { (yyval.command) = make_until_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command)); }
1196 ! #line 769 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1197 { (yyval.command) = (yyvsp[(1) - (1)].command); }
1201 ! #line 771 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1202 { (yyval.command) = (yyvsp[(1) - (1)].command); }
1206 ! #line 773 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1207 { (yyval.command) = (yyvsp[(1) - (1)].command); }
1211 ! #line 775 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1212 { (yyval.command) = (yyvsp[(1) - (1)].command); }
1216 ! #line 777 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1217 { (yyval.command) = (yyvsp[(1) - (1)].command); }
1221 ! #line 779 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1222 { (yyval.command) = (yyvsp[(1) - (1)].command); }
1226 ! #line 781 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1227 { (yyval.command) = (yyvsp[(1) - (1)].command); }
1231 ! #line 785 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1233 (yyval.command) = make_for_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
1238 ! #line 785 "/usr/homes/chet/src/bash/src/parse.y"
1240 (yyval.command) = make_for_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
1244 ! #line 790 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1246 (yyval.command) = make_for_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
1251 ! #line 790 "/usr/homes/chet/src/bash/src/parse.y"
1253 (yyval.command) = make_for_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
1257 ! #line 795 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1259 (yyval.command) = make_for_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
1264 ! #line 795 "/usr/homes/chet/src/bash/src/parse.y"
1266 (yyval.command) = make_for_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
1270 ! #line 800 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1272 (yyval.command) = make_for_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
1277 ! #line 800 "/usr/homes/chet/src/bash/src/parse.y"
1279 (yyval.command) = make_for_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]);
1283 ! #line 805 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1285 (yyval.command) = make_for_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]);
1290 ! #line 805 "/usr/homes/chet/src/bash/src/parse.y"
1292 (yyval.command) = make_for_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]);
1296 ! #line 810 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1298 (yyval.command) = make_for_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]);
1303 ! #line 810 "/usr/homes/chet/src/bash/src/parse.y"
1305 (yyval.command) = make_for_command ((yyvsp[(2) - (9)].word), (WORD_LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]);
1309 ! #line 815 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1311 (yyval.command) = make_for_command ((yyvsp[(2) - (9)].word), (WORD_LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]);
1316 ! #line 815 "/usr/homes/chet/src/bash/src/parse.y"
1318 (yyval.command) = make_for_command ((yyvsp[(2) - (9)].word), (WORD_LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]);
1322 ! #line 820 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1324 (yyval.command) = make_for_command ((yyvsp[(2) - (9)].word), (WORD_LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]);
1329 ! #line 822 "/usr/homes/chet/src/bash/src/parse.y"
1331 (yyval.command) = make_arith_for_command ((yyvsp[(2) - (7)].word_list), (yyvsp[(6) - (7)].command), arith_for_lineno);
1335 ! #line 827 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1337 (yyval.command) = make_arith_for_command ((yyvsp[(2) - (7)].word_list), (yyvsp[(6) - (7)].command), arith_for_lineno);
1342 ! #line 827 "/usr/homes/chet/src/bash/src/parse.y"
1344 (yyval.command) = make_arith_for_command ((yyvsp[(2) - (7)].word_list), (yyvsp[(6) - (7)].command), arith_for_lineno);
1348 ! #line 832 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1350 (yyval.command) = make_arith_for_command ((yyvsp[(2) - (7)].word_list), (yyvsp[(6) - (7)].command), arith_for_lineno);
1355 ! #line 832 "/usr/homes/chet/src/bash/src/parse.y"
1357 (yyval.command) = make_arith_for_command ((yyvsp[(2) - (5)].word_list), (yyvsp[(4) - (5)].command), arith_for_lineno);
1361 ! #line 837 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1363 (yyval.command) = make_arith_for_command ((yyvsp[(2) - (5)].word_list), (yyvsp[(4) - (5)].command), arith_for_lineno);
1368 ! #line 837 "/usr/homes/chet/src/bash/src/parse.y"
1370 (yyval.command) = make_arith_for_command ((yyvsp[(2) - (5)].word_list), (yyvsp[(4) - (5)].command), arith_for_lineno);
1374 ! #line 842 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1376 (yyval.command) = make_arith_for_command ((yyvsp[(2) - (5)].word_list), (yyvsp[(4) - (5)].command), arith_for_lineno);
1381 ! #line 844 "/usr/homes/chet/src/bash/src/parse.y"
1383 (yyval.command) = make_select_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
1387 ! #line 849 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1389 (yyval.command) = make_select_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
1394 ! #line 849 "/usr/homes/chet/src/bash/src/parse.y"
1396 (yyval.command) = make_select_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
1400 ! #line 854 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1402 (yyval.command) = make_select_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
1407 ! #line 854 "/usr/homes/chet/src/bash/src/parse.y"
1409 (yyval.command) = make_select_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
1413 ! #line 859 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1415 (yyval.command) = make_select_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
1420 ! #line 859 "/usr/homes/chet/src/bash/src/parse.y"
1422 (yyval.command) = make_select_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
1426 ! #line 864 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1428 (yyval.command) = make_select_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
1433 ! #line 864 "/usr/homes/chet/src/bash/src/parse.y"
1435 (yyval.command) = make_select_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]);
1439 ! #line 869 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1441 (yyval.command) = make_select_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]);
1446 ! #line 869 "/usr/homes/chet/src/bash/src/parse.y"
1448 (yyval.command) = make_select_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]);
1452 ! #line 874 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1454 (yyval.command) = make_select_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]);
1459 ! #line 876 "/usr/homes/chet/src/bash/src/parse.y"
1461 (yyval.command) = make_case_command ((yyvsp[(2) - (6)].word), (PATTERN_LIST *)NULL, word_lineno[word_top]);
1465 ! #line 881 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1467 (yyval.command) = make_case_command ((yyvsp[(2) - (6)].word), (PATTERN_LIST *)NULL, word_lineno[word_top]);
1472 ! #line 881 "/usr/homes/chet/src/bash/src/parse.y"
1474 (yyval.command) = make_case_command ((yyvsp[(2) - (7)].word), (yyvsp[(5) - (7)].pattern), word_lineno[word_top]);
1478 ! #line 886 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1480 (yyval.command) = make_case_command ((yyvsp[(2) - (7)].word), (yyvsp[(5) - (7)].pattern), word_lineno[word_top]);
1485 ! #line 886 "/usr/homes/chet/src/bash/src/parse.y"
1487 (yyval.command) = make_case_command ((yyvsp[(2) - (6)].word), (yyvsp[(5) - (6)].pattern), word_lineno[word_top]);
1491 ! #line 891 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1493 (yyval.command) = make_case_command ((yyvsp[(2) - (6)].word), (yyvsp[(5) - (6)].pattern), word_lineno[word_top]);
1498 ! #line 893 "/usr/homes/chet/src/bash/src/parse.y"
1499 { (yyval.command) = make_function_def ((yyvsp[(1) - (5)].word), (yyvsp[(5) - (5)].command), function_dstart, function_bstart); }
1503 ! #line 896 "/usr/homes/chet/src/bash/src/parse.y"
1504 { (yyval.command) = make_function_def ((yyvsp[(2) - (6)].word), (yyvsp[(6) - (6)].command), function_dstart, function_bstart); }
1508 ! #line 899 "/usr/homes/chet/src/bash/src/parse.y"
1509 { (yyval.command) = make_function_def ((yyvsp[(2) - (4)].word), (yyvsp[(4) - (4)].command), function_dstart, function_bstart); }
1513 ! #line 903 "/usr/homes/chet/src/bash/src/parse.y"
1514 { (yyval.command) = (yyvsp[(1) - (1)].command); }
1518 ! #line 905 "/usr/homes/chet/src/bash/src/parse.y"
1524 ! #line 898 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1525 { (yyval.command) = make_function_def ((yyvsp[(1) - (5)].word), (yyvsp[(5) - (5)].command), function_dstart, function_bstart); }
1529 ! #line 901 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1530 { (yyval.command) = make_function_def ((yyvsp[(2) - (6)].word), (yyvsp[(6) - (6)].command), function_dstart, function_bstart); }
1534 ! #line 904 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1535 { (yyval.command) = make_function_def ((yyvsp[(2) - (4)].word), (yyvsp[(4) - (4)].command), function_dstart, function_bstart); }
1539 ! #line 908 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1540 { (yyval.command) = (yyvsp[(1) - (1)].command); }
1544 ! #line 910 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1551 ! #line 936 "/usr/homes/chet/src/bash/src/parse.y"
1553 (yyval.command) = make_subshell_command ((yyvsp[(2) - (3)].command));
1557 ! #line 941 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1559 (yyval.command) = make_subshell_command ((yyvsp[(2) - (3)].command));
1564 ! #line 943 "/usr/homes/chet/src/bash/src/parse.y"
1566 (yyval.command) = make_coproc_command ("COPROC", (yyvsp[(2) - (2)].command));
1570 ! #line 948 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1572 (yyval.command) = make_coproc_command ("COPROC", (yyvsp[(2) - (2)].command));
1577 ! #line 948 "/usr/homes/chet/src/bash/src/parse.y"
1583 ! #line 953 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1590 ! #line 965 "/usr/homes/chet/src/bash/src/parse.y"
1592 (yyval.command) = make_coproc_command ((yyvsp[(2) - (3)].word)->word, (yyvsp[(3) - (3)].command));
1596 ! #line 970 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1598 (yyval.command) = make_coproc_command ((yyvsp[(2) - (3)].word)->word, (yyvsp[(3) - (3)].command));
1603 ! #line 970 "/usr/homes/chet/src/bash/src/parse.y"
1609 ! #line 975 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1616 ! #line 987 "/usr/homes/chet/src/bash/src/parse.y"
1618 (yyval.command) = make_coproc_command ("COPROC", clean_simple_command ((yyvsp[(2) - (2)].command)));
1622 ! #line 992 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1624 (yyval.command) = make_coproc_command ("COPROC", clean_simple_command ((yyvsp[(2) - (2)].command)));
1629 ! #line 994 "/usr/homes/chet/src/bash/src/parse.y"
1630 { (yyval.command) = make_if_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command), (COMMAND *)NULL); }
1634 ! #line 996 "/usr/homes/chet/src/bash/src/parse.y"
1635 { (yyval.command) = make_if_command ((yyvsp[(2) - (7)].command), (yyvsp[(4) - (7)].command), (yyvsp[(6) - (7)].command)); }
1639 ! #line 998 "/usr/homes/chet/src/bash/src/parse.y"
1640 { (yyval.command) = make_if_command ((yyvsp[(2) - (6)].command), (yyvsp[(4) - (6)].command), (yyvsp[(5) - (6)].command)); }
1644 ! #line 1003 "/usr/homes/chet/src/bash/src/parse.y"
1645 { (yyval.command) = make_group_command ((yyvsp[(2) - (3)].command)); }
1649 ! #line 1007 "/usr/homes/chet/src/bash/src/parse.y"
1650 { (yyval.command) = make_arith_command ((yyvsp[(1) - (1)].word_list)); }
1654 ! #line 1011 "/usr/homes/chet/src/bash/src/parse.y"
1655 { (yyval.command) = (yyvsp[(2) - (3)].command); }
1659 ! #line 1015 "/usr/homes/chet/src/bash/src/parse.y"
1660 { (yyval.command) = make_if_command ((yyvsp[(2) - (4)].command), (yyvsp[(4) - (4)].command), (COMMAND *)NULL); }
1664 ! #line 1017 "/usr/homes/chet/src/bash/src/parse.y"
1665 { (yyval.command) = make_if_command ((yyvsp[(2) - (6)].command), (yyvsp[(4) - (6)].command), (yyvsp[(6) - (6)].command)); }
1669 ! #line 1019 "/usr/homes/chet/src/bash/src/parse.y"
1670 { (yyval.command) = make_if_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command), (yyvsp[(5) - (5)].command)); }
1674 ! #line 1024 "/usr/homes/chet/src/bash/src/parse.y"
1675 { (yyvsp[(2) - (2)].pattern)->next = (yyvsp[(1) - (2)].pattern); (yyval.pattern) = (yyvsp[(2) - (2)].pattern); }
1679 ! #line 1028 "/usr/homes/chet/src/bash/src/parse.y"
1680 { (yyval.pattern) = make_pattern_list ((yyvsp[(2) - (4)].word_list), (yyvsp[(4) - (4)].command)); }
1684 ! #line 1030 "/usr/homes/chet/src/bash/src/parse.y"
1685 { (yyval.pattern) = make_pattern_list ((yyvsp[(2) - (4)].word_list), (COMMAND *)NULL); }
1689 ! #line 1032 "/usr/homes/chet/src/bash/src/parse.y"
1690 { (yyval.pattern) = make_pattern_list ((yyvsp[(3) - (5)].word_list), (yyvsp[(5) - (5)].command)); }
1694 ! #line 1034 "/usr/homes/chet/src/bash/src/parse.y"
1695 { (yyval.pattern) = make_pattern_list ((yyvsp[(3) - (5)].word_list), (COMMAND *)NULL); }
1699 ! #line 1038 "/usr/homes/chet/src/bash/src/parse.y"
1700 { (yyval.pattern) = (yyvsp[(1) - (2)].pattern); }
1704 ! #line 1040 "/usr/homes/chet/src/bash/src/parse.y"
1705 { (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); }
1709 ! #line 1042 "/usr/homes/chet/src/bash/src/parse.y"
1710 { (yyvsp[(1) - (2)].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyval.pattern) = (yyvsp[(1) - (2)].pattern); }
1714 ! #line 1044 "/usr/homes/chet/src/bash/src/parse.y"
1715 { (yyvsp[(2) - (3)].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); }
1719 ! #line 1046 "/usr/homes/chet/src/bash/src/parse.y"
1720 { (yyvsp[(1) - (2)].pattern)->flags |= CASEPAT_TESTNEXT; (yyval.pattern) = (yyvsp[(1) - (2)].pattern); }
1724 ! #line 1048 "/usr/homes/chet/src/bash/src/parse.y"
1725 { (yyvsp[(2) - (3)].pattern)->flags |= CASEPAT_TESTNEXT; (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); }
1729 ! #line 1052 "/usr/homes/chet/src/bash/src/parse.y"
1730 { (yyval.word_list) = make_word_list ((yyvsp[(1) - (1)].word), (WORD_LIST *)NULL); }
1734 ! #line 1054 "/usr/homes/chet/src/bash/src/parse.y"
1735 { (yyval.word_list) = make_word_list ((yyvsp[(3) - (3)].word), (yyvsp[(1) - (3)].word_list)); }
1739 ! #line 1063 "/usr/homes/chet/src/bash/src/parse.y"
1741 (yyval.command) = (yyvsp[(2) - (2)].command);
1745 ! #line 999 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1746 { (yyval.command) = make_if_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command), (COMMAND *)NULL); }
1750 ! #line 1001 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1751 { (yyval.command) = make_if_command ((yyvsp[(2) - (7)].command), (yyvsp[(4) - (7)].command), (yyvsp[(6) - (7)].command)); }
1755 ! #line 1003 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1756 { (yyval.command) = make_if_command ((yyvsp[(2) - (6)].command), (yyvsp[(4) - (6)].command), (yyvsp[(5) - (6)].command)); }
1760 ! #line 1008 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1761 { (yyval.command) = make_group_command ((yyvsp[(2) - (3)].command)); }
1765 ! #line 1012 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1766 { (yyval.command) = make_arith_command ((yyvsp[(1) - (1)].word_list)); }
1770 ! #line 1016 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1771 { (yyval.command) = (yyvsp[(2) - (3)].command); }
1775 ! #line 1020 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1776 { (yyval.command) = make_if_command ((yyvsp[(2) - (4)].command), (yyvsp[(4) - (4)].command), (COMMAND *)NULL); }
1780 ! #line 1022 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1781 { (yyval.command) = make_if_command ((yyvsp[(2) - (6)].command), (yyvsp[(4) - (6)].command), (yyvsp[(6) - (6)].command)); }
1785 ! #line 1024 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1786 { (yyval.command) = make_if_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command), (yyvsp[(5) - (5)].command)); }
1790 ! #line 1029 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1791 { (yyvsp[(2) - (2)].pattern)->next = (yyvsp[(1) - (2)].pattern); (yyval.pattern) = (yyvsp[(2) - (2)].pattern); }
1795 ! #line 1033 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1796 { (yyval.pattern) = make_pattern_list ((yyvsp[(2) - (4)].word_list), (yyvsp[(4) - (4)].command)); }
1800 ! #line 1035 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1801 { (yyval.pattern) = make_pattern_list ((yyvsp[(2) - (4)].word_list), (COMMAND *)NULL); }
1805 ! #line 1037 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1806 { (yyval.pattern) = make_pattern_list ((yyvsp[(3) - (5)].word_list), (yyvsp[(5) - (5)].command)); }
1810 ! #line 1039 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1811 { (yyval.pattern) = make_pattern_list ((yyvsp[(3) - (5)].word_list), (COMMAND *)NULL); }
1815 ! #line 1043 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1816 { (yyval.pattern) = (yyvsp[(1) - (2)].pattern); }
1820 ! #line 1045 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1821 { (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); }
1825 ! #line 1047 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1826 { (yyvsp[(1) - (2)].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyval.pattern) = (yyvsp[(1) - (2)].pattern); }
1830 ! #line 1049 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1831 { (yyvsp[(2) - (3)].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); }
1835 ! #line 1051 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1836 { (yyvsp[(1) - (2)].pattern)->flags |= CASEPAT_TESTNEXT; (yyval.pattern) = (yyvsp[(1) - (2)].pattern); }
1840 ! #line 1053 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1841 { (yyvsp[(2) - (3)].pattern)->flags |= CASEPAT_TESTNEXT; (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); }
1845 ! #line 1057 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1846 { (yyval.word_list) = make_word_list ((yyvsp[(1) - (1)].word), (WORD_LIST *)NULL); }
1850 ! #line 1059 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1851 { (yyval.word_list) = make_word_list ((yyvsp[(3) - (3)].word), (yyvsp[(1) - (3)].word_list)); }
1855 ! #line 1068 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1857 (yyval.command) = (yyvsp[(2) - (2)].command);
1862 ! #line 1072 "/usr/homes/chet/src/bash/src/parse.y"
1864 (yyval.command) = (yyvsp[(2) - (2)].command);
1868 ! #line 1077 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1870 (yyval.command) = (yyvsp[(2) - (2)].command);
1875 ! #line 1079 "/usr/homes/chet/src/bash/src/parse.y"
1877 if ((yyvsp[(1) - (3)].command)->type == cm_connection)
1881 ! #line 1084 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1883 if ((yyvsp[(1) - (3)].command)->type == cm_connection)
1888 ! #line 1090 "/usr/homes/chet/src/bash/src/parse.y"
1889 { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), AND_AND); }
1893 ! #line 1092 "/usr/homes/chet/src/bash/src/parse.y"
1894 { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), OR_OR); }
1898 ! #line 1094 "/usr/homes/chet/src/bash/src/parse.y"
1900 if ((yyvsp[(1) - (4)].command)->type == cm_connection)
1904 ! #line 1095 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1905 { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), AND_AND); }
1909 ! #line 1097 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1910 { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), OR_OR); }
1914 ! #line 1099 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1916 if ((yyvsp[(1) - (4)].command)->type == cm_connection)
1921 ! #line 1101 "/usr/homes/chet/src/bash/src/parse.y"
1922 { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), ';'); }
1926 ! #line 1103 "/usr/homes/chet/src/bash/src/parse.y"
1927 { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), ';'); }
1931 ! #line 1105 "/usr/homes/chet/src/bash/src/parse.y"
1932 { (yyval.command) = (yyvsp[(1) - (1)].command); }
1936 ! #line 1113 "/usr/homes/chet/src/bash/src/parse.y"
1937 { (yyval.number) = '\n'; }
1941 ! #line 1115 "/usr/homes/chet/src/bash/src/parse.y"
1942 { (yyval.number) = ';'; }
1946 ! #line 1117 "/usr/homes/chet/src/bash/src/parse.y"
1947 { (yyval.number) = yacc_EOF; }
1951 ! #line 1131 "/usr/homes/chet/src/bash/src/parse.y"
1953 (yyval.command) = (yyvsp[(1) - (1)].command);
1957 ! #line 1106 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1958 { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), ';'); }
1962 ! #line 1108 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1963 { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), ';'); }
1967 ! #line 1110 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1968 { (yyval.command) = (yyvsp[(1) - (1)].command); }
1972 ! #line 1118 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1973 { (yyval.number) = '\n'; }
1977 ! #line 1120 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1978 { (yyval.number) = ';'; }
1982 ! #line 1122 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1983 { (yyval.number) = yacc_EOF; }
1987 ! #line 1136 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1989 (yyval.command) = (yyvsp[(1) - (1)].command);
1994 ! #line 1144 "/usr/homes/chet/src/bash/src/parse.y"
1996 if ((yyvsp[(1) - (2)].command)->type == cm_connection)
2000 ! #line 1149 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
2002 if ((yyvsp[(1) - (2)].command)->type == cm_connection)
2007 ! #line 1160 "/usr/homes/chet/src/bash/src/parse.y"
2009 (yyval.command) = (yyvsp[(1) - (2)].command);
2013 ! #line 1165 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
2015 (yyval.command) = (yyvsp[(1) - (2)].command);
2020 ! #line 1175 "/usr/homes/chet/src/bash/src/parse.y"
2021 { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), AND_AND); }
2025 ! #line 1177 "/usr/homes/chet/src/bash/src/parse.y"
2026 { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), OR_OR); }
2030 ! #line 1179 "/usr/homes/chet/src/bash/src/parse.y"
2032 if ((yyvsp[(1) - (3)].command)->type == cm_connection)
2036 ! #line 1180 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
2037 { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), AND_AND); }
2041 ! #line 1182 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
2042 { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), OR_OR); }
2046 ! #line 1184 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
2048 if ((yyvsp[(1) - (3)].command)->type == cm_connection)
2053 ! #line 1186 "/usr/homes/chet/src/bash/src/parse.y"
2054 { (yyval.command) = command_connect ((yyvsp[(1) - (3)].command), (yyvsp[(3) - (3)].command), ';'); }
2058 ! #line 1189 "/usr/homes/chet/src/bash/src/parse.y"
2059 { (yyval.command) = (yyvsp[(1) - (1)].command); }
2063 ! #line 1193 "/usr/homes/chet/src/bash/src/parse.y"
2064 { (yyval.command) = (yyvsp[(1) - (1)].command); }
2068 ! #line 1195 "/usr/homes/chet/src/bash/src/parse.y"
2070 if ((yyvsp[(2) - (2)].command))
2074 ! #line 1191 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
2075 { (yyval.command) = command_connect ((yyvsp[(1) - (3)].command), (yyvsp[(3) - (3)].command), ';'); }
2079 ! #line 1194 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
2080 { (yyval.command) = (yyvsp[(1) - (1)].command); }
2084 ! #line 1198 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
2085 { (yyval.command) = (yyvsp[(1) - (1)].command); }
2089 ! #line 1200 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
2091 if ((yyvsp[(2) - (2)].command))
2096 ! #line 1201 "/usr/homes/chet/src/bash/src/parse.y"
2098 if ((yyvsp[(2) - (2)].command))
2102 ! #line 1206 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
2104 if ((yyvsp[(2) - (2)].command))
2109 ! #line 1207 "/usr/homes/chet/src/bash/src/parse.y"
2115 ! #line 1212 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
2122 ! #line 1224 "/usr/homes/chet/src/bash/src/parse.y"
2128 ! #line 1229 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
2135 ! #line 1244 "/usr/homes/chet/src/bash/src/parse.y"
2136 { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), '|'); }
2140 ! #line 1246 "/usr/homes/chet/src/bash/src/parse.y"
2142 /* Make cmd1 |& cmd2 equivalent to cmd1 2>&1 | cmd2 */
2146 ! #line 1249 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
2147 { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), '|'); }
2151 ! #line 1251 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
2153 /* Make cmd1 |& cmd2 equivalent to cmd1 2>&1 | cmd2 */
2158 ! #line 1269 "/usr/homes/chet/src/bash/src/parse.y"
2159 { (yyval.command) = (yyvsp[(1) - (1)].command); }
2163 ! #line 1273 "/usr/homes/chet/src/bash/src/parse.y"
2164 { (yyval.number) = CMD_TIME_PIPELINE; }
2168 ! #line 1275 "/usr/homes/chet/src/bash/src/parse.y"
2169 { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
2173 ! #line 1277 "/usr/homes/chet/src/bash/src/parse.y"
2174 { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
2179 ! #line 1274 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
2180 { (yyval.command) = (yyvsp[(1) - (1)].command); }
2184 ! #line 1278 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
2185 { (yyval.number) = CMD_TIME_PIPELINE; }
2189 ! #line 1280 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
2190 { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
2194 ! #line 1282 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
2195 { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
2200 /* Line 1267 of yacc.c. */
2201 ! #line 3377 "y.tab.c"
2206 /* Line 1267 of yacc.c. */
2207 ! #line 3382 "y.tab.c"
2214 ! #line 1279 "/usr/homes/chet/src/bash/src/parse.y"
2220 ! #line 1284 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
2226 static int esacs_needed_count;
2232 + if (need_here_doc >= HEREDOC_MAX)
2234 + last_command_exit_value = EX_BADUSAGE;
2235 + need_here_doc = 0;
2236 + report_syntax_error (_("maximum here-document count exceeded"));
2238 + exit_shell (last_command_exit_value);
2240 + redir_stack[need_here_doc++] = r;
2244 gather_here_documents ()
2249 #endif /* HANDLE_MULTIBYTE */
2251 *** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
2252 --- patchlevel.h 2014-03-20 20:01:28.000000000 -0400
2255 looks for to find the patch level (for the sccs version string). */
2257 ! #define PATCHLEVEL 27
2259 #endif /* _PATCHLEVEL_H_ */
2261 looks for to find the patch level (for the sccs version string). */
2263 ! #define PATCHLEVEL 28
2265 #endif /* _PATCHLEVEL_H_ */