- Update the patches to include patches 16 to 21 - Update of rootfile not required - Changelog patch 21: fix for expanding command substitutions in a word expansion in a here-document patch 20: allow time reserved word as first token in command substitution patch 19: fix case where background job set the terminal process group patch 18: fix for returning unknown tokens to the bison parser patch 17: fix for optimizing forks when using the . builtin in a subshell patch 16: fix for a crash if one of the expressions in an arithmetic for command expands to NULL
Signed-off-by: Adolf Belka adolf.belka@ipfire.org --- lfs/bash | 2 +- src/patches/bash/bash52-016 | 47 + src/patches/bash/bash52-017 | 47 + src/patches/bash/bash52-018 | 3643 +++++++++++++++++++++++++++++++++++ src/patches/bash/bash52-019 | 66 + src/patches/bash/bash52-020 | 53 + src/patches/bash/bash52-021 | 61 + 7 files changed, 3918 insertions(+), 1 deletion(-) create mode 100644 src/patches/bash/bash52-016 create mode 100644 src/patches/bash/bash52-017 create mode 100644 src/patches/bash/bash52-018 create mode 100644 src/patches/bash/bash52-019 create mode 100644 src/patches/bash/bash52-020 create mode 100644 src/patches/bash/bash52-021
diff --git a/lfs/bash b/lfs/bash index c7ef1f946..80d4f244b 100644 --- a/lfs/bash +++ b/lfs/bash @@ -91,7 +91,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/bash/bash-4.0-profile-1.patch cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/bash/bash-3.2-ssh_source_bash.patch - for i in $$(seq 1 15); do \ + for i in $$(seq 1 21); do \ cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/bash/bash52-$$(printf "%03d" "$${i}") || exit 1; \ done
diff --git a/src/patches/bash/bash52-016 b/src/patches/bash/bash52-016 new file mode 100644 index 000000000..e9fbbef17 --- /dev/null +++ b/src/patches/bash/bash52-016 @@ -0,0 +1,47 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 5.2 +Patch-ID: bash52-016 + +Bug-Reported-by: F G frank.graziano@gmail.com +Bug-Reference-ID: CAOhYt35M5VctK+xAPu=Gy_UzzGmHedWPJE4q+kL4UHF_6Nb1kA@mail.gmail.com +Bug-Reference-URL: + +Bug-Description: + +If an expression in an arithmetic for loop expands to NULL, the shell +would crash. + +Patch (apply with `patch -p0'): + +*** ../bash-5.2-patched/execute_cmd.c Thu Feb 23 14:15:05 2023 +--- execute_cmd.c Mon Feb 27 17:53:08 2023 +*************** +*** 3051,3055 **** + if (l->next) + free (expr); +! new = make_word_list (make_word (temp), (WORD_LIST *)NULL); + free (temp); + +--- 3051,3055 ---- + if (l->next) + free (expr); +! new = make_word_list (make_word (temp ? temp : ""), (WORD_LIST *)NULL); + free (temp); + +*** ../bash-5.2/patchlevel.h 2020-06-22 14:51:03.000000000 -0400 +--- patchlevel.h 2020-10-01 11:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 15 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 16 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash52-017 b/src/patches/bash/bash52-017 new file mode 100644 index 000000000..d28b504bf --- /dev/null +++ b/src/patches/bash/bash52-017 @@ -0,0 +1,47 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 5.2 +Patch-ID: bash52-017 + +Bug-Reported-by: Dan Church h3xx@gmx.com +Bug-Reference-ID: 1a8fd1d6-a3ac-9a67-78eb-b9a7435304c8@gmx.com +Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-bash/2022-12/msg00076.html + +Bug-Description: + +In certain cases, using the `.' builtin in a subshell would optimize away +the rest of the commands in the subshell. + +Patch (apply with `patch -p0'): + +*** ../bash-5.2-patched/builtins/evalfile.c 2019-07-20 16:16:08.000000000 -0400 +--- builtins/evalfile.c 2022-12-22 12:13:08.000000000 -0500 +*************** +*** 267,271 **** + + /* set the flags to be passed to parse_and_execute */ +! pflags = SEVAL_RESETLINE; + pflags |= (flags & FEVAL_HISTORY) ? 0 : SEVAL_NOHIST; + +--- 267,271 ---- + + /* set the flags to be passed to parse_and_execute */ +! pflags = SEVAL_RESETLINE|SEVAL_NOOPTIMIZE; + pflags |= (flags & FEVAL_HISTORY) ? 0 : SEVAL_NOHIST; + +*** ../bash-5.2/patchlevel.h 2020-06-22 14:51:03.000000000 -0400 +--- patchlevel.h 2020-10-01 11:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 16 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 17 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash52-018 b/src/patches/bash/bash52-018 new file mode 100644 index 000000000..d93f11281 --- /dev/null +++ b/src/patches/bash/bash52-018 @@ -0,0 +1,3643 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 5.2 +Patch-ID: bash52-018 + +Bug-Reported-by: Todd Stein toddbstein@gmail.com + Eduardo A . Bustamante López dualbus@gmail.com +Bug-Reference-ID: + Y/SHWg7/+sc19k7P@system76-pc +Bug-Reference-URL: https://savannah.gnu.org/support/?110745 + https://lists.gnu.org/archive/html/bug-bash/2023-02/msg00141.html + +Bug-Description: + +There are two problems with returning tokens to yyparse() when the shell +encounters a syntax error or when it reads EOF. + +When reading a WORD token, the parser has to return the correct value to +yyparse. Previous versions returned a value < 0, which the bash parser +translated into YYERRCODE for bison, and in newer versions of bison, the +appropriate reset actions didn't happen. We should return YYUNDEF, which +bison uses for `invalid token'. Since we can return a token < 0 for both +invalid tokens and EOF, the bash tokenizer needs to differentiate between +those two cases. + +Patch (apply with `patch -p0'): + +*** ../bash-5.2-patched/parse.y 2022-12-13 12:09:02.000000000 -0500 +--- parse.y 2023-11-08 14:29:13.000000000 -0500 +*************** +*** 453,456 **** +--- 453,471 ---- + } + } ++ | error YYEOF ++ { ++ global_command = (COMMAND *)NULL; ++ if (last_command_exit_value == 0) ++ last_command_exit_value = EX_BADUSAGE; /* force error return */ ++ if (interactive && parse_and_execute_level == 0) ++ { ++ handle_eof_input_unit (); ++ YYACCEPT; ++ } ++ else ++ { ++ YYABORT; ++ } ++ } + | yacc_EOF + { +*************** +*** 2898,2904 **** + if (current_token < 0) + #if defined (YYERRCODE) && !defined (YYUNDEF) +! current_token = YYERRCODE; + #else +! current_token = YYerror; + #endif + +--- 2913,2919 ---- + if (current_token < 0) + #if defined (YYERRCODE) && !defined (YYUNDEF) +! current_token = EOF_Reached ? YYEOF : YYERRCODE; + #else +! current_token = EOF_Reached ? YYEOF : YYUNDEF; + #endif + +*************** +*** 3695,3698 **** +--- 3711,3715 ---- + parser_error (start_lineno, _("unexpected EOF while looking for matching `%c'"), close); + EOF_Reached = 1; /* XXX */ ++ parser_state |= PST_NOERROR; /* avoid redundant error message */ + return (&matched_pair_error); + } +*************** +*** 4157,4160 **** +--- 4172,4176 ---- + + /* yyparse() has already called yyerror() and reset_parser() */ ++ parser_state |= PST_NOERROR; + return (&matched_pair_error); + } + +*** /Users/chet/src/bash/bash-5.2-patched/y.tab.c 2022-12-13 12:09:02.000000000 -0500 +--- y.tab.c 2023-11-08 14:38:01.000000000 -0500 +*************** +*** 993,997 **** + + /* YYFINAL -- State number of the termination state. */ +! #define YYFINAL 121 + /* YYLAST -- Last index in YYTABLE. */ + #define YYLAST 740 +--- 993,997 ---- + + /* YYFINAL -- State number of the termination state. */ +! #define YYFINAL 122 + /* YYLAST -- Last index in YYTABLE. */ + #define YYLAST 740 +*************** +*** 1002,1008 **** + #define YYNNTS 38 + /* YYNRULES -- Number of rules. */ +! #define YYNRULES 174 + /* YYNSTATES -- Number of states. */ +! #define YYNSTATES 349 + + /* YYMAXUTOK -- Last valid token kind. */ +--- 1002,1008 ---- + #define YYNNTS 38 + /* YYNRULES -- Number of rules. */ +! #define YYNRULES 175 + /* YYNSTATES -- Number of states. */ +! #define YYNSTATES 350 + + /* YYMAXUTOK -- Last valid token kind. */ +*************** +*** 1058,1079 **** + static const yytype_int16 yyrline[] = + { +! 0, 395, 395, 406, 414, 423, 438, 455, 465, 467, +! 471, 477, 483, 489, 495, 501, 507, 513, 519, 525, +! 531, 537, 543, 549, 555, 561, 568, 575, 582, 589, +! 596, 603, 609, 615, 621, 627, 633, 639, 645, 651, +! 657, 663, 669, 675, 681, 687, 693, 699, 705, 711, +! 717, 723, 729, 735, 743, 745, 747, 751, 755, 766, +! 768, 772, 774, 776, 792, 794, 798, 800, 802, 804, +! 806, 808, 810, 812, 814, 816, 818, 822, 827, 832, +! 837, 842, 847, 852, 857, 864, 870, 876, 882, 890, +! 895, 900, 905, 910, 915, 920, 925, 932, 937, 942, +! 949, 951, 953, 955, 959, 961, 992, 999, 1003, 1009, +! 1014, 1031, 1036, 1053, 1060, 1062, 1064, 1069, 1073, 1077, +! 1081, 1083, 1085, 1089, 1090, 1094, 1096, 1098, 1100, 1104, +! 1106, 1108, 1110, 1112, 1114, 1118, 1120, 1129, 1135, 1141, +! 1142, 1149, 1153, 1155, 1157, 1164, 1166, 1173, 1177, 1178, +! 1181, 1183, 1185, 1189, 1190, 1199, 1214, 1232, 1249, 1251, +! 1253, 1260, 1263, 1267, 1269, 1275, 1281, 1301, 1324, 1326, +! 1349, 1353, 1355, 1357, 1359 + }; + #endif +--- 1058,1079 ---- + static const yytype_int16 yyrline[] = + { +! 0, 395, 395, 406, 414, 423, 438, 455, 470, 480, +! 482, 486, 492, 498, 504, 510, 516, 522, 528, 534, +! 540, 546, 552, 558, 564, 570, 576, 583, 590, 597, +! 604, 611, 618, 624, 630, 636, 642, 648, 654, 660, +! 666, 672, 678, 684, 690, 696, 702, 708, 714, 720, +! 726, 732, 738, 744, 750, 758, 760, 762, 766, 770, +! 781, 783, 787, 789, 791, 807, 809, 813, 815, 817, +! 819, 821, 823, 825, 827, 829, 831, 833, 837, 842, +! 847, 852, 857, 862, 867, 872, 879, 885, 891, 897, +! 905, 910, 915, 920, 925, 930, 935, 940, 947, 952, +! 957, 964, 966, 968, 970, 974, 976, 1007, 1014, 1018, +! 1024, 1029, 1046, 1051, 1068, 1075, 1077, 1079, 1084, 1088, +! 1092, 1096, 1098, 1100, 1104, 1105, 1109, 1111, 1113, 1115, +! 1119, 1121, 1123, 1125, 1127, 1129, 1133, 1135, 1144, 1150, +! 1156, 1157, 1164, 1168, 1170, 1172, 1179, 1181, 1188, 1192, +! 1193, 1196, 1198, 1200, 1204, 1205, 1214, 1229, 1247, 1264, +! 1266, 1268, 1275, 1278, 1282, 1284, 1290, 1296, 1316, 1339, +! 1341, 1364, 1368, 1370, 1372, 1374 + }; + #endif +*************** +*** 1120,1124 **** + #endif + +! #define YYPACT_NINF (-152) + + #define yypact_value_is_default(Yyn) \ +--- 1120,1124 ---- + #endif + +! #define YYPACT_NINF (-125) + + #define yypact_value_is_default(Yyn) \ +*************** +*** 1134,1172 **** + static const yytype_int16 yypact[] = + { +! 328, 80, -152, -11, -1, 3, -152, -152, 15, 637, +! -5, 433, 149, -28, -152, 187, 684, -152, 18, 28, +! 130, 38, 139, 50, 52, 60, 65, 74, -152, -152, +! -152, 89, 104, -152, -152, 97, -152, -152, 246, -152, +! 670, -152, -152, -152, -152, -152, -152, -152, -152, -152, +! -152, -152, -152, 146, 211, -152, 1, 433, -152, -152, +! 135, 484, -152, 59, 61, 90, 167, 171, 10, 71, +! 246, 670, 144, -152, -152, -152, -152, -152, 165, -152, +! 142, 179, 192, 140, 194, 160, 227, 245, 252, 253, +! 260, 261, 262, 162, 269, 178, 270, 272, 273, 274, +! 277, -152, -152, -152, -152, -152, -152, -152, -152, -152, +! -152, -152, -152, -152, -152, 168, 379, -152, -152, 173, +! 244, -152, -152, -152, -152, 670, -152, -152, -152, -152, +! -152, 535, 535, -152, -152, -152, -152, -152, -152, -152, +! 205, -152, 14, -152, 36, -152, -152, -152, -152, 84, +! -152, -152, -152, 249, 670, -152, 670, 670, -152, -152, +! -152, -152, -152, -152, -152, -152, -152, -152, -152, -152, +! -152, -152, -152, -152, -152, -152, -152, -152, -152, -152, +! -152, -152, -152, -152, -152, -152, -152, -152, -152, -152, +! -152, -152, -152, -152, 484, 484, 203, 203, 586, 586, +! 145, -152, -152, -152, -152, -152, -152, 0, -152, 119, +! -152, 291, 248, 66, 88, -152, 119, -152, 296, 297, +! 35, -152, 670, 670, 35, -152, -152, 1, 1, -152, +! -152, -152, 306, 484, 484, 484, 484, 484, 305, 169, +! -152, 7, -152, -152, 302, -152, 131, -152, 265, -152, +! -152, -152, -152, -152, -152, 304, 131, -152, 266, -152, +! -152, -152, 35, -152, 313, 317, -152, -152, -152, 225, +! 225, 225, -152, -152, -152, -152, 206, 25, -152, -152, +! 307, -42, 319, 276, -152, -152, -152, 95, -152, 322, +! 283, 332, 284, -152, -152, 102, -152, -152, -152, -152, +! -152, -152, -152, -152, 45, 323, -152, -152, -152, 106, +! -152, -152, -152, -152, -152, -152, 109, -152, -152, 264, +! -152, -152, -152, 484, -152, -152, 333, 293, -152, -152, +! 338, 300, -152, -152, -152, 484, 345, 303, -152, -152, +! 346, 309, -152, -152, -152, -152, -152, -152, -152 + }; + +--- 1134,1172 ---- + static const yytype_int16 yypact[] = + { +! 329, 27, -125, 8, 81, 10, -125, -125, 16, 38, +! 0, 434, -5, -16, -125, 670, 684, -125, 33, 43, +! 62, 63, 71, 69, 94, 105, 108, 116, -125, -125, +! -125, 125, 139, -125, -125, 111, -125, -125, 626, -125, +! 648, -125, -125, -125, -125, -125, -125, -125, -125, -125, +! -125, -125, -125, 5, -21, -125, -15, 434, -125, -125, +! -125, 196, 485, -125, 157, 2, 180, 207, 222, 227, +! 638, 626, 648, 224, -125, -125, -125, -125, -125, 219, +! -125, 185, 223, 228, 140, 230, 161, 232, 233, 234, +! 236, 241, 248, 249, 162, 250, 163, 251, 254, 256, +! 257, 258, -125, -125, -125, -125, -125, -125, -125, -125, +! -125, -125, -125, -125, -125, -125, 225, 380, -125, -125, +! 229, 231, -125, -125, -125, -125, 648, -125, -125, -125, +! -125, -125, 536, 536, -125, -125, -125, -125, -125, -125, +! -125, 214, -125, -7, -125, 85, -125, -125, -125, -125, +! 89, -125, -125, -125, 235, 648, -125, 648, 648, -125, +! -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, +! -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, +! -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, +! -125, -125, -125, -125, -125, 485, 485, 138, 138, 587, +! 587, 17, -125, -125, -125, -125, -125, -125, 88, -125, +! 122, -125, 274, 238, 100, 101, -125, 122, -125, 276, +! 278, 260, -125, 648, 648, 260, -125, -125, -15, -15, +! -125, -125, -125, 287, 485, 485, 485, 485, 485, 290, +! 164, -125, 26, -125, -125, 285, -125, 131, -125, 242, +! -125, -125, -125, -125, -125, -125, 288, 131, -125, 243, +! -125, -125, -125, 260, -125, 297, 302, -125, -125, -125, +! 152, 152, 152, -125, -125, -125, -125, 170, 61, -125, +! -125, 281, -36, 293, 252, -125, -125, -125, 102, -125, +! 298, 255, 300, 262, -125, -125, 103, -125, -125, -125, +! -125, -125, -125, -125, -125, -33, 296, -125, -125, -125, +! 110, -125, -125, -125, -125, -125, -125, 112, -125, -125, +! 189, -125, -125, -125, 485, -125, -125, 310, 267, -125, +! -125, 314, 275, -125, -125, -125, 485, 318, 277, -125, +! -125, 320, 279, -125, -125, -125, -125, -125, -125, -125 + }; + +*************** +*** 1176,1214 **** + static const yytype_uint8 yydefact[] = + { +! 0, 0, 153, 0, 0, 0, 153, 153, 0, 0, +! 0, 0, 171, 54, 55, 0, 0, 118, 0, 0, +! 0, 0, 0, 0, 0, 0, 0, 0, 153, 4, +! 7, 0, 0, 153, 153, 0, 56, 59, 61, 170, +! 62, 66, 76, 70, 67, 64, 72, 3, 65, 71, +! 73, 74, 75, 0, 155, 162, 163, 0, 5, 6, +! 0, 0, 153, 153, 0, 153, 0, 0, 0, 54, +! 113, 109, 0, 151, 150, 152, 167, 164, 172, 173, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +! 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +! 0, 16, 25, 40, 34, 49, 31, 43, 37, 46, +! 28, 52, 53, 22, 19, 0, 0, 10, 11, 0, +! 0, 1, 54, 60, 57, 63, 148, 149, 2, 153, +! 153, 156, 157, 153, 153, 166, 165, 153, 154, 137, +! 138, 147, 0, 153, 0, 153, 153, 153, 153, 0, +! 153, 153, 153, 153, 104, 102, 111, 110, 119, 174, +! 153, 18, 27, 42, 36, 51, 33, 45, 39, 48, +! 30, 24, 21, 14, 15, 17, 26, 41, 35, 50, +! 32, 44, 38, 47, 29, 23, 20, 12, 13, 107, +! 108, 117, 106, 58, 0, 0, 160, 161, 0, 0, +! 0, 153, 153, 153, 153, 153, 153, 0, 153, 0, +! 153, 0, 0, 0, 0, 153, 0, 153, 0, 0, +! 0, 153, 105, 112, 0, 158, 159, 169, 168, 153, +! 153, 114, 0, 0, 0, 140, 141, 139, 0, 123, +! 153, 0, 153, 153, 0, 8, 0, 153, 0, 87, +! 88, 153, 153, 153, 153, 0, 0, 153, 0, 68, +! 69, 103, 0, 100, 0, 0, 116, 142, 143, 144, +! 145, 146, 99, 129, 131, 133, 124, 0, 97, 135, +! 0, 0, 0, 0, 77, 9, 153, 0, 78, 0, +! 0, 0, 0, 89, 153, 0, 90, 101, 115, 153, +! 130, 132, 134, 98, 0, 0, 153, 79, 80, 0, +! 153, 153, 85, 86, 91, 92, 0, 153, 153, 120, +! 153, 136, 125, 126, 153, 153, 0, 0, 153, 153, +! 0, 0, 153, 122, 127, 128, 0, 0, 83, 84, +! 0, 0, 95, 96, 121, 81, 82, 93, 94 + }; + +--- 1176,1214 ---- + static const yytype_uint8 yydefact[] = + { +! 0, 0, 154, 0, 0, 0, 154, 154, 0, 0, +! 0, 0, 172, 55, 56, 0, 0, 119, 0, 0, +! 0, 0, 0, 0, 0, 0, 0, 0, 154, 4, +! 8, 0, 0, 154, 154, 0, 57, 60, 62, 171, +! 63, 67, 77, 71, 68, 65, 73, 3, 66, 72, +! 74, 75, 76, 0, 156, 163, 164, 0, 7, 5, +! 6, 0, 0, 154, 154, 0, 154, 0, 0, 0, +! 55, 114, 110, 0, 152, 151, 153, 168, 165, 173, +! 174, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +! 0, 0, 17, 26, 41, 35, 50, 32, 44, 38, +! 47, 29, 53, 54, 23, 20, 0, 0, 11, 12, +! 0, 0, 1, 55, 61, 58, 64, 149, 150, 2, +! 154, 154, 157, 158, 154, 154, 167, 166, 154, 155, +! 138, 139, 148, 0, 154, 0, 154, 154, 154, 154, +! 0, 154, 154, 154, 154, 105, 103, 112, 111, 120, +! 175, 154, 19, 28, 43, 37, 52, 34, 46, 40, +! 49, 31, 25, 22, 15, 16, 18, 27, 42, 36, +! 51, 33, 45, 39, 48, 30, 24, 21, 13, 14, +! 108, 109, 118, 107, 59, 0, 0, 161, 162, 0, +! 0, 0, 154, 154, 154, 154, 154, 154, 0, 154, +! 0, 154, 0, 0, 0, 0, 154, 0, 154, 0, +! 0, 0, 154, 106, 113, 0, 159, 160, 170, 169, +! 154, 154, 115, 0, 0, 0, 141, 142, 140, 0, +! 124, 154, 0, 154, 154, 0, 9, 0, 154, 0, +! 88, 89, 154, 154, 154, 154, 0, 0, 154, 0, +! 69, 70, 104, 0, 101, 0, 0, 117, 143, 144, +! 145, 146, 147, 100, 130, 132, 134, 125, 0, 98, +! 136, 0, 0, 0, 0, 78, 10, 154, 0, 79, +! 0, 0, 0, 0, 90, 154, 0, 91, 102, 116, +! 154, 131, 133, 135, 99, 0, 0, 154, 80, 81, +! 0, 154, 154, 86, 87, 92, 93, 0, 154, 154, +! 121, 154, 137, 126, 127, 154, 154, 0, 0, 154, +! 154, 0, 0, 154, 123, 128, 129, 0, 0, 84, +! 85, 0, 0, 96, 97, 122, 82, 83, 94, 95 + }; + +*************** +*** 1216,1223 **** + static const yytype_int16 yypgoto[] = + { +! -152, -152, 112, -29, -14, -64, 360, -152, -8, -152, +! -152, -152, -152, -152, -151, -152, -152, -152, -152, -152, +! -152, -152, 13, -152, 136, -152, 98, -2, -152, 30, +! -152, -54, -26, -152, -123, 6, 78, -152 + }; + +--- 1216,1223 ---- + static const yytype_int16 yypgoto[] = + { +! -125, -125, 126, -25, -28, -65, 335, -125, -8, -125, +! -125, -125, -125, -125, -96, -125, -125, -125, -125, -125, +! -125, -125, 28, -125, 109, -125, 68, -2, -125, -11, +! -125, -54, -26, -125, -124, 6, 34, -125 + }; + +*************** +*** 1225,1232 **** + static const yytype_int16 yydefgoto[] = + { +! 0, 35, 246, 36, 37, 125, 38, 39, 40, 41, +! 42, 43, 44, 45, 155, 46, 47, 48, 49, 50, +! 51, 52, 232, 238, 239, 240, 281, 120, 139, 140, +! 128, 76, 61, 53, 54, 141, 56, 57 + }; + +--- 1225,1232 ---- + static const yytype_int16 yydefgoto[] = + { +! 0, 35, 247, 36, 37, 126, 38, 39, 40, 41, +! 42, 43, 44, 45, 156, 46, 47, 48, 49, 50, +! 51, 52, 233, 239, 240, 241, 282, 121, 140, 141, +! 129, 77, 62, 53, 54, 142, 56, 57 + }; + +*************** +*** 1236,1390 **** + static const yytype_int16 yytable[] = + { +! 60, 71, 116, 135, 66, 67, 55, 157, 196, 197, +! 147, 124, 305, 2, 242, 62, 278, 77, 3, 306, +! 4, 5, 6, 7, 123, 63, 115, 72, 10, 65, +! 64, 119, 80, 279, 303, 206, 142, 144, 2, 149, +! 17, 68, 124, 3, 101, 4, 5, 6, 7, 133, +! 208, 279, 138, 10, 102, 134, 123, 209, 243, 138, +! 154, 156, 152, 136, 106, 17, 138, 280, 33, 261, +! 153, 225, 226, 263, 2, 145, 110, 138, 111, 3, +! 251, 4, 5, 6, 7, 280, 112, 138, 138, 10, +! 222, 113, 223, 33, 210, 34, 193, 121, 215, 305, +! 114, 17, 253, 194, 195, 216, 320, 198, 199, 310, +! 143, 297, 73, 74, 75, 117, 317, 207, 138, 146, +! 324, 213, 214, 328, 252, 124, 220, 124, 193, 33, +! 118, 34, 58, 59, 224, 200, 138, 55, 55, 137, +! 138, 148, 217, 211, 212, 245, 254, 138, 218, 219, +! 229, 230, 231, 311, 138, 247, 103, 285, 138, 104, +! 318, 138, 257, 158, 325, 107, 163, 329, 108, 164, +! 73, 74, 75, 78, 79, 233, 234, 235, 236, 237, +! 241, 150, 73, 74, 75, 151, 167, 105, 177, 168, +! 159, 178, 286, 193, 193, 262, 109, 165, 126, 127, +! 55, 55, 294, 160, 181, 161, 244, 182, 248, 273, +! 274, 275, 154, 255, 277, 258, 154, 169, 162, 179, +! 166, 287, 81, 82, 83, 84, 85, 264, 265, 189, +! 86, 295, 191, 87, 88, 183, 129, 130, 201, 202, +! 282, 283, 89, 90, 129, 130, 300, 301, 302, 289, +! 290, 291, 292, 170, 154, 203, 204, 205, 201, 202, +! 309, 131, 132, 267, 268, 269, 270, 271, 316, 332, +! 230, 171, 122, 14, 15, 16, 227, 228, 172, 173, +! 323, 18, 19, 20, 21, 22, 174, 175, 176, 23, +! 24, 25, 26, 27, 335, 180, 184, 319, 185, 186, +! 187, 31, 32, 188, 322, 192, 249, 250, 326, 327, +! 221, 259, 260, 266, 272, 330, 331, 284, 334, 293, +! 298, 299, 336, 337, 288, 296, 340, 341, 256, 1, +! 344, 2, 333, 279, 307, 308, 3, 312, 4, 5, +! 6, 7, 313, 315, 8, 9, 10, 314, 338, 321, +! 11, 12, 339, 342, 13, 14, 15, 16, 17, 343, +! 345, 347, 346, 18, 19, 20, 21, 22, 348, 70, +! 0, 23, 24, 25, 26, 27, 276, 28, 304, 0, +! 29, 30, 2, 31, 32, 0, 33, 3, 34, 4, +! 5, 6, 7, 0, 0, 8, 9, 10, 0, 0, +! 0, 11, 12, 0, 0, 13, 14, 15, 16, 17, + 0, 0, 0, 0, 18, 19, 20, 21, 22, 0, +! 0, 0, 23, 24, 25, 26, 27, 0, 0, 0, +! 0, 138, 0, 0, 31, 32, 2, 33, 0, 34, +! 190, 3, 0, 4, 5, 6, 7, 0, 0, 8, +! 9, 10, 0, 0, 0, 11, 12, 0, 0, 13, +! 14, 15, 16, 17, 0, 0, 0, 0, 18, 19, +! 20, 21, 22, 0, 0, 0, 23, 24, 25, 26, +! 27, 0, 0, 0, 73, 74, 75, 2, 31, 32, +! 0, 33, 3, 34, 4, 5, 6, 7, 0, 0, + 8, 9, 10, 0, 0, 0, 11, 12, 0, 0, + 13, 14, 15, 16, 17, 0, 0, 0, 0, 18, + 19, 20, 21, 22, 0, 0, 0, 23, 24, 25, +! 26, 27, 0, 0, 0, 0, 138, 0, 2, 31, + 32, 0, 33, 3, 34, 4, 5, 6, 7, 0, + 0, 8, 9, 10, 0, 0, 0, 11, 12, 0, + 0, 13, 14, 15, 16, 17, 0, 0, 0, 0, + 18, 19, 20, 21, 22, 0, 0, 0, 23, 24, +! 25, 26, 27, 0, 0, 0, 0, 0, 0, 2, + 31, 32, 0, 33, 3, 34, 4, 5, 6, 7, +! 0, 0, 8, 9, 10, 0, 0, 0, 0, 0, + 0, 0, 13, 14, 15, 16, 17, 0, 0, 0, + 0, 18, 19, 20, 21, 22, 0, 0, 0, 23, +! 24, 25, 26, 27, 0, 0, 0, 0, 138, 0, + 2, 31, 32, 0, 33, 3, 34, 4, 5, 6, +! 7, 0, 0, 0, 0, 10, 0, 0, 0, 0, +! 0, 0, 0, 69, 14, 15, 16, 17, 0, 0, + 0, 0, 18, 19, 20, 21, 22, 0, 0, 0, +! 23, 24, 25, 26, 27, 0, 0, 0, 0, 0, +! 0, 0, 31, 32, 0, 33, 0, 34, 15, 16, +! 0, 0, 0, 0, 0, 18, 19, 20, 21, 22, +! 0, 0, 0, 23, 24, 25, 26, 27, 0, 91, +! 92, 93, 94, 95, 0, 31, 32, 96, 0, 0, +! 97, 98, 0, 0, 0, 0, 0, 0, 0, 99, +! 100 + }; + + static const yytype_int16 yycheck[] = + { +! 2, 9, 28, 57, 6, 7, 0, 71, 131, 132, +! 64, 40, 54, 3, 14, 26, 9, 11, 8, 61, +! 10, 11, 12, 13, 38, 26, 28, 32, 18, 26, +! 31, 33, 60, 26, 9, 21, 62, 63, 3, 65, +! 30, 26, 71, 8, 26, 10, 11, 12, 13, 48, +! 14, 26, 52, 18, 26, 54, 70, 21, 58, 52, +! 68, 69, 52, 57, 26, 30, 52, 60, 58, 220, +! 60, 194, 195, 224, 3, 14, 26, 52, 26, 8, +! 14, 10, 11, 12, 13, 60, 26, 52, 52, 18, +! 154, 26, 156, 58, 58, 60, 125, 0, 14, 54, +! 26, 30, 14, 129, 130, 21, 61, 133, 134, 14, +! 51, 262, 51, 52, 53, 26, 14, 143, 52, 58, +! 14, 147, 148, 14, 58, 154, 152, 156, 157, 58, +! 26, 60, 52, 53, 160, 137, 52, 131, 132, 4, +! 52, 51, 58, 145, 146, 26, 58, 52, 150, 151, +! 5, 6, 7, 58, 52, 209, 26, 26, 52, 29, +! 58, 52, 216, 19, 58, 26, 26, 58, 29, 29, +! 51, 52, 53, 24, 25, 201, 202, 203, 204, 205, +! 206, 14, 51, 52, 53, 14, 26, 57, 26, 29, +! 25, 29, 246, 222, 223, 221, 57, 57, 52, 53, +! 194, 195, 256, 61, 26, 26, 208, 29, 210, 40, +! 41, 42, 220, 215, 240, 217, 224, 57, 26, 57, +! 26, 247, 35, 36, 37, 38, 39, 229, 230, 61, +! 43, 257, 59, 46, 47, 57, 33, 34, 33, 34, +! 242, 243, 55, 56, 33, 34, 40, 41, 42, 251, +! 252, 253, 254, 26, 262, 50, 51, 52, 33, 34, +! 286, 50, 51, 233, 234, 235, 236, 237, 294, 5, +! 6, 26, 26, 27, 28, 29, 198, 199, 26, 26, +! 306, 35, 36, 37, 38, 39, 26, 26, 26, 43, +! 44, 45, 46, 47, 320, 26, 26, 299, 26, 26, +! 26, 55, 56, 26, 306, 61, 15, 59, 310, 311, +! 61, 15, 15, 7, 9, 317, 318, 15, 320, 15, +! 7, 4, 324, 325, 59, 59, 328, 329, 216, 1, +! 332, 3, 319, 26, 15, 59, 8, 15, 10, 11, +! 12, 13, 59, 59, 16, 17, 18, 15, 15, 26, +! 22, 23, 59, 15, 26, 27, 28, 29, 30, 59, +! 15, 15, 59, 35, 36, 37, 38, 39, 59, 9, +! -1, 43, 44, 45, 46, 47, 240, 49, 280, -1, +! 52, 53, 3, 55, 56, -1, 58, 8, 60, 10, +! 11, 12, 13, -1, -1, 16, 17, 18, -1, -1, +! -1, 22, 23, -1, -1, 26, 27, 28, 29, 30, + -1, -1, -1, -1, 35, 36, 37, 38, 39, -1, +! -1, -1, 43, 44, 45, 46, 47, -1, -1, -1, +! -1, 52, -1, -1, 55, 56, 3, 58, -1, 60, +! 61, 8, -1, 10, 11, 12, 13, -1, -1, 16, +! 17, 18, -1, -1, -1, 22, 23, -1, -1, 26, +! 27, 28, 29, 30, -1, -1, -1, -1, 35, 36, +! 37, 38, 39, -1, -1, -1, 43, 44, 45, 46, +! 47, -1, -1, -1, 51, 52, 53, 3, 55, 56, +! -1, 58, 8, 60, 10, 11, 12, 13, -1, -1, + 16, 17, 18, -1, -1, -1, 22, 23, -1, -1, + 26, 27, 28, 29, 30, -1, -1, -1, -1, 35, + 36, 37, 38, 39, -1, -1, -1, 43, 44, 45, +! 46, 47, -1, -1, -1, -1, 52, -1, 3, 55, + 56, -1, 58, 8, 60, 10, 11, 12, 13, -1, + -1, 16, 17, 18, -1, -1, -1, 22, 23, -1, + -1, 26, 27, 28, 29, 30, -1, -1, -1, -1, + 35, 36, 37, 38, 39, -1, -1, -1, 43, 44, +! 45, 46, 47, -1, -1, -1, -1, -1, -1, 3, + 55, 56, -1, 58, 8, 60, 10, 11, 12, 13, +! -1, -1, 16, 17, 18, -1, -1, -1, -1, -1, + -1, -1, 26, 27, 28, 29, 30, -1, -1, -1, + -1, 35, 36, 37, 38, 39, -1, -1, -1, 43, +! 44, 45, 46, 47, -1, -1, -1, -1, 52, -1, + 3, 55, 56, -1, 58, 8, 60, 10, 11, 12, +! 13, -1, -1, -1, -1, 18, -1, -1, -1, -1, + -1, -1, -1, 26, 27, 28, 29, 30, -1, -1, + -1, -1, 35, 36, 37, 38, 39, -1, -1, -1, +! 43, 44, 45, 46, 47, -1, -1, -1, -1, -1, +! -1, -1, 55, 56, -1, 58, -1, 60, 28, 29, +! -1, -1, -1, -1, -1, 35, 36, 37, 38, 39, +! -1, -1, -1, 43, 44, 45, 46, 47, -1, 35, + 36, 37, 38, 39, -1, 55, 56, 43, -1, -1, + 46, 47, -1, -1, -1, -1, -1, -1, -1, 55, +--- 1236,1390 ---- + static const yytype_int16 yytable[] = + { +! 61, 72, 117, 136, 67, 68, 55, 158, 197, 198, +! 124, 148, 130, 131, 207, 125, 146, 78, 306, 79, +! 80, 306, 230, 231, 232, 307, 116, 58, 321, 132, +! 133, 120, 73, 134, 63, 279, 66, 143, 145, 135, +! 150, 2, 69, 124, 81, 139, 3, 125, 4, 5, +! 6, 7, 280, 74, 75, 76, 10, 127, 128, 102, +! 147, 155, 157, 137, 70, 14, 15, 16, 17, 103, +! 304, 226, 227, 18, 19, 20, 21, 22, 139, 59, +! 60, 23, 24, 25, 26, 27, 281, 280, 104, 107, +! 223, 105, 224, 31, 32, 111, 33, 108, 34, 209, +! 109, 194, 243, 216, 195, 196, 210, 64, 199, 200, +! 217, 122, 65, 139, 252, 254, 311, 318, 208, 106, +! 112, 281, 214, 215, 325, 262, 329, 221, 110, 264, +! 125, 113, 125, 194, 114, 225, 201, 139, 55, 55, +! 139, 139, 115, 211, 212, 213, 244, 218, 246, 219, +! 220, 118, 139, 139, 139, 139, 248, 286, 253, 255, +! 312, 319, 139, 258, 139, 119, 164, 298, 326, 165, +! 330, 130, 131, 74, 75, 76, 234, 235, 236, 237, +! 238, 242, 74, 75, 76, 202, 203, 168, 178, 182, +! 169, 179, 183, 287, 333, 231, 263, 166, 194, 194, +! 138, 55, 55, 295, 274, 275, 276, 245, 144, 249, +! 301, 302, 303, 155, 256, 278, 259, 155, 170, 180, +! 184, 151, 288, 268, 269, 270, 271, 272, 265, 266, +! 2, 149, 296, 228, 229, 3, 152, 4, 5, 6, +! 7, 283, 284, 159, 160, 10, 161, 202, 203, 162, +! 290, 291, 292, 293, 163, 155, 167, 17, 171, 172, +! 173, 310, 174, 2, 204, 205, 206, 175, 3, 317, +! 4, 5, 6, 7, 176, 177, 181, 185, 10, 153, +! 186, 324, 187, 188, 189, 33, 190, 154, 192, 250, +! 17, 260, 193, 261, 267, 336, 222, 251, 320, 273, +! 285, 289, 297, 294, 299, 323, 300, 280, 308, 327, +! 328, 309, 139, 313, 314, 315, 331, 332, 33, 335, +! 34, 316, 322, 337, 338, 339, 340, 341, 342, 343, +! 1, 345, 2, 346, 344, 348, 347, 3, 349, 4, +! 5, 6, 7, 257, 71, 8, 9, 10, 334, 305, +! 277, 11, 12, 0, 0, 13, 14, 15, 16, 17, + 0, 0, 0, 0, 18, 19, 20, 21, 22, 0, +! 0, 0, 23, 24, 25, 26, 27, 0, 28, 0, +! 0, 29, 30, 2, 31, 32, 0, 33, 3, 34, +! 4, 5, 6, 7, 0, 0, 8, 9, 10, 0, +! 0, 0, 11, 12, 0, 0, 13, 14, 15, 16, +! 17, 0, 0, 0, 0, 18, 19, 20, 21, 22, +! 0, 0, 0, 23, 24, 25, 26, 27, 0, 0, +! 0, 0, 139, 0, 0, 31, 32, 2, 33, 0, +! 34, 191, 3, 0, 4, 5, 6, 7, 0, 0, + 8, 9, 10, 0, 0, 0, 11, 12, 0, 0, + 13, 14, 15, 16, 17, 0, 0, 0, 0, 18, + 19, 20, 21, 22, 0, 0, 0, 23, 24, 25, +! 26, 27, 0, 0, 0, 74, 75, 76, 2, 31, + 32, 0, 33, 3, 34, 4, 5, 6, 7, 0, + 0, 8, 9, 10, 0, 0, 0, 11, 12, 0, + 0, 13, 14, 15, 16, 17, 0, 0, 0, 0, + 18, 19, 20, 21, 22, 0, 0, 0, 23, 24, +! 25, 26, 27, 0, 0, 0, 0, 139, 0, 2, + 31, 32, 0, 33, 3, 34, 4, 5, 6, 7, +! 0, 0, 8, 9, 10, 0, 0, 0, 11, 12, + 0, 0, 13, 14, 15, 16, 17, 0, 0, 0, + 0, 18, 19, 20, 21, 22, 0, 0, 0, 23, +! 24, 25, 26, 27, 0, 0, 0, 0, 0, 0, + 2, 31, 32, 0, 33, 3, 34, 4, 5, 6, +! 7, 0, 0, 8, 9, 10, 0, 0, 0, 0, +! 0, 0, 0, 13, 14, 15, 16, 17, 0, 0, + 0, 0, 18, 19, 20, 21, 22, 0, 0, 0, +! 23, 24, 25, 26, 27, 0, 0, 0, 0, 139, +! 0, 2, 31, 32, 0, 33, 3, 34, 4, 5, +! 6, 7, 123, 14, 15, 16, 10, 0, 0, 0, +! 0, 18, 19, 20, 21, 22, 0, 0, 17, 23, +! 24, 25, 26, 27, 0, 0, 15, 16, 0, 0, +! 0, 31, 32, 18, 19, 20, 21, 22, 0, 0, +! 0, 23, 24, 25, 26, 27, 33, 0, 34, 0, +! 0, 0, 0, 31, 32, 82, 83, 84, 85, 86, +! 0, 0, 0, 87, 0, 0, 88, 89, 0, 92, +! 93, 94, 95, 96, 0, 90, 91, 97, 0, 0, +! 98, 99, 0, 0, 0, 0, 0, 0, 0, 100, +! 101 + }; + + static const yytype_int16 yycheck[] = + { +! 2, 9, 28, 57, 6, 7, 0, 72, 132, 133, +! 38, 65, 33, 34, 21, 40, 14, 11, 54, 24, +! 25, 54, 5, 6, 7, 61, 28, 0, 61, 50, +! 51, 33, 32, 48, 26, 9, 26, 63, 64, 54, +! 66, 3, 26, 71, 60, 52, 8, 72, 10, 11, +! 12, 13, 26, 51, 52, 53, 18, 52, 53, 26, +! 58, 69, 70, 57, 26, 27, 28, 29, 30, 26, +! 9, 195, 196, 35, 36, 37, 38, 39, 52, 52, +! 53, 43, 44, 45, 46, 47, 60, 26, 26, 26, +! 155, 29, 157, 55, 56, 26, 58, 26, 60, 14, +! 29, 126, 14, 14, 130, 131, 21, 26, 134, 135, +! 21, 0, 31, 52, 14, 14, 14, 14, 144, 57, +! 26, 60, 148, 149, 14, 221, 14, 153, 57, 225, +! 155, 26, 157, 158, 26, 161, 138, 52, 132, 133, +! 52, 52, 26, 58, 146, 147, 58, 58, 26, 151, +! 152, 26, 52, 52, 52, 52, 210, 26, 58, 58, +! 58, 58, 52, 217, 52, 26, 26, 263, 58, 29, +! 58, 33, 34, 51, 52, 53, 202, 203, 204, 205, +! 206, 207, 51, 52, 53, 33, 34, 26, 26, 26, +! 29, 29, 29, 247, 5, 6, 222, 57, 223, 224, +! 4, 195, 196, 257, 40, 41, 42, 209, 51, 211, +! 40, 41, 42, 221, 216, 241, 218, 225, 57, 57, +! 57, 14, 248, 234, 235, 236, 237, 238, 230, 231, +! 3, 51, 258, 199, 200, 8, 14, 10, 11, 12, +! 13, 243, 244, 19, 25, 18, 61, 33, 34, 26, +! 252, 253, 254, 255, 26, 263, 26, 30, 26, 26, +! 26, 287, 26, 3, 50, 51, 52, 26, 8, 295, +! 10, 11, 12, 13, 26, 26, 26, 26, 18, 52, +! 26, 307, 26, 26, 26, 58, 61, 60, 59, 15, +! 30, 15, 61, 15, 7, 321, 61, 59, 300, 9, +! 15, 59, 59, 15, 7, 307, 4, 26, 15, 311, +! 312, 59, 52, 15, 59, 15, 318, 319, 58, 321, +! 60, 59, 26, 325, 326, 15, 59, 329, 330, 15, +! 1, 333, 3, 15, 59, 15, 59, 8, 59, 10, +! 11, 12, 13, 217, 9, 16, 17, 18, 320, 281, +! 241, 22, 23, -1, -1, 26, 27, 28, 29, 30, + -1, -1, -1, -1, 35, 36, 37, 38, 39, -1, +! -1, -1, 43, 44, 45, 46, 47, -1, 49, -1, +! -1, 52, 53, 3, 55, 56, -1, 58, 8, 60, +! 10, 11, 12, 13, -1, -1, 16, 17, 18, -1, +! -1, -1, 22, 23, -1, -1, 26, 27, 28, 29, +! 30, -1, -1, -1, -1, 35, 36, 37, 38, 39, +! -1, -1, -1, 43, 44, 45, 46, 47, -1, -1, +! -1, -1, 52, -1, -1, 55, 56, 3, 58, -1, +! 60, 61, 8, -1, 10, 11, 12, 13, -1, -1, + 16, 17, 18, -1, -1, -1, 22, 23, -1, -1, + 26, 27, 28, 29, 30, -1, -1, -1, -1, 35, + 36, 37, 38, 39, -1, -1, -1, 43, 44, 45, +! 46, 47, -1, -1, -1, 51, 52, 53, 3, 55, + 56, -1, 58, 8, 60, 10, 11, 12, 13, -1, + -1, 16, 17, 18, -1, -1, -1, 22, 23, -1, + -1, 26, 27, 28, 29, 30, -1, -1, -1, -1, + 35, 36, 37, 38, 39, -1, -1, -1, 43, 44, +! 45, 46, 47, -1, -1, -1, -1, 52, -1, 3, + 55, 56, -1, 58, 8, 60, 10, 11, 12, 13, +! -1, -1, 16, 17, 18, -1, -1, -1, 22, 23, + -1, -1, 26, 27, 28, 29, 30, -1, -1, -1, + -1, 35, 36, 37, 38, 39, -1, -1, -1, 43, +! 44, 45, 46, 47, -1, -1, -1, -1, -1, -1, + 3, 55, 56, -1, 58, 8, 60, 10, 11, 12, +! 13, -1, -1, 16, 17, 18, -1, -1, -1, -1, + -1, -1, -1, 26, 27, 28, 29, 30, -1, -1, + -1, -1, 35, 36, 37, 38, 39, -1, -1, -1, +! 43, 44, 45, 46, 47, -1, -1, -1, -1, 52, +! -1, 3, 55, 56, -1, 58, 8, 60, 10, 11, +! 12, 13, 26, 27, 28, 29, 18, -1, -1, -1, +! -1, 35, 36, 37, 38, 39, -1, -1, 30, 43, +! 44, 45, 46, 47, -1, -1, 28, 29, -1, -1, +! -1, 55, 56, 35, 36, 37, 38, 39, -1, -1, +! -1, 43, 44, 45, 46, 47, 58, -1, 60, -1, +! -1, -1, -1, 55, 56, 35, 36, 37, 38, 39, +! -1, -1, -1, 43, -1, -1, 46, 47, -1, 35, + 36, 37, 38, 39, -1, 55, 56, 43, -1, -1, + 46, 47, -1, -1, -1, -1, -1, -1, -1, 55, +*************** +*** 1401,1434 **** + 53, 55, 56, 58, 60, 63, 65, 66, 68, 69, + 70, 71, 72, 73, 74, 75, 77, 78, 79, 80, +! 81, 82, 83, 95, 96, 97, 98, 99, 52, 53, +! 89, 94, 26, 26, 31, 26, 89, 89, 26, 26, +! 68, 70, 32, 51, 52, 53, 93, 97, 24, 25, +! 60, 35, 36, 37, 38, 39, 43, 46, 47, 55, +! 56, 35, 36, 37, 38, 39, 43, 46, 47, 55, +! 56, 26, 26, 26, 29, 57, 26, 26, 29, 57, +! 26, 26, 26, 26, 26, 89, 94, 26, 26, 89, +! 89, 0, 26, 66, 65, 67, 52, 53, 92, 33, +! 34, 50, 51, 48, 54, 93, 97, 4, 52, 90, +! 91, 97, 94, 51, 94, 14, 58, 93, 51, 94, +! 14, 14, 52, 60, 70, 76, 70, 67, 19, 25, +! 61, 26, 26, 26, 29, 57, 26, 26, 29, 57, +! 26, 26, 26, 26, 26, 26, 26, 26, 29, 57, +! 26, 26, 29, 57, 26, 26, 26, 26, 26, 61, +! 61, 59, 61, 65, 94, 94, 96, 96, 94, 94, +! 89, 33, 34, 50, 51, 52, 21, 94, 14, 21, +! 58, 89, 89, 94, 94, 14, 21, 58, 89, 89, +! 94, 61, 67, 67, 94, 96, 96, 98, 98, 5, +! 6, 7, 84, 94, 94, 94, 94, 94, 85, 86, +! 87, 94, 14, 58, 89, 26, 64, 93, 89, 15, +! 59, 14, 58, 14, 58, 89, 64, 93, 89, 15, +! 15, 76, 94, 76, 89, 89, 7, 91, 91, 91, +! 91, 91, 9, 40, 41, 42, 86, 94, 9, 26, +! 60, 88, 89, 89, 15, 26, 93, 94, 59, 89, +! 89, 89, 89, 15, 93, 94, 59, 76, 7, 4, +! 40, 41, 42, 9, 88, 54, 61, 15, 59, 94, +! 14, 58, 15, 59, 15, 59, 94, 14, 58, 89, +! 61, 26, 89, 94, 14, 58, 89, 89, 14, 58, +! 89, 89, 5, 84, 89, 94, 89, 89, 15, 59, +! 89, 89, 15, 59, 89, 15, 59, 15, 59 + }; + +--- 1401,1434 ---- + 53, 55, 56, 58, 60, 63, 65, 66, 68, 69, + 70, 71, 72, 73, 74, 75, 77, 78, 79, 80, +! 81, 82, 83, 95, 96, 97, 98, 99, 0, 52, +! 53, 89, 94, 26, 26, 31, 26, 89, 89, 26, +! 26, 68, 70, 32, 51, 52, 53, 93, 97, 24, +! 25, 60, 35, 36, 37, 38, 39, 43, 46, 47, +! 55, 56, 35, 36, 37, 38, 39, 43, 46, 47, +! 55, 56, 26, 26, 26, 29, 57, 26, 26, 29, +! 57, 26, 26, 26, 26, 26, 89, 94, 26, 26, +! 89, 89, 0, 26, 66, 65, 67, 52, 53, 92, +! 33, 34, 50, 51, 48, 54, 93, 97, 4, 52, +! 90, 91, 97, 94, 51, 94, 14, 58, 93, 51, +! 94, 14, 14, 52, 60, 70, 76, 70, 67, 19, +! 25, 61, 26, 26, 26, 29, 57, 26, 26, 29, +! 57, 26, 26, 26, 26, 26, 26, 26, 26, 29, +! 57, 26, 26, 29, 57, 26, 26, 26, 26, 26, +! 61, 61, 59, 61, 65, 94, 94, 96, 96, 94, +! 94, 89, 33, 34, 50, 51, 52, 21, 94, 14, +! 21, 58, 89, 89, 94, 94, 14, 21, 58, 89, +! 89, 94, 61, 67, 67, 94, 96, 96, 98, 98, +! 5, 6, 7, 84, 94, 94, 94, 94, 94, 85, +! 86, 87, 94, 14, 58, 89, 26, 64, 93, 89, +! 15, 59, 14, 58, 14, 58, 89, 64, 93, 89, +! 15, 15, 76, 94, 76, 89, 89, 7, 91, 91, +! 91, 91, 91, 9, 40, 41, 42, 86, 94, 9, +! 26, 60, 88, 89, 89, 15, 26, 93, 94, 59, +! 89, 89, 89, 89, 15, 93, 94, 59, 76, 7, +! 4, 40, 41, 42, 9, 88, 54, 61, 15, 59, +! 94, 14, 58, 15, 59, 15, 59, 94, 14, 58, +! 89, 61, 26, 89, 94, 14, 58, 89, 89, 14, +! 58, 89, 89, 5, 84, 89, 94, 89, 89, 15, +! 59, 89, 89, 15, 59, 89, 15, 59, 15, 59 + }; + +*************** +*** 1436,1457 **** + static const yytype_int8 yyr1[] = + { +! 0, 62, 63, 63, 63, 63, 63, 63, 64, 64, +! 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, + 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, + 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, + 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, +! 65, 65, 65, 65, 66, 66, 66, 67, 67, 68, +! 68, 69, 69, 69, 69, 69, 70, 70, 70, 70, +! 70, 70, 70, 70, 70, 70, 70, 71, 71, 71, +! 71, 71, 71, 71, 71, 72, 72, 72, 72, 73, +! 73, 73, 73, 73, 73, 73, 73, 74, 74, 74, +! 75, 75, 75, 75, 76, 76, 77, 78, 78, 79, +! 79, 79, 79, 79, 80, 80, 80, 81, 82, 83, +! 84, 84, 84, 85, 85, 86, 86, 86, 86, 87, +! 87, 87, 87, 87, 87, 88, 88, 89, 89, 90, +! 90, 90, 91, 91, 91, 91, 91, 91, 92, 92, +! 93, 93, 93, 94, 94, 95, 95, 95, 96, 96, +! 96, 96, 96, 97, 97, 97, 97, 97, 98, 98, +! 98, 99, 99, 99, 99 + }; + +--- 1436,1457 ---- + static const yytype_int8 yyr1[] = + { +! 0, 62, 63, 63, 63, 63, 63, 63, 63, 64, +! 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, + 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, + 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, + 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, +! 65, 65, 65, 65, 65, 66, 66, 66, 67, 67, +! 68, 68, 69, 69, 69, 69, 69, 70, 70, 70, +! 70, 70, 70, 70, 70, 70, 70, 70, 71, 71, +! 71, 71, 71, 71, 71, 71, 72, 72, 72, 72, +! 73, 73, 73, 73, 73, 73, 73, 73, 74, 74, +! 74, 75, 75, 75, 75, 76, 76, 77, 78, 78, +! 79, 79, 79, 79, 79, 80, 80, 80, 81, 82, +! 83, 84, 84, 84, 85, 85, 86, 86, 86, 86, +! 87, 87, 87, 87, 87, 87, 88, 88, 89, 89, +! 90, 90, 90, 91, 91, 91, 91, 91, 91, 92, +! 92, 93, 93, 93, 94, 94, 95, 95, 95, 96, +! 96, 96, 96, 96, 97, 97, 97, 97, 97, 98, +! 98, 98, 99, 99, 99, 99 + }; + +*************** +*** 1459,1480 **** + static const yytype_int8 yyr2[] = + { +! 0, 2, 2, 1, 1, 2, 2, 1, 1, 2, +! 2, 2, 3, 3, 3, 3, 2, 3, 3, 2, + 3, 3, 2, 3, 3, 2, 3, 3, 2, 3, + 3, 2, 3, 3, 2, 3, 3, 2, 3, 3, +! 2, 3, 3, 2, 3, 3, 2, 3, 3, 2, +! 3, 3, 2, 2, 1, 1, 1, 1, 2, 1, +! 2, 1, 1, 2, 1, 1, 1, 1, 5, 5, +! 1, 1, 1, 1, 1, 1, 1, 6, 6, 7, +! 7, 10, 10, 9, 9, 7, 7, 5, 5, 6, +! 6, 7, 7, 10, 10, 9, 9, 6, 7, 6, +! 5, 6, 3, 5, 1, 2, 3, 3, 3, 2, +! 3, 3, 4, 2, 5, 7, 6, 3, 1, 3, +! 4, 6, 5, 1, 2, 4, 4, 5, 5, 2, +! 3, 2, 3, 2, 3, 1, 3, 2, 2, 3, +! 3, 3, 4, 4, 4, 4, 4, 1, 1, 1, +! 1, 1, 1, 0, 2, 1, 2, 2, 4, 4, +! 3, 3, 1, 1, 2, 2, 2, 2, 4, 4, +! 1, 1, 2, 2, 3 + }; + +--- 1459,1480 ---- + static const yytype_int8 yyr2[] = + { +! 0, 2, 2, 1, 1, 2, 2, 2, 1, 1, +! 2, 2, 2, 3, 3, 3, 3, 2, 3, 3, +! 2, 3, 3, 2, 3, 3, 2, 3, 3, 2, + 3, 3, 2, 3, 3, 2, 3, 3, 2, 3, + 3, 2, 3, 3, 2, 3, 3, 2, 3, 3, +! 2, 3, 3, 2, 2, 1, 1, 1, 1, 2, +! 1, 2, 1, 1, 2, 1, 1, 1, 1, 5, +! 5, 1, 1, 1, 1, 1, 1, 1, 6, 6, +! 7, 7, 10, 10, 9, 9, 7, 7, 5, 5, +! 6, 6, 7, 7, 10, 10, 9, 9, 6, 7, +! 6, 5, 6, 3, 5, 1, 2, 3, 3, 3, +! 2, 3, 3, 4, 2, 5, 7, 6, 3, 1, +! 3, 4, 6, 5, 1, 2, 4, 4, 5, 5, +! 2, 3, 2, 3, 2, 3, 1, 3, 2, 2, +! 3, 3, 3, 4, 4, 4, 4, 4, 1, 1, +! 1, 1, 1, 1, 0, 2, 1, 2, 2, 4, +! 4, 3, 3, 1, 1, 2, 2, 2, 2, 4, +! 4, 1, 1, 2, 2, 3 + }; + +*************** +*** 2019,2025 **** + break; + +! case 7: /* inputunit: yacc_EOF */ + #line 456 "/usr/local/src/chet/src/bash/src/parse.y" + { + /* Case of EOF seen by itself. Do ignoreeof or + not. */ +--- 2019,2044 ---- + break; + +! case 7: /* inputunit: error $end */ + #line 456 "/usr/local/src/chet/src/bash/src/parse.y" + { ++ global_command = (COMMAND *)NULL; ++ if (last_command_exit_value == 0) ++ last_command_exit_value = EX_BADUSAGE; /* force error return */ ++ if (interactive && parse_and_execute_level == 0) ++ { ++ handle_eof_input_unit (); ++ YYACCEPT; ++ } ++ else ++ { ++ YYABORT; ++ } ++ } ++ #line 2038 "y.tab.c" ++ break; ++ ++ case 8: /* inputunit: yacc_EOF */ ++ #line 471 "/usr/local/src/chet/src/bash/src/parse.y" ++ { + /* Case of EOF seen by itself. Do ignoreeof or + not. */ +*************** +*** 2028,2048 **** + YYACCEPT; + } +! #line 2031 "y.tab.c" + break; + +! case 8: /* word_list: WORD */ +! #line 466 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.word_list) = make_word_list ((yyvsp[0].word), (WORD_LIST *)NULL); } +! #line 2037 "y.tab.c" + break; + +! case 9: /* word_list: word_list WORD */ +! #line 468 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.word_list) = make_word_list ((yyvsp[0].word), (yyvsp[-1].word_list)); } +! #line 2043 "y.tab.c" + break; + +! case 10: /* redirection: '>' WORD */ +! #line 472 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.dest = 1; +--- 2047,2067 ---- + YYACCEPT; + } +! #line 2050 "y.tab.c" + break; + +! case 9: /* word_list: WORD */ +! #line 481 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.word_list) = make_word_list ((yyvsp[0].word), (WORD_LIST *)NULL); } +! #line 2056 "y.tab.c" + break; + +! case 10: /* word_list: word_list WORD */ +! #line 483 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.word_list) = make_word_list ((yyvsp[0].word), (yyvsp[-1].word_list)); } +! #line 2062 "y.tab.c" + break; + +! case 11: /* redirection: '>' WORD */ +! #line 487 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.dest = 1; +*************** +*** 2050,2058 **** + (yyval.redirect) = make_redirection (source, r_output_direction, redir, 0); + } +! #line 2053 "y.tab.c" + break; + +! case 11: /* redirection: '<' WORD */ +! #line 478 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.dest = 0; +--- 2069,2077 ---- + (yyval.redirect) = make_redirection (source, r_output_direction, redir, 0); + } +! #line 2072 "y.tab.c" + break; + +! case 12: /* redirection: '<' WORD */ +! #line 493 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.dest = 0; +*************** +*** 2060,2068 **** + (yyval.redirect) = make_redirection (source, r_input_direction, redir, 0); + } +! #line 2063 "y.tab.c" + break; + +! case 12: /* redirection: NUMBER '>' WORD */ +! #line 484 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[-2].number); +--- 2079,2087 ---- + (yyval.redirect) = make_redirection (source, r_input_direction, redir, 0); + } +! #line 2082 "y.tab.c" + break; + +! case 13: /* redirection: NUMBER '>' WORD */ +! #line 499 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[-2].number); +*************** +*** 2070,2078 **** + (yyval.redirect) = make_redirection (source, r_output_direction, redir, 0); + } +! #line 2073 "y.tab.c" + break; + +! case 13: /* redirection: NUMBER '<' WORD */ +! #line 490 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[-2].number); +--- 2089,2097 ---- + (yyval.redirect) = make_redirection (source, r_output_direction, redir, 0); + } +! #line 2092 "y.tab.c" + break; + +! case 14: /* redirection: NUMBER '<' WORD */ +! #line 505 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[-2].number); +*************** +*** 2080,2088 **** + (yyval.redirect) = make_redirection (source, r_input_direction, redir, 0); + } +! #line 2083 "y.tab.c" + break; + +! case 14: /* redirection: REDIR_WORD '>' WORD */ +! #line 496 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[-2].word); +--- 2099,2107 ---- + (yyval.redirect) = make_redirection (source, r_input_direction, redir, 0); + } +! #line 2102 "y.tab.c" + break; + +! case 15: /* redirection: REDIR_WORD '>' WORD */ +! #line 511 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[-2].word); +*************** +*** 2090,2098 **** + (yyval.redirect) = make_redirection (source, r_output_direction, redir, REDIR_VARASSIGN); + } +! #line 2093 "y.tab.c" + break; + +! case 15: /* redirection: REDIR_WORD '<' WORD */ +! #line 502 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[-2].word); +--- 2109,2117 ---- + (yyval.redirect) = make_redirection (source, r_output_direction, redir, REDIR_VARASSIGN); + } +! #line 2112 "y.tab.c" + break; + +! case 16: /* redirection: REDIR_WORD '<' WORD */ +! #line 517 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[-2].word); +*************** +*** 2100,2108 **** + (yyval.redirect) = make_redirection (source, r_input_direction, redir, REDIR_VARASSIGN); + } +! #line 2103 "y.tab.c" + break; + +! case 16: /* redirection: GREATER_GREATER WORD */ +! #line 508 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.dest = 1; +--- 2119,2127 ---- + (yyval.redirect) = make_redirection (source, r_input_direction, redir, REDIR_VARASSIGN); + } +! #line 2122 "y.tab.c" + break; + +! case 17: /* redirection: GREATER_GREATER WORD */ +! #line 523 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.dest = 1; +*************** +*** 2110,2118 **** + (yyval.redirect) = make_redirection (source, r_appending_to, redir, 0); + } +! #line 2113 "y.tab.c" + break; + +! case 17: /* redirection: NUMBER GREATER_GREATER WORD */ +! #line 514 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[-2].number); +--- 2129,2137 ---- + (yyval.redirect) = make_redirection (source, r_appending_to, redir, 0); + } +! #line 2132 "y.tab.c" + break; + +! case 18: /* redirection: NUMBER GREATER_GREATER WORD */ +! #line 529 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[-2].number); +*************** +*** 2120,2128 **** + (yyval.redirect) = make_redirection (source, r_appending_to, redir, 0); + } +! #line 2123 "y.tab.c" + break; + +! case 18: /* redirection: REDIR_WORD GREATER_GREATER WORD */ +! #line 520 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[-2].word); +--- 2139,2147 ---- + (yyval.redirect) = make_redirection (source, r_appending_to, redir, 0); + } +! #line 2142 "y.tab.c" + break; + +! case 19: /* redirection: REDIR_WORD GREATER_GREATER WORD */ +! #line 535 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[-2].word); +*************** +*** 2130,2138 **** + (yyval.redirect) = make_redirection (source, r_appending_to, redir, REDIR_VARASSIGN); + } +! #line 2133 "y.tab.c" + break; + +! case 19: /* redirection: GREATER_BAR WORD */ +! #line 526 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.dest = 1; +--- 2149,2157 ---- + (yyval.redirect) = make_redirection (source, r_appending_to, redir, REDIR_VARASSIGN); + } +! #line 2152 "y.tab.c" + break; + +! case 20: /* redirection: GREATER_BAR WORD */ +! #line 541 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.dest = 1; +*************** +*** 2140,2148 **** + (yyval.redirect) = make_redirection (source, r_output_force, redir, 0); + } +! #line 2143 "y.tab.c" + break; + +! case 20: /* redirection: NUMBER GREATER_BAR WORD */ +! #line 532 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[-2].number); +--- 2159,2167 ---- + (yyval.redirect) = make_redirection (source, r_output_force, redir, 0); + } +! #line 2162 "y.tab.c" + break; + +! case 21: /* redirection: NUMBER GREATER_BAR WORD */ +! #line 547 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[-2].number); +*************** +*** 2150,2158 **** + (yyval.redirect) = make_redirection (source, r_output_force, redir, 0); + } +! #line 2153 "y.tab.c" + break; + +! case 21: /* redirection: REDIR_WORD GREATER_BAR WORD */ +! #line 538 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[-2].word); +--- 2169,2177 ---- + (yyval.redirect) = make_redirection (source, r_output_force, redir, 0); + } +! #line 2172 "y.tab.c" + break; + +! case 22: /* redirection: REDIR_WORD GREATER_BAR WORD */ +! #line 553 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[-2].word); +*************** +*** 2160,2168 **** + (yyval.redirect) = make_redirection (source, r_output_force, redir, REDIR_VARASSIGN); + } +! #line 2163 "y.tab.c" + break; + +! case 22: /* redirection: LESS_GREATER WORD */ +! #line 544 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.dest = 0; +--- 2179,2187 ---- + (yyval.redirect) = make_redirection (source, r_output_force, redir, REDIR_VARASSIGN); + } +! #line 2182 "y.tab.c" + break; + +! case 23: /* redirection: LESS_GREATER WORD */ +! #line 559 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.dest = 0; +*************** +*** 2170,2178 **** + (yyval.redirect) = make_redirection (source, r_input_output, redir, 0); + } +! #line 2173 "y.tab.c" + break; + +! case 23: /* redirection: NUMBER LESS_GREATER WORD */ +! #line 550 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[-2].number); +--- 2189,2197 ---- + (yyval.redirect) = make_redirection (source, r_input_output, redir, 0); + } +! #line 2192 "y.tab.c" + break; + +! case 24: /* redirection: NUMBER LESS_GREATER WORD */ +! #line 565 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[-2].number); +*************** +*** 2180,2188 **** + (yyval.redirect) = make_redirection (source, r_input_output, redir, 0); + } +! #line 2183 "y.tab.c" + break; + +! case 24: /* redirection: REDIR_WORD LESS_GREATER WORD */ +! #line 556 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[-2].word); +--- 2199,2207 ---- + (yyval.redirect) = make_redirection (source, r_input_output, redir, 0); + } +! #line 2202 "y.tab.c" + break; + +! case 25: /* redirection: REDIR_WORD LESS_GREATER WORD */ +! #line 571 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[-2].word); +*************** +*** 2190,2198 **** + (yyval.redirect) = make_redirection (source, r_input_output, redir, REDIR_VARASSIGN); + } +! #line 2193 "y.tab.c" + break; + +! case 25: /* redirection: LESS_LESS WORD */ +! #line 562 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.dest = 0; +--- 2209,2217 ---- + (yyval.redirect) = make_redirection (source, r_input_output, redir, REDIR_VARASSIGN); + } +! #line 2212 "y.tab.c" + break; + +! case 26: /* redirection: LESS_LESS WORD */ +! #line 577 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.dest = 0; +*************** +*** 2201,2209 **** + push_heredoc ((yyval.redirect)); + } +! #line 2204 "y.tab.c" + break; + +! case 26: /* redirection: NUMBER LESS_LESS WORD */ +! #line 569 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[-2].number); +--- 2220,2228 ---- + push_heredoc ((yyval.redirect)); + } +! #line 2223 "y.tab.c" + break; + +! case 27: /* redirection: NUMBER LESS_LESS WORD */ +! #line 584 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[-2].number); +*************** +*** 2212,2220 **** + push_heredoc ((yyval.redirect)); + } +! #line 2215 "y.tab.c" + break; + +! case 27: /* redirection: REDIR_WORD LESS_LESS WORD */ +! #line 576 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[-2].word); +--- 2231,2239 ---- + push_heredoc ((yyval.redirect)); + } +! #line 2234 "y.tab.c" + break; + +! case 28: /* redirection: REDIR_WORD LESS_LESS WORD */ +! #line 591 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[-2].word); +*************** +*** 2223,2231 **** + push_heredoc ((yyval.redirect)); + } +! #line 2226 "y.tab.c" + break; + +! case 28: /* redirection: LESS_LESS_MINUS WORD */ +! #line 583 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.dest = 0; +--- 2242,2250 ---- + push_heredoc ((yyval.redirect)); + } +! #line 2245 "y.tab.c" + break; + +! case 29: /* redirection: LESS_LESS_MINUS WORD */ +! #line 598 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.dest = 0; +*************** +*** 2234,2242 **** + push_heredoc ((yyval.redirect)); + } +! #line 2237 "y.tab.c" + break; + +! case 29: /* redirection: NUMBER LESS_LESS_MINUS WORD */ +! #line 590 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[-2].number); +--- 2253,2261 ---- + push_heredoc ((yyval.redirect)); + } +! #line 2256 "y.tab.c" + break; + +! case 30: /* redirection: NUMBER LESS_LESS_MINUS WORD */ +! #line 605 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[-2].number); +*************** +*** 2245,2253 **** + push_heredoc ((yyval.redirect)); + } +! #line 2248 "y.tab.c" + break; + +! case 30: /* redirection: REDIR_WORD LESS_LESS_MINUS WORD */ +! #line 597 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[-2].word); +--- 2264,2272 ---- + push_heredoc ((yyval.redirect)); + } +! #line 2267 "y.tab.c" + break; + +! case 31: /* redirection: REDIR_WORD LESS_LESS_MINUS WORD */ +! #line 612 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[-2].word); +*************** +*** 2256,2264 **** + push_heredoc ((yyval.redirect)); + } +! #line 2259 "y.tab.c" + break; + +! case 31: /* redirection: LESS_LESS_LESS WORD */ +! #line 604 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.dest = 0; +--- 2275,2283 ---- + push_heredoc ((yyval.redirect)); + } +! #line 2278 "y.tab.c" + break; + +! case 32: /* redirection: LESS_LESS_LESS WORD */ +! #line 619 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.dest = 0; +*************** +*** 2266,2274 **** + (yyval.redirect) = make_redirection (source, r_reading_string, redir, 0); + } +! #line 2269 "y.tab.c" + break; + +! case 32: /* redirection: NUMBER LESS_LESS_LESS WORD */ +! #line 610 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[-2].number); +--- 2285,2293 ---- + (yyval.redirect) = make_redirection (source, r_reading_string, redir, 0); + } +! #line 2288 "y.tab.c" + break; + +! case 33: /* redirection: NUMBER LESS_LESS_LESS WORD */ +! #line 625 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[-2].number); +*************** +*** 2276,2284 **** + (yyval.redirect) = make_redirection (source, r_reading_string, redir, 0); + } +! #line 2279 "y.tab.c" + break; + +! case 33: /* redirection: REDIR_WORD LESS_LESS_LESS WORD */ +! #line 616 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[-2].word); +--- 2295,2303 ---- + (yyval.redirect) = make_redirection (source, r_reading_string, redir, 0); + } +! #line 2298 "y.tab.c" + break; + +! case 34: /* redirection: REDIR_WORD LESS_LESS_LESS WORD */ +! #line 631 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[-2].word); +*************** +*** 2286,2294 **** + (yyval.redirect) = make_redirection (source, r_reading_string, redir, REDIR_VARASSIGN); + } +! #line 2289 "y.tab.c" + break; + +! case 34: /* redirection: LESS_AND NUMBER */ +! #line 622 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.dest = 0; +--- 2305,2313 ---- + (yyval.redirect) = make_redirection (source, r_reading_string, redir, REDIR_VARASSIGN); + } +! #line 2308 "y.tab.c" + break; + +! case 35: /* redirection: LESS_AND NUMBER */ +! #line 637 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.dest = 0; +*************** +*** 2296,2304 **** + (yyval.redirect) = make_redirection (source, r_duplicating_input, redir, 0); + } +! #line 2299 "y.tab.c" + break; + +! case 35: /* redirection: NUMBER LESS_AND NUMBER */ +! #line 628 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[-2].number); +--- 2315,2323 ---- + (yyval.redirect) = make_redirection (source, r_duplicating_input, redir, 0); + } +! #line 2318 "y.tab.c" + break; + +! case 36: /* redirection: NUMBER LESS_AND NUMBER */ +! #line 643 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[-2].number); +*************** +*** 2306,2314 **** + (yyval.redirect) = make_redirection (source, r_duplicating_input, redir, 0); + } +! #line 2309 "y.tab.c" + break; + +! case 36: /* redirection: REDIR_WORD LESS_AND NUMBER */ +! #line 634 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[-2].word); +--- 2325,2333 ---- + (yyval.redirect) = make_redirection (source, r_duplicating_input, redir, 0); + } +! #line 2328 "y.tab.c" + break; + +! case 37: /* redirection: REDIR_WORD LESS_AND NUMBER */ +! #line 649 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[-2].word); +*************** +*** 2316,2324 **** + (yyval.redirect) = make_redirection (source, r_duplicating_input, redir, REDIR_VARASSIGN); + } +! #line 2319 "y.tab.c" + break; + +! case 37: /* redirection: GREATER_AND NUMBER */ +! #line 640 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.dest = 1; +--- 2335,2343 ---- + (yyval.redirect) = make_redirection (source, r_duplicating_input, redir, REDIR_VARASSIGN); + } +! #line 2338 "y.tab.c" + break; + +! case 38: /* redirection: GREATER_AND NUMBER */ +! #line 655 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.dest = 1; +*************** +*** 2326,2334 **** + (yyval.redirect) = make_redirection (source, r_duplicating_output, redir, 0); + } +! #line 2329 "y.tab.c" + break; + +! case 38: /* redirection: NUMBER GREATER_AND NUMBER */ +! #line 646 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[-2].number); +--- 2345,2353 ---- + (yyval.redirect) = make_redirection (source, r_duplicating_output, redir, 0); + } +! #line 2348 "y.tab.c" + break; + +! case 39: /* redirection: NUMBER GREATER_AND NUMBER */ +! #line 661 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[-2].number); +*************** +*** 2336,2344 **** + (yyval.redirect) = make_redirection (source, r_duplicating_output, redir, 0); + } +! #line 2339 "y.tab.c" + break; + +! case 39: /* redirection: REDIR_WORD GREATER_AND NUMBER */ +! #line 652 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[-2].word); +--- 2355,2363 ---- + (yyval.redirect) = make_redirection (source, r_duplicating_output, redir, 0); + } +! #line 2358 "y.tab.c" + break; + +! case 40: /* redirection: REDIR_WORD GREATER_AND NUMBER */ +! #line 667 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[-2].word); +*************** +*** 2346,2354 **** + (yyval.redirect) = make_redirection (source, r_duplicating_output, redir, REDIR_VARASSIGN); + } +! #line 2349 "y.tab.c" + break; + +! case 40: /* redirection: LESS_AND WORD */ +! #line 658 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.dest = 0; +--- 2365,2373 ---- + (yyval.redirect) = make_redirection (source, r_duplicating_output, redir, REDIR_VARASSIGN); + } +! #line 2368 "y.tab.c" + break; + +! case 41: /* redirection: LESS_AND WORD */ +! #line 673 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.dest = 0; +*************** +*** 2356,2364 **** + (yyval.redirect) = make_redirection (source, r_duplicating_input_word, redir, 0); + } +! #line 2359 "y.tab.c" + break; + +! case 41: /* redirection: NUMBER LESS_AND WORD */ +! #line 664 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[-2].number); +--- 2375,2383 ---- + (yyval.redirect) = make_redirection (source, r_duplicating_input_word, redir, 0); + } +! #line 2378 "y.tab.c" + break; + +! case 42: /* redirection: NUMBER LESS_AND WORD */ +! #line 679 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[-2].number); +*************** +*** 2366,2374 **** + (yyval.redirect) = make_redirection (source, r_duplicating_input_word, redir, 0); + } +! #line 2369 "y.tab.c" + break; + +! case 42: /* redirection: REDIR_WORD LESS_AND WORD */ +! #line 670 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[-2].word); +--- 2385,2393 ---- + (yyval.redirect) = make_redirection (source, r_duplicating_input_word, redir, 0); + } +! #line 2388 "y.tab.c" + break; + +! case 43: /* redirection: REDIR_WORD LESS_AND WORD */ +! #line 685 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[-2].word); +*************** +*** 2376,2384 **** + (yyval.redirect) = make_redirection (source, r_duplicating_input_word, redir, REDIR_VARASSIGN); + } +! #line 2379 "y.tab.c" + break; + +! case 43: /* redirection: GREATER_AND WORD */ +! #line 676 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.dest = 1; +--- 2395,2403 ---- + (yyval.redirect) = make_redirection (source, r_duplicating_input_word, redir, REDIR_VARASSIGN); + } +! #line 2398 "y.tab.c" + break; + +! case 44: /* redirection: GREATER_AND WORD */ +! #line 691 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.dest = 1; +*************** +*** 2386,2394 **** + (yyval.redirect) = make_redirection (source, r_duplicating_output_word, redir, 0); + } +! #line 2389 "y.tab.c" + break; + +! case 44: /* redirection: NUMBER GREATER_AND WORD */ +! #line 682 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[-2].number); +--- 2405,2413 ---- + (yyval.redirect) = make_redirection (source, r_duplicating_output_word, redir, 0); + } +! #line 2408 "y.tab.c" + break; + +! case 45: /* redirection: NUMBER GREATER_AND WORD */ +! #line 697 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[-2].number); +*************** +*** 2396,2404 **** + (yyval.redirect) = make_redirection (source, r_duplicating_output_word, redir, 0); + } +! #line 2399 "y.tab.c" + break; + +! case 45: /* redirection: REDIR_WORD GREATER_AND WORD */ +! #line 688 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[-2].word); +--- 2415,2423 ---- + (yyval.redirect) = make_redirection (source, r_duplicating_output_word, redir, 0); + } +! #line 2418 "y.tab.c" + break; + +! case 46: /* redirection: REDIR_WORD GREATER_AND WORD */ +! #line 703 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[-2].word); +*************** +*** 2406,2414 **** + (yyval.redirect) = make_redirection (source, r_duplicating_output_word, redir, REDIR_VARASSIGN); + } +! #line 2409 "y.tab.c" + break; + +! case 46: /* redirection: GREATER_AND '-' */ +! #line 694 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.dest = 1; +--- 2425,2433 ---- + (yyval.redirect) = make_redirection (source, r_duplicating_output_word, redir, REDIR_VARASSIGN); + } +! #line 2428 "y.tab.c" + break; + +! case 47: /* redirection: GREATER_AND '-' */ +! #line 709 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.dest = 1; +*************** +*** 2416,2424 **** + (yyval.redirect) = make_redirection (source, r_close_this, redir, 0); + } +! #line 2419 "y.tab.c" + break; + +! case 47: /* redirection: NUMBER GREATER_AND '-' */ +! #line 700 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[-2].number); +--- 2435,2443 ---- + (yyval.redirect) = make_redirection (source, r_close_this, redir, 0); + } +! #line 2438 "y.tab.c" + break; + +! case 48: /* redirection: NUMBER GREATER_AND '-' */ +! #line 715 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[-2].number); +*************** +*** 2426,2434 **** + (yyval.redirect) = make_redirection (source, r_close_this, redir, 0); + } +! #line 2429 "y.tab.c" + break; + +! case 48: /* redirection: REDIR_WORD GREATER_AND '-' */ +! #line 706 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[-2].word); +--- 2445,2453 ---- + (yyval.redirect) = make_redirection (source, r_close_this, redir, 0); + } +! #line 2448 "y.tab.c" + break; + +! case 49: /* redirection: REDIR_WORD GREATER_AND '-' */ +! #line 721 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[-2].word); +*************** +*** 2436,2444 **** + (yyval.redirect) = make_redirection (source, r_close_this, redir, REDIR_VARASSIGN); + } +! #line 2439 "y.tab.c" + break; + +! case 49: /* redirection: LESS_AND '-' */ +! #line 712 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.dest = 0; +--- 2455,2463 ---- + (yyval.redirect) = make_redirection (source, r_close_this, redir, REDIR_VARASSIGN); + } +! #line 2458 "y.tab.c" + break; + +! case 50: /* redirection: LESS_AND '-' */ +! #line 727 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.dest = 0; +*************** +*** 2446,2454 **** + (yyval.redirect) = make_redirection (source, r_close_this, redir, 0); + } +! #line 2449 "y.tab.c" + break; + +! case 50: /* redirection: NUMBER LESS_AND '-' */ +! #line 718 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[-2].number); +--- 2465,2473 ---- + (yyval.redirect) = make_redirection (source, r_close_this, redir, 0); + } +! #line 2468 "y.tab.c" + break; + +! case 51: /* redirection: NUMBER LESS_AND '-' */ +! #line 733 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[-2].number); +*************** +*** 2456,2464 **** + (yyval.redirect) = make_redirection (source, r_close_this, redir, 0); + } +! #line 2459 "y.tab.c" + break; + +! case 51: /* redirection: REDIR_WORD LESS_AND '-' */ +! #line 724 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[-2].word); +--- 2475,2483 ---- + (yyval.redirect) = make_redirection (source, r_close_this, redir, 0); + } +! #line 2478 "y.tab.c" + break; + +! case 52: /* redirection: REDIR_WORD LESS_AND '-' */ +! #line 739 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[-2].word); +*************** +*** 2466,2474 **** + (yyval.redirect) = make_redirection (source, r_close_this, redir, REDIR_VARASSIGN); + } +! #line 2469 "y.tab.c" + break; + +! case 52: /* redirection: AND_GREATER WORD */ +! #line 730 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.dest = 1; +--- 2485,2493 ---- + (yyval.redirect) = make_redirection (source, r_close_this, redir, REDIR_VARASSIGN); + } +! #line 2488 "y.tab.c" + break; + +! case 53: /* redirection: AND_GREATER WORD */ +! #line 745 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.dest = 1; +*************** +*** 2476,2484 **** + (yyval.redirect) = make_redirection (source, r_err_and_out, redir, 0); + } +! #line 2479 "y.tab.c" + break; + +! case 53: /* redirection: AND_GREATER_GREATER WORD */ +! #line 736 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.dest = 1; +--- 2495,2503 ---- + (yyval.redirect) = make_redirection (source, r_err_and_out, redir, 0); + } +! #line 2498 "y.tab.c" + break; + +! case 54: /* redirection: AND_GREATER_GREATER WORD */ +! #line 751 "/usr/local/src/chet/src/bash/src/parse.y" + { + source.dest = 1; +*************** +*** 2486,2520 **** + (yyval.redirect) = make_redirection (source, r_append_err_and_out, redir, 0); + } +! #line 2489 "y.tab.c" + break; + +! case 54: /* simple_command_element: WORD */ +! #line 744 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.element).word = (yyvsp[0].word); (yyval.element).redirect = 0; } +! #line 2495 "y.tab.c" + break; + +! case 55: /* simple_command_element: ASSIGNMENT_WORD */ +! #line 746 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.element).word = (yyvsp[0].word); (yyval.element).redirect = 0; } +! #line 2501 "y.tab.c" + break; + +! case 56: /* simple_command_element: redirection */ +! #line 748 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.element).redirect = (yyvsp[0].redirect); (yyval.element).word = 0; } +! #line 2507 "y.tab.c" + break; + +! case 57: /* redirection_list: redirection */ +! #line 752 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.redirect) = (yyvsp[0].redirect); + } +! #line 2515 "y.tab.c" + break; + +! case 58: /* redirection_list: redirection_list redirection */ +! #line 756 "/usr/local/src/chet/src/bash/src/parse.y" + { + register REDIRECT *t; +--- 2505,2539 ---- + (yyval.redirect) = make_redirection (source, r_append_err_and_out, redir, 0); + } +! #line 2508 "y.tab.c" + break; + +! case 55: /* simple_command_element: WORD */ +! #line 759 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.element).word = (yyvsp[0].word); (yyval.element).redirect = 0; } +! #line 2514 "y.tab.c" + break; + +! case 56: /* simple_command_element: ASSIGNMENT_WORD */ +! #line 761 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.element).word = (yyvsp[0].word); (yyval.element).redirect = 0; } +! #line 2520 "y.tab.c" + break; + +! case 57: /* simple_command_element: redirection */ +! #line 763 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.element).redirect = (yyvsp[0].redirect); (yyval.element).word = 0; } +! #line 2526 "y.tab.c" + break; + +! case 58: /* redirection_list: redirection */ +! #line 767 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.redirect) = (yyvsp[0].redirect); + } +! #line 2534 "y.tab.c" + break; + +! case 59: /* redirection_list: redirection_list redirection */ +! #line 771 "/usr/local/src/chet/src/bash/src/parse.y" + { + register REDIRECT *t; +*************** +*** 2525,2557 **** + (yyval.redirect) = (yyvsp[-1].redirect); + } +! #line 2528 "y.tab.c" + break; + +! case 59: /* simple_command: simple_command_element */ +! #line 767 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = make_simple_command ((yyvsp[0].element), (COMMAND *)NULL); } +! #line 2534 "y.tab.c" + break; + +! case 60: /* simple_command: simple_command simple_command_element */ +! #line 769 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = make_simple_command ((yyvsp[0].element), (yyvsp[-1].command)); } +! #line 2540 "y.tab.c" + break; + +! case 61: /* command: simple_command */ +! #line 773 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = clean_simple_command ((yyvsp[0].command)); } +! #line 2546 "y.tab.c" + break; + +! case 62: /* command: shell_command */ +! #line 775 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[0].command); } +! #line 2552 "y.tab.c" + break; + +! case 63: /* command: shell_command redirection_list */ +! #line 777 "/usr/local/src/chet/src/bash/src/parse.y" + { + COMMAND *tc; +--- 2544,2576 ---- + (yyval.redirect) = (yyvsp[-1].redirect); + } +! #line 2547 "y.tab.c" + break; + +! case 60: /* simple_command: simple_command_element */ +! #line 782 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = make_simple_command ((yyvsp[0].element), (COMMAND *)NULL); } +! #line 2553 "y.tab.c" + break; + +! case 61: /* simple_command: simple_command simple_command_element */ +! #line 784 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = make_simple_command ((yyvsp[0].element), (yyvsp[-1].command)); } +! #line 2559 "y.tab.c" + break; + +! case 62: /* command: simple_command */ +! #line 788 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = clean_simple_command ((yyvsp[0].command)); } +! #line 2565 "y.tab.c" + break; + +! case 63: /* command: shell_command */ +! #line 790 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[0].command); } +! #line 2571 "y.tab.c" + break; + +! case 64: /* command: shell_command redirection_list */ +! #line 792 "/usr/local/src/chet/src/bash/src/parse.y" + { + COMMAND *tc; +*************** +*** 2569,2727 **** + (yyval.command) = (yyvsp[-1].command); + } +! #line 2572 "y.tab.c" + break; + +! case 64: /* command: function_def */ +! #line 793 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[0].command); } +! #line 2578 "y.tab.c" + break; + +! case 65: /* command: coproc */ +! #line 795 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[0].command); } +! #line 2584 "y.tab.c" + break; + +! case 66: /* shell_command: for_command */ +! #line 799 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[0].command); } +! #line 2590 "y.tab.c" + break; + +! case 67: /* shell_command: case_command */ +! #line 801 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[0].command); } +! #line 2596 "y.tab.c" + break; + +! case 68: /* shell_command: WHILE compound_list DO compound_list DONE */ +! #line 803 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = make_while_command ((yyvsp[-3].command), (yyvsp[-1].command)); } +! #line 2602 "y.tab.c" + break; + +! case 69: /* shell_command: UNTIL compound_list DO compound_list DONE */ +! #line 805 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = make_until_command ((yyvsp[-3].command), (yyvsp[-1].command)); } +! #line 2608 "y.tab.c" + break; + +! case 70: /* shell_command: select_command */ +! #line 807 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[0].command); } +! #line 2614 "y.tab.c" + break; + +! case 71: /* shell_command: if_command */ +! #line 809 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[0].command); } +! #line 2620 "y.tab.c" + break; + +! case 72: /* shell_command: subshell */ +! #line 811 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[0].command); } +! #line 2626 "y.tab.c" + break; + +! case 73: /* shell_command: group_command */ +! #line 813 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[0].command); } +! #line 2632 "y.tab.c" + break; + +! case 74: /* shell_command: arith_command */ +! #line 815 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[0].command); } +! #line 2638 "y.tab.c" + break; + +! case 75: /* shell_command: cond_command */ +! #line 817 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[0].command); } +! #line 2644 "y.tab.c" + break; + +! case 76: /* shell_command: arith_for_command */ +! #line 819 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[0].command); } +! #line 2650 "y.tab.c" + break; + +! case 77: /* for_command: FOR WORD newline_list DO compound_list DONE */ +! #line 823 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[-4].word), add_string_to_list (""$@"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]); + if (word_top > 0) word_top--; + } +! #line 2659 "y.tab.c" + break; + +! case 78: /* for_command: FOR WORD newline_list '{' compound_list '}' */ +! #line 828 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[-4].word), add_string_to_list (""$@"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]); + if (word_top > 0) word_top--; + } +! #line 2668 "y.tab.c" + break; + +! case 79: /* for_command: FOR WORD ';' newline_list DO compound_list DONE */ +! #line 833 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[-5].word), add_string_to_list (""$@"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]); + if (word_top > 0) word_top--; + } +! #line 2677 "y.tab.c" + break; + +! case 80: /* for_command: FOR WORD ';' newline_list '{' compound_list '}' */ +! #line 838 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[-5].word), add_string_to_list (""$@"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]); + if (word_top > 0) word_top--; + } +! #line 2686 "y.tab.c" + break; + +! case 81: /* for_command: FOR WORD newline_list IN word_list list_terminator newline_list DO compound_list DONE */ +! #line 843 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]); + if (word_top > 0) word_top--; + } +! #line 2695 "y.tab.c" + break; + +! case 82: /* for_command: FOR WORD newline_list IN word_list list_terminator newline_list '{' compound_list '}' */ +! #line 848 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]); + if (word_top > 0) word_top--; + } +! #line 2704 "y.tab.c" + break; + +! case 83: /* for_command: FOR WORD newline_list IN list_terminator newline_list DO compound_list DONE */ +! #line 853 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]); + if (word_top > 0) word_top--; + } +! #line 2713 "y.tab.c" + break; + +! case 84: /* for_command: FOR WORD newline_list IN list_terminator newline_list '{' compound_list '}' */ +! #line 858 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]); + if (word_top > 0) word_top--; + } +! #line 2722 "y.tab.c" + break; + +! case 85: /* arith_for_command: FOR ARITH_FOR_EXPRS list_terminator newline_list DO compound_list DONE */ +! #line 865 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = make_arith_for_command ((yyvsp[-5].word_list), (yyvsp[-1].command), arith_for_lineno); +--- 2588,2746 ---- + (yyval.command) = (yyvsp[-1].command); + } +! #line 2591 "y.tab.c" + break; + +! case 65: /* command: function_def */ +! #line 808 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[0].command); } +! #line 2597 "y.tab.c" + break; + +! case 66: /* command: coproc */ +! #line 810 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[0].command); } +! #line 2603 "y.tab.c" + break; + +! case 67: /* shell_command: for_command */ +! #line 814 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[0].command); } +! #line 2609 "y.tab.c" + break; + +! case 68: /* shell_command: case_command */ +! #line 816 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[0].command); } +! #line 2615 "y.tab.c" + break; + +! case 69: /* shell_command: WHILE compound_list DO compound_list DONE */ +! #line 818 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = make_while_command ((yyvsp[-3].command), (yyvsp[-1].command)); } +! #line 2621 "y.tab.c" + break; + +! case 70: /* shell_command: UNTIL compound_list DO compound_list DONE */ +! #line 820 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = make_until_command ((yyvsp[-3].command), (yyvsp[-1].command)); } +! #line 2627 "y.tab.c" + break; + +! case 71: /* shell_command: select_command */ +! #line 822 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[0].command); } +! #line 2633 "y.tab.c" + break; + +! case 72: /* shell_command: if_command */ +! #line 824 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[0].command); } +! #line 2639 "y.tab.c" + break; + +! case 73: /* shell_command: subshell */ +! #line 826 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[0].command); } +! #line 2645 "y.tab.c" + break; + +! case 74: /* shell_command: group_command */ +! #line 828 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[0].command); } +! #line 2651 "y.tab.c" + break; + +! case 75: /* shell_command: arith_command */ +! #line 830 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[0].command); } +! #line 2657 "y.tab.c" + break; + +! case 76: /* shell_command: cond_command */ +! #line 832 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[0].command); } +! #line 2663 "y.tab.c" + break; + +! case 77: /* shell_command: arith_for_command */ +! #line 834 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[0].command); } +! #line 2669 "y.tab.c" + break; + +! case 78: /* for_command: FOR WORD newline_list DO compound_list DONE */ +! #line 838 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[-4].word), add_string_to_list (""$@"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]); + if (word_top > 0) word_top--; + } +! #line 2678 "y.tab.c" + break; + +! case 79: /* for_command: FOR WORD newline_list '{' compound_list '}' */ +! #line 843 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[-4].word), add_string_to_list (""$@"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]); + if (word_top > 0) word_top--; + } +! #line 2687 "y.tab.c" + break; + +! case 80: /* for_command: FOR WORD ';' newline_list DO compound_list DONE */ +! #line 848 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[-5].word), add_string_to_list (""$@"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]); + if (word_top > 0) word_top--; + } +! #line 2696 "y.tab.c" + break; + +! case 81: /* for_command: FOR WORD ';' newline_list '{' compound_list '}' */ +! #line 853 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[-5].word), add_string_to_list (""$@"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]); + if (word_top > 0) word_top--; + } +! #line 2705 "y.tab.c" + break; + +! case 82: /* for_command: FOR WORD newline_list IN word_list list_terminator newline_list DO compound_list DONE */ +! #line 858 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]); + if (word_top > 0) word_top--; + } +! #line 2714 "y.tab.c" + break; + +! case 83: /* for_command: FOR WORD newline_list IN word_list list_terminator newline_list '{' compound_list '}' */ +! #line 863 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]); + if (word_top > 0) word_top--; + } +! #line 2723 "y.tab.c" + break; + +! case 84: /* for_command: FOR WORD newline_list IN list_terminator newline_list DO compound_list DONE */ +! #line 868 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]); + if (word_top > 0) word_top--; + } +! #line 2732 "y.tab.c" + break; + +! case 85: /* for_command: FOR WORD newline_list IN list_terminator newline_list '{' compound_list '}' */ +! #line 873 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]); + if (word_top > 0) word_top--; + } +! #line 2741 "y.tab.c" + break; + +! case 86: /* arith_for_command: FOR ARITH_FOR_EXPRS list_terminator newline_list DO compound_list DONE */ +! #line 880 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = make_arith_for_command ((yyvsp[-5].word_list), (yyvsp[-1].command), arith_for_lineno); +*************** +*** 2729,2737 **** + if (word_top > 0) word_top--; + } +! #line 2732 "y.tab.c" + break; + +! case 86: /* arith_for_command: FOR ARITH_FOR_EXPRS list_terminator newline_list '{' compound_list '}' */ +! #line 871 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = make_arith_for_command ((yyvsp[-5].word_list), (yyvsp[-1].command), arith_for_lineno); +--- 2748,2756 ---- + if (word_top > 0) word_top--; + } +! #line 2751 "y.tab.c" + break; + +! case 87: /* arith_for_command: FOR ARITH_FOR_EXPRS list_terminator newline_list '{' compound_list '}' */ +! #line 886 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = make_arith_for_command ((yyvsp[-5].word_list), (yyvsp[-1].command), arith_for_lineno); +*************** +*** 2739,2747 **** + if (word_top > 0) word_top--; + } +! #line 2742 "y.tab.c" + break; + +! case 87: /* arith_for_command: FOR ARITH_FOR_EXPRS DO compound_list DONE */ +! #line 877 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = make_arith_for_command ((yyvsp[-3].word_list), (yyvsp[-1].command), arith_for_lineno); +--- 2758,2766 ---- + if (word_top > 0) word_top--; + } +! #line 2761 "y.tab.c" + break; + +! case 88: /* arith_for_command: FOR ARITH_FOR_EXPRS DO compound_list DONE */ +! #line 892 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = make_arith_for_command ((yyvsp[-3].word_list), (yyvsp[-1].command), arith_for_lineno); +*************** +*** 2749,2757 **** + if (word_top > 0) word_top--; + } +! #line 2752 "y.tab.c" + break; + +! case 88: /* arith_for_command: FOR ARITH_FOR_EXPRS '{' compound_list '}' */ +! #line 883 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = make_arith_for_command ((yyvsp[-3].word_list), (yyvsp[-1].command), arith_for_lineno); +--- 2768,2776 ---- + if (word_top > 0) word_top--; + } +! #line 2771 "y.tab.c" + break; + +! case 89: /* arith_for_command: FOR ARITH_FOR_EXPRS '{' compound_list '}' */ +! #line 898 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = make_arith_for_command ((yyvsp[-3].word_list), (yyvsp[-1].command), arith_for_lineno); +*************** +*** 2759,2896 **** + if (word_top > 0) word_top--; + } +! #line 2762 "y.tab.c" + break; + +! case 89: /* select_command: SELECT WORD newline_list DO compound_list DONE */ +! #line 891 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[-4].word), add_string_to_list (""$@"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]); + if (word_top > 0) word_top--; + } +! #line 2771 "y.tab.c" + break; + +! case 90: /* select_command: SELECT WORD newline_list '{' compound_list '}' */ +! #line 896 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[-4].word), add_string_to_list (""$@"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]); + if (word_top > 0) word_top--; + } +! #line 2780 "y.tab.c" + break; + +! case 91: /* select_command: SELECT WORD ';' newline_list DO compound_list DONE */ +! #line 901 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[-5].word), add_string_to_list (""$@"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]); + if (word_top > 0) word_top--; + } +! #line 2789 "y.tab.c" + break; + +! case 92: /* select_command: SELECT WORD ';' newline_list '{' compound_list '}' */ +! #line 906 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[-5].word), add_string_to_list (""$@"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]); + if (word_top > 0) word_top--; + } +! #line 2798 "y.tab.c" + break; + +! case 93: /* select_command: SELECT WORD newline_list IN word_list list_terminator newline_list DO compound_list DONE */ +! #line 911 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]); + if (word_top > 0) word_top--; + } +! #line 2807 "y.tab.c" + break; + +! case 94: /* select_command: SELECT WORD newline_list IN word_list list_terminator newline_list '{' compound_list '}' */ +! #line 916 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]); + if (word_top > 0) word_top--; + } +! #line 2816 "y.tab.c" + break; + +! case 95: /* select_command: SELECT WORD newline_list IN list_terminator newline_list DO compound_list DONE */ +! #line 921 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]); + if (word_top > 0) word_top--; + } +! #line 2825 "y.tab.c" + break; + +! case 96: /* select_command: SELECT WORD newline_list IN list_terminator newline_list '{' compound_list '}' */ +! #line 926 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]); + if (word_top > 0) word_top--; + } +! #line 2834 "y.tab.c" + break; + +! case 97: /* case_command: CASE WORD newline_list IN newline_list ESAC */ +! #line 933 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = make_case_command ((yyvsp[-4].word), (PATTERN_LIST *)NULL, word_lineno[word_top]); + if (word_top > 0) word_top--; + } +! #line 2843 "y.tab.c" + break; + +! case 98: /* case_command: CASE WORD newline_list IN case_clause_sequence newline_list ESAC */ +! #line 938 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = make_case_command ((yyvsp[-5].word), (yyvsp[-2].pattern), word_lineno[word_top]); + if (word_top > 0) word_top--; + } +! #line 2852 "y.tab.c" + break; + +! case 99: /* case_command: CASE WORD newline_list IN case_clause ESAC */ +! #line 943 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = make_case_command ((yyvsp[-4].word), (yyvsp[-1].pattern), word_lineno[word_top]); + if (word_top > 0) word_top--; + } +! #line 2861 "y.tab.c" + break; + +! case 100: /* function_def: WORD '(' ')' newline_list function_body */ +! #line 950 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = make_function_def ((yyvsp[-4].word), (yyvsp[0].command), function_dstart, function_bstart); } +! #line 2867 "y.tab.c" + break; + +! case 101: /* function_def: FUNCTION WORD '(' ')' newline_list function_body */ +! #line 952 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = make_function_def ((yyvsp[-4].word), (yyvsp[0].command), function_dstart, function_bstart); } +! #line 2873 "y.tab.c" + break; + +! case 102: /* function_def: FUNCTION WORD function_body */ +! #line 954 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = make_function_def ((yyvsp[-1].word), (yyvsp[0].command), function_dstart, function_bstart); } +! #line 2879 "y.tab.c" + break; + +! case 103: /* function_def: FUNCTION WORD '\n' newline_list function_body */ +! #line 956 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = make_function_def ((yyvsp[-3].word), (yyvsp[0].command), function_dstart, function_bstart); } +! #line 2885 "y.tab.c" + break; + +! case 104: /* function_body: shell_command */ +! #line 960 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[0].command); } +! #line 2891 "y.tab.c" + break; + +! case 105: /* function_body: shell_command redirection_list */ +! #line 962 "/usr/local/src/chet/src/bash/src/parse.y" + { + COMMAND *tc; +--- 2778,2915 ---- + if (word_top > 0) word_top--; + } +! #line 2781 "y.tab.c" + break; + +! case 90: /* select_command: SELECT WORD newline_list DO compound_list DONE */ +! #line 906 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[-4].word), add_string_to_list (""$@"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]); + if (word_top > 0) word_top--; + } +! #line 2790 "y.tab.c" + break; + +! case 91: /* select_command: SELECT WORD newline_list '{' compound_list '}' */ +! #line 911 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[-4].word), add_string_to_list (""$@"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]); + if (word_top > 0) word_top--; + } +! #line 2799 "y.tab.c" + break; + +! case 92: /* select_command: SELECT WORD ';' newline_list DO compound_list DONE */ +! #line 916 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[-5].word), add_string_to_list (""$@"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]); + if (word_top > 0) word_top--; + } +! #line 2808 "y.tab.c" + break; + +! case 93: /* select_command: SELECT WORD ';' newline_list '{' compound_list '}' */ +! #line 921 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[-5].word), add_string_to_list (""$@"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]); + if (word_top > 0) word_top--; + } +! #line 2817 "y.tab.c" + break; + +! case 94: /* select_command: SELECT WORD newline_list IN word_list list_terminator newline_list DO compound_list DONE */ +! #line 926 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]); + if (word_top > 0) word_top--; + } +! #line 2826 "y.tab.c" + break; + +! case 95: /* select_command: SELECT WORD newline_list IN word_list list_terminator newline_list '{' compound_list '}' */ +! #line 931 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]); + if (word_top > 0) word_top--; + } +! #line 2835 "y.tab.c" + break; + +! case 96: /* select_command: SELECT WORD newline_list IN list_terminator newline_list DO compound_list DONE */ +! #line 936 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]); + if (word_top > 0) word_top--; + } +! #line 2844 "y.tab.c" + break; + +! case 97: /* select_command: SELECT WORD newline_list IN list_terminator newline_list '{' compound_list '}' */ +! #line 941 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]); + if (word_top > 0) word_top--; + } +! #line 2853 "y.tab.c" + break; + +! case 98: /* case_command: CASE WORD newline_list IN newline_list ESAC */ +! #line 948 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = make_case_command ((yyvsp[-4].word), (PATTERN_LIST *)NULL, word_lineno[word_top]); + if (word_top > 0) word_top--; + } +! #line 2862 "y.tab.c" + break; + +! case 99: /* case_command: CASE WORD newline_list IN case_clause_sequence newline_list ESAC */ +! #line 953 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = make_case_command ((yyvsp[-5].word), (yyvsp[-2].pattern), word_lineno[word_top]); + if (word_top > 0) word_top--; + } +! #line 2871 "y.tab.c" + break; + +! case 100: /* case_command: CASE WORD newline_list IN case_clause ESAC */ +! #line 958 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = make_case_command ((yyvsp[-4].word), (yyvsp[-1].pattern), word_lineno[word_top]); + if (word_top > 0) word_top--; + } +! #line 2880 "y.tab.c" + break; + +! case 101: /* function_def: WORD '(' ')' newline_list function_body */ +! #line 965 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = make_function_def ((yyvsp[-4].word), (yyvsp[0].command), function_dstart, function_bstart); } +! #line 2886 "y.tab.c" + break; + +! case 102: /* function_def: FUNCTION WORD '(' ')' newline_list function_body */ +! #line 967 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = make_function_def ((yyvsp[-4].word), (yyvsp[0].command), function_dstart, function_bstart); } +! #line 2892 "y.tab.c" + break; + +! case 103: /* function_def: FUNCTION WORD function_body */ +! #line 969 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = make_function_def ((yyvsp[-1].word), (yyvsp[0].command), function_dstart, function_bstart); } +! #line 2898 "y.tab.c" + break; + +! case 104: /* function_def: FUNCTION WORD '\n' newline_list function_body */ +! #line 971 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = make_function_def ((yyvsp[-3].word), (yyvsp[0].command), function_dstart, function_bstart); } +! #line 2904 "y.tab.c" + break; + +! case 105: /* function_body: shell_command */ +! #line 975 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[0].command); } +! #line 2910 "y.tab.c" + break; + +! case 106: /* function_body: shell_command redirection_list */ +! #line 977 "/usr/local/src/chet/src/bash/src/parse.y" + { + COMMAND *tc; +*************** +*** 2921,2963 **** + (yyval.command) = (yyvsp[-1].command); + } +! #line 2924 "y.tab.c" + break; + +! case 106: /* subshell: '(' compound_list ')' */ +! #line 993 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = make_subshell_command ((yyvsp[-1].command)); + (yyval.command)->flags |= CMD_WANT_SUBSHELL; + } +! #line 2933 "y.tab.c" + break; + +! case 107: /* comsub: DOLPAREN compound_list ')' */ +! #line 1000 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = (yyvsp[-1].command); + } +! #line 2941 "y.tab.c" + break; + +! case 108: /* comsub: DOLPAREN newline_list ')' */ +! #line 1004 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = (COMMAND *)NULL; + } +! #line 2949 "y.tab.c" + break; + +! case 109: /* coproc: COPROC shell_command */ +! #line 1010 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = make_coproc_command ("COPROC", (yyvsp[0].command)); + (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL; + } +! #line 2958 "y.tab.c" + break; + +! case 110: /* coproc: COPROC shell_command redirection_list */ +! #line 1015 "/usr/local/src/chet/src/bash/src/parse.y" + { + COMMAND *tc; +--- 2940,2982 ---- + (yyval.command) = (yyvsp[-1].command); + } +! #line 2943 "y.tab.c" + break; + +! case 107: /* subshell: '(' compound_list ')' */ +! #line 1008 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = make_subshell_command ((yyvsp[-1].command)); + (yyval.command)->flags |= CMD_WANT_SUBSHELL; + } +! #line 2952 "y.tab.c" + break; + +! case 108: /* comsub: DOLPAREN compound_list ')' */ +! #line 1015 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = (yyvsp[-1].command); + } +! #line 2960 "y.tab.c" + break; + +! case 109: /* comsub: DOLPAREN newline_list ')' */ +! #line 1019 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = (COMMAND *)NULL; + } +! #line 2968 "y.tab.c" + break; + +! case 110: /* coproc: COPROC shell_command */ +! #line 1025 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = make_coproc_command ("COPROC", (yyvsp[0].command)); + (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL; + } +! #line 2977 "y.tab.c" + break; + +! case 111: /* coproc: COPROC shell_command redirection_list */ +! #line 1030 "/usr/local/src/chet/src/bash/src/parse.y" + { + COMMAND *tc; +*************** +*** 2976,2993 **** + (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL; + } +! #line 2979 "y.tab.c" + break; + +! case 111: /* coproc: COPROC WORD shell_command */ +! #line 1032 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = make_coproc_command ((yyvsp[-1].word)->word, (yyvsp[0].command)); + (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL; + } +! #line 2988 "y.tab.c" + break; + +! case 112: /* coproc: COPROC WORD shell_command redirection_list */ +! #line 1037 "/usr/local/src/chet/src/bash/src/parse.y" + { + COMMAND *tc; +--- 2995,3012 ---- + (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL; + } +! #line 2998 "y.tab.c" + break; + +! case 112: /* coproc: COPROC WORD shell_command */ +! #line 1047 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = make_coproc_command ((yyvsp[-1].word)->word, (yyvsp[0].command)); + (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL; + } +! #line 3007 "y.tab.c" + break; + +! case 113: /* coproc: COPROC WORD shell_command redirection_list */ +! #line 1052 "/usr/local/src/chet/src/bash/src/parse.y" + { + COMMAND *tc; +*************** +*** 3006,3155 **** + (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL; + } +! #line 3009 "y.tab.c" + break; + +! case 113: /* coproc: COPROC simple_command */ +! #line 1054 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = make_coproc_command ("COPROC", clean_simple_command ((yyvsp[0].command))); + (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL; + } +! #line 3018 "y.tab.c" + break; + +! case 114: /* if_command: IF compound_list THEN compound_list FI */ +! #line 1061 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = make_if_command ((yyvsp[-3].command), (yyvsp[-1].command), (COMMAND *)NULL); } +! #line 3024 "y.tab.c" + break; + +! case 115: /* if_command: IF compound_list THEN compound_list ELSE compound_list FI */ +! #line 1063 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = make_if_command ((yyvsp[-5].command), (yyvsp[-3].command), (yyvsp[-1].command)); } +! #line 3030 "y.tab.c" + break; + +! case 116: /* if_command: IF compound_list THEN compound_list elif_clause FI */ +! #line 1065 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = make_if_command ((yyvsp[-4].command), (yyvsp[-2].command), (yyvsp[-1].command)); } +! #line 3036 "y.tab.c" + break; + +! case 117: /* group_command: '{' compound_list '}' */ +! #line 1070 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = make_group_command ((yyvsp[-1].command)); } +! #line 3042 "y.tab.c" + break; + +! case 118: /* arith_command: ARITH_CMD */ +! #line 1074 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = make_arith_command ((yyvsp[0].word_list)); } +! #line 3048 "y.tab.c" + break; + +! case 119: /* cond_command: COND_START COND_CMD COND_END */ +! #line 1078 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[-1].command); } +! #line 3054 "y.tab.c" + break; + +! case 120: /* elif_clause: ELIF compound_list THEN compound_list */ +! #line 1082 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = make_if_command ((yyvsp[-2].command), (yyvsp[0].command), (COMMAND *)NULL); } +! #line 3060 "y.tab.c" + break; + +! case 121: /* elif_clause: ELIF compound_list THEN compound_list ELSE compound_list */ +! #line 1084 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = make_if_command ((yyvsp[-4].command), (yyvsp[-2].command), (yyvsp[0].command)); } +! #line 3066 "y.tab.c" + break; + +! case 122: /* elif_clause: ELIF compound_list THEN compound_list elif_clause */ +! #line 1086 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = make_if_command ((yyvsp[-3].command), (yyvsp[-1].command), (yyvsp[0].command)); } +! #line 3072 "y.tab.c" + break; + +! case 124: /* case_clause: case_clause_sequence pattern_list */ +! #line 1091 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyvsp[0].pattern)->next = (yyvsp[-1].pattern); (yyval.pattern) = (yyvsp[0].pattern); } +! #line 3078 "y.tab.c" + break; + +! case 125: /* pattern_list: newline_list pattern ')' compound_list */ +! #line 1095 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (yyvsp[0].command)); } +! #line 3084 "y.tab.c" + break; + +! case 126: /* pattern_list: newline_list pattern ')' newline_list */ +! #line 1097 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (COMMAND *)NULL); } +! #line 3090 "y.tab.c" + break; + +! case 127: /* pattern_list: newline_list '(' pattern ')' compound_list */ +! #line 1099 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (yyvsp[0].command)); } +! #line 3096 "y.tab.c" + break; + +! case 128: /* pattern_list: newline_list '(' pattern ')' newline_list */ +! #line 1101 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (COMMAND *)NULL); } +! #line 3102 "y.tab.c" + break; + +! case 129: /* case_clause_sequence: pattern_list SEMI_SEMI */ +! #line 1105 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.pattern) = (yyvsp[-1].pattern); } +! #line 3108 "y.tab.c" + break; + +! case 130: /* case_clause_sequence: case_clause_sequence pattern_list SEMI_SEMI */ +! #line 1107 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyvsp[-1].pattern)->next = (yyvsp[-2].pattern); (yyval.pattern) = (yyvsp[-1].pattern); } +! #line 3114 "y.tab.c" + break; + +! case 131: /* case_clause_sequence: pattern_list SEMI_AND */ +! #line 1109 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyvsp[-1].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyval.pattern) = (yyvsp[-1].pattern); } +! #line 3120 "y.tab.c" + break; + +! case 132: /* case_clause_sequence: case_clause_sequence pattern_list SEMI_AND */ +! #line 1111 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyvsp[-1].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyvsp[-1].pattern)->next = (yyvsp[-2].pattern); (yyval.pattern) = (yyvsp[-1].pattern); } +! #line 3126 "y.tab.c" + break; + +! case 133: /* case_clause_sequence: pattern_list SEMI_SEMI_AND */ +! #line 1113 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyvsp[-1].pattern)->flags |= CASEPAT_TESTNEXT; (yyval.pattern) = (yyvsp[-1].pattern); } +! #line 3132 "y.tab.c" + break; + +! case 134: /* case_clause_sequence: case_clause_sequence pattern_list SEMI_SEMI_AND */ +! #line 1115 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyvsp[-1].pattern)->flags |= CASEPAT_TESTNEXT; (yyvsp[-1].pattern)->next = (yyvsp[-2].pattern); (yyval.pattern) = (yyvsp[-1].pattern); } +! #line 3138 "y.tab.c" + break; + +! case 135: /* pattern: WORD */ +! #line 1119 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.word_list) = make_word_list ((yyvsp[0].word), (WORD_LIST *)NULL); } +! #line 3144 "y.tab.c" + break; + +! case 136: /* pattern: pattern '|' WORD */ +! #line 1121 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.word_list) = make_word_list ((yyvsp[0].word), (yyvsp[-2].word_list)); } +! #line 3150 "y.tab.c" + break; + +! case 137: /* compound_list: newline_list list0 */ +! #line 1130 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = (yyvsp[0].command); +--- 3025,3174 ---- + (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL; + } +! #line 3028 "y.tab.c" + break; + +! case 114: /* coproc: COPROC simple_command */ +! #line 1069 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = make_coproc_command ("COPROC", clean_simple_command ((yyvsp[0].command))); + (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL; + } +! #line 3037 "y.tab.c" + break; + +! case 115: /* if_command: IF compound_list THEN compound_list FI */ +! #line 1076 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = make_if_command ((yyvsp[-3].command), (yyvsp[-1].command), (COMMAND *)NULL); } +! #line 3043 "y.tab.c" + break; + +! case 116: /* if_command: IF compound_list THEN compound_list ELSE compound_list FI */ +! #line 1078 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = make_if_command ((yyvsp[-5].command), (yyvsp[-3].command), (yyvsp[-1].command)); } +! #line 3049 "y.tab.c" + break; + +! case 117: /* if_command: IF compound_list THEN compound_list elif_clause FI */ +! #line 1080 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = make_if_command ((yyvsp[-4].command), (yyvsp[-2].command), (yyvsp[-1].command)); } +! #line 3055 "y.tab.c" + break; + +! case 118: /* group_command: '{' compound_list '}' */ +! #line 1085 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = make_group_command ((yyvsp[-1].command)); } +! #line 3061 "y.tab.c" + break; + +! case 119: /* arith_command: ARITH_CMD */ +! #line 1089 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = make_arith_command ((yyvsp[0].word_list)); } +! #line 3067 "y.tab.c" + break; + +! case 120: /* cond_command: COND_START COND_CMD COND_END */ +! #line 1093 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[-1].command); } +! #line 3073 "y.tab.c" + break; + +! case 121: /* elif_clause: ELIF compound_list THEN compound_list */ +! #line 1097 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = make_if_command ((yyvsp[-2].command), (yyvsp[0].command), (COMMAND *)NULL); } +! #line 3079 "y.tab.c" + break; + +! case 122: /* elif_clause: ELIF compound_list THEN compound_list ELSE compound_list */ +! #line 1099 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = make_if_command ((yyvsp[-4].command), (yyvsp[-2].command), (yyvsp[0].command)); } +! #line 3085 "y.tab.c" + break; + +! case 123: /* elif_clause: ELIF compound_list THEN compound_list elif_clause */ +! #line 1101 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = make_if_command ((yyvsp[-3].command), (yyvsp[-1].command), (yyvsp[0].command)); } +! #line 3091 "y.tab.c" + break; + +! case 125: /* case_clause: case_clause_sequence pattern_list */ +! #line 1106 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyvsp[0].pattern)->next = (yyvsp[-1].pattern); (yyval.pattern) = (yyvsp[0].pattern); } +! #line 3097 "y.tab.c" + break; + +! case 126: /* pattern_list: newline_list pattern ')' compound_list */ +! #line 1110 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (yyvsp[0].command)); } +! #line 3103 "y.tab.c" + break; + +! case 127: /* pattern_list: newline_list pattern ')' newline_list */ +! #line 1112 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (COMMAND *)NULL); } +! #line 3109 "y.tab.c" + break; + +! case 128: /* pattern_list: newline_list '(' pattern ')' compound_list */ +! #line 1114 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (yyvsp[0].command)); } +! #line 3115 "y.tab.c" + break; + +! case 129: /* pattern_list: newline_list '(' pattern ')' newline_list */ +! #line 1116 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (COMMAND *)NULL); } +! #line 3121 "y.tab.c" + break; + +! case 130: /* case_clause_sequence: pattern_list SEMI_SEMI */ +! #line 1120 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.pattern) = (yyvsp[-1].pattern); } +! #line 3127 "y.tab.c" + break; + +! case 131: /* case_clause_sequence: case_clause_sequence pattern_list SEMI_SEMI */ +! #line 1122 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyvsp[-1].pattern)->next = (yyvsp[-2].pattern); (yyval.pattern) = (yyvsp[-1].pattern); } +! #line 3133 "y.tab.c" + break; + +! case 132: /* case_clause_sequence: pattern_list SEMI_AND */ +! #line 1124 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyvsp[-1].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyval.pattern) = (yyvsp[-1].pattern); } +! #line 3139 "y.tab.c" + break; + +! case 133: /* case_clause_sequence: case_clause_sequence pattern_list SEMI_AND */ +! #line 1126 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyvsp[-1].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyvsp[-1].pattern)->next = (yyvsp[-2].pattern); (yyval.pattern) = (yyvsp[-1].pattern); } +! #line 3145 "y.tab.c" + break; + +! case 134: /* case_clause_sequence: pattern_list SEMI_SEMI_AND */ +! #line 1128 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyvsp[-1].pattern)->flags |= CASEPAT_TESTNEXT; (yyval.pattern) = (yyvsp[-1].pattern); } +! #line 3151 "y.tab.c" + break; + +! case 135: /* case_clause_sequence: case_clause_sequence pattern_list SEMI_SEMI_AND */ +! #line 1130 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyvsp[-1].pattern)->flags |= CASEPAT_TESTNEXT; (yyvsp[-1].pattern)->next = (yyvsp[-2].pattern); (yyval.pattern) = (yyvsp[-1].pattern); } +! #line 3157 "y.tab.c" + break; + +! case 136: /* pattern: WORD */ +! #line 1134 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.word_list) = make_word_list ((yyvsp[0].word), (WORD_LIST *)NULL); } +! #line 3163 "y.tab.c" + break; + +! case 137: /* pattern: pattern '|' WORD */ +! #line 1136 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.word_list) = make_word_list ((yyvsp[0].word), (yyvsp[-2].word_list)); } +! #line 3169 "y.tab.c" + break; + +! case 138: /* compound_list: newline_list list0 */ +! #line 1145 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = (yyvsp[0].command); +*************** +*** 3157,3173 **** + gather_here_documents (); + } +! #line 3160 "y.tab.c" + break; + +! case 138: /* compound_list: newline_list list1 */ +! #line 1136 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = (yyvsp[0].command); + } +! #line 3168 "y.tab.c" + break; + +! case 140: /* list0: list1 '&' newline_list */ +! #line 1143 "/usr/local/src/chet/src/bash/src/parse.y" + { + if ((yyvsp[-2].command)->type == cm_connection) +--- 3176,3192 ---- + gather_here_documents (); + } +! #line 3179 "y.tab.c" + break; + +! case 139: /* compound_list: newline_list list1 */ +! #line 1151 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = (yyvsp[0].command); + } +! #line 3187 "y.tab.c" + break; + +! case 141: /* list0: list1 '&' newline_list */ +! #line 1158 "/usr/local/src/chet/src/bash/src/parse.y" + { + if ((yyvsp[-2].command)->type == cm_connection) +*************** +*** 3176,3196 **** + (yyval.command) = command_connect ((yyvsp[-2].command), (COMMAND *)NULL, '&'); + } +! #line 3179 "y.tab.c" + break; + +! case 142: /* list1: list1 AND_AND newline_list list1 */ +! #line 1154 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), AND_AND); } +! #line 3185 "y.tab.c" + break; + +! case 143: /* list1: list1 OR_OR newline_list list1 */ +! #line 1156 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), OR_OR); } +! #line 3191 "y.tab.c" + break; + +! case 144: /* list1: list1 '&' newline_list list1 */ +! #line 1158 "/usr/local/src/chet/src/bash/src/parse.y" + { + if ((yyvsp[-3].command)->type == cm_connection) +--- 3195,3215 ---- + (yyval.command) = command_connect ((yyvsp[-2].command), (COMMAND *)NULL, '&'); + } +! #line 3198 "y.tab.c" + break; + +! case 143: /* list1: list1 AND_AND newline_list list1 */ +! #line 1169 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), AND_AND); } +! #line 3204 "y.tab.c" + break; + +! case 144: /* list1: list1 OR_OR newline_list list1 */ +! #line 1171 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), OR_OR); } +! #line 3210 "y.tab.c" + break; + +! case 145: /* list1: list1 '&' newline_list list1 */ +! #line 1173 "/usr/local/src/chet/src/bash/src/parse.y" + { + if ((yyvsp[-3].command)->type == cm_connection) +*************** +*** 3199,3213 **** + (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), '&'); + } +! #line 3202 "y.tab.c" + break; + +! case 145: /* list1: list1 ';' newline_list list1 */ +! #line 1165 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), ';'); } +! #line 3208 "y.tab.c" + break; + +! case 146: /* list1: list1 '\n' newline_list list1 */ +! #line 1167 "/usr/local/src/chet/src/bash/src/parse.y" + { + if (parser_state & PST_CMDSUBST) +--- 3218,3232 ---- + (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), '&'); + } +! #line 3221 "y.tab.c" + break; + +! case 146: /* list1: list1 ';' newline_list list1 */ +! #line 1180 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), ';'); } +! #line 3227 "y.tab.c" + break; + +! case 147: /* list1: list1 '\n' newline_list list1 */ +! #line 1182 "/usr/local/src/chet/src/bash/src/parse.y" + { + if (parser_state & PST_CMDSUBST) +*************** +*** 3216,3248 **** + (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), ';'); + } +! #line 3219 "y.tab.c" + break; + +! case 147: /* list1: pipeline_command */ +! #line 1174 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[0].command); } +! #line 3225 "y.tab.c" + break; + +! case 150: /* list_terminator: '\n' */ +! #line 1182 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.number) = '\n'; } +! #line 3231 "y.tab.c" + break; + +! case 151: /* list_terminator: ';' */ +! #line 1184 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.number) = ';'; } +! #line 3237 "y.tab.c" + break; + +! case 152: /* list_terminator: yacc_EOF */ +! #line 1186 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.number) = yacc_EOF; } +! #line 3243 "y.tab.c" + break; + +! case 155: /* simple_list: simple_list1 */ +! #line 1200 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = (yyvsp[0].command); +--- 3235,3267 ---- + (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), ';'); + } +! #line 3238 "y.tab.c" + break; + +! case 148: /* list1: pipeline_command */ +! #line 1189 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[0].command); } +! #line 3244 "y.tab.c" + break; + +! case 151: /* list_terminator: '\n' */ +! #line 1197 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.number) = '\n'; } +! #line 3250 "y.tab.c" + break; + +! case 152: /* list_terminator: ';' */ +! #line 1199 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.number) = ';'; } +! #line 3256 "y.tab.c" + break; + +! case 153: /* list_terminator: yacc_EOF */ +! #line 1201 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.number) = yacc_EOF; } +! #line 3262 "y.tab.c" + break; + +! case 156: /* simple_list: simple_list1 */ +! #line 1215 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = (yyvsp[0].command); +*************** +*** 3259,3267 **** + } + } +! #line 3262 "y.tab.c" + break; + +! case 156: /* simple_list: simple_list1 '&' */ +! #line 1215 "/usr/local/src/chet/src/bash/src/parse.y" + { + if ((yyvsp[-1].command)->type == cm_connection) +--- 3278,3286 ---- + } + } +! #line 3281 "y.tab.c" + break; + +! case 157: /* simple_list: simple_list1 '&' */ +! #line 1230 "/usr/local/src/chet/src/bash/src/parse.y" + { + if ((yyvsp[-1].command)->type == cm_connection) +*************** +*** 3281,3289 **** + } + } +! #line 3284 "y.tab.c" + break; + +! case 157: /* simple_list: simple_list1 ';' */ +! #line 1233 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = (yyvsp[-1].command); +--- 3300,3308 ---- + } + } +! #line 3303 "y.tab.c" + break; + +! case 158: /* simple_list: simple_list1 ';' */ +! #line 1248 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = (yyvsp[-1].command); +*************** +*** 3300,3320 **** + } + } +! #line 3303 "y.tab.c" + break; + +! case 158: /* simple_list1: simple_list1 AND_AND newline_list simple_list1 */ +! #line 1250 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), AND_AND); } +! #line 3309 "y.tab.c" + break; + +! case 159: /* simple_list1: simple_list1 OR_OR newline_list simple_list1 */ +! #line 1252 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), OR_OR); } +! #line 3315 "y.tab.c" + break; + +! case 160: /* simple_list1: simple_list1 '&' simple_list1 */ +! #line 1254 "/usr/local/src/chet/src/bash/src/parse.y" + { + if ((yyvsp[-2].command)->type == cm_connection) +--- 3319,3339 ---- + } + } +! #line 3322 "y.tab.c" + break; + +! case 159: /* simple_list1: simple_list1 AND_AND newline_list simple_list1 */ +! #line 1265 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), AND_AND); } +! #line 3328 "y.tab.c" + break; + +! case 160: /* simple_list1: simple_list1 OR_OR newline_list simple_list1 */ +! #line 1267 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), OR_OR); } +! #line 3334 "y.tab.c" + break; + +! case 161: /* simple_list1: simple_list1 '&' simple_list1 */ +! #line 1269 "/usr/local/src/chet/src/bash/src/parse.y" + { + if ((yyvsp[-2].command)->type == cm_connection) +*************** +*** 3323,3349 **** + (yyval.command) = command_connect ((yyvsp[-2].command), (yyvsp[0].command), '&'); + } +! #line 3326 "y.tab.c" + break; + +! case 161: /* simple_list1: simple_list1 ';' simple_list1 */ +! #line 1261 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = command_connect ((yyvsp[-2].command), (yyvsp[0].command), ';'); } +! #line 3332 "y.tab.c" + break; + +! case 162: /* simple_list1: pipeline_command */ +! #line 1264 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[0].command); } +! #line 3338 "y.tab.c" + break; + +! case 163: /* pipeline_command: pipeline */ +! #line 1268 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[0].command); } +! #line 3344 "y.tab.c" + break; + +! case 164: /* pipeline_command: BANG pipeline_command */ +! #line 1270 "/usr/local/src/chet/src/bash/src/parse.y" + { + if ((yyvsp[0].command)) +--- 3342,3368 ---- + (yyval.command) = command_connect ((yyvsp[-2].command), (yyvsp[0].command), '&'); + } +! #line 3345 "y.tab.c" + break; + +! case 162: /* simple_list1: simple_list1 ';' simple_list1 */ +! #line 1276 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = command_connect ((yyvsp[-2].command), (yyvsp[0].command), ';'); } +! #line 3351 "y.tab.c" + break; + +! case 163: /* simple_list1: pipeline_command */ +! #line 1279 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[0].command); } +! #line 3357 "y.tab.c" + break; + +! case 164: /* pipeline_command: pipeline */ +! #line 1283 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[0].command); } +! #line 3363 "y.tab.c" + break; + +! case 165: /* pipeline_command: BANG pipeline_command */ +! #line 1285 "/usr/local/src/chet/src/bash/src/parse.y" + { + if ((yyvsp[0].command)) +*************** +*** 3351,3359 **** + (yyval.command) = (yyvsp[0].command); + } +! #line 3354 "y.tab.c" + break; + +! case 165: /* pipeline_command: timespec pipeline_command */ +! #line 1276 "/usr/local/src/chet/src/bash/src/parse.y" + { + if ((yyvsp[0].command)) +--- 3370,3378 ---- + (yyval.command) = (yyvsp[0].command); + } +! #line 3373 "y.tab.c" + break; + +! case 166: /* pipeline_command: timespec pipeline_command */ +! #line 1291 "/usr/local/src/chet/src/bash/src/parse.y" + { + if ((yyvsp[0].command)) +*************** +*** 3361,3369 **** + (yyval.command) = (yyvsp[0].command); + } +! #line 3364 "y.tab.c" + break; + +! case 166: /* pipeline_command: timespec list_terminator */ +! #line 1282 "/usr/local/src/chet/src/bash/src/parse.y" + { + ELEMENT x; +--- 3380,3388 ---- + (yyval.command) = (yyvsp[0].command); + } +! #line 3383 "y.tab.c" + break; + +! case 167: /* pipeline_command: timespec list_terminator */ +! #line 1297 "/usr/local/src/chet/src/bash/src/parse.y" + { + ELEMENT x; +*************** +*** 3385,3393 **** + parser_state &= ~PST_REDIRLIST; /* make_simple_command sets this */ + } +! #line 3388 "y.tab.c" + break; + +! case 167: /* pipeline_command: BANG list_terminator */ +! #line 1302 "/usr/local/src/chet/src/bash/src/parse.y" + { + ELEMENT x; +--- 3404,3412 ---- + parser_state &= ~PST_REDIRLIST; /* make_simple_command sets this */ + } +! #line 3407 "y.tab.c" + break; + +! case 168: /* pipeline_command: BANG list_terminator */ +! #line 1317 "/usr/local/src/chet/src/bash/src/parse.y" + { + ELEMENT x; +*************** +*** 3410,3424 **** + parser_state &= ~PST_REDIRLIST; /* make_simple_command sets this */ + } +! #line 3413 "y.tab.c" + break; + +! case 168: /* pipeline: pipeline '|' newline_list pipeline */ +! #line 1325 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), '|'); } +! #line 3419 "y.tab.c" + break; + +! case 169: /* pipeline: pipeline BAR_AND newline_list pipeline */ +! #line 1327 "/usr/local/src/chet/src/bash/src/parse.y" + { + /* Make cmd1 |& cmd2 equivalent to cmd1 2>&1 | cmd2 */ +--- 3429,3443 ---- + parser_state &= ~PST_REDIRLIST; /* make_simple_command sets this */ + } +! #line 3432 "y.tab.c" + break; + +! case 169: /* pipeline: pipeline '|' newline_list pipeline */ +! #line 1340 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), '|'); } +! #line 3438 "y.tab.c" + break; + +! case 170: /* pipeline: pipeline BAR_AND newline_list pipeline */ +! #line 1342 "/usr/local/src/chet/src/bash/src/parse.y" + { + /* Make cmd1 |& cmd2 equivalent to cmd1 2>&1 | cmd2 */ +*************** +*** 3443,3481 **** + (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), '|'); + } +! #line 3446 "y.tab.c" + break; + +! case 170: /* pipeline: command */ +! #line 1350 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[0].command); } +! #line 3452 "y.tab.c" + break; + +! case 171: /* timespec: TIME */ +! #line 1354 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.number) = CMD_TIME_PIPELINE; } +! #line 3458 "y.tab.c" + break; + +! case 172: /* timespec: TIME TIMEOPT */ +! #line 1356 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; } +! #line 3464 "y.tab.c" + break; + +! case 173: /* timespec: TIME TIMEIGN */ +! #line 1358 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; } +! #line 3470 "y.tab.c" + break; + +! case 174: /* timespec: TIME TIMEOPT TIMEIGN */ +! #line 1360 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; } +! #line 3476 "y.tab.c" + break; + + +! #line 3480 "y.tab.c" + + default: break; +--- 3462,3500 ---- + (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), '|'); + } +! #line 3465 "y.tab.c" + break; + +! case 171: /* pipeline: command */ +! #line 1365 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[0].command); } +! #line 3471 "y.tab.c" + break; + +! case 172: /* timespec: TIME */ +! #line 1369 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.number) = CMD_TIME_PIPELINE; } +! #line 3477 "y.tab.c" + break; + +! case 173: /* timespec: TIME TIMEOPT */ +! #line 1371 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; } +! #line 3483 "y.tab.c" + break; + +! case 174: /* timespec: TIME TIMEIGN */ +! #line 1373 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; } +! #line 3489 "y.tab.c" + break; + +! case 175: /* timespec: TIME TIMEOPT TIMEIGN */ +! #line 1375 "/usr/local/src/chet/src/bash/src/parse.y" + { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; } +! #line 3495 "y.tab.c" + break; + + +! #line 3499 "y.tab.c" + + default: break; +*************** +*** 3670,3674 **** + } + +! #line 1362 "/usr/local/src/chet/src/bash/src/parse.y" + + +--- 3689,3693 ---- + } + +! #line 1377 "/usr/local/src/chet/src/bash/src/parse.y" + + +*************** +*** 5209,5215 **** + if (current_token < 0) + #if defined (YYERRCODE) && !defined (YYUNDEF) +! current_token = YYERRCODE; + #else +! current_token = YYerror; + #endif + +--- 5228,5234 ---- + if (current_token < 0) + #if defined (YYERRCODE) && !defined (YYUNDEF) +! current_token = EOF_Reached ? YYEOF : YYERRCODE; + #else +! current_token = EOF_Reached ? YYEOF : YYUNDEF; + #endif + +*************** +*** 6006,6009 **** +--- 6026,6030 ---- + parser_error (start_lineno, _("unexpected EOF while looking for matching `%c'"), close); + EOF_Reached = 1; /* XXX */ ++ parser_state |= PST_NOERROR; /* avoid redundant error message */ + return (&matched_pair_error); + } +*************** +*** 6468,6471 **** +--- 6487,6491 ---- + + /* yyparse() has already called yyerror() and reset_parser() */ ++ parser_state |= PST_NOERROR; + return (&matched_pair_error); + } + +*** ../bash-5.2/patchlevel.h 2020-06-22 14:51:03.000000000 -0400 +--- patchlevel.h 2020-10-01 11:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 17 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 18 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash52-019 b/src/patches/bash/bash52-019 new file mode 100644 index 000000000..165a55e62 --- /dev/null +++ b/src/patches/bash/bash52-019 @@ -0,0 +1,66 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 5.2 +Patch-ID: bash52-019 + +Bug-Reported-by: Steffen Nurpmeso steffen@sdaoden.eu +Bug-Reference-ID: 20230116233547.2jFxL%steffen@sdaoden.eu +Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-bash/2023-01/msg00057.html + +Bug-Description: + +There are some cases where the shell reaped a background (asynchronous) job +and would incorrectly try to set the terminal's process group back to the +shell's. In these cases it never set the terminal process group to that +jobs's process group initially, so resetting it is incorrect. + +Patch (apply with `patch -p0'): + +*** ../bash-5.2-patched/jobs.c 2022-12-13 12:09:02.000000000 -0500 +--- jobs.c 2023-10-26 12:12:10.000000000 -0400 +*************** +*** 3078,3084 **** + subshell. Make sure subst.c:command_substitute uses the same + conditions to determine whether or not it should undo this and +! give the terminal to pipeline_pgrp. */ +! + if ((flags & JWAIT_NOTERM) == 0 && running_in_background == 0 && + (subshell_environment & (SUBSHELL_ASYNC|SUBSHELL_PIPE)) == 0) + give_terminal_to (shell_pgrp, 0); +--- 3036,3046 ---- + subshell. Make sure subst.c:command_substitute uses the same + conditions to determine whether or not it should undo this and +! give the terminal to pipeline_pgrp. We don't give the terminal +! back to shell_pgrp if an async job in the background exits because +! we never gave it to that job in the first place. An async job in +! the foreground is one we started in the background and foregrounded +! with `fg', and gave it the terminal. */ + if ((flags & JWAIT_NOTERM) == 0 && running_in_background == 0 && ++ (job == NO_JOB || IS_ASYNC (job) == 0 || IS_FOREGROUND (job)) && + (subshell_environment & (SUBSHELL_ASYNC|SUBSHELL_PIPE)) == 0) + give_terminal_to (shell_pgrp, 0); +*************** +*** 3624,3627 **** +--- 3599,3603 ---- + get_tty_state (); + save_stty = shell_tty_info; ++ jobs[job]->flags &= ~J_ASYNC; /* no longer async */ + /* Give the terminal to this job. */ + if (IS_JOBCONTROL (job)) + +*** ../bash-5.2/patchlevel.h 2020-06-22 14:51:03.000000000 -0400 +--- patchlevel.h 2020-10-01 11:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 18 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 19 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash52-020 b/src/patches/bash/bash52-020 new file mode 100644 index 000000000..0e76741e9 --- /dev/null +++ b/src/patches/bash/bash52-020 @@ -0,0 +1,53 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 5.2 +Patch-ID: bash52-020 + +Bug-Reported-by: Dima Korobskiy dkroot2@gmail.com +Bug-Reference-ID: 16664c2d-40ec-df33-b932-83db06e39a82@gmail.com +Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-bash/2023-08/msg00125.html + +Bug-Description: + +The parser did not allow `time' to appear as the first reserved word in a +command substitution. + +Patch (apply with `patch -p0'): + +*** ../bash-5.2-patched/parse.y Tue Dec 13 12:53:21 2022 +--- parse.y Fri Sep 1 10:36:28 2023 +*************** +*** 3151,3154 **** +--- 3151,3155 ---- + case TIMEOPT: /* time -p time pipeline */ + case TIMEIGN: /* time -p -- ... */ ++ case DOLPAREN: + return 1; + default: +*** ../bash-5.2-patched/y.tab.c Tue Dec 13 12:53:21 2022 +--- y.tab.c Fri Sep 1 10:36:44 2023 +*************** +*** 5466,5469 **** +--- 5466,5470 ---- + case TIMEOPT: /* time -p time pipeline */ + case TIMEIGN: /* time -p -- ... */ ++ case DOLPAREN: + return 1; + default: + +*** ../bash-5.2/patchlevel.h 2020-06-22 14:51:03.000000000 -0400 +--- patchlevel.h 2020-10-01 11:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 19 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 20 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash52-021 b/src/patches/bash/bash52-021 new file mode 100644 index 000000000..ade1fac01 --- /dev/null +++ b/src/patches/bash/bash52-021 @@ -0,0 +1,61 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 5.2 +Patch-ID: bash52-021 + +Bug-Reported-by: Norbert Lange nolange79@gmail.com +Bug-Reference-ID: CADYdroPZFdVZSL6KkhqkAPgKKopbsLQVSm7_TvLCwadL2=UAWw@mail.gmail.com +Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-bash/2022-12/msg00046.html + +Bug-Description: + +There is an off-by-one error that causes command substitutions to fail when +they appear in a word expansion inside a here-document. + +Patch (apply with `patch -p0'): + +*** ../bash-5.2-patched/subst.c 2022-12-13 12:08:58.000000000 -0500 +--- subst.c 2022-12-14 09:09:53.000000000 -0500 +*************** +*** 1694,1698 **** + CHECK_STRING_OVERRUN (i, si, slen, c); + +! tlen = si - i - 1; + RESIZE_MALLOCED_BUFFER (result, result_index, tlen + 4, result_size, 64); + result[result_index++] = c; +--- 1699,1703 ---- + CHECK_STRING_OVERRUN (i, si, slen, c); + +! tlen = si - i - 2; + RESIZE_MALLOCED_BUFFER (result, result_index, tlen + 4, result_size, 64); + result[result_index++] = c; +*************** +*** 1714,1718 **** + CHECK_STRING_OVERRUN (i, si, slen, c); + +! tlen = si - i - 1; + RESIZE_MALLOCED_BUFFER (result, result_index, tlen + 4, result_size, 64); + result[result_index++] = c; +--- 1719,1723 ---- + CHECK_STRING_OVERRUN (i, si, slen, c); + +! tlen = si - i - 2; + RESIZE_MALLOCED_BUFFER (result, result_index, tlen + 4, result_size, 64); + result[result_index++] = c; + +*** ../bash-5.2/patchlevel.h 2020-06-22 14:51:03.000000000 -0400 +--- patchlevel.h 2020-10-01 11:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 20 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 21 + + #endif /* _PATCHLEVEL_H_ */
- Update from version 2.42.1 to 2.43.0 - Update of rootfile not required - Changelog 2.43.0 Backward Compatibility Notes * The "--rfc" option of "git format-patch" used to be a valid way to override an earlier "--subject-prefix=<something>" on the command line and replace it with "[RFC PATCH]", but from this release, it merely prefixes the string "RFC " in front of the given subject prefix. If you are negatively affected by this change, please use "--subject-prefix=PATCH --rfc" as a replacement. * In Git 2.42, "git rev-list --stdin" learned to take non-revisions (like "--not") from the standard input, but the way such a "--not" was handled was quite confusing, which has been rethought. The updated rule is that "--not" given from the command line only affects revs given from the command line that comes but not revs read from the standard input, and "--not" read from the standard input affects revs given from the standard input and not revs given from the command line. UI, Workflows & Features * A message written in olden time prevented a branch from getting checked out, saying it is already checked out elsewhere. But these days, we treat a branch that is being bisected or rebased just like a branch that is checked out and protect it from getting modified with the same codepath. The message has been rephrased to say that the branch is "in use" to avoid confusion. * Hourly and other schedules of "git maintenance" jobs are randomly distributed now. * "git cmd -h" learned to signal which options can be negated by listing such options like "--[no-]opt". * The way authentication related data other than passwords (e.g., oauth token and password expiration data) are stored in libsecret keyrings has been rethought. * Update the libsecret and wincred credential helpers to correctly match which credential to erase; they erased the wrong entry in some cases. Git GUI updates. * "git format-patch" learned a new "--description-file" option that lets cover letter description to be fed; this can be used on detached HEAD where there is no branch description available, and also can override the branch description if there is one. * Use of the "--max-pack-size" option to allow multiple packfiles to be created is now supported even when we are sending unreachable objects to cruft packs. * "git format-patch --rfc --subject-prefix=<foo>" used to ignore the "--subject-prefix" option and used "[RFC PATCH]"; now we will add "RFC" prefix to whatever subject prefix is specified. * "git log --format" has been taught the %(decorate) placeholder for further customization over what the "--decorate" option offers. * The default log message created by "git revert", when reverting a commit that records a revert, has been tweaked, to encourage people to describe complex "revert of revert of revert" situations better in their own words. * The command-line completion support (in contrib/) learned to complete "git commit --trailer=" for possible trailer keys. * "git update-index" learned the "--show-index-version" option to inspect the index format version used by the on-disk index file. * "git diff" learned the "diff.statNameWidth" configuration variable, to give the default width for the name part in the "--stat" output. * "git range-diff --notes=foo" compared "log --notes=foo --notes" of the two ranges, instead of using just the specified notes tree, which has been corrected to use only the specified notes tree. * The command line completion script (in contrib/) can be told to complete aliases by including ": git <cmd> ;" in the alias to tell it that the alias should be completed in a similar way to how "git <cmd>" is completed. The parsing code for the alias has been loosened to allow ';' without an extra space before it. * "git for-each-ref" and friends learned to apply mailmap to authorname and other fields in a more flexible way than using separate placeholder letters like %a[eElL] every time we want to come up with small variants. * "git repack" machinery learned to pay attention to the "--filter=" option. * "git repack" learned the "--max-cruft-size" option to prevent cruft packs from growing without bounds. * "git merge-tree" learned to take strategy backend specific options via the "-X" option, like "git merge" does. * "git log" and friends learned the "--dd" option that is a short-hand for "--diff-merges=first-parent -p". * The attribute subsystem learned to honor the "attr.tree" configuration variable that specifies which tree to read the .gitattributes files from. * "git merge-file" learns a mode to read three variants of the contents to be merged from blob objects. Performance, Internal Implementation, Development Support etc. * "git check-attr" has been taught to work better with sparse-index. * It may be tempting to leave the help text NULL for a command line option that is either hidden or too obvious, but "git subcmd -h" and "git subcmd --help-all" would have segfaulted if done so. Now the help text is truly optional. * Tests that are known to pass with LSan are now marked as such. * Flaky "git p4" tests, as well as "git svn" tests, are now skipped in the (rather expensive) sanitizer CI job. * Tests with LSan from time to time seem to emit harmless messages that make our tests unnecessarily flaky; we work around it by filtering the uninteresting output. * Unused parameters to functions are marked as such, and/or removed, in order to bring us closer to "-Wunused-parameter" clean. * The code to keep track of existing packs in the repository while repacking has been refactored. * The "streaming" interface used for bulk-checkin codepath has been narrowed to take only blob objects for now, with no real loss of functionality. * GitHub CI workflow has learned to trigger Coverity check. * Test coverage for trailers has been improved. * The code to iterate over loose references has been optimized to reduce the number of lstat() system calls. * The codepaths that read "chunk" formatted files have been corrected to pay attention to the chunk size and notice broken files. * Replace macos-12 used at GitHub CI with macos-13. (merge 682a868f67 js/ci-use-macos-13 later to maint).
Signed-off-by: Adolf Belka adolf.belka@ipfire.org --- lfs/git | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/lfs/git b/lfs/git index b74b3c8d8..648921525 100644 --- a/lfs/git +++ b/lfs/git @@ -24,7 +24,7 @@
include Config
-VER = 2.42.1 +VER = 2.43.0 SUMMARY = Fast, scalable, distributed revision control system
THISAPP = git-$(VER) @@ -33,7 +33,7 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) PROG = git -PAK_VER = 30 +PAK_VER = 31
DEPS = perl-Authen-SASL perl-MIME-Base64 perl-Net-SMTP-SSL
@@ -47,7 +47,7 @@ objects = $(DL_FILE)
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_BLAKE2 = 913427edcf02bc6ee4b07ba9ceb2f7ebc1482512016d24f838439150809ca2f8b496ec705f7894c5cc1b66a10e3d95bbff5b004e20b0637e29a805f07578cd39 +$(DL_FILE)_BLAKE2 = 5da19211df56e306eb95cef65b2a987134d2f0853dc1db30e1cc99d0357b3f5ab7f1e434e73948d7b6ad6b7bfc44f75349479f46050ee63a6516c72b774b4eba
install : $(TARGET)
- Update from version 3.8.0 to 3.8.2 - Update of rootfile - Changelog 3.8.2 (released 2023-11-14) ** libgnutls: Fix timing side-channel inside RSA-PSK key exchange. [GNUTLS-SA-2023-10-23, CVSS: medium] [CVE-2023-5981] ** libgnutls: Add API functions to perform ECDH and DH key agreement The functionality has been there for a long time though they were not available as part of the public API. This enables applications to implement custom protocols leveraging non-interactive key agreement with ECDH and DH. ** libgnutls: Added support for AES-GCM-SIV ciphers (RFC 8452) The new algorithms GNUTLS_CIPHER_AES_128_SIV_GCM and GNUTLS_CIPHER_AES_256_SIV_GCM have been added to be used through the AEAD interface. Note that, unlike GNUTLS_CIPHER_AES_{128,256}_SIV_GCM, the authentication tag is appended to the ciphertext, not prepended. ** libgnutls: transparent KTLS support is extended to FreeBSD kernel The kernel TLS feature can now be enabled on FreeBSD as well as Linux when compiled with the --enable-ktls configure option. ** gnutls-cli: New option --starttls-name Depending on deployment, application protocols such as XMPP may require a different origin address than the external address to be presented prior to STARTTLS negotiation. The --starttls-name can be used to specify specify the addresses separately. ** API and ABI modifications: gnutls_pubkey_import_dh_raw: New function gnutls_privkey_import_dh_raw: New function gnutls_pubkey_export_dh_raw: New function gnutls_privkey_export_dh_raw: New function gnutls_x509_privkey_import_dh_raw: New function gnutls_privkey_derive_secret: New function GNUTLS_KEYGEN_DH: New enum member of gnutls_keygen_types_t GNUTLS_CIPHER_AES_128_SIV_GCM: Added GNUTLS_CIPHER_AES_256_SIV_GCM: Added 3.8.1 (released 2023-08-03) ** libgnutls: ClientHello extensions are randomized by default To make fingerprinting harder, TLS extensions in ClientHello messages are shuffled. As this behavior may cause compatibility issue with legacy applications that do not accept the last extension without payload, the behavior can be reverted with the %NO_SHUFFLE_EXTENSIONS priority keyword. ** libgnutls: Add support for RFC 9258 external PSK importer. This enables to deploy the same PSK across multiple TLS versions (TLS 1.2 and TLS 1.3) in a secure manner. To use, the application needs to set up a callback that formats the PSK identity using gnutls_psk_format_imported_identity(). ** libgnutls: %GNUTLS_NO_EXTENSIONS has been renamed to %GNUTLS_NO_DEFAULT_EXTENSIONS. ** libgnutls: Add additional PBKDF limit checks in FIPS mode as defined in SP 800-132. Minimum salt length is 128 bits and minimum iterations bound is 1000 for PBKDF in FIPS mode. ** libgnutls: Add a mechanism to control whether to enforce extended master secret (RFC 7627). FIPS 140-3 mandates the use of TLS session hash (extended master secret, EMS) in TLS 1.2. To enforce this, a new priority keyword %FORCE_SESSION_HASH is added and if it is set and EMS is not set, the peer aborts the connection. This behavior is the default in FIPS mode, though it can be overridden through the configuration file with the "tls-session-hash" option. In either case non-EMS PRF is reported as a non-approved operation through the FIPS service indicator. ** New option --attime to specify current time. To make testing with different timestamp to the system easier, the tools doing certificate verification now provide a new option --attime, which takes an arbitrary time. ** API and ABI modifications: gnutls_psk_client_credentials_function3: New typedef gnutls_psk_server_credentials_function3: New typedef gnutls_psk_set_server_credentials_function3: New function gnutls_psk_set_client_credentials_function3: New function gnutls_psk_format_imported_identity: New function GNUTLS_PSK_KEY_EXT: New enum member of gnutls_psk_key_flags
Signed-off-by: Adolf Belka adolf.belka@ipfire.org --- config/rootfiles/common/gnutls | 11 ++++++++++- lfs/gnutls | 4 ++-- 2 files changed, 12 insertions(+), 3 deletions(-)
diff --git a/config/rootfiles/common/gnutls b/config/rootfiles/common/gnutls index 508596906..cc6c90194 100644 --- a/config/rootfiles/common/gnutls +++ b/config/rootfiles/common/gnutls @@ -32,7 +32,7 @@ usr/lib/libgnutls-dane.so.0.4.1 #usr/lib/libgnutls.la #usr/lib/libgnutls.so usr/lib/libgnutls.so.30 -usr/lib/libgnutls.so.30.35.0 +usr/lib/libgnutls.so.30.37.0 #usr/lib/libgnutlsxx.la #usr/lib/libgnutlsxx.so usr/lib/libgnutlsxx.so.30 @@ -629,6 +629,8 @@ usr/lib/libgnutlsxx.so.30.0.0 #usr/share/man/man3/gnutls_privkey_decrypt_data.3 #usr/share/man/man3/gnutls_privkey_decrypt_data2.3 #usr/share/man/man3/gnutls_privkey_deinit.3 +#usr/share/man/man3/gnutls_privkey_derive_secret.3 +#usr/share/man/man3/gnutls_privkey_export_dh_raw.3 #usr/share/man/man3/gnutls_privkey_export_dsa_raw.3 #usr/share/man/man3/gnutls_privkey_export_dsa_raw2.3 #usr/share/man/man3/gnutls_privkey_export_ecc_raw.3 @@ -645,6 +647,7 @@ usr/lib/libgnutlsxx.so.30.0.0 #usr/share/man/man3/gnutls_privkey_get_seed.3 #usr/share/man/man3/gnutls_privkey_get_spki.3 #usr/share/man/man3/gnutls_privkey_get_type.3 +#usr/share/man/man3/gnutls_privkey_import_dh_raw.3 #usr/share/man/man3/gnutls_privkey_import_dsa_raw.3 #usr/share/man/man3/gnutls_privkey_import_ecc_raw.3 #usr/share/man/man3/gnutls_privkey_import_ext.3 @@ -681,6 +684,7 @@ usr/lib/libgnutlsxx.so.30.0.0 #usr/share/man/man3/gnutls_psk_allocate_client_credentials.3 #usr/share/man/man3/gnutls_psk_allocate_server_credentials.3 #usr/share/man/man3/gnutls_psk_client_get_hint.3 +#usr/share/man/man3/gnutls_psk_format_imported_identity.3 #usr/share/man/man3/gnutls_psk_free_client_credentials.3 #usr/share/man/man3/gnutls_psk_free_server_credentials.3 #usr/share/man/man3/gnutls_psk_server_get_username.3 @@ -689,10 +693,12 @@ usr/lib/libgnutlsxx.so.30.0.0 #usr/share/man/man3/gnutls_psk_set_client_credentials2.3 #usr/share/man/man3/gnutls_psk_set_client_credentials_function.3 #usr/share/man/man3/gnutls_psk_set_client_credentials_function2.3 +#usr/share/man/man3/gnutls_psk_set_client_credentials_function3.3 #usr/share/man/man3/gnutls_psk_set_params_function.3 #usr/share/man/man3/gnutls_psk_set_server_credentials_file.3 #usr/share/man/man3/gnutls_psk_set_server_credentials_function.3 #usr/share/man/man3/gnutls_psk_set_server_credentials_function2.3 +#usr/share/man/man3/gnutls_psk_set_server_credentials_function3.3 #usr/share/man/man3/gnutls_psk_set_server_credentials_hint.3 #usr/share/man/man3/gnutls_psk_set_server_dh_params.3 #usr/share/man/man3/gnutls_psk_set_server_known_dh_params.3 @@ -701,6 +707,7 @@ usr/lib/libgnutlsxx.so.30.0.0 #usr/share/man/man3/gnutls_pubkey_encrypt_data.3 #usr/share/man/man3/gnutls_pubkey_export.3 #usr/share/man/man3/gnutls_pubkey_export2.3 +#usr/share/man/man3/gnutls_pubkey_export_dh_raw.3 #usr/share/man/man3/gnutls_pubkey_export_dsa_raw.3 #usr/share/man/man3/gnutls_pubkey_export_dsa_raw2.3 #usr/share/man/man3/gnutls_pubkey_export_ecc_raw.3 @@ -716,6 +723,7 @@ usr/lib/libgnutlsxx.so.30.0.0 #usr/share/man/man3/gnutls_pubkey_get_preferred_hash_algorithm.3 #usr/share/man/man3/gnutls_pubkey_get_spki.3 #usr/share/man/man3/gnutls_pubkey_import.3 +#usr/share/man/man3/gnutls_pubkey_import_dh_raw.3 #usr/share/man/man3/gnutls_pubkey_import_dsa_raw.3 #usr/share/man/man3/gnutls_pubkey_import_ecc_raw.3 #usr/share/man/man3/gnutls_pubkey_import_ecc_x962.3 @@ -1227,6 +1235,7 @@ usr/lib/libgnutlsxx.so.30.0.0 #usr/share/man/man3/gnutls_x509_privkey_get_spki.3 #usr/share/man/man3/gnutls_x509_privkey_import.3 #usr/share/man/man3/gnutls_x509_privkey_import2.3 +#usr/share/man/man3/gnutls_x509_privkey_import_dh_raw.3 #usr/share/man/man3/gnutls_x509_privkey_import_dsa_raw.3 #usr/share/man/man3/gnutls_x509_privkey_import_ecc_raw.3 #usr/share/man/man3/gnutls_x509_privkey_import_gost_raw.3 diff --git a/lfs/gnutls b/lfs/gnutls index 7336528f6..19f79c6db 100644 --- a/lfs/gnutls +++ b/lfs/gnutls @@ -24,7 +24,7 @@
include Config
-VER = 3.8.0 +VER = 3.8.2
THISAPP = gnutls-$(VER) DL_FILE = $(THISAPP).tar.xz @@ -40,7 +40,7 @@ objects = $(DL_FILE)
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_BLAKE2 = 64784e9c0ac4dcab2c9e90d7d17d0bd8a0021224be285c12a53673f3a52aa3f189152b1b0b4aaae5a8fb41951361af1fd04a5b535774c4a26c26eb895519af40 +$(DL_FILE)_BLAKE2 = d70524f17919bc02fefc610ede948d209e50e3276fc1e2d40aaed5c208265455da220d948f4a3f21db57f9d253c103f3a1b9a6daa2229d02c7c224448acc2777
install : $(TARGET)
Completely missed this. :-( Thank you as always!
Reviewed-by: Peter Müller peter.mueller@ipfire.org
- Update from version 3.8.0 to 3.8.2
- Update of rootfile
- Changelog 3.8.2 (released 2023-11-14) ** libgnutls: Fix timing side-channel inside RSA-PSK key exchange. [GNUTLS-SA-2023-10-23, CVSS: medium] [CVE-2023-5981] ** libgnutls: Add API functions to perform ECDH and DH key agreement The functionality has been there for a long time though they were not available as part of the public API. This enables applications to implement custom protocols leveraging non-interactive key agreement with ECDH and DH. ** libgnutls: Added support for AES-GCM-SIV ciphers (RFC 8452) The new algorithms GNUTLS_CIPHER_AES_128_SIV_GCM and GNUTLS_CIPHER_AES_256_SIV_GCM have been added to be used through the AEAD interface. Note that, unlike GNUTLS_CIPHER_AES_{128,256}_SIV_GCM, the authentication tag is appended to the ciphertext, not prepended. ** libgnutls: transparent KTLS support is extended to FreeBSD kernel The kernel TLS feature can now be enabled on FreeBSD as well as Linux when compiled with the --enable-ktls configure option. ** gnutls-cli: New option --starttls-name Depending on deployment, application protocols such as XMPP may require a different origin address than the external address to be presented prior to STARTTLS negotiation. The --starttls-name can be used to specify specify the addresses separately. ** API and ABI modifications: gnutls_pubkey_import_dh_raw: New function gnutls_privkey_import_dh_raw: New function gnutls_pubkey_export_dh_raw: New function gnutls_privkey_export_dh_raw: New function gnutls_x509_privkey_import_dh_raw: New function gnutls_privkey_derive_secret: New function GNUTLS_KEYGEN_DH: New enum member of gnutls_keygen_types_t GNUTLS_CIPHER_AES_128_SIV_GCM: Added GNUTLS_CIPHER_AES_256_SIV_GCM: Added 3.8.1 (released 2023-08-03) ** libgnutls: ClientHello extensions are randomized by default To make fingerprinting harder, TLS extensions in ClientHello messages are shuffled. As this behavior may cause compatibility issue with legacy applications that do not accept the last extension without payload, the behavior can be reverted with the %NO_SHUFFLE_EXTENSIONS priority keyword. ** libgnutls: Add support for RFC 9258 external PSK importer. This enables to deploy the same PSK across multiple TLS versions (TLS 1.2 and TLS 1.3) in a secure manner. To use, the application needs to set up a callback that formats the PSK identity using gnutls_psk_format_imported_identity(). ** libgnutls: %GNUTLS_NO_EXTENSIONS has been renamed to %GNUTLS_NO_DEFAULT_EXTENSIONS. ** libgnutls: Add additional PBKDF limit checks in FIPS mode as defined in SP 800-132. Minimum salt length is 128 bits and minimum iterations bound is 1000 for PBKDF in FIPS mode. ** libgnutls: Add a mechanism to control whether to enforce extended master secret (RFC 7627). FIPS 140-3 mandates the use of TLS session hash (extended master secret, EMS) in TLS 1.2. To enforce this, a new priority keyword %FORCE_SESSION_HASH is added and if it is set and EMS is not set, the peer aborts the connection. This behavior is the default in FIPS mode, though it can be overridden through the configuration file with the "tls-session-hash" option. In either case non-EMS PRF is reported as a non-approved operation through the FIPS service indicator. ** New option --attime to specify current time. To make testing with different timestamp to the system easier, the tools doing certificate verification now provide a new option --attime, which takes an arbitrary time. ** API and ABI modifications: gnutls_psk_client_credentials_function3: New typedef gnutls_psk_server_credentials_function3: New typedef gnutls_psk_set_server_credentials_function3: New function gnutls_psk_set_client_credentials_function3: New function gnutls_psk_format_imported_identity: New function GNUTLS_PSK_KEY_EXT: New enum member of gnutls_psk_key_flags
Signed-off-by: Adolf Belka adolf.belka@ipfire.org
config/rootfiles/common/gnutls | 11 ++++++++++- lfs/gnutls | 4 ++-- 2 files changed, 12 insertions(+), 3 deletions(-)
diff --git a/config/rootfiles/common/gnutls b/config/rootfiles/common/gnutls index 508596906..cc6c90194 100644 --- a/config/rootfiles/common/gnutls +++ b/config/rootfiles/common/gnutls @@ -32,7 +32,7 @@ usr/lib/libgnutls-dane.so.0.4.1 #usr/lib/libgnutls.la #usr/lib/libgnutls.so usr/lib/libgnutls.so.30 -usr/lib/libgnutls.so.30.35.0 +usr/lib/libgnutls.so.30.37.0 #usr/lib/libgnutlsxx.la #usr/lib/libgnutlsxx.so usr/lib/libgnutlsxx.so.30 @@ -629,6 +629,8 @@ usr/lib/libgnutlsxx.so.30.0.0 #usr/share/man/man3/gnutls_privkey_decrypt_data.3 #usr/share/man/man3/gnutls_privkey_decrypt_data2.3 #usr/share/man/man3/gnutls_privkey_deinit.3 +#usr/share/man/man3/gnutls_privkey_derive_secret.3 +#usr/share/man/man3/gnutls_privkey_export_dh_raw.3 #usr/share/man/man3/gnutls_privkey_export_dsa_raw.3 #usr/share/man/man3/gnutls_privkey_export_dsa_raw2.3 #usr/share/man/man3/gnutls_privkey_export_ecc_raw.3 @@ -645,6 +647,7 @@ usr/lib/libgnutlsxx.so.30.0.0 #usr/share/man/man3/gnutls_privkey_get_seed.3 #usr/share/man/man3/gnutls_privkey_get_spki.3 #usr/share/man/man3/gnutls_privkey_get_type.3 +#usr/share/man/man3/gnutls_privkey_import_dh_raw.3 #usr/share/man/man3/gnutls_privkey_import_dsa_raw.3 #usr/share/man/man3/gnutls_privkey_import_ecc_raw.3 #usr/share/man/man3/gnutls_privkey_import_ext.3 @@ -681,6 +684,7 @@ usr/lib/libgnutlsxx.so.30.0.0 #usr/share/man/man3/gnutls_psk_allocate_client_credentials.3 #usr/share/man/man3/gnutls_psk_allocate_server_credentials.3 #usr/share/man/man3/gnutls_psk_client_get_hint.3 +#usr/share/man/man3/gnutls_psk_format_imported_identity.3 #usr/share/man/man3/gnutls_psk_free_client_credentials.3 #usr/share/man/man3/gnutls_psk_free_server_credentials.3 #usr/share/man/man3/gnutls_psk_server_get_username.3 @@ -689,10 +693,12 @@ usr/lib/libgnutlsxx.so.30.0.0 #usr/share/man/man3/gnutls_psk_set_client_credentials2.3 #usr/share/man/man3/gnutls_psk_set_client_credentials_function.3 #usr/share/man/man3/gnutls_psk_set_client_credentials_function2.3 +#usr/share/man/man3/gnutls_psk_set_client_credentials_function3.3 #usr/share/man/man3/gnutls_psk_set_params_function.3 #usr/share/man/man3/gnutls_psk_set_server_credentials_file.3 #usr/share/man/man3/gnutls_psk_set_server_credentials_function.3 #usr/share/man/man3/gnutls_psk_set_server_credentials_function2.3 +#usr/share/man/man3/gnutls_psk_set_server_credentials_function3.3 #usr/share/man/man3/gnutls_psk_set_server_credentials_hint.3 #usr/share/man/man3/gnutls_psk_set_server_dh_params.3 #usr/share/man/man3/gnutls_psk_set_server_known_dh_params.3 @@ -701,6 +707,7 @@ usr/lib/libgnutlsxx.so.30.0.0 #usr/share/man/man3/gnutls_pubkey_encrypt_data.3 #usr/share/man/man3/gnutls_pubkey_export.3 #usr/share/man/man3/gnutls_pubkey_export2.3 +#usr/share/man/man3/gnutls_pubkey_export_dh_raw.3 #usr/share/man/man3/gnutls_pubkey_export_dsa_raw.3 #usr/share/man/man3/gnutls_pubkey_export_dsa_raw2.3 #usr/share/man/man3/gnutls_pubkey_export_ecc_raw.3 @@ -716,6 +723,7 @@ usr/lib/libgnutlsxx.so.30.0.0 #usr/share/man/man3/gnutls_pubkey_get_preferred_hash_algorithm.3 #usr/share/man/man3/gnutls_pubkey_get_spki.3 #usr/share/man/man3/gnutls_pubkey_import.3 +#usr/share/man/man3/gnutls_pubkey_import_dh_raw.3 #usr/share/man/man3/gnutls_pubkey_import_dsa_raw.3 #usr/share/man/man3/gnutls_pubkey_import_ecc_raw.3 #usr/share/man/man3/gnutls_pubkey_import_ecc_x962.3 @@ -1227,6 +1235,7 @@ usr/lib/libgnutlsxx.so.30.0.0 #usr/share/man/man3/gnutls_x509_privkey_get_spki.3 #usr/share/man/man3/gnutls_x509_privkey_import.3 #usr/share/man/man3/gnutls_x509_privkey_import2.3 +#usr/share/man/man3/gnutls_x509_privkey_import_dh_raw.3 #usr/share/man/man3/gnutls_x509_privkey_import_dsa_raw.3 #usr/share/man/man3/gnutls_x509_privkey_import_ecc_raw.3 #usr/share/man/man3/gnutls_x509_privkey_import_gost_raw.3 diff --git a/lfs/gnutls b/lfs/gnutls index 7336528f6..19f79c6db 100644 --- a/lfs/gnutls +++ b/lfs/gnutls @@ -24,7 +24,7 @@
include Config
-VER = 3.8.0 +VER = 3.8.2
THISAPP = gnutls-$(VER) DL_FILE = $(THISAPP).tar.xz @@ -40,7 +40,7 @@ objects = $(DL_FILE)
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_BLAKE2 = 64784e9c0ac4dcab2c9e90d7d17d0bd8a0021224be285c12a53673f3a52aa3f189152b1b0b4aaae5a8fb41951361af1fd04a5b535774c4a26c26eb895519af40 +$(DL_FILE)_BLAKE2 = d70524f17919bc02fefc610ede948d209e50e3276fc1e2d40aaed5c208265455da220d948f4a3f21db57f9d253c103f3a1b9a6daa2229d02c7c224448acc2777
install : $(TARGET)
- Update from version 1.8.9 to 1.8.10 - Update of rootfile not required - Changelog 1.8.10 build: use pkg-config for libpcap iptables-test.py: make explicit use of python3 xtables-eb: fix crash when opts isn't reallocated iptables-nft: make builtin tables static iptables-nft: remove unused function argument include: update nf_tables uapi header ebtables-nft: add broute table emulation nft-ruleparse: parse meta mark set as MARK target iptables: Fix setting of ipv6 counters iptables: Fix handling of non-existent chains xshared: dissolve should_load_proto nft: move processing logic out of asserts man: string: document BM false negatives ip6tables: Fix checking existence of rule nft: check for source and destination address in first place nft: use payload matching for layer 4 protocol nft-bridge: pass context structure to ops->add() to improve anonymous set support configure: Bump version for 1.8.10 release extensions: NAT: Fix for -Werror=format-security etc: Drop xtables.conf Proper fix for "unknown argument" error message ebtables: Refuse unselected targets' options ebtables-translate: Drop exec_style ebtables-translate: Use OPT_* from xshared.h ebtables-translate: Ignore '-j CONTINUE' ebtables-translate: Print flush command after parsing is finished tests: xlate: Support testing multiple individual files tests: CLUSTERIP: Drop test file nft-shared: Lookup matches in iptables_command_state nft-shared: Use nft_create_match() in one more spot nft-shared: Simplify using nft_create_match() tests: xlate: Properly split input in replay mode tests: xlate: Print file names even if specified extensions: libebt_redirect: Fix target translation extensions: libebt_redirect: Fix for wrong syntax in translation extensions: libebt_ip: Do not use 'ip dscp' for translation extensions: libebt_ip: Translation has to match on ether type ebtables: ip and ip6 matches depend on protocol match xtables-translate: Support insert with index include: Add missing linux/netfilter/xt_LOG.h nft-restore: Fix for deletion of new, referenced rule tests: shell: Test for false-positive rule check utils: nfbpf_compile: Replace pcap_compile_nopcap() nft-shared: Drop unused include arptables: Fix parsing of inverted 'arp operation' match arptables: Don't omit standard matches if inverted xshared: Fix parsing of option arguments in same word nft: Introduce nft-ruleparse.{c,h} nft: Extract rule parsing callbacks from nft_family_ops nft: ruleparse: Create family-specific source files tests: shell: Sanitize nft-only/0009-needless-bitwise_0 nft: Special casing for among match in compare_matches() nft: More verbose extension comparison debugging nft: Do not pass nft_rule_ctx to add_nft_among() nft: Include sets in debug output *tables-restore: Enforce correct counters syntax if present *tables: Reject invalid chain names when renaming ebtables: Improve invalid chain name detection tests: shell: Fix and extend chain rename test iptables-restore: Drop dead code iptables-apply: Eliminate shellcheck warnings extensions: libipt_icmp: Fix confusion between 255/255 and any tests: libipt_icmp.t: Enable tests with numeric output man: iptables.8: Extend exit code description man: iptables.8: Trivial spelling fixes man: iptables.8: Fix intra page reference man: iptables.8: Clarify --goto description man: Use HTTPS for links to netfilter.org man: iptables.8: Trivial font fixes man: iptables-restore.8: Fix --modprobe description man: iptables-restore.8: Consistently document -w option man: iptables-restore.8: Drop -W option from synopsis man: iptables-restore.8: Put 'file' in italics in synopsis man: iptables-restore.8: Start paragraphs in upper-case man: Trivial: Missing space after comma man: iptables-save.8: Clarify 'available tables' man: iptables-save.8: Fix --modprobe description man: iptables-save.8: Start paragraphs in upper-case extensions: libip6t_icmp: Add names for mld-listener types nft-ruleparse: Introduce nft_create_target() tests: iptables-test: Fix command segfault reports nft: Create builtin chains with counters enabled Revert "libiptc: fix wrong maptype of base chain counters on restore" tests: shell: Test chain policy counter behaviour Use SOCK_CLOEXEC/O_CLOEXEC where available nft: Pass nft_handle to add_{target,action}() nft: Introduce and use bool nft_handle::compat Add --compat option to *tables-nft and *-nft-restore commands tests: Test compat mode Revert --compat option related commits tests: shell: Fix for ineffective 0007-mid-restore-flush_0 nft: Fix for useless meta expressions in rule include: linux: Update kernel.h build: Bump dependency on libnftnl extensions: Fix checking of conntrack --ctproto 0 doc: fix example of xt_cpu xt_sctp: add the missing chunk types in sctp_help
Signed-off-by: Adolf Belka adolf.belka@ipfire.org --- lfs/iptables | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/lfs/iptables b/lfs/iptables index 30c6e1d94..572d9f212 100644 --- a/lfs/iptables +++ b/lfs/iptables @@ -1,7 +1,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2007-2019 IPFire Team info@ipfire.org # +# Copyright (C) 2007-2023 IPFire Team info@ipfire.org # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -24,7 +24,7 @@
include Config
-VER = 1.8.9 +VER = 1.8.10
THISAPP = iptables-$(VER) DL_FILE = $(THISAPP).tar.xz @@ -41,7 +41,7 @@ objects = $(DL_FILE) \ $(DL_FILE) = $(DL_FROM)/$(DL_FILE) netfilter-layer7-v2.23.tar.gz = $(URL_IPFIRE)/netfilter-layer7-v2.23.tar.gz
-$(DL_FILE)_BLAKE2 = 37ba80be0ee7049c4d3ee5689b273b4d2cc6e6fb9ebb297e86976b5750f987f2ae4536013fe1749ae79b6989c241eaece3202019fafd47d842c7a4fe3e5093b1 +$(DL_FILE)_BLAKE2 = 417b33fcfc7edeba169caef26ed0322798f6b82500840509f6c10b97b4ef3f11932c0393fc8dcc5946264442bf8ee959a594b6fbd5dc92012cfad30edf130520 netfilter-layer7-v2.23.tar.gz_BLAKE2 = 5c8ab722f6fbc126f2f65ecf401de5fc40560c20e3be52f783db34410446185dcb6781b3148e4a174e8b2d2c290bec0342dea95e8cefc35c39345617fa7a8fdc
install : $(TARGET)
Reviewed-by: Peter Müller peter.mueller@ipfire.org
- Update from version 1.8.9 to 1.8.10
- Update of rootfile not required
- Changelog 1.8.10 build: use pkg-config for libpcap iptables-test.py: make explicit use of python3 xtables-eb: fix crash when opts isn't reallocated iptables-nft: make builtin tables static iptables-nft: remove unused function argument include: update nf_tables uapi header ebtables-nft: add broute table emulation nft-ruleparse: parse meta mark set as MARK target iptables: Fix setting of ipv6 counters iptables: Fix handling of non-existent chains xshared: dissolve should_load_proto nft: move processing logic out of asserts man: string: document BM false negatives ip6tables: Fix checking existence of rule nft: check for source and destination address in first place nft: use payload matching for layer 4 protocol nft-bridge: pass context structure to ops->add() to improve anonymous set support configure: Bump version for 1.8.10 release extensions: NAT: Fix for -Werror=format-security etc: Drop xtables.conf Proper fix for "unknown argument" error message ebtables: Refuse unselected targets' options ebtables-translate: Drop exec_style ebtables-translate: Use OPT_* from xshared.h ebtables-translate: Ignore '-j CONTINUE' ebtables-translate: Print flush command after parsing is finished tests: xlate: Support testing multiple individual files tests: CLUSTERIP: Drop test file nft-shared: Lookup matches in iptables_command_state nft-shared: Use nft_create_match() in one more spot nft-shared: Simplify using nft_create_match() tests: xlate: Properly split input in replay mode tests: xlate: Print file names even if specified extensions: libebt_redirect: Fix target translation extensions: libebt_redirect: Fix for wrong syntax in translation extensions: libebt_ip: Do not use 'ip dscp' for translation extensions: libebt_ip: Translation has to match on ether type ebtables: ip and ip6 matches depend on protocol match xtables-translate: Support insert with index include: Add missing linux/netfilter/xt_LOG.h nft-restore: Fix for deletion of new, referenced rule tests: shell: Test for false-positive rule check utils: nfbpf_compile: Replace pcap_compile_nopcap() nft-shared: Drop unused include arptables: Fix parsing of inverted 'arp operation' match arptables: Don't omit standard matches if inverted xshared: Fix parsing of option arguments in same word nft: Introduce nft-ruleparse.{c,h} nft: Extract rule parsing callbacks from nft_family_ops nft: ruleparse: Create family-specific source files tests: shell: Sanitize nft-only/0009-needless-bitwise_0 nft: Special casing for among match in compare_matches() nft: More verbose extension comparison debugging nft: Do not pass nft_rule_ctx to add_nft_among() nft: Include sets in debug output *tables-restore: Enforce correct counters syntax if present *tables: Reject invalid chain names when renaming ebtables: Improve invalid chain name detection tests: shell: Fix and extend chain rename test iptables-restore: Drop dead code iptables-apply: Eliminate shellcheck warnings extensions: libipt_icmp: Fix confusion between 255/255 and any tests: libipt_icmp.t: Enable tests with numeric output man: iptables.8: Extend exit code description man: iptables.8: Trivial spelling fixes man: iptables.8: Fix intra page reference man: iptables.8: Clarify --goto description man: Use HTTPS for links to netfilter.org man: iptables.8: Trivial font fixes man: iptables-restore.8: Fix --modprobe description man: iptables-restore.8: Consistently document -w option man: iptables-restore.8: Drop -W option from synopsis man: iptables-restore.8: Put 'file' in italics in synopsis man: iptables-restore.8: Start paragraphs in upper-case man: Trivial: Missing space after comma man: iptables-save.8: Clarify 'available tables' man: iptables-save.8: Fix --modprobe description man: iptables-save.8: Start paragraphs in upper-case extensions: libip6t_icmp: Add names for mld-listener types nft-ruleparse: Introduce nft_create_target() tests: iptables-test: Fix command segfault reports nft: Create builtin chains with counters enabled Revert "libiptc: fix wrong maptype of base chain counters on restore" tests: shell: Test chain policy counter behaviour Use SOCK_CLOEXEC/O_CLOEXEC where available nft: Pass nft_handle to add_{target,action}() nft: Introduce and use bool nft_handle::compat Add --compat option to *tables-nft and *-nft-restore commands tests: Test compat mode Revert --compat option related commits tests: shell: Fix for ineffective 0007-mid-restore-flush_0 nft: Fix for useless meta expressions in rule include: linux: Update kernel.h build: Bump dependency on libnftnl extensions: Fix checking of conntrack --ctproto 0 doc: fix example of xt_cpu xt_sctp: add the missing chunk types in sctp_help
Signed-off-by: Adolf Belka adolf.belka@ipfire.org
lfs/iptables | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/lfs/iptables b/lfs/iptables index 30c6e1d94..572d9f212 100644 --- a/lfs/iptables +++ b/lfs/iptables @@ -1,7 +1,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2007-2019 IPFire Team info@ipfire.org # +# Copyright (C) 2007-2023 IPFire Team info@ipfire.org # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -24,7 +24,7 @@
include Config
-VER = 1.8.9 +VER = 1.8.10
THISAPP = iptables-$(VER) DL_FILE = $(THISAPP).tar.xz @@ -41,7 +41,7 @@ objects = $(DL_FILE) \ $(DL_FILE) = $(DL_FROM)/$(DL_FILE) netfilter-layer7-v2.23.tar.gz = $(URL_IPFIRE)/netfilter-layer7-v2.23.tar.gz
-$(DL_FILE)_BLAKE2 = 37ba80be0ee7049c4d3ee5689b273b4d2cc6e6fb9ebb297e86976b5750f987f2ae4536013fe1749ae79b6989c241eaece3202019fafd47d842c7a4fe3e5093b1 +$(DL_FILE)_BLAKE2 = 417b33fcfc7edeba169caef26ed0322798f6b82500840509f6c10b97b4ef3f11932c0393fc8dcc5946264442bf8ee959a594b6fbd5dc92012cfad30edf130520 netfilter-layer7-v2.23.tar.gz_BLAKE2 = 5c8ab722f6fbc126f2f65ecf401de5fc40560c20e3be52f783db34410446185dcb6781b3148e4a174e8b2d2c290bec0342dea95e8cefc35c39345617fa7a8fdc
install : $(TARGET)
- Update from version 2.14 to 2.16 - Update of rootfile - Changelog 2.16 Featured release New import .CUBE files as RGB devicelinks New Read/Write MHC2 tags for Windows GPU access New Support for UTF8 on multilocalized unicode functions New Suppot for OkLab color space, built-in and formatter. Improved floating point transforms float -> integer are now honored as float Improved MSYS2, mingw is now supported Improved proferred CMM, platform and creator now survives profile edition. Fixed tificc now can deal with Lab TIFF Fixed code can now be compiled by a C++17 compiler, "register" keywork use detected at compile time. Fixed Reverted postcript creation that corrupted some interpreters. 2.15 Maintenance release New MESON build system, many thanks to amispark and Lovell Fuller for bringing this. Fixed a bug that caused memory corruption on colord cmsReadRawTag can read portions of tags again. Removing this caused colord to segfault when dumping profiles Added more checks based of fuzzer discoveries. MSYS2 can now compile lcms2 Checked on Apple Silicon M1 and M2 Fixed a bug of fastfloat plug-in that affected Krita CMYK color selector
Signed-off-by: Adolf Belka adolf.belka@ipfire.org --- config/rootfiles/common/lcms2 | 2 +- lfs/lcms2 | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/config/rootfiles/common/lcms2 b/config/rootfiles/common/lcms2 index 696e95cd7..30325807b 100644 --- a/config/rootfiles/common/lcms2 +++ b/config/rootfiles/common/lcms2 @@ -8,7 +8,7 @@ #usr/lib/liblcms2.la #usr/lib/liblcms2.so usr/lib/liblcms2.so.2 -usr/lib/liblcms2.so.2.0.14 +usr/lib/liblcms2.so.2.0.16 #usr/lib/pkgconfig/lcms2.pc #usr/share/man/man1/jpgicc.1 #usr/share/man/man1/linkicc.1 diff --git a/lfs/lcms2 b/lfs/lcms2 index c769f1b08..7a7c11165 100644 --- a/lfs/lcms2 +++ b/lfs/lcms2 @@ -24,7 +24,7 @@
include Config
-VER = 2.14 +VER = 2.16
THISAPP = lcms2-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -40,7 +40,7 @@ objects = $(DL_FILE)
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_BLAKE2 = 777b0bf65829121a3d32bca1ab936ac022f9af739bccdd02d5f86688c3386b974f526a012bdec4d36649566eea0aa659db317dd383eede6488236d601156a0f9 +$(DL_FILE)_BLAKE2 = cf4d10908e6b8e6cf15ec8a99f0a299a9bcb7082f0df5ab1c9d84fcb739132855edf717c2ab746040fc09bace7afaaa8a39538e7ceabd0e68cdb3b4fb5627c6d
install : $(TARGET)
- Update from version 3.8.0 to 3.9.0 - Update of rootfile not required - Changelog is not produced. Changes can be seen from the commits in the github repo https://github.com/thom311/libnl/commits/main
Signed-off-by: Adolf Belka adolf.belka@ipfire.org --- lfs/libnl-3 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/lfs/libnl-3 b/lfs/libnl-3 index a26e13ec4..9def2e38e 100644 --- a/lfs/libnl-3 +++ b/lfs/libnl-3 @@ -24,7 +24,7 @@
include Config
-VER = 3.8.0 +VER = 3.9.0
THISAPP = libnl-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -40,7 +40,7 @@ objects = $(DL_FILE)
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_BLAKE2 = ff90d52e9b617ad8a53e4d42f43bee065b331ed919a3effc4a0f38c8e15b46f86c1eb153816499ed77dd99063500b1dc52951891034475a5bb81da1ad8004594 +$(DL_FILE)_BLAKE2 = 56a39aad9aa15992ff02fe35732abbc5ed5d107b814587e02b914631489877899989d49c7aeee1ecb461ad5f525c7cd7c045c9770864d83b0a58490293441193
install : $(TARGET)
- Update from version 0.9.30 to 0.9.31 - Update of rootfile not required - Changelog 0.9.31 Release (2023/07/10) ITS#8447 - Fix cursor_put(MDB_CURRENT) on DUPSORT DB with different sized data
Signed-off-by: Adolf Belka adolf.belka@ipfire.org --- lfs/lmdb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/lfs/lmdb b/lfs/lmdb index 81a295b4a..87f19833b 100644 --- a/lfs/lmdb +++ b/lfs/lmdb @@ -24,7 +24,7 @@
include Config
-VER = 0.9.30 +VER = 0.9.31
THISAPP = openldap-LMDB_$(VER) DL_FILE = $(THISAPP).tar.bz2 @@ -40,7 +40,7 @@ objects = $(DL_FILE)
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_BLAKE2 = 849d40187dc3aaddcd118cf6db28a9807854d4b5b34a365f6e076ccccd556470f117933e3d29cf2678368db2f0c9d264e033a27de310f036e1a65f04ed643fa9 +$(DL_FILE)_BLAKE2 = c1f8ebc7fdaa0b337e093cc6e20cdb824b2154eb09b070e93a802e2115c8b865a4960558ffcf1681714fe049b264b2fcdf23b592a4f91e9735634309d98012c2
install : $(TARGET)
- Update from version 4.98.0 to 4.99.3 - Update of rootfile not required - Changelog 4.99.3 Fix a spaces vs. tabs issue in 00DIST. 4.99.2 Fix version file for CI 4.99.1 Fix compilation error when HASIPv6 is not defined. (@chenrui333) Add configure option --disable-liblsof to disable installation of liblsof. (@subnut, #300) [freebsd] fix segfault from fs info (FreeBSD bug 267760) 4.99.0 [netbsd] Get device numer of tmpfs instead of reporting zero [openbsd] Rewrite OpenBSD support because OpenBSD disallows kernel memory access and lsof has to switch to user mode API. Currently, most features are working, but file path reporting and lock status are not working for lack of kernel support. As a consequence, OpenBSD dialect is separated in a new folder. [darwin] Remove /dev/kmem backend because it no longer exists on current macOS releases. Use libproc backend instead. [linux] Do not hard-code fd numbers in epoll test, fixing tests on Void Linux [freebsd] Use kf_file_nlink if provided by kernel instead of stat(). This commit requires kernel with https://reviews.freebsd.org/D38169. It brings back the ability to list deleted files via `lsof +L1`. Closes #264. [linux] Add --with-selinux configure option. [solaris] Re-introduce support for recent Solaris & OpenIndiana releases. [darwin] Display kern ctl info, learned from apple lsof version. [linux] Improve performance by using closefrom(). Closes #281. [aix] Fix compilation on AIX 7.2 and add autotools build system support for AIX. [aix] Suppress warnings properly on AIX version greater than 5.0. Closes #187. Introduce alpha version of liblsof which allows users to use lsof functionality via C functions instead of spawning a subprocess and parsing the output. This version may contain BUGs and memory leaks, and the API may change before it stablizes.
Signed-off-by: Adolf Belka adolf.belka@ipfire.org --- lfs/lsof | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/lfs/lsof b/lfs/lsof index 2c654dd5b..5dbce5022 100644 --- a/lfs/lsof +++ b/lfs/lsof @@ -24,7 +24,7 @@
include Config
-VER = 4.98.0 +VER = 4.99.3
THISAPP = lsof-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -40,7 +40,7 @@ objects = $(DL_FILE)
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_BLAKE2 = 7ce5576653035bced042b07a946a09cb3c23da57a4f77a9f7bc8b8f86d531d73f0375a03fb0dc9e03f6ac18caa68bbb45144d6da13cee7ba94dfbb913fae9d03 +$(DL_FILE)_BLAKE2 = 71049bd2c3b6788260d9970e8c6828128999b5040fb23cee0e288ee7e353e5e0510b8b1e5a5275158f1ff37f18066a36766a80b56d24ff57be1f3243910482e7
install : $(TARGET)
- Update from version 2.6.3 to 2.6.4 - Update of rootfile not required - Changelog is no longer created. The commits in the git repo have to be reviewed for changes - http://git.linux-nfs.org/?p=steved/nfs-utils.git;a=shortlog;h=refs/heads/mas...
Signed-off-by: Adolf Belka adolf.belka@ipfire.org --- lfs/nfs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/lfs/nfs b/lfs/nfs index fb2283842..a77483fa9 100644 --- a/lfs/nfs +++ b/lfs/nfs @@ -8,7 +8,7 @@ # the Free Software Foundation, either version 3 of the License, or # # (at your option) any later version. # # # -# This program is distributed in the hope that it will be useful, # +# This program is distributeeaec88d872e2b4cf8cd588e8770af44b7f7636685a229c9a70c10e6fab1344651c5e9a73ab9f520e7c92c2de455998bf14bba070b463db1e17e9e7042851b38fd in the hope that it will be useful, # # but WITHOUT ANY WARRANTY; without even the implied warranty of # # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # # GNU General Public License for more details. # @@ -26,7 +26,7 @@ include Config
SUMMARY = Support Utilities for Kernel nfsd
-VER = 2.6.3 +VER = 2.6.4
THISAPP = nfs-utils-$(VER) DL_FILE = $(THISAPP).tar.xz @@ -34,7 +34,7 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) PROG = nfs -PAK_VER = 21 +PAK_VER = 22
DEPS = rpcbind
@@ -48,7 +48,7 @@ objects = $(DL_FILE)
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_BLAKE2 = 1aafa7d49006a62e862a592e30c4f9ba762d6c1973cacd7b89709706cc69617aae8d23000f78841f3a09bf81140222904976536114f3fb78f6230defb039ae9b +$(DL_FILE)_BLAKE2 = eaec88d872e2b4cf8cd588e8770af44b7f7636685a229c9a70c10e6fab1344651c5e9a73ab9f520e7c92c2de455998bf14bba070b463db1e17e9e7042851b38f
install : $(TARGET)
- Update from version 0.25.2 to 0.25.3 - Update of rootfile - Changelog 0.25.3 rpc: fix serialization of NULL mechanism pointer [PR#601] fix meson build failure in macOS (appleframeworks not found) [PR#603]
Signed-off-by: Adolf Belka adolf.belka@ipfire.org --- config/rootfiles/common/p11-kit | 4 +--- lfs/p11-kit | 4 ++-- 2 files changed, 3 insertions(+), 5 deletions(-)
diff --git a/config/rootfiles/common/p11-kit b/config/rootfiles/common/p11-kit index df9001e27..02e4d81cd 100644 --- a/config/rootfiles/common/p11-kit +++ b/config/rootfiles/common/p11-kit @@ -15,7 +15,7 @@ usr/bin/trust #usr/lib/libp11-kit.la #usr/lib/libp11-kit.so usr/lib/libp11-kit.so.0 -usr/lib/libp11-kit.so.0.3.0 +usr/lib/libp11-kit.so.0.3.1 usr/lib/p11-kit-proxy.so #usr/lib/pkcs11 #usr/lib/pkcs11/p11-kit-client.la @@ -27,8 +27,6 @@ usr/lib/pkcs11/p11-kit-trust.so #usr/libexec/p11-kit/p11-kit-remote #usr/libexec/p11-kit/p11-kit-server #usr/libexec/p11-kit/trust-extract-compat -#usr/share/gtk-doc -#usr/share/gtk-doc/html #usr/share/gtk-doc/html/p11-kit #usr/share/gtk-doc/html/p11-kit/config-example.html #usr/share/gtk-doc/html/p11-kit/config-files.html diff --git a/lfs/p11-kit b/lfs/p11-kit index eb715adb2..f5ee90cf3 100644 --- a/lfs/p11-kit +++ b/lfs/p11-kit @@ -24,7 +24,7 @@
include Config
-VER = 0.25.2 +VER = 0.25.3
THISAPP = p11-kit-$(VER) DL_FILE = $(THISAPP).tar.xz @@ -42,7 +42,7 @@ objects = $(DL_FILE)
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_BLAKE2 = d2cb738eaf1941a5e043dfdb0beaac01c6c7a25be516308b262e538d04a132682855da60b9dbf9b20f19510b25f469f88d27091d8a339a3fc01e6a96e36060e6 +$(DL_FILE)_BLAKE2 = 5c695c1ef95edf4bbbab001aa634076c433df0bc89cb8104deaec2ce00c6908640e467755b49c6900e5d7d5d81e1a3871f4978a212c6f6ae088386ac0b95289a
install : $(TARGET)
- Update from version 4.19.2 to 4.19.3 - Update of rootfile not required - I don't believe that the CVE from this version will affect IPFire users as Samba on IPFire is not run as an Active Directory Domain Controller. That functionality was removed some time ago. - Changelog 4.19.3 This is the latest stable release of the Samba 4.19 release series. It contains the security-relevant bugfix CVE-2018-14628: Wrong ntSecurityDescriptor values for "CN=Deleted Objects" allow read of object tombstones over LDAP (Administrator action required!) https://www.samba.org/samba/security/CVE-2018-14628.html Description of CVE-2018-14628 All versions of Samba from 4.0.0 onwards are vulnerable to an information leak (compared with the established behaviour of Microsoft's Active Directory) when Samba is an Active Directory Domain Controller. When a domain was provisioned with an unpatched Samba version, the ntSecurityDescriptor is simply inherited from Domain/Partition-HEAD-Object instead of being very strict (as on a Windows provisioned domain). This means also non privileged users can use the LDAP_SERVER_SHOW_DELETED_OID control in order to view, the names and preserved attributes of deleted objects. No information that was hidden before the deletion is visible, but in with the correct ntSecurityDescriptor value in place the whole object is also not visible without administrative rights. There is no further vulnerability associated with this error, merely an information disclosure. Action required in order to resolve CVE-2018-14628! The patched Samba does NOT protect existing domains! The administrator needs to run the following command (on only one domain controller) in order to apply the protection to an existing domain: samba-tool dbcheck --cross-ncs --attrs=nTSecurityDescriptor --fix The above requires manual interaction in order to review the changes before they are applied. Typicall question look like this: Reset nTSecurityDescriptor on CN=Deleted Objects,DC=samba,DC=org back to provision default? Owner mismatch: SY (in ref) DA(in current) Group mismatch: SY (in ref) DA(in current) Part dacl is different between reference and current here is the detail: (A;;LCRPLORC;;;AU) ACE is not present in the reference (A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;SY) ACE is not present in the reference (A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;DA) ACE is not present in the reference (A;;CCDCLCSWRPWPSDRCWDWO;;;SY) ACE is not present in the current (A;;LCRP;;;BA) ACE is not present in the current [y/N/all/none] y Fixed attribute 'nTSecurityDescriptor' of 'CN=Deleted Objects,DC=samba,DC=org' The change should be confirmed with 'y' for all objects starting with 'CN=Deleted Objects'. Changes since 4.19.2 * BUG 15520: sid_strings test broken by unix epoch > 1700000000. * BUG 15487: smbd crashes if asked to return full information on close of a stream handle with delete on close disposition set. * BUG 15521: smbd: fix close order of base_fsp and stream_fsp in smb_fname_fsp_destructor(). * BUG 15499: Improve logging for failover scenarios. * BUG 15093: Files without "read attributes" NFS4 ACL permission are not listed in directories. * BUG 13595: CVE-2018-14628 [SECURITY] Deleted Object tombstones visible in AD LDAP to normal users. * BUG 15492: Kerberos TGS-REQ with User2User does not work for normal accounts. * BUG 15507: vfs_gpfs stat calls fail due to file system permissions. * BUG 15513: Samba doesn't build with Python 3.12
Signed-off-by: Adolf Belka adolf.belka@ipfire.org --- lfs/samba | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/lfs/samba b/lfs/samba index 2f2184ecc..7ebac8ded 100644 --- a/lfs/samba +++ b/lfs/samba @@ -24,7 +24,7 @@
include Config
-VER = 4.19.2 +VER = 4.19.3 SUMMARY = A SMB/CIFS File, Print, and Authentication Server
THISAPP = samba-$(VER) @@ -33,7 +33,7 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) PROG = samba -PAK_VER = 97 +PAK_VER = 98
DEPS = avahi cups perl-Parse-Yapp perl-JSON
@@ -47,7 +47,7 @@ objects = $(DL_FILE)
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_BLAKE2 = cb3747f1be6e712c6e68f3720e68aee7db2e4dcc48a9210d002337d6690ed8b027919f333dc4a7c1e74b716ebceeff1d8071463899513edfe51da967d71d8148 +$(DL_FILE)_BLAKE2 = f83af3b50d795bdc4a250fe96040721150acc3b8effddd473e3cfa3ef6eeec99928b1307a18a472be45049e1d0b74650b9f6dd4bf5c434277c94ab88cb493b3b
install : $(TARGET)
- Update from version 1.9.15p2 to 1.9.15p4 - Update of rootfile not required - Changelog 1.9.15p4 * Fixed a bug introduced in sudo 1.9.15 that could prevent a user's privileges from being listed by "sudo -l" if the sudoers entry in /etc/nsswitch.conf contains "[SUCCESS=return]". This did not affect the ability to run commands via sudo. Bug #1063. 1.9.15p3 * Always disable core dumps when sudo sends itself a fatal signal. Fixes a problem where sudo could potentially dump core dump when it re-sends the fatal signal to itself. This is only an issue if the command received a signal that would normally result in a core dump but the command did not actually dump core. * Fixed a bug matching a command with a relative path name when the sudoers rule uses shell globbing rules for the path name. Bug #1062. * Permit visudo to be run even if the local host name is not set. GitHub issue #332. * Fixed an editing error introduced in sudo 1.9.15 that could prevent sudoreplay from replaying sessions correctly. GitHub issue #334. * Fixed a bug introduced in sudo 1.9.15 where "sudo -l > /dev/null" could hang on Linux systems. GitHub issue #335. * Fixed a bug introduced in sudo 1.9.15 where Solaris privileges specified in sudoers were not applied to the command being run.
Signed-off-by: Adolf Belka adolf.belka@ipfire.org --- lfs/sudo | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/lfs/sudo b/lfs/sudo index d6bae3c7e..5be3c13ab 100644 --- a/lfs/sudo +++ b/lfs/sudo @@ -24,7 +24,7 @@
include Config
-VER = 1.9.15p2 +VER = 1.9.15p4
THISAPP = sudo-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -40,7 +40,7 @@ objects = $(DL_FILE)
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_BLAKE2 = 002f820d6d82b3384a9206545a999765c2924b2650fd7f6331c191e3f631507064d71a042c606b4fcea0d518d38b5a24d3f44964bb09cb5774e50501abc3f524 +$(DL_FILE)_BLAKE2 = 011d8ee099bfc16cff141dabffd0ce2befa7fdc834108759e9fdc3c2c11c3bca02eb0c410915394b1b3e3725fbb08544f98ffa584299dbce0db2b49234c0550a
install : $(TARGET)
Reviewed-by: Peter Müller peter.mueller@ipfire.org
- Update from version 1.9.15p2 to 1.9.15p4
- Update of rootfile not required
- Changelog 1.9.15p4
1.9.15p3
- Fixed a bug introduced in sudo 1.9.15 that could prevent a user's privileges from being listed by "sudo -l" if the sudoers entry in /etc/nsswitch.conf contains "[SUCCESS=return]". This did not affect the ability to run commands via sudo. Bug #1063.
- Always disable core dumps when sudo sends itself a fatal signal. Fixes a problem where sudo could potentially dump core dump when it re-sends the fatal signal to itself. This is only an issue if the command received a signal that would normally result in a core dump but the command did not actually dump core.
- Fixed a bug matching a command with a relative path name when the sudoers rule uses shell globbing rules for the path name. Bug #1062.
- Permit visudo to be run even if the local host name is not set. GitHub issue #332.
- Fixed an editing error introduced in sudo 1.9.15 that could prevent sudoreplay from replaying sessions correctly. GitHub issue #334.
- Fixed a bug introduced in sudo 1.9.15 where "sudo -l > /dev/null" could hang on Linux systems. GitHub issue #335.
- Fixed a bug introduced in sudo 1.9.15 where Solaris privileges specified in sudoers were not applied to the command being run.
Signed-off-by: Adolf Belka adolf.belka@ipfire.org
lfs/sudo | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/lfs/sudo b/lfs/sudo index d6bae3c7e..5be3c13ab 100644 --- a/lfs/sudo +++ b/lfs/sudo @@ -24,7 +24,7 @@
include Config
-VER = 1.9.15p2 +VER = 1.9.15p4
THISAPP = sudo-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -40,7 +40,7 @@ objects = $(DL_FILE)
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_BLAKE2 = 002f820d6d82b3384a9206545a999765c2924b2650fd7f6331c191e3f631507064d71a042c606b4fcea0d518d38b5a24d3f44964bb09cb5774e50501abc3f524 +$(DL_FILE)_BLAKE2 = 011d8ee099bfc16cff141dabffd0ce2befa7fdc834108759e9fdc3c2c11c3bca02eb0c410915394b1b3e3725fbb08544f98ffa584299dbce0db2b49234c0550a
install : $(TARGET)
Reviewed-by: Peter Müller peter.mueller@ipfire.org
- Update the patches to include patches 16 to 21
- Update of rootfile not required
- Changelog patch 21: fix for expanding command substitutions in a word expansion in a here-document patch 20: allow time reserved word as first token in command substitution patch 19: fix case where background job set the terminal process group patch 18: fix for returning unknown tokens to the bison parser patch 17: fix for optimizing forks when using the . builtin in a subshell patch 16: fix for a crash if one of the expressions in an arithmetic for command expands to NULL
Signed-off-by: Adolf Belka adolf.belka@ipfire.org
lfs/bash | 2 +- src/patches/bash/bash52-016 | 47 + src/patches/bash/bash52-017 | 47 + src/patches/bash/bash52-018 | 3643 +++++++++++++++++++++++++++++++++++ src/patches/bash/bash52-019 | 66 + src/patches/bash/bash52-020 | 53 + src/patches/bash/bash52-021 | 61 + 7 files changed, 3918 insertions(+), 1 deletion(-) create mode 100644 src/patches/bash/bash52-016 create mode 100644 src/patches/bash/bash52-017 create mode 100644 src/patches/bash/bash52-018 create mode 100644 src/patches/bash/bash52-019 create mode 100644 src/patches/bash/bash52-020 create mode 100644 src/patches/bash/bash52-021
diff --git a/lfs/bash b/lfs/bash index c7ef1f946..80d4f244b 100644 --- a/lfs/bash +++ b/lfs/bash @@ -91,7 +91,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/bash/bash-4.0-profile-1.patch cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/bash/bash-3.2-ssh_source_bash.patch
- for i in $$(seq 1 15); do \
- for i in $$(seq 1 21); do \ cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/bash/bash52-$$(printf "%03d" "$${i}") || exit 1; \ done
diff --git a/src/patches/bash/bash52-016 b/src/patches/bash/bash52-016 new file mode 100644 index 000000000..e9fbbef17 --- /dev/null +++ b/src/patches/bash/bash52-016 @@ -0,0 +1,47 @@
BASH PATCH REPORT
=================
+Bash-Release: 5.2 +Patch-ID: bash52-016
+Bug-Reported-by: F G frank.graziano@gmail.com +Bug-Reference-ID: CAOhYt35M5VctK+xAPu=Gy_UzzGmHedWPJE4q+kL4UHF_6Nb1kA@mail.gmail.com +Bug-Reference-URL:
+Bug-Description:
+If an expression in an arithmetic for loop expands to NULL, the shell +would crash.
+Patch (apply with `patch -p0'):
+*** ../bash-5.2-patched/execute_cmd.c Thu Feb 23 14:15:05 2023 +--- execute_cmd.c Mon Feb 27 17:53:08 2023 +*************** +*** 3051,3055 ****
- if (l->next)
free (expr);
+! new = make_word_list (make_word (temp), (WORD_LIST *)NULL);
- free (temp);
+--- 3051,3055 ----
- if (l->next)
free (expr);
+! new = make_word_list (make_word (temp ? temp : ""), (WORD_LIST *)NULL);
- free (temp);
+*** ../bash-5.2/patchlevel.h 2020-06-22 14:51:03.000000000 -0400 +--- patchlevel.h 2020-10-01 11:01:28.000000000 -0400 +*************** +*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
+! #define PATCHLEVEL 15
- #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
+! #define PATCHLEVEL 16
- #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash52-017 b/src/patches/bash/bash52-017 new file mode 100644 index 000000000..d28b504bf --- /dev/null +++ b/src/patches/bash/bash52-017 @@ -0,0 +1,47 @@
BASH PATCH REPORT
=================
+Bash-Release: 5.2 +Patch-ID: bash52-017
+Bug-Reported-by: Dan Church h3xx@gmx.com +Bug-Reference-ID: 1a8fd1d6-a3ac-9a67-78eb-b9a7435304c8@gmx.com +Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-bash/2022-12/msg00076.html
+Bug-Description:
+In certain cases, using the `.' builtin in a subshell would optimize away +the rest of the commands in the subshell.
+Patch (apply with `patch -p0'):
+*** ../bash-5.2-patched/builtins/evalfile.c 2019-07-20 16:16:08.000000000 -0400 +--- builtins/evalfile.c 2022-12-22 12:13:08.000000000 -0500 +*************** +*** 267,271 ****
- /* set the flags to be passed to parse_and_execute */
+! pflags = SEVAL_RESETLINE;
- pflags |= (flags & FEVAL_HISTORY) ? 0 : SEVAL_NOHIST;
+--- 267,271 ----
- /* set the flags to be passed to parse_and_execute */
+! pflags = SEVAL_RESETLINE|SEVAL_NOOPTIMIZE;
- pflags |= (flags & FEVAL_HISTORY) ? 0 : SEVAL_NOHIST;
+*** ../bash-5.2/patchlevel.h 2020-06-22 14:51:03.000000000 -0400 +--- patchlevel.h 2020-10-01 11:01:28.000000000 -0400 +*************** +*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
+! #define PATCHLEVEL 16
- #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
+! #define PATCHLEVEL 17
- #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash52-018 b/src/patches/bash/bash52-018 new file mode 100644 index 000000000..d93f11281 --- /dev/null +++ b/src/patches/bash/bash52-018 @@ -0,0 +1,3643 @@
BASH PATCH REPORT
=================
+Bash-Release: 5.2 +Patch-ID: bash52-018
+Bug-Reported-by: Todd Stein toddbstein@gmail.com
Eduardo A . Bustamante López <dualbus@gmail.com>
+Bug-Reference-ID:
<Y/SHWg7/+sc19k7P@system76-pc>
+Bug-Reference-URL: https://savannah.gnu.org/support/?110745
https://lists.gnu.org/archive/html/bug-bash/2023-02/msg00141.html
+Bug-Description:
+There are two problems with returning tokens to yyparse() when the shell +encounters a syntax error or when it reads EOF.
+When reading a WORD token, the parser has to return the correct value to +yyparse. Previous versions returned a value < 0, which the bash parser +translated into YYERRCODE for bison, and in newer versions of bison, the +appropriate reset actions didn't happen. We should return YYUNDEF, which +bison uses for `invalid token'. Since we can return a token < 0 for both +invalid tokens and EOF, the bash tokenizer needs to differentiate between +those two cases.
+Patch (apply with `patch -p0'):
+*** ../bash-5.2-patched/parse.y 2022-12-13 12:09:02.000000000 -0500 +--- parse.y 2023-11-08 14:29:13.000000000 -0500 +*************** +*** 453,456 **** +--- 453,471 ----
}
}
++ | error YYEOF ++ { ++ global_command = (COMMAND *)NULL; ++ if (last_command_exit_value == 0) ++ last_command_exit_value = EX_BADUSAGE; /* force error return */ ++ if (interactive && parse_and_execute_level == 0) ++ { ++ handle_eof_input_unit (); ++ YYACCEPT; ++ } ++ else ++ { ++ YYABORT; ++ } ++ }
- | yacc_EOF
{
+*************** +*** 2898,2904 ****
- if (current_token < 0)
- #if defined (YYERRCODE) && !defined (YYUNDEF)
+! current_token = YYERRCODE;
- #else
+! current_token = YYerror;
- #endif
+--- 2913,2919 ----
- if (current_token < 0)
- #if defined (YYERRCODE) && !defined (YYUNDEF)
+! current_token = EOF_Reached ? YYEOF : YYERRCODE;
- #else
+! current_token = EOF_Reached ? YYEOF : YYUNDEF;
- #endif
+*************** +*** 3695,3698 **** +--- 3711,3715 ----
parser_error (start_lineno, _("unexpected EOF while looking for matching `%c'"), close);
EOF_Reached = 1; /* XXX */
++ parser_state |= PST_NOERROR; /* avoid redundant error message */
return (&matched_pair_error);
- }
+*************** +*** 4157,4160 **** +--- 4172,4176 ----
/* yyparse() has already called yyerror() and reset_parser() */
++ parser_state |= PST_NOERROR;
return (&matched_pair_error);
}
+*** /Users/chet/src/bash/bash-5.2-patched/y.tab.c 2022-12-13 12:09:02.000000000 -0500 +--- y.tab.c 2023-11-08 14:38:01.000000000 -0500 +*************** +*** 993,997 ****
- /* YYFINAL -- State number of the termination state. */
+! #define YYFINAL 121
- /* YYLAST -- Last index in YYTABLE. */
- #define YYLAST 740
+--- 993,997 ----
- /* YYFINAL -- State number of the termination state. */
+! #define YYFINAL 122
- /* YYLAST -- Last index in YYTABLE. */
- #define YYLAST 740
+*************** +*** 1002,1008 ****
- #define YYNNTS 38
- /* YYNRULES -- Number of rules. */
+! #define YYNRULES 174
- /* YYNSTATES -- Number of states. */
+! #define YYNSTATES 349
- /* YYMAXUTOK -- Last valid token kind. */
+--- 1002,1008 ----
- #define YYNNTS 38
- /* YYNRULES -- Number of rules. */
+! #define YYNRULES 175
- /* YYNSTATES -- Number of states. */
+! #define YYNSTATES 350
- /* YYMAXUTOK -- Last valid token kind. */
+*************** +*** 1058,1079 ****
- static const yytype_int16 yyrline[] =
- {
+! 0, 395, 395, 406, 414, 423, 438, 455, 465, 467, +! 471, 477, 483, 489, 495, 501, 507, 513, 519, 525, +! 531, 537, 543, 549, 555, 561, 568, 575, 582, 589, +! 596, 603, 609, 615, 621, 627, 633, 639, 645, 651, +! 657, 663, 669, 675, 681, 687, 693, 699, 705, 711, +! 717, 723, 729, 735, 743, 745, 747, 751, 755, 766, +! 768, 772, 774, 776, 792, 794, 798, 800, 802, 804, +! 806, 808, 810, 812, 814, 816, 818, 822, 827, 832, +! 837, 842, 847, 852, 857, 864, 870, 876, 882, 890, +! 895, 900, 905, 910, 915, 920, 925, 932, 937, 942, +! 949, 951, 953, 955, 959, 961, 992, 999, 1003, 1009, +! 1014, 1031, 1036, 1053, 1060, 1062, 1064, 1069, 1073, 1077, +! 1081, 1083, 1085, 1089, 1090, 1094, 1096, 1098, 1100, 1104, +! 1106, 1108, 1110, 1112, 1114, 1118, 1120, 1129, 1135, 1141, +! 1142, 1149, 1153, 1155, 1157, 1164, 1166, 1173, 1177, 1178, +! 1181, 1183, 1185, 1189, 1190, 1199, 1214, 1232, 1249, 1251, +! 1253, 1260, 1263, 1267, 1269, 1275, 1281, 1301, 1324, 1326, +! 1349, 1353, 1355, 1357, 1359
- };
- #endif
+--- 1058,1079 ----
- static const yytype_int16 yyrline[] =
- {
+! 0, 395, 395, 406, 414, 423, 438, 455, 470, 480, +! 482, 486, 492, 498, 504, 510, 516, 522, 528, 534, +! 540, 546, 552, 558, 564, 570, 576, 583, 590, 597, +! 604, 611, 618, 624, 630, 636, 642, 648, 654, 660, +! 666, 672, 678, 684, 690, 696, 702, 708, 714, 720, +! 726, 732, 738, 744, 750, 758, 760, 762, 766, 770, +! 781, 783, 787, 789, 791, 807, 809, 813, 815, 817, +! 819, 821, 823, 825, 827, 829, 831, 833, 837, 842, +! 847, 852, 857, 862, 867, 872, 879, 885, 891, 897, +! 905, 910, 915, 920, 925, 930, 935, 940, 947, 952, +! 957, 964, 966, 968, 970, 974, 976, 1007, 1014, 1018, +! 1024, 1029, 1046, 1051, 1068, 1075, 1077, 1079, 1084, 1088, +! 1092, 1096, 1098, 1100, 1104, 1105, 1109, 1111, 1113, 1115, +! 1119, 1121, 1123, 1125, 1127, 1129, 1133, 1135, 1144, 1150, +! 1156, 1157, 1164, 1168, 1170, 1172, 1179, 1181, 1188, 1192, +! 1193, 1196, 1198, 1200, 1204, 1205, 1214, 1229, 1247, 1264, +! 1266, 1268, 1275, 1278, 1282, 1284, 1290, 1296, 1316, 1339, +! 1341, 1364, 1368, 1370, 1372, 1374
- };
- #endif
+*************** +*** 1120,1124 ****
- #endif
+! #define YYPACT_NINF (-152)
- #define yypact_value_is_default(Yyn) \
+--- 1120,1124 ----
- #endif
+! #define YYPACT_NINF (-125)
- #define yypact_value_is_default(Yyn) \
+*************** +*** 1134,1172 ****
- static const yytype_int16 yypact[] =
- {
+! 328, 80, -152, -11, -1, 3, -152, -152, 15, 637, +! -5, 433, 149, -28, -152, 187, 684, -152, 18, 28, +! 130, 38, 139, 50, 52, 60, 65, 74, -152, -152, +! -152, 89, 104, -152, -152, 97, -152, -152, 246, -152, +! 670, -152, -152, -152, -152, -152, -152, -152, -152, -152, +! -152, -152, -152, 146, 211, -152, 1, 433, -152, -152, +! 135, 484, -152, 59, 61, 90, 167, 171, 10, 71, +! 246, 670, 144, -152, -152, -152, -152, -152, 165, -152, +! 142, 179, 192, 140, 194, 160, 227, 245, 252, 253, +! 260, 261, 262, 162, 269, 178, 270, 272, 273, 274, +! 277, -152, -152, -152, -152, -152, -152, -152, -152, -152, +! -152, -152, -152, -152, -152, 168, 379, -152, -152, 173, +! 244, -152, -152, -152, -152, 670, -152, -152, -152, -152, +! -152, 535, 535, -152, -152, -152, -152, -152, -152, -152, +! 205, -152, 14, -152, 36, -152, -152, -152, -152, 84, +! -152, -152, -152, 249, 670, -152, 670, 670, -152, -152, +! -152, -152, -152, -152, -152, -152, -152, -152, -152, -152, +! -152, -152, -152, -152, -152, -152, -152, -152, -152, -152, +! -152, -152, -152, -152, -152, -152, -152, -152, -152, -152, +! -152, -152, -152, -152, 484, 484, 203, 203, 586, 586, +! 145, -152, -152, -152, -152, -152, -152, 0, -152, 119, +! -152, 291, 248, 66, 88, -152, 119, -152, 296, 297, +! 35, -152, 670, 670, 35, -152, -152, 1, 1, -152, +! -152, -152, 306, 484, 484, 484, 484, 484, 305, 169, +! -152, 7, -152, -152, 302, -152, 131, -152, 265, -152, +! -152, -152, -152, -152, -152, 304, 131, -152, 266, -152, +! -152, -152, 35, -152, 313, 317, -152, -152, -152, 225, +! 225, 225, -152, -152, -152, -152, 206, 25, -152, -152, +! 307, -42, 319, 276, -152, -152, -152, 95, -152, 322, +! 283, 332, 284, -152, -152, 102, -152, -152, -152, -152, +! -152, -152, -152, -152, 45, 323, -152, -152, -152, 106, +! -152, -152, -152, -152, -152, -152, 109, -152, -152, 264, +! -152, -152, -152, 484, -152, -152, 333, 293, -152, -152, +! 338, 300, -152, -152, -152, 484, 345, 303, -152, -152, +! 346, 309, -152, -152, -152, -152, -152, -152, -152
- };
+--- 1134,1172 ----
- static const yytype_int16 yypact[] =
- {
+! 329, 27, -125, 8, 81, 10, -125, -125, 16, 38, +! 0, 434, -5, -16, -125, 670, 684, -125, 33, 43, +! 62, 63, 71, 69, 94, 105, 108, 116, -125, -125, +! -125, 125, 139, -125, -125, 111, -125, -125, 626, -125, +! 648, -125, -125, -125, -125, -125, -125, -125, -125, -125, +! -125, -125, -125, 5, -21, -125, -15, 434, -125, -125, +! -125, 196, 485, -125, 157, 2, 180, 207, 222, 227, +! 638, 626, 648, 224, -125, -125, -125, -125, -125, 219, +! -125, 185, 223, 228, 140, 230, 161, 232, 233, 234, +! 236, 241, 248, 249, 162, 250, 163, 251, 254, 256, +! 257, 258, -125, -125, -125, -125, -125, -125, -125, -125, +! -125, -125, -125, -125, -125, -125, 225, 380, -125, -125, +! 229, 231, -125, -125, -125, -125, 648, -125, -125, -125, +! -125, -125, 536, 536, -125, -125, -125, -125, -125, -125, +! -125, 214, -125, -7, -125, 85, -125, -125, -125, -125, +! 89, -125, -125, -125, 235, 648, -125, 648, 648, -125, +! -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, +! -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, +! -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, +! -125, -125, -125, -125, -125, 485, 485, 138, 138, 587, +! 587, 17, -125, -125, -125, -125, -125, -125, 88, -125, +! 122, -125, 274, 238, 100, 101, -125, 122, -125, 276, +! 278, 260, -125, 648, 648, 260, -125, -125, -15, -15, +! -125, -125, -125, 287, 485, 485, 485, 485, 485, 290, +! 164, -125, 26, -125, -125, 285, -125, 131, -125, 242, +! -125, -125, -125, -125, -125, -125, 288, 131, -125, 243, +! -125, -125, -125, 260, -125, 297, 302, -125, -125, -125, +! 152, 152, 152, -125, -125, -125, -125, 170, 61, -125, +! -125, 281, -36, 293, 252, -125, -125, -125, 102, -125, +! 298, 255, 300, 262, -125, -125, 103, -125, -125, -125, +! -125, -125, -125, -125, -125, -33, 296, -125, -125, -125, +! 110, -125, -125, -125, -125, -125, -125, 112, -125, -125, +! 189, -125, -125, -125, 485, -125, -125, 310, 267, -125, +! -125, 314, 275, -125, -125, -125, 485, 318, 277, -125, +! -125, 320, 279, -125, -125, -125, -125, -125, -125, -125
- };
+*************** +*** 1176,1214 ****
- static const yytype_uint8 yydefact[] =
- {
+! 0, 0, 153, 0, 0, 0, 153, 153, 0, 0, +! 0, 0, 171, 54, 55, 0, 0, 118, 0, 0, +! 0, 0, 0, 0, 0, 0, 0, 0, 153, 4, +! 7, 0, 0, 153, 153, 0, 56, 59, 61, 170, +! 62, 66, 76, 70, 67, 64, 72, 3, 65, 71, +! 73, 74, 75, 0, 155, 162, 163, 0, 5, 6, +! 0, 0, 153, 153, 0, 153, 0, 0, 0, 54, +! 113, 109, 0, 151, 150, 152, 167, 164, 172, 173,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+! 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +! 0, 16, 25, 40, 34, 49, 31, 43, 37, 46, +! 28, 52, 53, 22, 19, 0, 0, 10, 11, 0, +! 0, 1, 54, 60, 57, 63, 148, 149, 2, 153, +! 153, 156, 157, 153, 153, 166, 165, 153, 154, 137, +! 138, 147, 0, 153, 0, 153, 153, 153, 153, 0, +! 153, 153, 153, 153, 104, 102, 111, 110, 119, 174, +! 153, 18, 27, 42, 36, 51, 33, 45, 39, 48, +! 30, 24, 21, 14, 15, 17, 26, 41, 35, 50, +! 32, 44, 38, 47, 29, 23, 20, 12, 13, 107, +! 108, 117, 106, 58, 0, 0, 160, 161, 0, 0, +! 0, 153, 153, 153, 153, 153, 153, 0, 153, 0, +! 153, 0, 0, 0, 0, 153, 0, 153, 0, 0, +! 0, 153, 105, 112, 0, 158, 159, 169, 168, 153, +! 153, 114, 0, 0, 0, 140, 141, 139, 0, 123, +! 153, 0, 153, 153, 0, 8, 0, 153, 0, 87, +! 88, 153, 153, 153, 153, 0, 0, 153, 0, 68, +! 69, 103, 0, 100, 0, 0, 116, 142, 143, 144, +! 145, 146, 99, 129, 131, 133, 124, 0, 97, 135, +! 0, 0, 0, 0, 77, 9, 153, 0, 78, 0, +! 0, 0, 0, 89, 153, 0, 90, 101, 115, 153, +! 130, 132, 134, 98, 0, 0, 153, 79, 80, 0, +! 153, 153, 85, 86, 91, 92, 0, 153, 153, 120, +! 153, 136, 125, 126, 153, 153, 0, 0, 153, 153, +! 0, 0, 153, 122, 127, 128, 0, 0, 83, 84, +! 0, 0, 95, 96, 121, 81, 82, 93, 94
- };
+--- 1176,1214 ----
- static const yytype_uint8 yydefact[] =
- {
+! 0, 0, 154, 0, 0, 0, 154, 154, 0, 0, +! 0, 0, 172, 55, 56, 0, 0, 119, 0, 0, +! 0, 0, 0, 0, 0, 0, 0, 0, 154, 4, +! 8, 0, 0, 154, 154, 0, 57, 60, 62, 171, +! 63, 67, 77, 71, 68, 65, 73, 3, 66, 72, +! 74, 75, 76, 0, 156, 163, 164, 0, 7, 5, +! 6, 0, 0, 154, 154, 0, 154, 0, 0, 0, +! 55, 114, 110, 0, 152, 151, 153, 168, 165, 173, +! 174, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+! 0, 0, 17, 26, 41, 35, 50, 32, 44, 38, +! 47, 29, 53, 54, 23, 20, 0, 0, 11, 12, +! 0, 0, 1, 55, 61, 58, 64, 149, 150, 2, +! 154, 154, 157, 158, 154, 154, 167, 166, 154, 155, +! 138, 139, 148, 0, 154, 0, 154, 154, 154, 154, +! 0, 154, 154, 154, 154, 105, 103, 112, 111, 120, +! 175, 154, 19, 28, 43, 37, 52, 34, 46, 40, +! 49, 31, 25, 22, 15, 16, 18, 27, 42, 36, +! 51, 33, 45, 39, 48, 30, 24, 21, 13, 14, +! 108, 109, 118, 107, 59, 0, 0, 161, 162, 0, +! 0, 0, 154, 154, 154, 154, 154, 154, 0, 154, +! 0, 154, 0, 0, 0, 0, 154, 0, 154, 0, +! 0, 0, 154, 106, 113, 0, 159, 160, 170, 169, +! 154, 154, 115, 0, 0, 0, 141, 142, 140, 0, +! 124, 154, 0, 154, 154, 0, 9, 0, 154, 0, +! 88, 89, 154, 154, 154, 154, 0, 0, 154, 0, +! 69, 70, 104, 0, 101, 0, 0, 117, 143, 144, +! 145, 146, 147, 100, 130, 132, 134, 125, 0, 98, +! 136, 0, 0, 0, 0, 78, 10, 154, 0, 79, +! 0, 0, 0, 0, 90, 154, 0, 91, 102, 116, +! 154, 131, 133, 135, 99, 0, 0, 154, 80, 81, +! 0, 154, 154, 86, 87, 92, 93, 0, 154, 154, +! 121, 154, 137, 126, 127, 154, 154, 0, 0, 154, +! 154, 0, 0, 154, 123, 128, 129, 0, 0, 84, +! 85, 0, 0, 96, 97, 122, 82, 83, 94, 95
- };
+*************** +*** 1216,1223 ****
- static const yytype_int16 yypgoto[] =
- {
+! -152, -152, 112, -29, -14, -64, 360, -152, -8, -152, +! -152, -152, -152, -152, -151, -152, -152, -152, -152, -152, +! -152, -152, 13, -152, 136, -152, 98, -2, -152, 30, +! -152, -54, -26, -152, -123, 6, 78, -152
- };
+--- 1216,1223 ----
- static const yytype_int16 yypgoto[] =
- {
+! -125, -125, 126, -25, -28, -65, 335, -125, -8, -125, +! -125, -125, -125, -125, -96, -125, -125, -125, -125, -125, +! -125, -125, 28, -125, 109, -125, 68, -2, -125, -11, +! -125, -54, -26, -125, -124, 6, 34, -125
- };
+*************** +*** 1225,1232 ****
- static const yytype_int16 yydefgoto[] =
- {
+! 0, 35, 246, 36, 37, 125, 38, 39, 40, 41, +! 42, 43, 44, 45, 155, 46, 47, 48, 49, 50, +! 51, 52, 232, 238, 239, 240, 281, 120, 139, 140, +! 128, 76, 61, 53, 54, 141, 56, 57
- };
+--- 1225,1232 ----
- static const yytype_int16 yydefgoto[] =
- {
+! 0, 35, 247, 36, 37, 126, 38, 39, 40, 41, +! 42, 43, 44, 45, 156, 46, 47, 48, 49, 50, +! 51, 52, 233, 239, 240, 241, 282, 121, 140, 141, +! 129, 77, 62, 53, 54, 142, 56, 57
- };
+*************** +*** 1236,1390 ****
- static const yytype_int16 yytable[] =
- {
+! 60, 71, 116, 135, 66, 67, 55, 157, 196, 197, +! 147, 124, 305, 2, 242, 62, 278, 77, 3, 306, +! 4, 5, 6, 7, 123, 63, 115, 72, 10, 65, +! 64, 119, 80, 279, 303, 206, 142, 144, 2, 149, +! 17, 68, 124, 3, 101, 4, 5, 6, 7, 133, +! 208, 279, 138, 10, 102, 134, 123, 209, 243, 138, +! 154, 156, 152, 136, 106, 17, 138, 280, 33, 261, +! 153, 225, 226, 263, 2, 145, 110, 138, 111, 3, +! 251, 4, 5, 6, 7, 280, 112, 138, 138, 10, +! 222, 113, 223, 33, 210, 34, 193, 121, 215, 305, +! 114, 17, 253, 194, 195, 216, 320, 198, 199, 310, +! 143, 297, 73, 74, 75, 117, 317, 207, 138, 146, +! 324, 213, 214, 328, 252, 124, 220, 124, 193, 33, +! 118, 34, 58, 59, 224, 200, 138, 55, 55, 137, +! 138, 148, 217, 211, 212, 245, 254, 138, 218, 219, +! 229, 230, 231, 311, 138, 247, 103, 285, 138, 104, +! 318, 138, 257, 158, 325, 107, 163, 329, 108, 164, +! 73, 74, 75, 78, 79, 233, 234, 235, 236, 237, +! 241, 150, 73, 74, 75, 151, 167, 105, 177, 168, +! 159, 178, 286, 193, 193, 262, 109, 165, 126, 127, +! 55, 55, 294, 160, 181, 161, 244, 182, 248, 273, +! 274, 275, 154, 255, 277, 258, 154, 169, 162, 179, +! 166, 287, 81, 82, 83, 84, 85, 264, 265, 189, +! 86, 295, 191, 87, 88, 183, 129, 130, 201, 202, +! 282, 283, 89, 90, 129, 130, 300, 301, 302, 289, +! 290, 291, 292, 170, 154, 203, 204, 205, 201, 202, +! 309, 131, 132, 267, 268, 269, 270, 271, 316, 332, +! 230, 171, 122, 14, 15, 16, 227, 228, 172, 173, +! 323, 18, 19, 20, 21, 22, 174, 175, 176, 23, +! 24, 25, 26, 27, 335, 180, 184, 319, 185, 186, +! 187, 31, 32, 188, 322, 192, 249, 250, 326, 327, +! 221, 259, 260, 266, 272, 330, 331, 284, 334, 293, +! 298, 299, 336, 337, 288, 296, 340, 341, 256, 1, +! 344, 2, 333, 279, 307, 308, 3, 312, 4, 5, +! 6, 7, 313, 315, 8, 9, 10, 314, 338, 321, +! 11, 12, 339, 342, 13, 14, 15, 16, 17, 343, +! 345, 347, 346, 18, 19, 20, 21, 22, 348, 70, +! 0, 23, 24, 25, 26, 27, 276, 28, 304, 0, +! 29, 30, 2, 31, 32, 0, 33, 3, 34, 4, +! 5, 6, 7, 0, 0, 8, 9, 10, 0, 0, +! 0, 11, 12, 0, 0, 13, 14, 15, 16, 17,
0, 0, 0, 0, 18, 19, 20, 21, 22, 0,
+! 0, 0, 23, 24, 25, 26, 27, 0, 0, 0, +! 0, 138, 0, 0, 31, 32, 2, 33, 0, 34, +! 190, 3, 0, 4, 5, 6, 7, 0, 0, 8, +! 9, 10, 0, 0, 0, 11, 12, 0, 0, 13, +! 14, 15, 16, 17, 0, 0, 0, 0, 18, 19, +! 20, 21, 22, 0, 0, 0, 23, 24, 25, 26, +! 27, 0, 0, 0, 73, 74, 75, 2, 31, 32, +! 0, 33, 3, 34, 4, 5, 6, 7, 0, 0,
8, 9, 10, 0, 0, 0, 11, 12, 0, 0,
13, 14, 15, 16, 17, 0, 0, 0, 0, 18,
19, 20, 21, 22, 0, 0, 0, 23, 24, 25,
+! 26, 27, 0, 0, 0, 0, 138, 0, 2, 31,
32, 0, 33, 3, 34, 4, 5, 6, 7, 0,
0, 8, 9, 10, 0, 0, 0, 11, 12, 0,
0, 13, 14, 15, 16, 17, 0, 0, 0, 0,
18, 19, 20, 21, 22, 0, 0, 0, 23, 24,
+! 25, 26, 27, 0, 0, 0, 0, 0, 0, 2,
31, 32, 0, 33, 3, 34, 4, 5, 6, 7,
+! 0, 0, 8, 9, 10, 0, 0, 0, 0, 0,
0, 0, 13, 14, 15, 16, 17, 0, 0, 0,
0, 18, 19, 20, 21, 22, 0, 0, 0, 23,
+! 24, 25, 26, 27, 0, 0, 0, 0, 138, 0,
2, 31, 32, 0, 33, 3, 34, 4, 5, 6,
+! 7, 0, 0, 0, 0, 10, 0, 0, 0, 0, +! 0, 0, 0, 69, 14, 15, 16, 17, 0, 0,
0, 0, 18, 19, 20, 21, 22, 0, 0, 0,
+! 23, 24, 25, 26, 27, 0, 0, 0, 0, 0, +! 0, 0, 31, 32, 0, 33, 0, 34, 15, 16, +! 0, 0, 0, 0, 0, 18, 19, 20, 21, 22, +! 0, 0, 0, 23, 24, 25, 26, 27, 0, 91, +! 92, 93, 94, 95, 0, 31, 32, 96, 0, 0, +! 97, 98, 0, 0, 0, 0, 0, 0, 0, 99, +! 100
- };
- static const yytype_int16 yycheck[] =
- {
+! 2, 9, 28, 57, 6, 7, 0, 71, 131, 132, +! 64, 40, 54, 3, 14, 26, 9, 11, 8, 61, +! 10, 11, 12, 13, 38, 26, 28, 32, 18, 26, +! 31, 33, 60, 26, 9, 21, 62, 63, 3, 65, +! 30, 26, 71, 8, 26, 10, 11, 12, 13, 48, +! 14, 26, 52, 18, 26, 54, 70, 21, 58, 52, +! 68, 69, 52, 57, 26, 30, 52, 60, 58, 220, +! 60, 194, 195, 224, 3, 14, 26, 52, 26, 8, +! 14, 10, 11, 12, 13, 60, 26, 52, 52, 18, +! 154, 26, 156, 58, 58, 60, 125, 0, 14, 54, +! 26, 30, 14, 129, 130, 21, 61, 133, 134, 14, +! 51, 262, 51, 52, 53, 26, 14, 143, 52, 58, +! 14, 147, 148, 14, 58, 154, 152, 156, 157, 58, +! 26, 60, 52, 53, 160, 137, 52, 131, 132, 4, +! 52, 51, 58, 145, 146, 26, 58, 52, 150, 151, +! 5, 6, 7, 58, 52, 209, 26, 26, 52, 29, +! 58, 52, 216, 19, 58, 26, 26, 58, 29, 29, +! 51, 52, 53, 24, 25, 201, 202, 203, 204, 205, +! 206, 14, 51, 52, 53, 14, 26, 57, 26, 29, +! 25, 29, 246, 222, 223, 221, 57, 57, 52, 53, +! 194, 195, 256, 61, 26, 26, 208, 29, 210, 40, +! 41, 42, 220, 215, 240, 217, 224, 57, 26, 57, +! 26, 247, 35, 36, 37, 38, 39, 229, 230, 61, +! 43, 257, 59, 46, 47, 57, 33, 34, 33, 34, +! 242, 243, 55, 56, 33, 34, 40, 41, 42, 251, +! 252, 253, 254, 26, 262, 50, 51, 52, 33, 34, +! 286, 50, 51, 233, 234, 235, 236, 237, 294, 5, +! 6, 26, 26, 27, 28, 29, 198, 199, 26, 26, +! 306, 35, 36, 37, 38, 39, 26, 26, 26, 43, +! 44, 45, 46, 47, 320, 26, 26, 299, 26, 26, +! 26, 55, 56, 26, 306, 61, 15, 59, 310, 311, +! 61, 15, 15, 7, 9, 317, 318, 15, 320, 15, +! 7, 4, 324, 325, 59, 59, 328, 329, 216, 1, +! 332, 3, 319, 26, 15, 59, 8, 15, 10, 11, +! 12, 13, 59, 59, 16, 17, 18, 15, 15, 26, +! 22, 23, 59, 15, 26, 27, 28, 29, 30, 59, +! 15, 15, 59, 35, 36, 37, 38, 39, 59, 9, +! -1, 43, 44, 45, 46, 47, 240, 49, 280, -1, +! 52, 53, 3, 55, 56, -1, 58, 8, 60, 10, +! 11, 12, 13, -1, -1, 16, 17, 18, -1, -1, +! -1, 22, 23, -1, -1, 26, 27, 28, 29, 30,
-1, -1, -1, -1, 35, 36, 37, 38, 39, -1,
+! -1, -1, 43, 44, 45, 46, 47, -1, -1, -1, +! -1, 52, -1, -1, 55, 56, 3, 58, -1, 60, +! 61, 8, -1, 10, 11, 12, 13, -1, -1, 16, +! 17, 18, -1, -1, -1, 22, 23, -1, -1, 26, +! 27, 28, 29, 30, -1, -1, -1, -1, 35, 36, +! 37, 38, 39, -1, -1, -1, 43, 44, 45, 46, +! 47, -1, -1, -1, 51, 52, 53, 3, 55, 56, +! -1, 58, 8, 60, 10, 11, 12, 13, -1, -1,
16, 17, 18, -1, -1, -1, 22, 23, -1, -1,
26, 27, 28, 29, 30, -1, -1, -1, -1, 35,
36, 37, 38, 39, -1, -1, -1, 43, 44, 45,
+! 46, 47, -1, -1, -1, -1, 52, -1, 3, 55,
56, -1, 58, 8, 60, 10, 11, 12, 13, -1,
-1, 16, 17, 18, -1, -1, -1, 22, 23, -1,
-1, 26, 27, 28, 29, 30, -1, -1, -1, -1,
35, 36, 37, 38, 39, -1, -1, -1, 43, 44,
+! 45, 46, 47, -1, -1, -1, -1, -1, -1, 3,
55, 56, -1, 58, 8, 60, 10, 11, 12, 13,
+! -1, -1, 16, 17, 18, -1, -1, -1, -1, -1,
-1, -1, 26, 27, 28, 29, 30, -1, -1, -1,
-1, 35, 36, 37, 38, 39, -1, -1, -1, 43,
+! 44, 45, 46, 47, -1, -1, -1, -1, 52, -1,
3, 55, 56, -1, 58, 8, 60, 10, 11, 12,
+! 13, -1, -1, -1, -1, 18, -1, -1, -1, -1,
-1, -1, -1, 26, 27, 28, 29, 30, -1, -1,
-1, -1, 35, 36, 37, 38, 39, -1, -1, -1,
+! 43, 44, 45, 46, 47, -1, -1, -1, -1, -1, +! -1, -1, 55, 56, -1, 58, -1, 60, 28, 29, +! -1, -1, -1, -1, -1, 35, 36, 37, 38, 39, +! -1, -1, -1, 43, 44, 45, 46, 47, -1, 35,
36, 37, 38, 39, -1, 55, 56, 43, -1, -1,
46, 47, -1, -1, -1, -1, -1, -1, -1, 55,
+--- 1236,1390 ----
- static const yytype_int16 yytable[] =
- {
+! 61, 72, 117, 136, 67, 68, 55, 158, 197, 198, +! 124, 148, 130, 131, 207, 125, 146, 78, 306, 79, +! 80, 306, 230, 231, 232, 307, 116, 58, 321, 132, +! 133, 120, 73, 134, 63, 279, 66, 143, 145, 135, +! 150, 2, 69, 124, 81, 139, 3, 125, 4, 5, +! 6, 7, 280, 74, 75, 76, 10, 127, 128, 102, +! 147, 155, 157, 137, 70, 14, 15, 16, 17, 103, +! 304, 226, 227, 18, 19, 20, 21, 22, 139, 59, +! 60, 23, 24, 25, 26, 27, 281, 280, 104, 107, +! 223, 105, 224, 31, 32, 111, 33, 108, 34, 209, +! 109, 194, 243, 216, 195, 196, 210, 64, 199, 200, +! 217, 122, 65, 139, 252, 254, 311, 318, 208, 106, +! 112, 281, 214, 215, 325, 262, 329, 221, 110, 264, +! 125, 113, 125, 194, 114, 225, 201, 139, 55, 55, +! 139, 139, 115, 211, 212, 213, 244, 218, 246, 219, +! 220, 118, 139, 139, 139, 139, 248, 286, 253, 255, +! 312, 319, 139, 258, 139, 119, 164, 298, 326, 165, +! 330, 130, 131, 74, 75, 76, 234, 235, 236, 237, +! 238, 242, 74, 75, 76, 202, 203, 168, 178, 182, +! 169, 179, 183, 287, 333, 231, 263, 166, 194, 194, +! 138, 55, 55, 295, 274, 275, 276, 245, 144, 249, +! 301, 302, 303, 155, 256, 278, 259, 155, 170, 180, +! 184, 151, 288, 268, 269, 270, 271, 272, 265, 266, +! 2, 149, 296, 228, 229, 3, 152, 4, 5, 6, +! 7, 283, 284, 159, 160, 10, 161, 202, 203, 162, +! 290, 291, 292, 293, 163, 155, 167, 17, 171, 172, +! 173, 310, 174, 2, 204, 205, 206, 175, 3, 317, +! 4, 5, 6, 7, 176, 177, 181, 185, 10, 153, +! 186, 324, 187, 188, 189, 33, 190, 154, 192, 250, +! 17, 260, 193, 261, 267, 336, 222, 251, 320, 273, +! 285, 289, 297, 294, 299, 323, 300, 280, 308, 327, +! 328, 309, 139, 313, 314, 315, 331, 332, 33, 335, +! 34, 316, 322, 337, 338, 339, 340, 341, 342, 343, +! 1, 345, 2, 346, 344, 348, 347, 3, 349, 4, +! 5, 6, 7, 257, 71, 8, 9, 10, 334, 305, +! 277, 11, 12, 0, 0, 13, 14, 15, 16, 17,
0, 0, 0, 0, 18, 19, 20, 21, 22, 0,
+! 0, 0, 23, 24, 25, 26, 27, 0, 28, 0, +! 0, 29, 30, 2, 31, 32, 0, 33, 3, 34, +! 4, 5, 6, 7, 0, 0, 8, 9, 10, 0, +! 0, 0, 11, 12, 0, 0, 13, 14, 15, 16, +! 17, 0, 0, 0, 0, 18, 19, 20, 21, 22, +! 0, 0, 0, 23, 24, 25, 26, 27, 0, 0, +! 0, 0, 139, 0, 0, 31, 32, 2, 33, 0, +! 34, 191, 3, 0, 4, 5, 6, 7, 0, 0,
8, 9, 10, 0, 0, 0, 11, 12, 0, 0,
13, 14, 15, 16, 17, 0, 0, 0, 0, 18,
19, 20, 21, 22, 0, 0, 0, 23, 24, 25,
+! 26, 27, 0, 0, 0, 74, 75, 76, 2, 31,
32, 0, 33, 3, 34, 4, 5, 6, 7, 0,
0, 8, 9, 10, 0, 0, 0, 11, 12, 0,
0, 13, 14, 15, 16, 17, 0, 0, 0, 0,
18, 19, 20, 21, 22, 0, 0, 0, 23, 24,
+! 25, 26, 27, 0, 0, 0, 0, 139, 0, 2,
31, 32, 0, 33, 3, 34, 4, 5, 6, 7,
+! 0, 0, 8, 9, 10, 0, 0, 0, 11, 12,
0, 0, 13, 14, 15, 16, 17, 0, 0, 0,
0, 18, 19, 20, 21, 22, 0, 0, 0, 23,
+! 24, 25, 26, 27, 0, 0, 0, 0, 0, 0,
2, 31, 32, 0, 33, 3, 34, 4, 5, 6,
+! 7, 0, 0, 8, 9, 10, 0, 0, 0, 0, +! 0, 0, 0, 13, 14, 15, 16, 17, 0, 0,
0, 0, 18, 19, 20, 21, 22, 0, 0, 0,
+! 23, 24, 25, 26, 27, 0, 0, 0, 0, 139, +! 0, 2, 31, 32, 0, 33, 3, 34, 4, 5, +! 6, 7, 123, 14, 15, 16, 10, 0, 0, 0, +! 0, 18, 19, 20, 21, 22, 0, 0, 17, 23, +! 24, 25, 26, 27, 0, 0, 15, 16, 0, 0, +! 0, 31, 32, 18, 19, 20, 21, 22, 0, 0, +! 0, 23, 24, 25, 26, 27, 33, 0, 34, 0, +! 0, 0, 0, 31, 32, 82, 83, 84, 85, 86, +! 0, 0, 0, 87, 0, 0, 88, 89, 0, 92, +! 93, 94, 95, 96, 0, 90, 91, 97, 0, 0, +! 98, 99, 0, 0, 0, 0, 0, 0, 0, 100, +! 101
- };
- static const yytype_int16 yycheck[] =
- {
+! 2, 9, 28, 57, 6, 7, 0, 72, 132, 133, +! 38, 65, 33, 34, 21, 40, 14, 11, 54, 24, +! 25, 54, 5, 6, 7, 61, 28, 0, 61, 50, +! 51, 33, 32, 48, 26, 9, 26, 63, 64, 54, +! 66, 3, 26, 71, 60, 52, 8, 72, 10, 11, +! 12, 13, 26, 51, 52, 53, 18, 52, 53, 26, +! 58, 69, 70, 57, 26, 27, 28, 29, 30, 26, +! 9, 195, 196, 35, 36, 37, 38, 39, 52, 52, +! 53, 43, 44, 45, 46, 47, 60, 26, 26, 26, +! 155, 29, 157, 55, 56, 26, 58, 26, 60, 14, +! 29, 126, 14, 14, 130, 131, 21, 26, 134, 135, +! 21, 0, 31, 52, 14, 14, 14, 14, 144, 57, +! 26, 60, 148, 149, 14, 221, 14, 153, 57, 225, +! 155, 26, 157, 158, 26, 161, 138, 52, 132, 133, +! 52, 52, 26, 58, 146, 147, 58, 58, 26, 151, +! 152, 26, 52, 52, 52, 52, 210, 26, 58, 58, +! 58, 58, 52, 217, 52, 26, 26, 263, 58, 29, +! 58, 33, 34, 51, 52, 53, 202, 203, 204, 205, +! 206, 207, 51, 52, 53, 33, 34, 26, 26, 26, +! 29, 29, 29, 247, 5, 6, 222, 57, 223, 224, +! 4, 195, 196, 257, 40, 41, 42, 209, 51, 211, +! 40, 41, 42, 221, 216, 241, 218, 225, 57, 57, +! 57, 14, 248, 234, 235, 236, 237, 238, 230, 231, +! 3, 51, 258, 199, 200, 8, 14, 10, 11, 12, +! 13, 243, 244, 19, 25, 18, 61, 33, 34, 26, +! 252, 253, 254, 255, 26, 263, 26, 30, 26, 26, +! 26, 287, 26, 3, 50, 51, 52, 26, 8, 295, +! 10, 11, 12, 13, 26, 26, 26, 26, 18, 52, +! 26, 307, 26, 26, 26, 58, 61, 60, 59, 15, +! 30, 15, 61, 15, 7, 321, 61, 59, 300, 9, +! 15, 59, 59, 15, 7, 307, 4, 26, 15, 311, +! 312, 59, 52, 15, 59, 15, 318, 319, 58, 321, +! 60, 59, 26, 325, 326, 15, 59, 329, 330, 15, +! 1, 333, 3, 15, 59, 15, 59, 8, 59, 10, +! 11, 12, 13, 217, 9, 16, 17, 18, 320, 281, +! 241, 22, 23, -1, -1, 26, 27, 28, 29, 30,
-1, -1, -1, -1, 35, 36, 37, 38, 39, -1,
+! -1, -1, 43, 44, 45, 46, 47, -1, 49, -1, +! -1, 52, 53, 3, 55, 56, -1, 58, 8, 60, +! 10, 11, 12, 13, -1, -1, 16, 17, 18, -1, +! -1, -1, 22, 23, -1, -1, 26, 27, 28, 29, +! 30, -1, -1, -1, -1, 35, 36, 37, 38, 39, +! -1, -1, -1, 43, 44, 45, 46, 47, -1, -1, +! -1, -1, 52, -1, -1, 55, 56, 3, 58, -1, +! 60, 61, 8, -1, 10, 11, 12, 13, -1, -1,
16, 17, 18, -1, -1, -1, 22, 23, -1, -1,
26, 27, 28, 29, 30, -1, -1, -1, -1, 35,
36, 37, 38, 39, -1, -1, -1, 43, 44, 45,
+! 46, 47, -1, -1, -1, 51, 52, 53, 3, 55,
56, -1, 58, 8, 60, 10, 11, 12, 13, -1,
-1, 16, 17, 18, -1, -1, -1, 22, 23, -1,
-1, 26, 27, 28, 29, 30, -1, -1, -1, -1,
35, 36, 37, 38, 39, -1, -1, -1, 43, 44,
+! 45, 46, 47, -1, -1, -1, -1, 52, -1, 3,
55, 56, -1, 58, 8, 60, 10, 11, 12, 13,
+! -1, -1, 16, 17, 18, -1, -1, -1, 22, 23,
-1, -1, 26, 27, 28, 29, 30, -1, -1, -1,
-1, 35, 36, 37, 38, 39, -1, -1, -1, 43,
+! 44, 45, 46, 47, -1, -1, -1, -1, -1, -1,
3, 55, 56, -1, 58, 8, 60, 10, 11, 12,
+! 13, -1, -1, 16, 17, 18, -1, -1, -1, -1,
-1, -1, -1, 26, 27, 28, 29, 30, -1, -1,
-1, -1, 35, 36, 37, 38, 39, -1, -1, -1,
+! 43, 44, 45, 46, 47, -1, -1, -1, -1, 52, +! -1, 3, 55, 56, -1, 58, 8, 60, 10, 11, +! 12, 13, 26, 27, 28, 29, 18, -1, -1, -1, +! -1, 35, 36, 37, 38, 39, -1, -1, 30, 43, +! 44, 45, 46, 47, -1, -1, 28, 29, -1, -1, +! -1, 55, 56, 35, 36, 37, 38, 39, -1, -1, +! -1, 43, 44, 45, 46, 47, 58, -1, 60, -1, +! -1, -1, -1, 55, 56, 35, 36, 37, 38, 39, +! -1, -1, -1, 43, -1, -1, 46, 47, -1, 35,
36, 37, 38, 39, -1, 55, 56, 43, -1, -1,
46, 47, -1, -1, -1, -1, -1, -1, -1, 55,
+*************** +*** 1401,1434 ****
53, 55, 56, 58, 60, 63, 65, 66, 68, 69,
70, 71, 72, 73, 74, 75, 77, 78, 79, 80,
+! 81, 82, 83, 95, 96, 97, 98, 99, 52, 53, +! 89, 94, 26, 26, 31, 26, 89, 89, 26, 26, +! 68, 70, 32, 51, 52, 53, 93, 97, 24, 25, +! 60, 35, 36, 37, 38, 39, 43, 46, 47, 55, +! 56, 35, 36, 37, 38, 39, 43, 46, 47, 55, +! 56, 26, 26, 26, 29, 57, 26, 26, 29, 57, +! 26, 26, 26, 26, 26, 89, 94, 26, 26, 89, +! 89, 0, 26, 66, 65, 67, 52, 53, 92, 33, +! 34, 50, 51, 48, 54, 93, 97, 4, 52, 90, +! 91, 97, 94, 51, 94, 14, 58, 93, 51, 94, +! 14, 14, 52, 60, 70, 76, 70, 67, 19, 25, +! 61, 26, 26, 26, 29, 57, 26, 26, 29, 57, +! 26, 26, 26, 26, 26, 26, 26, 26, 29, 57, +! 26, 26, 29, 57, 26, 26, 26, 26, 26, 61, +! 61, 59, 61, 65, 94, 94, 96, 96, 94, 94, +! 89, 33, 34, 50, 51, 52, 21, 94, 14, 21, +! 58, 89, 89, 94, 94, 14, 21, 58, 89, 89, +! 94, 61, 67, 67, 94, 96, 96, 98, 98, 5, +! 6, 7, 84, 94, 94, 94, 94, 94, 85, 86, +! 87, 94, 14, 58, 89, 26, 64, 93, 89, 15, +! 59, 14, 58, 14, 58, 89, 64, 93, 89, 15, +! 15, 76, 94, 76, 89, 89, 7, 91, 91, 91, +! 91, 91, 9, 40, 41, 42, 86, 94, 9, 26, +! 60, 88, 89, 89, 15, 26, 93, 94, 59, 89, +! 89, 89, 89, 15, 93, 94, 59, 76, 7, 4, +! 40, 41, 42, 9, 88, 54, 61, 15, 59, 94, +! 14, 58, 15, 59, 15, 59, 94, 14, 58, 89, +! 61, 26, 89, 94, 14, 58, 89, 89, 14, 58, +! 89, 89, 5, 84, 89, 94, 89, 89, 15, 59, +! 89, 89, 15, 59, 89, 15, 59, 15, 59
- };
+--- 1401,1434 ----
53, 55, 56, 58, 60, 63, 65, 66, 68, 69,
70, 71, 72, 73, 74, 75, 77, 78, 79, 80,
+! 81, 82, 83, 95, 96, 97, 98, 99, 0, 52, +! 53, 89, 94, 26, 26, 31, 26, 89, 89, 26, +! 26, 68, 70, 32, 51, 52, 53, 93, 97, 24, +! 25, 60, 35, 36, 37, 38, 39, 43, 46, 47, +! 55, 56, 35, 36, 37, 38, 39, 43, 46, 47, +! 55, 56, 26, 26, 26, 29, 57, 26, 26, 29, +! 57, 26, 26, 26, 26, 26, 89, 94, 26, 26, +! 89, 89, 0, 26, 66, 65, 67, 52, 53, 92, +! 33, 34, 50, 51, 48, 54, 93, 97, 4, 52, +! 90, 91, 97, 94, 51, 94, 14, 58, 93, 51, +! 94, 14, 14, 52, 60, 70, 76, 70, 67, 19, +! 25, 61, 26, 26, 26, 29, 57, 26, 26, 29, +! 57, 26, 26, 26, 26, 26, 26, 26, 26, 29, +! 57, 26, 26, 29, 57, 26, 26, 26, 26, 26, +! 61, 61, 59, 61, 65, 94, 94, 96, 96, 94, +! 94, 89, 33, 34, 50, 51, 52, 21, 94, 14, +! 21, 58, 89, 89, 94, 94, 14, 21, 58, 89, +! 89, 94, 61, 67, 67, 94, 96, 96, 98, 98, +! 5, 6, 7, 84, 94, 94, 94, 94, 94, 85, +! 86, 87, 94, 14, 58, 89, 26, 64, 93, 89, +! 15, 59, 14, 58, 14, 58, 89, 64, 93, 89, +! 15, 15, 76, 94, 76, 89, 89, 7, 91, 91, +! 91, 91, 91, 9, 40, 41, 42, 86, 94, 9, +! 26, 60, 88, 89, 89, 15, 26, 93, 94, 59, +! 89, 89, 89, 89, 15, 93, 94, 59, 76, 7, +! 4, 40, 41, 42, 9, 88, 54, 61, 15, 59, +! 94, 14, 58, 15, 59, 15, 59, 94, 14, 58, +! 89, 61, 26, 89, 94, 14, 58, 89, 89, 14, +! 58, 89, 89, 5, 84, 89, 94, 89, 89, 15, +! 59, 89, 89, 15, 59, 89, 15, 59, 15, 59
- };
+*************** +*** 1436,1457 ****
- static const yytype_int8 yyr1[] =
- {
+! 0, 62, 63, 63, 63, 63, 63, 63, 64, 64, +! 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
+! 65, 65, 65, 65, 66, 66, 66, 67, 67, 68, +! 68, 69, 69, 69, 69, 69, 70, 70, 70, 70, +! 70, 70, 70, 70, 70, 70, 70, 71, 71, 71, +! 71, 71, 71, 71, 71, 72, 72, 72, 72, 73, +! 73, 73, 73, 73, 73, 73, 73, 74, 74, 74, +! 75, 75, 75, 75, 76, 76, 77, 78, 78, 79, +! 79, 79, 79, 79, 80, 80, 80, 81, 82, 83, +! 84, 84, 84, 85, 85, 86, 86, 86, 86, 87, +! 87, 87, 87, 87, 87, 88, 88, 89, 89, 90, +! 90, 90, 91, 91, 91, 91, 91, 91, 92, 92, +! 93, 93, 93, 94, 94, 95, 95, 95, 96, 96, +! 96, 96, 96, 97, 97, 97, 97, 97, 98, 98, +! 98, 99, 99, 99, 99
- };
+--- 1436,1457 ----
- static const yytype_int8 yyr1[] =
- {
+! 0, 62, 63, 63, 63, 63, 63, 63, 63, 64, +! 64, 65, 65, 65, 65, 65, 65, 65, 65, 65,
65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
+! 65, 65, 65, 65, 65, 66, 66, 66, 67, 67, +! 68, 68, 69, 69, 69, 69, 69, 70, 70, 70, +! 70, 70, 70, 70, 70, 70, 70, 70, 71, 71, +! 71, 71, 71, 71, 71, 71, 72, 72, 72, 72, +! 73, 73, 73, 73, 73, 73, 73, 73, 74, 74, +! 74, 75, 75, 75, 75, 76, 76, 77, 78, 78, +! 79, 79, 79, 79, 79, 80, 80, 80, 81, 82, +! 83, 84, 84, 84, 85, 85, 86, 86, 86, 86, +! 87, 87, 87, 87, 87, 87, 88, 88, 89, 89, +! 90, 90, 90, 91, 91, 91, 91, 91, 91, 92, +! 92, 93, 93, 93, 94, 94, 95, 95, 95, 96, +! 96, 96, 96, 96, 97, 97, 97, 97, 97, 98, +! 98, 98, 99, 99, 99, 99
- };
+*************** +*** 1459,1480 ****
- static const yytype_int8 yyr2[] =
- {
+! 0, 2, 2, 1, 1, 2, 2, 1, 1, 2, +! 2, 2, 3, 3, 3, 3, 2, 3, 3, 2,
3, 3, 2, 3, 3, 2, 3, 3, 2, 3,
3, 2, 3, 3, 2, 3, 3, 2, 3, 3,
+! 2, 3, 3, 2, 3, 3, 2, 3, 3, 2, +! 3, 3, 2, 2, 1, 1, 1, 1, 2, 1, +! 2, 1, 1, 2, 1, 1, 1, 1, 5, 5, +! 1, 1, 1, 1, 1, 1, 1, 6, 6, 7, +! 7, 10, 10, 9, 9, 7, 7, 5, 5, 6, +! 6, 7, 7, 10, 10, 9, 9, 6, 7, 6, +! 5, 6, 3, 5, 1, 2, 3, 3, 3, 2, +! 3, 3, 4, 2, 5, 7, 6, 3, 1, 3, +! 4, 6, 5, 1, 2, 4, 4, 5, 5, 2, +! 3, 2, 3, 2, 3, 1, 3, 2, 2, 3, +! 3, 3, 4, 4, 4, 4, 4, 1, 1, 1, +! 1, 1, 1, 0, 2, 1, 2, 2, 4, 4, +! 3, 3, 1, 1, 2, 2, 2, 2, 4, 4, +! 1, 1, 2, 2, 3
- };
+--- 1459,1480 ----
- static const yytype_int8 yyr2[] =
- {
+! 0, 2, 2, 1, 1, 2, 2, 2, 1, 1, +! 2, 2, 2, 3, 3, 3, 3, 2, 3, 3, +! 2, 3, 3, 2, 3, 3, 2, 3, 3, 2,
3, 3, 2, 3, 3, 2, 3, 3, 2, 3,
3, 2, 3, 3, 2, 3, 3, 2, 3, 3,
+! 2, 3, 3, 2, 2, 1, 1, 1, 1, 2, +! 1, 2, 1, 1, 2, 1, 1, 1, 1, 5, +! 5, 1, 1, 1, 1, 1, 1, 1, 6, 6, +! 7, 7, 10, 10, 9, 9, 7, 7, 5, 5, +! 6, 6, 7, 7, 10, 10, 9, 9, 6, 7, +! 6, 5, 6, 3, 5, 1, 2, 3, 3, 3, +! 2, 3, 3, 4, 2, 5, 7, 6, 3, 1, +! 3, 4, 6, 5, 1, 2, 4, 4, 5, 5, +! 2, 3, 2, 3, 2, 3, 1, 3, 2, 2, +! 3, 3, 3, 4, 4, 4, 4, 4, 1, 1, +! 1, 1, 1, 1, 0, 2, 1, 2, 2, 4, +! 4, 3, 3, 1, 1, 2, 2, 2, 2, 4, +! 4, 1, 1, 2, 2, 3
- };
+*************** +*** 2019,2025 ****
break;
+! case 7: /* inputunit: yacc_EOF */
- #line 456 "/usr/local/src/chet/src/bash/src/parse.y"
{
/* Case of EOF seen by itself. Do ignoreeof or
not. */
+--- 2019,2044 ----
break;
+! case 7: /* inputunit: error $end */
- #line 456 "/usr/local/src/chet/src/bash/src/parse.y"
{
++ global_command = (COMMAND *)NULL; ++ if (last_command_exit_value == 0) ++ last_command_exit_value = EX_BADUSAGE; /* force error return */ ++ if (interactive && parse_and_execute_level == 0) ++ { ++ handle_eof_input_unit (); ++ YYACCEPT; ++ } ++ else ++ { ++ YYABORT; ++ } ++ } ++ #line 2038 "y.tab.c" ++ break; ++ ++ case 8: /* inputunit: yacc_EOF */ ++ #line 471 "/usr/local/src/chet/src/bash/src/parse.y" ++ {
/* Case of EOF seen by itself. Do ignoreeof or
not. */
+*************** +*** 2028,2048 ****
YYACCEPT;
}
+! #line 2031 "y.tab.c"
break;
+! case 8: /* word_list: WORD */ +! #line 466 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.word_list) = make_word_list ((yyvsp[0].word), (WORD_LIST *)NULL); }
+! #line 2037 "y.tab.c"
break;
+! case 9: /* word_list: word_list WORD */ +! #line 468 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.word_list) = make_word_list ((yyvsp[0].word), (yyvsp[-1].word_list)); }
+! #line 2043 "y.tab.c"
break;
+! case 10: /* redirection: '>' WORD */ +! #line 472 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = 1;
+--- 2047,2067 ----
YYACCEPT;
}
+! #line 2050 "y.tab.c"
break;
+! case 9: /* word_list: WORD */ +! #line 481 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.word_list) = make_word_list ((yyvsp[0].word), (WORD_LIST *)NULL); }
+! #line 2056 "y.tab.c"
break;
+! case 10: /* word_list: word_list WORD */ +! #line 483 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.word_list) = make_word_list ((yyvsp[0].word), (yyvsp[-1].word_list)); }
+! #line 2062 "y.tab.c"
break;
+! case 11: /* redirection: '>' WORD */ +! #line 487 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = 1;
+*************** +*** 2050,2058 ****
(yyval.redirect) = make_redirection (source, r_output_direction, redir, 0);
}
+! #line 2053 "y.tab.c"
break;
+! case 11: /* redirection: '<' WORD */ +! #line 478 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = 0;
+--- 2069,2077 ----
(yyval.redirect) = make_redirection (source, r_output_direction, redir, 0);
}
+! #line 2072 "y.tab.c"
break;
+! case 12: /* redirection: '<' WORD */ +! #line 493 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = 0;
+*************** +*** 2060,2068 ****
(yyval.redirect) = make_redirection (source, r_input_direction, redir, 0);
}
+! #line 2063 "y.tab.c"
break;
+! case 12: /* redirection: NUMBER '>' WORD */ +! #line 484 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = (yyvsp[-2].number);
+--- 2079,2087 ----
(yyval.redirect) = make_redirection (source, r_input_direction, redir, 0);
}
+! #line 2082 "y.tab.c"
break;
+! case 13: /* redirection: NUMBER '>' WORD */ +! #line 499 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = (yyvsp[-2].number);
+*************** +*** 2070,2078 ****
(yyval.redirect) = make_redirection (source, r_output_direction, redir, 0);
}
+! #line 2073 "y.tab.c"
break;
+! case 13: /* redirection: NUMBER '<' WORD */ +! #line 490 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = (yyvsp[-2].number);
+--- 2089,2097 ----
(yyval.redirect) = make_redirection (source, r_output_direction, redir, 0);
}
+! #line 2092 "y.tab.c"
break;
+! case 14: /* redirection: NUMBER '<' WORD */ +! #line 505 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = (yyvsp[-2].number);
+*************** +*** 2080,2088 ****
(yyval.redirect) = make_redirection (source, r_input_direction, redir, 0);
}
+! #line 2083 "y.tab.c"
break;
+! case 14: /* redirection: REDIR_WORD '>' WORD */ +! #line 496 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.filename = (yyvsp[-2].word);
+--- 2099,2107 ----
(yyval.redirect) = make_redirection (source, r_input_direction, redir, 0);
}
+! #line 2102 "y.tab.c"
break;
+! case 15: /* redirection: REDIR_WORD '>' WORD */ +! #line 511 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.filename = (yyvsp[-2].word);
+*************** +*** 2090,2098 ****
(yyval.redirect) = make_redirection (source, r_output_direction, redir, REDIR_VARASSIGN);
}
+! #line 2093 "y.tab.c"
break;
+! case 15: /* redirection: REDIR_WORD '<' WORD */ +! #line 502 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.filename = (yyvsp[-2].word);
+--- 2109,2117 ----
(yyval.redirect) = make_redirection (source, r_output_direction, redir, REDIR_VARASSIGN);
}
+! #line 2112 "y.tab.c"
break;
+! case 16: /* redirection: REDIR_WORD '<' WORD */ +! #line 517 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.filename = (yyvsp[-2].word);
+*************** +*** 2100,2108 ****
(yyval.redirect) = make_redirection (source, r_input_direction, redir, REDIR_VARASSIGN);
}
+! #line 2103 "y.tab.c"
break;
+! case 16: /* redirection: GREATER_GREATER WORD */ +! #line 508 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = 1;
+--- 2119,2127 ----
(yyval.redirect) = make_redirection (source, r_input_direction, redir, REDIR_VARASSIGN);
}
+! #line 2122 "y.tab.c"
break;
+! case 17: /* redirection: GREATER_GREATER WORD */ +! #line 523 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = 1;
+*************** +*** 2110,2118 ****
(yyval.redirect) = make_redirection (source, r_appending_to, redir, 0);
}
+! #line 2113 "y.tab.c"
break;
+! case 17: /* redirection: NUMBER GREATER_GREATER WORD */ +! #line 514 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = (yyvsp[-2].number);
+--- 2129,2137 ----
(yyval.redirect) = make_redirection (source, r_appending_to, redir, 0);
}
+! #line 2132 "y.tab.c"
break;
+! case 18: /* redirection: NUMBER GREATER_GREATER WORD */ +! #line 529 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = (yyvsp[-2].number);
+*************** +*** 2120,2128 ****
(yyval.redirect) = make_redirection (source, r_appending_to, redir, 0);
}
+! #line 2123 "y.tab.c"
break;
+! case 18: /* redirection: REDIR_WORD GREATER_GREATER WORD */ +! #line 520 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.filename = (yyvsp[-2].word);
+--- 2139,2147 ----
(yyval.redirect) = make_redirection (source, r_appending_to, redir, 0);
}
+! #line 2142 "y.tab.c"
break;
+! case 19: /* redirection: REDIR_WORD GREATER_GREATER WORD */ +! #line 535 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.filename = (yyvsp[-2].word);
+*************** +*** 2130,2138 ****
(yyval.redirect) = make_redirection (source, r_appending_to, redir, REDIR_VARASSIGN);
}
+! #line 2133 "y.tab.c"
break;
+! case 19: /* redirection: GREATER_BAR WORD */ +! #line 526 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = 1;
+--- 2149,2157 ----
(yyval.redirect) = make_redirection (source, r_appending_to, redir, REDIR_VARASSIGN);
}
+! #line 2152 "y.tab.c"
break;
+! case 20: /* redirection: GREATER_BAR WORD */ +! #line 541 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = 1;
+*************** +*** 2140,2148 ****
(yyval.redirect) = make_redirection (source, r_output_force, redir, 0);
}
+! #line 2143 "y.tab.c"
break;
+! case 20: /* redirection: NUMBER GREATER_BAR WORD */ +! #line 532 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = (yyvsp[-2].number);
+--- 2159,2167 ----
(yyval.redirect) = make_redirection (source, r_output_force, redir, 0);
}
+! #line 2162 "y.tab.c"
break;
+! case 21: /* redirection: NUMBER GREATER_BAR WORD */ +! #line 547 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = (yyvsp[-2].number);
+*************** +*** 2150,2158 ****
(yyval.redirect) = make_redirection (source, r_output_force, redir, 0);
}
+! #line 2153 "y.tab.c"
break;
+! case 21: /* redirection: REDIR_WORD GREATER_BAR WORD */ +! #line 538 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.filename = (yyvsp[-2].word);
+--- 2169,2177 ----
(yyval.redirect) = make_redirection (source, r_output_force, redir, 0);
}
+! #line 2172 "y.tab.c"
break;
+! case 22: /* redirection: REDIR_WORD GREATER_BAR WORD */ +! #line 553 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.filename = (yyvsp[-2].word);
+*************** +*** 2160,2168 ****
(yyval.redirect) = make_redirection (source, r_output_force, redir, REDIR_VARASSIGN);
}
+! #line 2163 "y.tab.c"
break;
+! case 22: /* redirection: LESS_GREATER WORD */ +! #line 544 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = 0;
+--- 2179,2187 ----
(yyval.redirect) = make_redirection (source, r_output_force, redir, REDIR_VARASSIGN);
}
+! #line 2182 "y.tab.c"
break;
+! case 23: /* redirection: LESS_GREATER WORD */ +! #line 559 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = 0;
+*************** +*** 2170,2178 ****
(yyval.redirect) = make_redirection (source, r_input_output, redir, 0);
}
+! #line 2173 "y.tab.c"
break;
+! case 23: /* redirection: NUMBER LESS_GREATER WORD */ +! #line 550 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = (yyvsp[-2].number);
+--- 2189,2197 ----
(yyval.redirect) = make_redirection (source, r_input_output, redir, 0);
}
+! #line 2192 "y.tab.c"
break;
+! case 24: /* redirection: NUMBER LESS_GREATER WORD */ +! #line 565 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = (yyvsp[-2].number);
+*************** +*** 2180,2188 ****
(yyval.redirect) = make_redirection (source, r_input_output, redir, 0);
}
+! #line 2183 "y.tab.c"
break;
+! case 24: /* redirection: REDIR_WORD LESS_GREATER WORD */ +! #line 556 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.filename = (yyvsp[-2].word);
+--- 2199,2207 ----
(yyval.redirect) = make_redirection (source, r_input_output, redir, 0);
}
+! #line 2202 "y.tab.c"
break;
+! case 25: /* redirection: REDIR_WORD LESS_GREATER WORD */ +! #line 571 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.filename = (yyvsp[-2].word);
+*************** +*** 2190,2198 ****
(yyval.redirect) = make_redirection (source, r_input_output, redir, REDIR_VARASSIGN);
}
+! #line 2193 "y.tab.c"
break;
+! case 25: /* redirection: LESS_LESS WORD */ +! #line 562 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = 0;
+--- 2209,2217 ----
(yyval.redirect) = make_redirection (source, r_input_output, redir, REDIR_VARASSIGN);
}
+! #line 2212 "y.tab.c"
break;
+! case 26: /* redirection: LESS_LESS WORD */ +! #line 577 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = 0;
+*************** +*** 2201,2209 ****
push_heredoc ((yyval.redirect));
}
+! #line 2204 "y.tab.c"
break;
+! case 26: /* redirection: NUMBER LESS_LESS WORD */ +! #line 569 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = (yyvsp[-2].number);
+--- 2220,2228 ----
push_heredoc ((yyval.redirect));
}
+! #line 2223 "y.tab.c"
break;
+! case 27: /* redirection: NUMBER LESS_LESS WORD */ +! #line 584 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = (yyvsp[-2].number);
+*************** +*** 2212,2220 ****
push_heredoc ((yyval.redirect));
}
+! #line 2215 "y.tab.c"
break;
+! case 27: /* redirection: REDIR_WORD LESS_LESS WORD */ +! #line 576 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.filename = (yyvsp[-2].word);
+--- 2231,2239 ----
push_heredoc ((yyval.redirect));
}
+! #line 2234 "y.tab.c"
break;
+! case 28: /* redirection: REDIR_WORD LESS_LESS WORD */ +! #line 591 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.filename = (yyvsp[-2].word);
+*************** +*** 2223,2231 ****
push_heredoc ((yyval.redirect));
}
+! #line 2226 "y.tab.c"
break;
+! case 28: /* redirection: LESS_LESS_MINUS WORD */ +! #line 583 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = 0;
+--- 2242,2250 ----
push_heredoc ((yyval.redirect));
}
+! #line 2245 "y.tab.c"
break;
+! case 29: /* redirection: LESS_LESS_MINUS WORD */ +! #line 598 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = 0;
+*************** +*** 2234,2242 ****
push_heredoc ((yyval.redirect));
}
+! #line 2237 "y.tab.c"
break;
+! case 29: /* redirection: NUMBER LESS_LESS_MINUS WORD */ +! #line 590 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = (yyvsp[-2].number);
+--- 2253,2261 ----
push_heredoc ((yyval.redirect));
}
+! #line 2256 "y.tab.c"
break;
+! case 30: /* redirection: NUMBER LESS_LESS_MINUS WORD */ +! #line 605 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = (yyvsp[-2].number);
+*************** +*** 2245,2253 ****
push_heredoc ((yyval.redirect));
}
+! #line 2248 "y.tab.c"
break;
+! case 30: /* redirection: REDIR_WORD LESS_LESS_MINUS WORD */ +! #line 597 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.filename = (yyvsp[-2].word);
+--- 2264,2272 ----
push_heredoc ((yyval.redirect));
}
+! #line 2267 "y.tab.c"
break;
+! case 31: /* redirection: REDIR_WORD LESS_LESS_MINUS WORD */ +! #line 612 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.filename = (yyvsp[-2].word);
+*************** +*** 2256,2264 ****
push_heredoc ((yyval.redirect));
}
+! #line 2259 "y.tab.c"
break;
+! case 31: /* redirection: LESS_LESS_LESS WORD */ +! #line 604 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = 0;
+--- 2275,2283 ----
push_heredoc ((yyval.redirect));
}
+! #line 2278 "y.tab.c"
break;
+! case 32: /* redirection: LESS_LESS_LESS WORD */ +! #line 619 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = 0;
+*************** +*** 2266,2274 ****
(yyval.redirect) = make_redirection (source, r_reading_string, redir, 0);
}
+! #line 2269 "y.tab.c"
break;
+! case 32: /* redirection: NUMBER LESS_LESS_LESS WORD */ +! #line 610 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = (yyvsp[-2].number);
+--- 2285,2293 ----
(yyval.redirect) = make_redirection (source, r_reading_string, redir, 0);
}
+! #line 2288 "y.tab.c"
break;
+! case 33: /* redirection: NUMBER LESS_LESS_LESS WORD */ +! #line 625 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = (yyvsp[-2].number);
+*************** +*** 2276,2284 ****
(yyval.redirect) = make_redirection (source, r_reading_string, redir, 0);
}
+! #line 2279 "y.tab.c"
break;
+! case 33: /* redirection: REDIR_WORD LESS_LESS_LESS WORD */ +! #line 616 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.filename = (yyvsp[-2].word);
+--- 2295,2303 ----
(yyval.redirect) = make_redirection (source, r_reading_string, redir, 0);
}
+! #line 2298 "y.tab.c"
break;
+! case 34: /* redirection: REDIR_WORD LESS_LESS_LESS WORD */ +! #line 631 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.filename = (yyvsp[-2].word);
+*************** +*** 2286,2294 ****
(yyval.redirect) = make_redirection (source, r_reading_string, redir, REDIR_VARASSIGN);
}
+! #line 2289 "y.tab.c"
break;
+! case 34: /* redirection: LESS_AND NUMBER */ +! #line 622 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = 0;
+--- 2305,2313 ----
(yyval.redirect) = make_redirection (source, r_reading_string, redir, REDIR_VARASSIGN);
}
+! #line 2308 "y.tab.c"
break;
+! case 35: /* redirection: LESS_AND NUMBER */ +! #line 637 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = 0;
+*************** +*** 2296,2304 ****
(yyval.redirect) = make_redirection (source, r_duplicating_input, redir, 0);
}
+! #line 2299 "y.tab.c"
break;
+! case 35: /* redirection: NUMBER LESS_AND NUMBER */ +! #line 628 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = (yyvsp[-2].number);
+--- 2315,2323 ----
(yyval.redirect) = make_redirection (source, r_duplicating_input, redir, 0);
}
+! #line 2318 "y.tab.c"
break;
+! case 36: /* redirection: NUMBER LESS_AND NUMBER */ +! #line 643 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = (yyvsp[-2].number);
+*************** +*** 2306,2314 ****
(yyval.redirect) = make_redirection (source, r_duplicating_input, redir, 0);
}
+! #line 2309 "y.tab.c"
break;
+! case 36: /* redirection: REDIR_WORD LESS_AND NUMBER */ +! #line 634 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.filename = (yyvsp[-2].word);
+--- 2325,2333 ----
(yyval.redirect) = make_redirection (source, r_duplicating_input, redir, 0);
}
+! #line 2328 "y.tab.c"
break;
+! case 37: /* redirection: REDIR_WORD LESS_AND NUMBER */ +! #line 649 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.filename = (yyvsp[-2].word);
+*************** +*** 2316,2324 ****
(yyval.redirect) = make_redirection (source, r_duplicating_input, redir, REDIR_VARASSIGN);
}
+! #line 2319 "y.tab.c"
break;
+! case 37: /* redirection: GREATER_AND NUMBER */ +! #line 640 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = 1;
+--- 2335,2343 ----
(yyval.redirect) = make_redirection (source, r_duplicating_input, redir, REDIR_VARASSIGN);
}
+! #line 2338 "y.tab.c"
break;
+! case 38: /* redirection: GREATER_AND NUMBER */ +! #line 655 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = 1;
+*************** +*** 2326,2334 ****
(yyval.redirect) = make_redirection (source, r_duplicating_output, redir, 0);
}
+! #line 2329 "y.tab.c"
break;
+! case 38: /* redirection: NUMBER GREATER_AND NUMBER */ +! #line 646 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = (yyvsp[-2].number);
+--- 2345,2353 ----
(yyval.redirect) = make_redirection (source, r_duplicating_output, redir, 0);
}
+! #line 2348 "y.tab.c"
break;
+! case 39: /* redirection: NUMBER GREATER_AND NUMBER */ +! #line 661 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = (yyvsp[-2].number);
+*************** +*** 2336,2344 ****
(yyval.redirect) = make_redirection (source, r_duplicating_output, redir, 0);
}
+! #line 2339 "y.tab.c"
break;
+! case 39: /* redirection: REDIR_WORD GREATER_AND NUMBER */ +! #line 652 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.filename = (yyvsp[-2].word);
+--- 2355,2363 ----
(yyval.redirect) = make_redirection (source, r_duplicating_output, redir, 0);
}
+! #line 2358 "y.tab.c"
break;
+! case 40: /* redirection: REDIR_WORD GREATER_AND NUMBER */ +! #line 667 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.filename = (yyvsp[-2].word);
+*************** +*** 2346,2354 ****
(yyval.redirect) = make_redirection (source, r_duplicating_output, redir, REDIR_VARASSIGN);
}
+! #line 2349 "y.tab.c"
break;
+! case 40: /* redirection: LESS_AND WORD */ +! #line 658 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = 0;
+--- 2365,2373 ----
(yyval.redirect) = make_redirection (source, r_duplicating_output, redir, REDIR_VARASSIGN);
}
+! #line 2368 "y.tab.c"
break;
+! case 41: /* redirection: LESS_AND WORD */ +! #line 673 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = 0;
+*************** +*** 2356,2364 ****
(yyval.redirect) = make_redirection (source, r_duplicating_input_word, redir, 0);
}
+! #line 2359 "y.tab.c"
break;
+! case 41: /* redirection: NUMBER LESS_AND WORD */ +! #line 664 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = (yyvsp[-2].number);
+--- 2375,2383 ----
(yyval.redirect) = make_redirection (source, r_duplicating_input_word, redir, 0);
}
+! #line 2378 "y.tab.c"
break;
+! case 42: /* redirection: NUMBER LESS_AND WORD */ +! #line 679 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = (yyvsp[-2].number);
+*************** +*** 2366,2374 ****
(yyval.redirect) = make_redirection (source, r_duplicating_input_word, redir, 0);
}
+! #line 2369 "y.tab.c"
break;
+! case 42: /* redirection: REDIR_WORD LESS_AND WORD */ +! #line 670 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.filename = (yyvsp[-2].word);
+--- 2385,2393 ----
(yyval.redirect) = make_redirection (source, r_duplicating_input_word, redir, 0);
}
+! #line 2388 "y.tab.c"
break;
+! case 43: /* redirection: REDIR_WORD LESS_AND WORD */ +! #line 685 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.filename = (yyvsp[-2].word);
+*************** +*** 2376,2384 ****
(yyval.redirect) = make_redirection (source, r_duplicating_input_word, redir, REDIR_VARASSIGN);
}
+! #line 2379 "y.tab.c"
break;
+! case 43: /* redirection: GREATER_AND WORD */ +! #line 676 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = 1;
+--- 2395,2403 ----
(yyval.redirect) = make_redirection (source, r_duplicating_input_word, redir, REDIR_VARASSIGN);
}
+! #line 2398 "y.tab.c"
break;
+! case 44: /* redirection: GREATER_AND WORD */ +! #line 691 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = 1;
+*************** +*** 2386,2394 ****
(yyval.redirect) = make_redirection (source, r_duplicating_output_word, redir, 0);
}
+! #line 2389 "y.tab.c"
break;
+! case 44: /* redirection: NUMBER GREATER_AND WORD */ +! #line 682 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = (yyvsp[-2].number);
+--- 2405,2413 ----
(yyval.redirect) = make_redirection (source, r_duplicating_output_word, redir, 0);
}
+! #line 2408 "y.tab.c"
break;
+! case 45: /* redirection: NUMBER GREATER_AND WORD */ +! #line 697 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = (yyvsp[-2].number);
+*************** +*** 2396,2404 ****
(yyval.redirect) = make_redirection (source, r_duplicating_output_word, redir, 0);
}
+! #line 2399 "y.tab.c"
break;
+! case 45: /* redirection: REDIR_WORD GREATER_AND WORD */ +! #line 688 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.filename = (yyvsp[-2].word);
+--- 2415,2423 ----
(yyval.redirect) = make_redirection (source, r_duplicating_output_word, redir, 0);
}
+! #line 2418 "y.tab.c"
break;
+! case 46: /* redirection: REDIR_WORD GREATER_AND WORD */ +! #line 703 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.filename = (yyvsp[-2].word);
+*************** +*** 2406,2414 ****
(yyval.redirect) = make_redirection (source, r_duplicating_output_word, redir, REDIR_VARASSIGN);
}
+! #line 2409 "y.tab.c"
break;
+! case 46: /* redirection: GREATER_AND '-' */ +! #line 694 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = 1;
+--- 2425,2433 ----
(yyval.redirect) = make_redirection (source, r_duplicating_output_word, redir, REDIR_VARASSIGN);
}
+! #line 2428 "y.tab.c"
break;
+! case 47: /* redirection: GREATER_AND '-' */ +! #line 709 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = 1;
+*************** +*** 2416,2424 ****
(yyval.redirect) = make_redirection (source, r_close_this, redir, 0);
}
+! #line 2419 "y.tab.c"
break;
+! case 47: /* redirection: NUMBER GREATER_AND '-' */ +! #line 700 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = (yyvsp[-2].number);
+--- 2435,2443 ----
(yyval.redirect) = make_redirection (source, r_close_this, redir, 0);
}
+! #line 2438 "y.tab.c"
break;
+! case 48: /* redirection: NUMBER GREATER_AND '-' */ +! #line 715 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = (yyvsp[-2].number);
+*************** +*** 2426,2434 ****
(yyval.redirect) = make_redirection (source, r_close_this, redir, 0);
}
+! #line 2429 "y.tab.c"
break;
+! case 48: /* redirection: REDIR_WORD GREATER_AND '-' */ +! #line 706 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.filename = (yyvsp[-2].word);
+--- 2445,2453 ----
(yyval.redirect) = make_redirection (source, r_close_this, redir, 0);
}
+! #line 2448 "y.tab.c"
break;
+! case 49: /* redirection: REDIR_WORD GREATER_AND '-' */ +! #line 721 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.filename = (yyvsp[-2].word);
+*************** +*** 2436,2444 ****
(yyval.redirect) = make_redirection (source, r_close_this, redir, REDIR_VARASSIGN);
}
+! #line 2439 "y.tab.c"
break;
+! case 49: /* redirection: LESS_AND '-' */ +! #line 712 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = 0;
+--- 2455,2463 ----
(yyval.redirect) = make_redirection (source, r_close_this, redir, REDIR_VARASSIGN);
}
+! #line 2458 "y.tab.c"
break;
+! case 50: /* redirection: LESS_AND '-' */ +! #line 727 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = 0;
+*************** +*** 2446,2454 ****
(yyval.redirect) = make_redirection (source, r_close_this, redir, 0);
}
+! #line 2449 "y.tab.c"
break;
+! case 50: /* redirection: NUMBER LESS_AND '-' */ +! #line 718 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = (yyvsp[-2].number);
+--- 2465,2473 ----
(yyval.redirect) = make_redirection (source, r_close_this, redir, 0);
}
+! #line 2468 "y.tab.c"
break;
+! case 51: /* redirection: NUMBER LESS_AND '-' */ +! #line 733 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = (yyvsp[-2].number);
+*************** +*** 2456,2464 ****
(yyval.redirect) = make_redirection (source, r_close_this, redir, 0);
}
+! #line 2459 "y.tab.c"
break;
+! case 51: /* redirection: REDIR_WORD LESS_AND '-' */ +! #line 724 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.filename = (yyvsp[-2].word);
+--- 2475,2483 ----
(yyval.redirect) = make_redirection (source, r_close_this, redir, 0);
}
+! #line 2478 "y.tab.c"
break;
+! case 52: /* redirection: REDIR_WORD LESS_AND '-' */ +! #line 739 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.filename = (yyvsp[-2].word);
+*************** +*** 2466,2474 ****
(yyval.redirect) = make_redirection (source, r_close_this, redir, REDIR_VARASSIGN);
}
+! #line 2469 "y.tab.c"
break;
+! case 52: /* redirection: AND_GREATER WORD */ +! #line 730 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = 1;
+--- 2485,2493 ----
(yyval.redirect) = make_redirection (source, r_close_this, redir, REDIR_VARASSIGN);
}
+! #line 2488 "y.tab.c"
break;
+! case 53: /* redirection: AND_GREATER WORD */ +! #line 745 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = 1;
+*************** +*** 2476,2484 ****
(yyval.redirect) = make_redirection (source, r_err_and_out, redir, 0);
}
+! #line 2479 "y.tab.c"
break;
+! case 53: /* redirection: AND_GREATER_GREATER WORD */ +! #line 736 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = 1;
+--- 2495,2503 ----
(yyval.redirect) = make_redirection (source, r_err_and_out, redir, 0);
}
+! #line 2498 "y.tab.c"
break;
+! case 54: /* redirection: AND_GREATER_GREATER WORD */ +! #line 751 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = 1;
+*************** +*** 2486,2520 ****
(yyval.redirect) = make_redirection (source, r_append_err_and_out, redir, 0);
}
+! #line 2489 "y.tab.c"
break;
+! case 54: /* simple_command_element: WORD */ +! #line 744 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.element).word = (yyvsp[0].word); (yyval.element).redirect = 0; }
+! #line 2495 "y.tab.c"
break;
+! case 55: /* simple_command_element: ASSIGNMENT_WORD */ +! #line 746 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.element).word = (yyvsp[0].word); (yyval.element).redirect = 0; }
+! #line 2501 "y.tab.c"
break;
+! case 56: /* simple_command_element: redirection */ +! #line 748 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.element).redirect = (yyvsp[0].redirect); (yyval.element).word = 0; }
+! #line 2507 "y.tab.c"
break;
+! case 57: /* redirection_list: redirection */ +! #line 752 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.redirect) = (yyvsp[0].redirect);
}
+! #line 2515 "y.tab.c"
break;
+! case 58: /* redirection_list: redirection_list redirection */ +! #line 756 "/usr/local/src/chet/src/bash/src/parse.y"
{
register REDIRECT *t;
+--- 2505,2539 ----
(yyval.redirect) = make_redirection (source, r_append_err_and_out, redir, 0);
}
+! #line 2508 "y.tab.c"
break;
+! case 55: /* simple_command_element: WORD */ +! #line 759 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.element).word = (yyvsp[0].word); (yyval.element).redirect = 0; }
+! #line 2514 "y.tab.c"
break;
+! case 56: /* simple_command_element: ASSIGNMENT_WORD */ +! #line 761 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.element).word = (yyvsp[0].word); (yyval.element).redirect = 0; }
+! #line 2520 "y.tab.c"
break;
+! case 57: /* simple_command_element: redirection */ +! #line 763 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.element).redirect = (yyvsp[0].redirect); (yyval.element).word = 0; }
+! #line 2526 "y.tab.c"
break;
+! case 58: /* redirection_list: redirection */ +! #line 767 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.redirect) = (yyvsp[0].redirect);
}
+! #line 2534 "y.tab.c"
break;
+! case 59: /* redirection_list: redirection_list redirection */ +! #line 771 "/usr/local/src/chet/src/bash/src/parse.y"
{
register REDIRECT *t;
+*************** +*** 2525,2557 ****
(yyval.redirect) = (yyvsp[-1].redirect);
}
+! #line 2528 "y.tab.c"
break;
+! case 59: /* simple_command: simple_command_element */ +! #line 767 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = make_simple_command ((yyvsp[0].element), (COMMAND *)NULL); }
+! #line 2534 "y.tab.c"
break;
+! case 60: /* simple_command: simple_command simple_command_element */ +! #line 769 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = make_simple_command ((yyvsp[0].element), (yyvsp[-1].command)); }
+! #line 2540 "y.tab.c"
break;
+! case 61: /* command: simple_command */ +! #line 773 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = clean_simple_command ((yyvsp[0].command)); }
+! #line 2546 "y.tab.c"
break;
+! case 62: /* command: shell_command */ +! #line 775 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = (yyvsp[0].command); }
+! #line 2552 "y.tab.c"
break;
+! case 63: /* command: shell_command redirection_list */ +! #line 777 "/usr/local/src/chet/src/bash/src/parse.y"
{
COMMAND *tc;
+--- 2544,2576 ----
(yyval.redirect) = (yyvsp[-1].redirect);
}
+! #line 2547 "y.tab.c"
break;
+! case 60: /* simple_command: simple_command_element */ +! #line 782 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = make_simple_command ((yyvsp[0].element), (COMMAND *)NULL); }
+! #line 2553 "y.tab.c"
break;
+! case 61: /* simple_command: simple_command simple_command_element */ +! #line 784 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = make_simple_command ((yyvsp[0].element), (yyvsp[-1].command)); }
+! #line 2559 "y.tab.c"
break;
+! case 62: /* command: simple_command */ +! #line 788 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = clean_simple_command ((yyvsp[0].command)); }
+! #line 2565 "y.tab.c"
break;
+! case 63: /* command: shell_command */ +! #line 790 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = (yyvsp[0].command); }
+! #line 2571 "y.tab.c"
break;
+! case 64: /* command: shell_command redirection_list */ +! #line 792 "/usr/local/src/chet/src/bash/src/parse.y"
{
COMMAND *tc;
+*************** +*** 2569,2727 ****
(yyval.command) = (yyvsp[-1].command);
}
+! #line 2572 "y.tab.c"
break;
+! case 64: /* command: function_def */ +! #line 793 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = (yyvsp[0].command); }
+! #line 2578 "y.tab.c"
break;
+! case 65: /* command: coproc */ +! #line 795 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = (yyvsp[0].command); }
+! #line 2584 "y.tab.c"
break;
+! case 66: /* shell_command: for_command */ +! #line 799 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = (yyvsp[0].command); }
+! #line 2590 "y.tab.c"
break;
+! case 67: /* shell_command: case_command */ +! #line 801 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = (yyvsp[0].command); }
+! #line 2596 "y.tab.c"
break;
+! case 68: /* shell_command: WHILE compound_list DO compound_list DONE */ +! #line 803 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = make_while_command ((yyvsp[-3].command), (yyvsp[-1].command)); }
+! #line 2602 "y.tab.c"
break;
+! case 69: /* shell_command: UNTIL compound_list DO compound_list DONE */ +! #line 805 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = make_until_command ((yyvsp[-3].command), (yyvsp[-1].command)); }
+! #line 2608 "y.tab.c"
break;
+! case 70: /* shell_command: select_command */ +! #line 807 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = (yyvsp[0].command); }
+! #line 2614 "y.tab.c"
break;
+! case 71: /* shell_command: if_command */ +! #line 809 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = (yyvsp[0].command); }
+! #line 2620 "y.tab.c"
break;
+! case 72: /* shell_command: subshell */ +! #line 811 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = (yyvsp[0].command); }
+! #line 2626 "y.tab.c"
break;
+! case 73: /* shell_command: group_command */ +! #line 813 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = (yyvsp[0].command); }
+! #line 2632 "y.tab.c"
break;
+! case 74: /* shell_command: arith_command */ +! #line 815 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = (yyvsp[0].command); }
+! #line 2638 "y.tab.c"
break;
+! case 75: /* shell_command: cond_command */ +! #line 817 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = (yyvsp[0].command); }
+! #line 2644 "y.tab.c"
break;
+! case 76: /* shell_command: arith_for_command */ +! #line 819 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = (yyvsp[0].command); }
+! #line 2650 "y.tab.c"
break;
+! case 77: /* for_command: FOR WORD newline_list DO compound_list DONE */ +! #line 823 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_for_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
+! #line 2659 "y.tab.c"
break;
+! case 78: /* for_command: FOR WORD newline_list '{' compound_list '}' */ +! #line 828 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_for_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
+! #line 2668 "y.tab.c"
break;
+! case 79: /* for_command: FOR WORD ';' newline_list DO compound_list DONE */ +! #line 833 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_for_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
+! #line 2677 "y.tab.c"
break;
+! case 80: /* for_command: FOR WORD ';' newline_list '{' compound_list '}' */ +! #line 838 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_for_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
+! #line 2686 "y.tab.c"
break;
+! case 81: /* for_command: FOR WORD newline_list IN word_list list_terminator newline_list DO compound_list DONE */ +! #line 843 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_for_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
+! #line 2695 "y.tab.c"
break;
+! case 82: /* for_command: FOR WORD newline_list IN word_list list_terminator newline_list '{' compound_list '}' */ +! #line 848 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_for_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
+! #line 2704 "y.tab.c"
break;
+! case 83: /* for_command: FOR WORD newline_list IN list_terminator newline_list DO compound_list DONE */ +! #line 853 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_for_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
+! #line 2713 "y.tab.c"
break;
+! case 84: /* for_command: FOR WORD newline_list IN list_terminator newline_list '{' compound_list '}' */ +! #line 858 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_for_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
+! #line 2722 "y.tab.c"
break;
+! case 85: /* arith_for_command: FOR ARITH_FOR_EXPRS list_terminator newline_list DO compound_list DONE */ +! #line 865 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_arith_for_command ((yyvsp[-5].word_list), (yyvsp[-1].command), arith_for_lineno);
+--- 2588,2746 ----
(yyval.command) = (yyvsp[-1].command);
}
+! #line 2591 "y.tab.c"
break;
+! case 65: /* command: function_def */ +! #line 808 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = (yyvsp[0].command); }
+! #line 2597 "y.tab.c"
break;
+! case 66: /* command: coproc */ +! #line 810 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = (yyvsp[0].command); }
+! #line 2603 "y.tab.c"
break;
+! case 67: /* shell_command: for_command */ +! #line 814 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = (yyvsp[0].command); }
+! #line 2609 "y.tab.c"
break;
+! case 68: /* shell_command: case_command */ +! #line 816 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = (yyvsp[0].command); }
+! #line 2615 "y.tab.c"
break;
+! case 69: /* shell_command: WHILE compound_list DO compound_list DONE */ +! #line 818 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = make_while_command ((yyvsp[-3].command), (yyvsp[-1].command)); }
+! #line 2621 "y.tab.c"
break;
+! case 70: /* shell_command: UNTIL compound_list DO compound_list DONE */ +! #line 820 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = make_until_command ((yyvsp[-3].command), (yyvsp[-1].command)); }
+! #line 2627 "y.tab.c"
break;
+! case 71: /* shell_command: select_command */ +! #line 822 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = (yyvsp[0].command); }
+! #line 2633 "y.tab.c"
break;
+! case 72: /* shell_command: if_command */ +! #line 824 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = (yyvsp[0].command); }
+! #line 2639 "y.tab.c"
break;
+! case 73: /* shell_command: subshell */ +! #line 826 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = (yyvsp[0].command); }
+! #line 2645 "y.tab.c"
break;
+! case 74: /* shell_command: group_command */ +! #line 828 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = (yyvsp[0].command); }
+! #line 2651 "y.tab.c"
break;
+! case 75: /* shell_command: arith_command */ +! #line 830 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = (yyvsp[0].command); }
+! #line 2657 "y.tab.c"
break;
+! case 76: /* shell_command: cond_command */ +! #line 832 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = (yyvsp[0].command); }
+! #line 2663 "y.tab.c"
break;
+! case 77: /* shell_command: arith_for_command */ +! #line 834 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = (yyvsp[0].command); }
+! #line 2669 "y.tab.c"
break;
+! case 78: /* for_command: FOR WORD newline_list DO compound_list DONE */ +! #line 838 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_for_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
+! #line 2678 "y.tab.c"
break;
+! case 79: /* for_command: FOR WORD newline_list '{' compound_list '}' */ +! #line 843 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_for_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
+! #line 2687 "y.tab.c"
break;
+! case 80: /* for_command: FOR WORD ';' newline_list DO compound_list DONE */ +! #line 848 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_for_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
+! #line 2696 "y.tab.c"
break;
+! case 81: /* for_command: FOR WORD ';' newline_list '{' compound_list '}' */ +! #line 853 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_for_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
+! #line 2705 "y.tab.c"
break;
+! case 82: /* for_command: FOR WORD newline_list IN word_list list_terminator newline_list DO compound_list DONE */ +! #line 858 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_for_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
+! #line 2714 "y.tab.c"
break;
+! case 83: /* for_command: FOR WORD newline_list IN word_list list_terminator newline_list '{' compound_list '}' */ +! #line 863 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_for_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
+! #line 2723 "y.tab.c"
break;
+! case 84: /* for_command: FOR WORD newline_list IN list_terminator newline_list DO compound_list DONE */ +! #line 868 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_for_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
+! #line 2732 "y.tab.c"
break;
+! case 85: /* for_command: FOR WORD newline_list IN list_terminator newline_list '{' compound_list '}' */ +! #line 873 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_for_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
+! #line 2741 "y.tab.c"
break;
+! case 86: /* arith_for_command: FOR ARITH_FOR_EXPRS list_terminator newline_list DO compound_list DONE */ +! #line 880 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_arith_for_command ((yyvsp[-5].word_list), (yyvsp[-1].command), arith_for_lineno);
+*************** +*** 2729,2737 ****
if (word_top > 0) word_top--;
}
+! #line 2732 "y.tab.c"
break;
+! case 86: /* arith_for_command: FOR ARITH_FOR_EXPRS list_terminator newline_list '{' compound_list '}' */ +! #line 871 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_arith_for_command ((yyvsp[-5].word_list), (yyvsp[-1].command), arith_for_lineno);
+--- 2748,2756 ----
if (word_top > 0) word_top--;
}
+! #line 2751 "y.tab.c"
break;
+! case 87: /* arith_for_command: FOR ARITH_FOR_EXPRS list_terminator newline_list '{' compound_list '}' */ +! #line 886 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_arith_for_command ((yyvsp[-5].word_list), (yyvsp[-1].command), arith_for_lineno);
+*************** +*** 2739,2747 ****
if (word_top > 0) word_top--;
}
+! #line 2742 "y.tab.c"
break;
+! case 87: /* arith_for_command: FOR ARITH_FOR_EXPRS DO compound_list DONE */ +! #line 877 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_arith_for_command ((yyvsp[-3].word_list), (yyvsp[-1].command), arith_for_lineno);
+--- 2758,2766 ----
if (word_top > 0) word_top--;
}
+! #line 2761 "y.tab.c"
break;
+! case 88: /* arith_for_command: FOR ARITH_FOR_EXPRS DO compound_list DONE */ +! #line 892 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_arith_for_command ((yyvsp[-3].word_list), (yyvsp[-1].command), arith_for_lineno);
+*************** +*** 2749,2757 ****
if (word_top > 0) word_top--;
}
+! #line 2752 "y.tab.c"
break;
+! case 88: /* arith_for_command: FOR ARITH_FOR_EXPRS '{' compound_list '}' */ +! #line 883 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_arith_for_command ((yyvsp[-3].word_list), (yyvsp[-1].command), arith_for_lineno);
+--- 2768,2776 ----
if (word_top > 0) word_top--;
}
+! #line 2771 "y.tab.c"
break;
+! case 89: /* arith_for_command: FOR ARITH_FOR_EXPRS '{' compound_list '}' */ +! #line 898 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_arith_for_command ((yyvsp[-3].word_list), (yyvsp[-1].command), arith_for_lineno);
+*************** +*** 2759,2896 ****
if (word_top > 0) word_top--;
}
+! #line 2762 "y.tab.c"
break;
+! case 89: /* select_command: SELECT WORD newline_list DO compound_list DONE */ +! #line 891 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_select_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
+! #line 2771 "y.tab.c"
break;
+! case 90: /* select_command: SELECT WORD newline_list '{' compound_list '}' */ +! #line 896 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_select_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
+! #line 2780 "y.tab.c"
break;
+! case 91: /* select_command: SELECT WORD ';' newline_list DO compound_list DONE */ +! #line 901 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_select_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
+! #line 2789 "y.tab.c"
break;
+! case 92: /* select_command: SELECT WORD ';' newline_list '{' compound_list '}' */ +! #line 906 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_select_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
+! #line 2798 "y.tab.c"
break;
+! case 93: /* select_command: SELECT WORD newline_list IN word_list list_terminator newline_list DO compound_list DONE */ +! #line 911 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_select_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
+! #line 2807 "y.tab.c"
break;
+! case 94: /* select_command: SELECT WORD newline_list IN word_list list_terminator newline_list '{' compound_list '}' */ +! #line 916 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_select_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
+! #line 2816 "y.tab.c"
break;
+! case 95: /* select_command: SELECT WORD newline_list IN list_terminator newline_list DO compound_list DONE */ +! #line 921 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_select_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
+! #line 2825 "y.tab.c"
break;
+! case 96: /* select_command: SELECT WORD newline_list IN list_terminator newline_list '{' compound_list '}' */ +! #line 926 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_select_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
+! #line 2834 "y.tab.c"
break;
+! case 97: /* case_command: CASE WORD newline_list IN newline_list ESAC */ +! #line 933 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_case_command ((yyvsp[-4].word), (PATTERN_LIST *)NULL, word_lineno[word_top]);
if (word_top > 0) word_top--;
}
+! #line 2843 "y.tab.c"
break;
+! case 98: /* case_command: CASE WORD newline_list IN case_clause_sequence newline_list ESAC */ +! #line 938 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_case_command ((yyvsp[-5].word), (yyvsp[-2].pattern), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
+! #line 2852 "y.tab.c"
break;
+! case 99: /* case_command: CASE WORD newline_list IN case_clause ESAC */ +! #line 943 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_case_command ((yyvsp[-4].word), (yyvsp[-1].pattern), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
+! #line 2861 "y.tab.c"
break;
+! case 100: /* function_def: WORD '(' ')' newline_list function_body */ +! #line 950 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = make_function_def ((yyvsp[-4].word), (yyvsp[0].command), function_dstart, function_bstart); }
+! #line 2867 "y.tab.c"
break;
+! case 101: /* function_def: FUNCTION WORD '(' ')' newline_list function_body */ +! #line 952 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = make_function_def ((yyvsp[-4].word), (yyvsp[0].command), function_dstart, function_bstart); }
+! #line 2873 "y.tab.c"
break;
+! case 102: /* function_def: FUNCTION WORD function_body */ +! #line 954 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = make_function_def ((yyvsp[-1].word), (yyvsp[0].command), function_dstart, function_bstart); }
+! #line 2879 "y.tab.c"
break;
+! case 103: /* function_def: FUNCTION WORD '\n' newline_list function_body */ +! #line 956 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = make_function_def ((yyvsp[-3].word), (yyvsp[0].command), function_dstart, function_bstart); }
+! #line 2885 "y.tab.c"
break;
+! case 104: /* function_body: shell_command */ +! #line 960 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = (yyvsp[0].command); }
+! #line 2891 "y.tab.c"
break;
+! case 105: /* function_body: shell_command redirection_list */ +! #line 962 "/usr/local/src/chet/src/bash/src/parse.y"
{
COMMAND *tc;
+--- 2778,2915 ----
if (word_top > 0) word_top--;
}
+! #line 2781 "y.tab.c"
break;
+! case 90: /* select_command: SELECT WORD newline_list DO compound_list DONE */ +! #line 906 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_select_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
+! #line 2790 "y.tab.c"
break;
+! case 91: /* select_command: SELECT WORD newline_list '{' compound_list '}' */ +! #line 911 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_select_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
+! #line 2799 "y.tab.c"
break;
+! case 92: /* select_command: SELECT WORD ';' newline_list DO compound_list DONE */ +! #line 916 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_select_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
+! #line 2808 "y.tab.c"
break;
+! case 93: /* select_command: SELECT WORD ';' newline_list '{' compound_list '}' */ +! #line 921 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_select_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
+! #line 2817 "y.tab.c"
break;
+! case 94: /* select_command: SELECT WORD newline_list IN word_list list_terminator newline_list DO compound_list DONE */ +! #line 926 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_select_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
+! #line 2826 "y.tab.c"
break;
+! case 95: /* select_command: SELECT WORD newline_list IN word_list list_terminator newline_list '{' compound_list '}' */ +! #line 931 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_select_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
+! #line 2835 "y.tab.c"
break;
+! case 96: /* select_command: SELECT WORD newline_list IN list_terminator newline_list DO compound_list DONE */ +! #line 936 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_select_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
+! #line 2844 "y.tab.c"
break;
+! case 97: /* select_command: SELECT WORD newline_list IN list_terminator newline_list '{' compound_list '}' */ +! #line 941 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_select_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
+! #line 2853 "y.tab.c"
break;
+! case 98: /* case_command: CASE WORD newline_list IN newline_list ESAC */ +! #line 948 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_case_command ((yyvsp[-4].word), (PATTERN_LIST *)NULL, word_lineno[word_top]);
if (word_top > 0) word_top--;
}
+! #line 2862 "y.tab.c"
break;
+! case 99: /* case_command: CASE WORD newline_list IN case_clause_sequence newline_list ESAC */ +! #line 953 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_case_command ((yyvsp[-5].word), (yyvsp[-2].pattern), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
+! #line 2871 "y.tab.c"
break;
+! case 100: /* case_command: CASE WORD newline_list IN case_clause ESAC */ +! #line 958 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_case_command ((yyvsp[-4].word), (yyvsp[-1].pattern), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
+! #line 2880 "y.tab.c"
break;
+! case 101: /* function_def: WORD '(' ')' newline_list function_body */ +! #line 965 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = make_function_def ((yyvsp[-4].word), (yyvsp[0].command), function_dstart, function_bstart); }
+! #line 2886 "y.tab.c"
break;
+! case 102: /* function_def: FUNCTION WORD '(' ')' newline_list function_body */ +! #line 967 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = make_function_def ((yyvsp[-4].word), (yyvsp[0].command), function_dstart, function_bstart); }
+! #line 2892 "y.tab.c"
break;
+! case 103: /* function_def: FUNCTION WORD function_body */ +! #line 969 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = make_function_def ((yyvsp[-1].word), (yyvsp[0].command), function_dstart, function_bstart); }
+! #line 2898 "y.tab.c"
break;
+! case 104: /* function_def: FUNCTION WORD '\n' newline_list function_body */ +! #line 971 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = make_function_def ((yyvsp[-3].word), (yyvsp[0].command), function_dstart, function_bstart); }
+! #line 2904 "y.tab.c"
break;
+! case 105: /* function_body: shell_command */ +! #line 975 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = (yyvsp[0].command); }
+! #line 2910 "y.tab.c"
break;
+! case 106: /* function_body: shell_command redirection_list */ +! #line 977 "/usr/local/src/chet/src/bash/src/parse.y"
{
COMMAND *tc;
+*************** +*** 2921,2963 ****
(yyval.command) = (yyvsp[-1].command);
}
+! #line 2924 "y.tab.c"
break;
+! case 106: /* subshell: '(' compound_list ')' */ +! #line 993 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_subshell_command ((yyvsp[-1].command));
(yyval.command)->flags |= CMD_WANT_SUBSHELL;
}
+! #line 2933 "y.tab.c"
break;
+! case 107: /* comsub: DOLPAREN compound_list ')' */ +! #line 1000 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = (yyvsp[-1].command);
}
+! #line 2941 "y.tab.c"
break;
+! case 108: /* comsub: DOLPAREN newline_list ')' */ +! #line 1004 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = (COMMAND *)NULL;
}
+! #line 2949 "y.tab.c"
break;
+! case 109: /* coproc: COPROC shell_command */ +! #line 1010 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_coproc_command ("COPROC", (yyvsp[0].command));
(yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
}
+! #line 2958 "y.tab.c"
break;
+! case 110: /* coproc: COPROC shell_command redirection_list */ +! #line 1015 "/usr/local/src/chet/src/bash/src/parse.y"
{
COMMAND *tc;
+--- 2940,2982 ----
(yyval.command) = (yyvsp[-1].command);
}
+! #line 2943 "y.tab.c"
break;
+! case 107: /* subshell: '(' compound_list ')' */ +! #line 1008 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_subshell_command ((yyvsp[-1].command));
(yyval.command)->flags |= CMD_WANT_SUBSHELL;
}
+! #line 2952 "y.tab.c"
break;
+! case 108: /* comsub: DOLPAREN compound_list ')' */ +! #line 1015 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = (yyvsp[-1].command);
}
+! #line 2960 "y.tab.c"
break;
+! case 109: /* comsub: DOLPAREN newline_list ')' */ +! #line 1019 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = (COMMAND *)NULL;
}
+! #line 2968 "y.tab.c"
break;
+! case 110: /* coproc: COPROC shell_command */ +! #line 1025 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_coproc_command ("COPROC", (yyvsp[0].command));
(yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
}
+! #line 2977 "y.tab.c"
break;
+! case 111: /* coproc: COPROC shell_command redirection_list */ +! #line 1030 "/usr/local/src/chet/src/bash/src/parse.y"
{
COMMAND *tc;
+*************** +*** 2976,2993 ****
(yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
}
+! #line 2979 "y.tab.c"
break;
+! case 111: /* coproc: COPROC WORD shell_command */ +! #line 1032 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_coproc_command ((yyvsp[-1].word)->word, (yyvsp[0].command));
(yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
}
+! #line 2988 "y.tab.c"
break;
+! case 112: /* coproc: COPROC WORD shell_command redirection_list */ +! #line 1037 "/usr/local/src/chet/src/bash/src/parse.y"
{
COMMAND *tc;
+--- 2995,3012 ----
(yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
}
+! #line 2998 "y.tab.c"
break;
+! case 112: /* coproc: COPROC WORD shell_command */ +! #line 1047 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_coproc_command ((yyvsp[-1].word)->word, (yyvsp[0].command));
(yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
}
+! #line 3007 "y.tab.c"
break;
+! case 113: /* coproc: COPROC WORD shell_command redirection_list */ +! #line 1052 "/usr/local/src/chet/src/bash/src/parse.y"
{
COMMAND *tc;
+*************** +*** 3006,3155 ****
(yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
}
+! #line 3009 "y.tab.c"
break;
+! case 113: /* coproc: COPROC simple_command */ +! #line 1054 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_coproc_command ("COPROC", clean_simple_command ((yyvsp[0].command)));
(yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
}
+! #line 3018 "y.tab.c"
break;
+! case 114: /* if_command: IF compound_list THEN compound_list FI */ +! #line 1061 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = make_if_command ((yyvsp[-3].command), (yyvsp[-1].command), (COMMAND *)NULL); }
+! #line 3024 "y.tab.c"
break;
+! case 115: /* if_command: IF compound_list THEN compound_list ELSE compound_list FI */ +! #line 1063 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = make_if_command ((yyvsp[-5].command), (yyvsp[-3].command), (yyvsp[-1].command)); }
+! #line 3030 "y.tab.c"
break;
+! case 116: /* if_command: IF compound_list THEN compound_list elif_clause FI */ +! #line 1065 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = make_if_command ((yyvsp[-4].command), (yyvsp[-2].command), (yyvsp[-1].command)); }
+! #line 3036 "y.tab.c"
break;
+! case 117: /* group_command: '{' compound_list '}' */ +! #line 1070 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = make_group_command ((yyvsp[-1].command)); }
+! #line 3042 "y.tab.c"
break;
+! case 118: /* arith_command: ARITH_CMD */ +! #line 1074 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = make_arith_command ((yyvsp[0].word_list)); }
+! #line 3048 "y.tab.c"
break;
+! case 119: /* cond_command: COND_START COND_CMD COND_END */ +! #line 1078 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = (yyvsp[-1].command); }
+! #line 3054 "y.tab.c"
break;
+! case 120: /* elif_clause: ELIF compound_list THEN compound_list */ +! #line 1082 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = make_if_command ((yyvsp[-2].command), (yyvsp[0].command), (COMMAND *)NULL); }
+! #line 3060 "y.tab.c"
break;
+! case 121: /* elif_clause: ELIF compound_list THEN compound_list ELSE compound_list */ +! #line 1084 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = make_if_command ((yyvsp[-4].command), (yyvsp[-2].command), (yyvsp[0].command)); }
+! #line 3066 "y.tab.c"
break;
+! case 122: /* elif_clause: ELIF compound_list THEN compound_list elif_clause */ +! #line 1086 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = make_if_command ((yyvsp[-3].command), (yyvsp[-1].command), (yyvsp[0].command)); }
+! #line 3072 "y.tab.c"
break;
+! case 124: /* case_clause: case_clause_sequence pattern_list */ +! #line 1091 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyvsp[0].pattern)->next = (yyvsp[-1].pattern); (yyval.pattern) = (yyvsp[0].pattern); }
+! #line 3078 "y.tab.c"
break;
+! case 125: /* pattern_list: newline_list pattern ')' compound_list */ +! #line 1095 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (yyvsp[0].command)); }
+! #line 3084 "y.tab.c"
break;
+! case 126: /* pattern_list: newline_list pattern ')' newline_list */ +! #line 1097 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (COMMAND *)NULL); }
+! #line 3090 "y.tab.c"
break;
+! case 127: /* pattern_list: newline_list '(' pattern ')' compound_list */ +! #line 1099 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (yyvsp[0].command)); }
+! #line 3096 "y.tab.c"
break;
+! case 128: /* pattern_list: newline_list '(' pattern ')' newline_list */ +! #line 1101 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (COMMAND *)NULL); }
+! #line 3102 "y.tab.c"
break;
+! case 129: /* case_clause_sequence: pattern_list SEMI_SEMI */ +! #line 1105 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.pattern) = (yyvsp[-1].pattern); }
+! #line 3108 "y.tab.c"
break;
+! case 130: /* case_clause_sequence: case_clause_sequence pattern_list SEMI_SEMI */ +! #line 1107 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyvsp[-1].pattern)->next = (yyvsp[-2].pattern); (yyval.pattern) = (yyvsp[-1].pattern); }
+! #line 3114 "y.tab.c"
break;
+! case 131: /* case_clause_sequence: pattern_list SEMI_AND */ +! #line 1109 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyvsp[-1].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyval.pattern) = (yyvsp[-1].pattern); }
+! #line 3120 "y.tab.c"
break;
+! case 132: /* case_clause_sequence: case_clause_sequence pattern_list SEMI_AND */ +! #line 1111 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyvsp[-1].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyvsp[-1].pattern)->next = (yyvsp[-2].pattern); (yyval.pattern) = (yyvsp[-1].pattern); }
+! #line 3126 "y.tab.c"
break;
+! case 133: /* case_clause_sequence: pattern_list SEMI_SEMI_AND */ +! #line 1113 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyvsp[-1].pattern)->flags |= CASEPAT_TESTNEXT; (yyval.pattern) = (yyvsp[-1].pattern); }
+! #line 3132 "y.tab.c"
break;
+! case 134: /* case_clause_sequence: case_clause_sequence pattern_list SEMI_SEMI_AND */ +! #line 1115 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyvsp[-1].pattern)->flags |= CASEPAT_TESTNEXT; (yyvsp[-1].pattern)->next = (yyvsp[-2].pattern); (yyval.pattern) = (yyvsp[-1].pattern); }
+! #line 3138 "y.tab.c"
break;
+! case 135: /* pattern: WORD */ +! #line 1119 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.word_list) = make_word_list ((yyvsp[0].word), (WORD_LIST *)NULL); }
+! #line 3144 "y.tab.c"
break;
+! case 136: /* pattern: pattern '|' WORD */ +! #line 1121 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.word_list) = make_word_list ((yyvsp[0].word), (yyvsp[-2].word_list)); }
+! #line 3150 "y.tab.c"
break;
+! case 137: /* compound_list: newline_list list0 */ +! #line 1130 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = (yyvsp[0].command);
+--- 3025,3174 ----
(yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
}
+! #line 3028 "y.tab.c"
break;
+! case 114: /* coproc: COPROC simple_command */ +! #line 1069 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_coproc_command ("COPROC", clean_simple_command ((yyvsp[0].command)));
(yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
}
+! #line 3037 "y.tab.c"
break;
+! case 115: /* if_command: IF compound_list THEN compound_list FI */ +! #line 1076 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = make_if_command ((yyvsp[-3].command), (yyvsp[-1].command), (COMMAND *)NULL); }
+! #line 3043 "y.tab.c"
break;
+! case 116: /* if_command: IF compound_list THEN compound_list ELSE compound_list FI */ +! #line 1078 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = make_if_command ((yyvsp[-5].command), (yyvsp[-3].command), (yyvsp[-1].command)); }
+! #line 3049 "y.tab.c"
break;
+! case 117: /* if_command: IF compound_list THEN compound_list elif_clause FI */ +! #line 1080 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = make_if_command ((yyvsp[-4].command), (yyvsp[-2].command), (yyvsp[-1].command)); }
+! #line 3055 "y.tab.c"
break;
+! case 118: /* group_command: '{' compound_list '}' */ +! #line 1085 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = make_group_command ((yyvsp[-1].command)); }
+! #line 3061 "y.tab.c"
break;
+! case 119: /* arith_command: ARITH_CMD */ +! #line 1089 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = make_arith_command ((yyvsp[0].word_list)); }
+! #line 3067 "y.tab.c"
break;
+! case 120: /* cond_command: COND_START COND_CMD COND_END */ +! #line 1093 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = (yyvsp[-1].command); }
+! #line 3073 "y.tab.c"
break;
+! case 121: /* elif_clause: ELIF compound_list THEN compound_list */ +! #line 1097 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = make_if_command ((yyvsp[-2].command), (yyvsp[0].command), (COMMAND *)NULL); }
+! #line 3079 "y.tab.c"
break;
+! case 122: /* elif_clause: ELIF compound_list THEN compound_list ELSE compound_list */ +! #line 1099 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = make_if_command ((yyvsp[-4].command), (yyvsp[-2].command), (yyvsp[0].command)); }
+! #line 3085 "y.tab.c"
break;
+! case 123: /* elif_clause: ELIF compound_list THEN compound_list elif_clause */ +! #line 1101 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = make_if_command ((yyvsp[-3].command), (yyvsp[-1].command), (yyvsp[0].command)); }
+! #line 3091 "y.tab.c"
break;
+! case 125: /* case_clause: case_clause_sequence pattern_list */ +! #line 1106 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyvsp[0].pattern)->next = (yyvsp[-1].pattern); (yyval.pattern) = (yyvsp[0].pattern); }
+! #line 3097 "y.tab.c"
break;
+! case 126: /* pattern_list: newline_list pattern ')' compound_list */ +! #line 1110 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (yyvsp[0].command)); }
+! #line 3103 "y.tab.c"
break;
+! case 127: /* pattern_list: newline_list pattern ')' newline_list */ +! #line 1112 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (COMMAND *)NULL); }
+! #line 3109 "y.tab.c"
break;
+! case 128: /* pattern_list: newline_list '(' pattern ')' compound_list */ +! #line 1114 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (yyvsp[0].command)); }
+! #line 3115 "y.tab.c"
break;
+! case 129: /* pattern_list: newline_list '(' pattern ')' newline_list */ +! #line 1116 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (COMMAND *)NULL); }
+! #line 3121 "y.tab.c"
break;
+! case 130: /* case_clause_sequence: pattern_list SEMI_SEMI */ +! #line 1120 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.pattern) = (yyvsp[-1].pattern); }
+! #line 3127 "y.tab.c"
break;
+! case 131: /* case_clause_sequence: case_clause_sequence pattern_list SEMI_SEMI */ +! #line 1122 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyvsp[-1].pattern)->next = (yyvsp[-2].pattern); (yyval.pattern) = (yyvsp[-1].pattern); }
+! #line 3133 "y.tab.c"
break;
+! case 132: /* case_clause_sequence: pattern_list SEMI_AND */ +! #line 1124 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyvsp[-1].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyval.pattern) = (yyvsp[-1].pattern); }
+! #line 3139 "y.tab.c"
break;
+! case 133: /* case_clause_sequence: case_clause_sequence pattern_list SEMI_AND */ +! #line 1126 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyvsp[-1].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyvsp[-1].pattern)->next = (yyvsp[-2].pattern); (yyval.pattern) = (yyvsp[-1].pattern); }
+! #line 3145 "y.tab.c"
break;
+! case 134: /* case_clause_sequence: pattern_list SEMI_SEMI_AND */ +! #line 1128 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyvsp[-1].pattern)->flags |= CASEPAT_TESTNEXT; (yyval.pattern) = (yyvsp[-1].pattern); }
+! #line 3151 "y.tab.c"
break;
+! case 135: /* case_clause_sequence: case_clause_sequence pattern_list SEMI_SEMI_AND */ +! #line 1130 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyvsp[-1].pattern)->flags |= CASEPAT_TESTNEXT; (yyvsp[-1].pattern)->next = (yyvsp[-2].pattern); (yyval.pattern) = (yyvsp[-1].pattern); }
+! #line 3157 "y.tab.c"
break;
+! case 136: /* pattern: WORD */ +! #line 1134 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.word_list) = make_word_list ((yyvsp[0].word), (WORD_LIST *)NULL); }
+! #line 3163 "y.tab.c"
break;
+! case 137: /* pattern: pattern '|' WORD */ +! #line 1136 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.word_list) = make_word_list ((yyvsp[0].word), (yyvsp[-2].word_list)); }
+! #line 3169 "y.tab.c"
break;
+! case 138: /* compound_list: newline_list list0 */ +! #line 1145 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = (yyvsp[0].command);
+*************** +*** 3157,3173 ****
gather_here_documents ();
}
+! #line 3160 "y.tab.c"
break;
+! case 138: /* compound_list: newline_list list1 */ +! #line 1136 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = (yyvsp[0].command);
}
+! #line 3168 "y.tab.c"
break;
+! case 140: /* list0: list1 '&' newline_list */ +! #line 1143 "/usr/local/src/chet/src/bash/src/parse.y"
{
if ((yyvsp[-2].command)->type == cm_connection)
+--- 3176,3192 ----
gather_here_documents ();
}
+! #line 3179 "y.tab.c"
break;
+! case 139: /* compound_list: newline_list list1 */ +! #line 1151 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = (yyvsp[0].command);
}
+! #line 3187 "y.tab.c"
break;
+! case 141: /* list0: list1 '&' newline_list */ +! #line 1158 "/usr/local/src/chet/src/bash/src/parse.y"
{
if ((yyvsp[-2].command)->type == cm_connection)
+*************** +*** 3176,3196 ****
(yyval.command) = command_connect ((yyvsp[-2].command), (COMMAND *)NULL, '&');
}
+! #line 3179 "y.tab.c"
break;
+! case 142: /* list1: list1 AND_AND newline_list list1 */ +! #line 1154 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), AND_AND); }
+! #line 3185 "y.tab.c"
break;
+! case 143: /* list1: list1 OR_OR newline_list list1 */ +! #line 1156 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), OR_OR); }
+! #line 3191 "y.tab.c"
break;
+! case 144: /* list1: list1 '&' newline_list list1 */ +! #line 1158 "/usr/local/src/chet/src/bash/src/parse.y"
{
if ((yyvsp[-3].command)->type == cm_connection)
+--- 3195,3215 ----
(yyval.command) = command_connect ((yyvsp[-2].command), (COMMAND *)NULL, '&');
}
+! #line 3198 "y.tab.c"
break;
+! case 143: /* list1: list1 AND_AND newline_list list1 */ +! #line 1169 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), AND_AND); }
+! #line 3204 "y.tab.c"
break;
+! case 144: /* list1: list1 OR_OR newline_list list1 */ +! #line 1171 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), OR_OR); }
+! #line 3210 "y.tab.c"
break;
+! case 145: /* list1: list1 '&' newline_list list1 */ +! #line 1173 "/usr/local/src/chet/src/bash/src/parse.y"
{
if ((yyvsp[-3].command)->type == cm_connection)
+*************** +*** 3199,3213 ****
(yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), '&');
}
+! #line 3202 "y.tab.c"
break;
+! case 145: /* list1: list1 ';' newline_list list1 */ +! #line 1165 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), ';'); }
+! #line 3208 "y.tab.c"
break;
+! case 146: /* list1: list1 '\n' newline_list list1 */ +! #line 1167 "/usr/local/src/chet/src/bash/src/parse.y"
{
if (parser_state & PST_CMDSUBST)
+--- 3218,3232 ----
(yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), '&');
}
+! #line 3221 "y.tab.c"
break;
+! case 146: /* list1: list1 ';' newline_list list1 */ +! #line 1180 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), ';'); }
+! #line 3227 "y.tab.c"
break;
+! case 147: /* list1: list1 '\n' newline_list list1 */ +! #line 1182 "/usr/local/src/chet/src/bash/src/parse.y"
{
if (parser_state & PST_CMDSUBST)
+*************** +*** 3216,3248 ****
(yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), ';');
}
+! #line 3219 "y.tab.c"
break;
+! case 147: /* list1: pipeline_command */ +! #line 1174 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = (yyvsp[0].command); }
+! #line 3225 "y.tab.c"
break;
+! case 150: /* list_terminator: '\n' */ +! #line 1182 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.number) = '\n'; }
+! #line 3231 "y.tab.c"
break;
+! case 151: /* list_terminator: ';' */ +! #line 1184 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.number) = ';'; }
+! #line 3237 "y.tab.c"
break;
+! case 152: /* list_terminator: yacc_EOF */ +! #line 1186 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.number) = yacc_EOF; }
+! #line 3243 "y.tab.c"
break;
+! case 155: /* simple_list: simple_list1 */ +! #line 1200 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = (yyvsp[0].command);
+--- 3235,3267 ----
(yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), ';');
}
+! #line 3238 "y.tab.c"
break;
+! case 148: /* list1: pipeline_command */ +! #line 1189 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = (yyvsp[0].command); }
+! #line 3244 "y.tab.c"
break;
+! case 151: /* list_terminator: '\n' */ +! #line 1197 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.number) = '\n'; }
+! #line 3250 "y.tab.c"
break;
+! case 152: /* list_terminator: ';' */ +! #line 1199 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.number) = ';'; }
+! #line 3256 "y.tab.c"
break;
+! case 153: /* list_terminator: yacc_EOF */ +! #line 1201 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.number) = yacc_EOF; }
+! #line 3262 "y.tab.c"
break;
+! case 156: /* simple_list: simple_list1 */ +! #line 1215 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = (yyvsp[0].command);
+*************** +*** 3259,3267 ****
}
}
+! #line 3262 "y.tab.c"
break;
+! case 156: /* simple_list: simple_list1 '&' */ +! #line 1215 "/usr/local/src/chet/src/bash/src/parse.y"
{
if ((yyvsp[-1].command)->type == cm_connection)
+--- 3278,3286 ----
}
}
+! #line 3281 "y.tab.c"
break;
+! case 157: /* simple_list: simple_list1 '&' */ +! #line 1230 "/usr/local/src/chet/src/bash/src/parse.y"
{
if ((yyvsp[-1].command)->type == cm_connection)
+*************** +*** 3281,3289 ****
}
}
+! #line 3284 "y.tab.c"
break;
+! case 157: /* simple_list: simple_list1 ';' */ +! #line 1233 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = (yyvsp[-1].command);
+--- 3300,3308 ----
}
}
+! #line 3303 "y.tab.c"
break;
+! case 158: /* simple_list: simple_list1 ';' */ +! #line 1248 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = (yyvsp[-1].command);
+*************** +*** 3300,3320 ****
}
}
+! #line 3303 "y.tab.c"
break;
+! case 158: /* simple_list1: simple_list1 AND_AND newline_list simple_list1 */ +! #line 1250 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), AND_AND); }
+! #line 3309 "y.tab.c"
break;
+! case 159: /* simple_list1: simple_list1 OR_OR newline_list simple_list1 */ +! #line 1252 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), OR_OR); }
+! #line 3315 "y.tab.c"
break;
+! case 160: /* simple_list1: simple_list1 '&' simple_list1 */ +! #line 1254 "/usr/local/src/chet/src/bash/src/parse.y"
{
if ((yyvsp[-2].command)->type == cm_connection)
+--- 3319,3339 ----
}
}
+! #line 3322 "y.tab.c"
break;
+! case 159: /* simple_list1: simple_list1 AND_AND newline_list simple_list1 */ +! #line 1265 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), AND_AND); }
+! #line 3328 "y.tab.c"
break;
+! case 160: /* simple_list1: simple_list1 OR_OR newline_list simple_list1 */ +! #line 1267 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), OR_OR); }
+! #line 3334 "y.tab.c"
break;
+! case 161: /* simple_list1: simple_list1 '&' simple_list1 */ +! #line 1269 "/usr/local/src/chet/src/bash/src/parse.y"
{
if ((yyvsp[-2].command)->type == cm_connection)
+*************** +*** 3323,3349 ****
(yyval.command) = command_connect ((yyvsp[-2].command), (yyvsp[0].command), '&');
}
+! #line 3326 "y.tab.c"
break;
+! case 161: /* simple_list1: simple_list1 ';' simple_list1 */ +! #line 1261 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = command_connect ((yyvsp[-2].command), (yyvsp[0].command), ';'); }
+! #line 3332 "y.tab.c"
break;
+! case 162: /* simple_list1: pipeline_command */ +! #line 1264 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = (yyvsp[0].command); }
+! #line 3338 "y.tab.c"
break;
+! case 163: /* pipeline_command: pipeline */ +! #line 1268 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = (yyvsp[0].command); }
+! #line 3344 "y.tab.c"
break;
+! case 164: /* pipeline_command: BANG pipeline_command */ +! #line 1270 "/usr/local/src/chet/src/bash/src/parse.y"
{
if ((yyvsp[0].command))
+--- 3342,3368 ----
(yyval.command) = command_connect ((yyvsp[-2].command), (yyvsp[0].command), '&');
}
+! #line 3345 "y.tab.c"
break;
+! case 162: /* simple_list1: simple_list1 ';' simple_list1 */ +! #line 1276 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = command_connect ((yyvsp[-2].command), (yyvsp[0].command), ';'); }
+! #line 3351 "y.tab.c"
break;
+! case 163: /* simple_list1: pipeline_command */ +! #line 1279 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = (yyvsp[0].command); }
+! #line 3357 "y.tab.c"
break;
+! case 164: /* pipeline_command: pipeline */ +! #line 1283 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = (yyvsp[0].command); }
+! #line 3363 "y.tab.c"
break;
+! case 165: /* pipeline_command: BANG pipeline_command */ +! #line 1285 "/usr/local/src/chet/src/bash/src/parse.y"
{
if ((yyvsp[0].command))
+*************** +*** 3351,3359 ****
(yyval.command) = (yyvsp[0].command);
}
+! #line 3354 "y.tab.c"
break;
+! case 165: /* pipeline_command: timespec pipeline_command */ +! #line 1276 "/usr/local/src/chet/src/bash/src/parse.y"
{
if ((yyvsp[0].command))
+--- 3370,3378 ----
(yyval.command) = (yyvsp[0].command);
}
+! #line 3373 "y.tab.c"
break;
+! case 166: /* pipeline_command: timespec pipeline_command */ +! #line 1291 "/usr/local/src/chet/src/bash/src/parse.y"
{
if ((yyvsp[0].command))
+*************** +*** 3361,3369 ****
(yyval.command) = (yyvsp[0].command);
}
+! #line 3364 "y.tab.c"
break;
+! case 166: /* pipeline_command: timespec list_terminator */ +! #line 1282 "/usr/local/src/chet/src/bash/src/parse.y"
{
ELEMENT x;
+--- 3380,3388 ----
(yyval.command) = (yyvsp[0].command);
}
+! #line 3383 "y.tab.c"
break;
+! case 167: /* pipeline_command: timespec list_terminator */ +! #line 1297 "/usr/local/src/chet/src/bash/src/parse.y"
{
ELEMENT x;
+*************** +*** 3385,3393 ****
parser_state &= ~PST_REDIRLIST; /* make_simple_command sets this */
}
+! #line 3388 "y.tab.c"
break;
+! case 167: /* pipeline_command: BANG list_terminator */ +! #line 1302 "/usr/local/src/chet/src/bash/src/parse.y"
{
ELEMENT x;
+--- 3404,3412 ----
parser_state &= ~PST_REDIRLIST; /* make_simple_command sets this */
}
+! #line 3407 "y.tab.c"
break;
+! case 168: /* pipeline_command: BANG list_terminator */ +! #line 1317 "/usr/local/src/chet/src/bash/src/parse.y"
{
ELEMENT x;
+*************** +*** 3410,3424 ****
parser_state &= ~PST_REDIRLIST; /* make_simple_command sets this */
}
+! #line 3413 "y.tab.c"
break;
+! case 168: /* pipeline: pipeline '|' newline_list pipeline */ +! #line 1325 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), '|'); }
+! #line 3419 "y.tab.c"
break;
+! case 169: /* pipeline: pipeline BAR_AND newline_list pipeline */ +! #line 1327 "/usr/local/src/chet/src/bash/src/parse.y"
{
/* Make cmd1 |& cmd2 equivalent to cmd1 2>&1 | cmd2 */
+--- 3429,3443 ----
parser_state &= ~PST_REDIRLIST; /* make_simple_command sets this */
}
+! #line 3432 "y.tab.c"
break;
+! case 169: /* pipeline: pipeline '|' newline_list pipeline */ +! #line 1340 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), '|'); }
+! #line 3438 "y.tab.c"
break;
+! case 170: /* pipeline: pipeline BAR_AND newline_list pipeline */ +! #line 1342 "/usr/local/src/chet/src/bash/src/parse.y"
{
/* Make cmd1 |& cmd2 equivalent to cmd1 2>&1 | cmd2 */
+*************** +*** 3443,3481 ****
(yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), '|');
}
+! #line 3446 "y.tab.c"
break;
+! case 170: /* pipeline: command */ +! #line 1350 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = (yyvsp[0].command); }
+! #line 3452 "y.tab.c"
break;
+! case 171: /* timespec: TIME */ +! #line 1354 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.number) = CMD_TIME_PIPELINE; }
+! #line 3458 "y.tab.c"
break;
+! case 172: /* timespec: TIME TIMEOPT */ +! #line 1356 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
+! #line 3464 "y.tab.c"
break;
+! case 173: /* timespec: TIME TIMEIGN */ +! #line 1358 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
+! #line 3470 "y.tab.c"
break;
+! case 174: /* timespec: TIME TIMEOPT TIMEIGN */ +! #line 1360 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
+! #line 3476 "y.tab.c"
break;
+! #line 3480 "y.tab.c"
default: break;
+--- 3462,3500 ----
(yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), '|');
}
+! #line 3465 "y.tab.c"
break;
+! case 171: /* pipeline: command */ +! #line 1365 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = (yyvsp[0].command); }
+! #line 3471 "y.tab.c"
break;
+! case 172: /* timespec: TIME */ +! #line 1369 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.number) = CMD_TIME_PIPELINE; }
+! #line 3477 "y.tab.c"
break;
+! case 173: /* timespec: TIME TIMEOPT */ +! #line 1371 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
+! #line 3483 "y.tab.c"
break;
+! case 174: /* timespec: TIME TIMEIGN */ +! #line 1373 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
+! #line 3489 "y.tab.c"
break;
+! case 175: /* timespec: TIME TIMEOPT TIMEIGN */ +! #line 1375 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
+! #line 3495 "y.tab.c"
break;
+! #line 3499 "y.tab.c"
default: break;
+*************** +*** 3670,3674 ****
- }
+! #line 1362 "/usr/local/src/chet/src/bash/src/parse.y"
+--- 3689,3693 ----
- }
+! #line 1377 "/usr/local/src/chet/src/bash/src/parse.y"
+*************** +*** 5209,5215 ****
- if (current_token < 0)
- #if defined (YYERRCODE) && !defined (YYUNDEF)
+! current_token = YYERRCODE;
- #else
+! current_token = YYerror;
- #endif
+--- 5228,5234 ----
- if (current_token < 0)
- #if defined (YYERRCODE) && !defined (YYUNDEF)
+! current_token = EOF_Reached ? YYEOF : YYERRCODE;
- #else
+! current_token = EOF_Reached ? YYEOF : YYUNDEF;
- #endif
+*************** +*** 6006,6009 **** +--- 6026,6030 ----
parser_error (start_lineno, _("unexpected EOF while looking for matching `%c'"), close);
EOF_Reached = 1; /* XXX */
++ parser_state |= PST_NOERROR; /* avoid redundant error message */
return (&matched_pair_error);
- }
+*************** +*** 6468,6471 **** +--- 6487,6491 ----
/* yyparse() has already called yyerror() and reset_parser() */
++ parser_state |= PST_NOERROR;
return (&matched_pair_error);
}
+*** ../bash-5.2/patchlevel.h 2020-06-22 14:51:03.000000000 -0400 +--- patchlevel.h 2020-10-01 11:01:28.000000000 -0400 +*************** +*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
+! #define PATCHLEVEL 17
- #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
+! #define PATCHLEVEL 18
- #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash52-019 b/src/patches/bash/bash52-019 new file mode 100644 index 000000000..165a55e62 --- /dev/null +++ b/src/patches/bash/bash52-019 @@ -0,0 +1,66 @@
BASH PATCH REPORT
=================
+Bash-Release: 5.2 +Patch-ID: bash52-019
+Bug-Reported-by: Steffen Nurpmeso steffen@sdaoden.eu +Bug-Reference-ID: 20230116233547.2jFxL%steffen@sdaoden.eu +Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-bash/2023-01/msg00057.html
+Bug-Description:
+There are some cases where the shell reaped a background (asynchronous) job +and would incorrectly try to set the terminal's process group back to the +shell's. In these cases it never set the terminal process group to that +jobs's process group initially, so resetting it is incorrect.
+Patch (apply with `patch -p0'):
+*** ../bash-5.2-patched/jobs.c 2022-12-13 12:09:02.000000000 -0500 +--- jobs.c 2023-10-26 12:12:10.000000000 -0400 +*************** +*** 3078,3084 ****
subshell. Make sure subst.c:command_substitute uses the same
conditions to determine whether or not it should undo this and
+! give the terminal to pipeline_pgrp. */ +!
if ((flags & JWAIT_NOTERM) == 0 && running_in_background == 0 &&
(subshell_environment & (SUBSHELL_ASYNC|SUBSHELL_PIPE)) == 0)
- give_terminal_to (shell_pgrp, 0);
+--- 3036,3046 ----
subshell. Make sure subst.c:command_substitute uses the same
conditions to determine whether or not it should undo this and
+! give the terminal to pipeline_pgrp. We don't give the terminal +! back to shell_pgrp if an async job in the background exits because +! we never gave it to that job in the first place. An async job in +! the foreground is one we started in the background and foregrounded +! with `fg', and gave it the terminal. */
if ((flags & JWAIT_NOTERM) == 0 && running_in_background == 0 &&
++ (job == NO_JOB || IS_ASYNC (job) == 0 || IS_FOREGROUND (job)) &&
(subshell_environment & (SUBSHELL_ASYNC|SUBSHELL_PIPE)) == 0)
- give_terminal_to (shell_pgrp, 0);
+*************** +*** 3624,3627 **** +--- 3599,3603 ----
get_tty_state ();
save_stty = shell_tty_info;
++ jobs[job]->flags &= ~J_ASYNC; /* no longer async */
/* Give the terminal to this job. */
if (IS_JOBCONTROL (job))
+*** ../bash-5.2/patchlevel.h 2020-06-22 14:51:03.000000000 -0400 +--- patchlevel.h 2020-10-01 11:01:28.000000000 -0400 +*************** +*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
+! #define PATCHLEVEL 18
- #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
+! #define PATCHLEVEL 19
- #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash52-020 b/src/patches/bash/bash52-020 new file mode 100644 index 000000000..0e76741e9 --- /dev/null +++ b/src/patches/bash/bash52-020 @@ -0,0 +1,53 @@
BASH PATCH REPORT
=================
+Bash-Release: 5.2 +Patch-ID: bash52-020
+Bug-Reported-by: Dima Korobskiy dkroot2@gmail.com +Bug-Reference-ID: 16664c2d-40ec-df33-b932-83db06e39a82@gmail.com +Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-bash/2023-08/msg00125.html
+Bug-Description:
+The parser did not allow `time' to appear as the first reserved word in a +command substitution.
+Patch (apply with `patch -p0'):
+*** ../bash-5.2-patched/parse.y Tue Dec 13 12:53:21 2022 +--- parse.y Fri Sep 1 10:36:28 2023 +*************** +*** 3151,3154 **** +--- 3151,3155 ----
case TIMEOPT: /* time -p time pipeline */
case TIMEIGN: /* time -p -- ... */
++ case DOLPAREN:
return 1;
default:
+*** ../bash-5.2-patched/y.tab.c Tue Dec 13 12:53:21 2022 +--- y.tab.c Fri Sep 1 10:36:44 2023 +*************** +*** 5466,5469 **** +--- 5466,5470 ----
case TIMEOPT: /* time -p time pipeline */
case TIMEIGN: /* time -p -- ... */
++ case DOLPAREN:
return 1;
default:
+*** ../bash-5.2/patchlevel.h 2020-06-22 14:51:03.000000000 -0400 +--- patchlevel.h 2020-10-01 11:01:28.000000000 -0400 +*************** +*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
+! #define PATCHLEVEL 19
- #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
+! #define PATCHLEVEL 20
- #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash52-021 b/src/patches/bash/bash52-021 new file mode 100644 index 000000000..ade1fac01 --- /dev/null +++ b/src/patches/bash/bash52-021 @@ -0,0 +1,61 @@
BASH PATCH REPORT
=================
+Bash-Release: 5.2 +Patch-ID: bash52-021
+Bug-Reported-by: Norbert Lange nolange79@gmail.com +Bug-Reference-ID: CADYdroPZFdVZSL6KkhqkAPgKKopbsLQVSm7_TvLCwadL2=UAWw@mail.gmail.com +Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-bash/2022-12/msg00046.html
+Bug-Description:
+There is an off-by-one error that causes command substitutions to fail when +they appear in a word expansion inside a here-document.
+Patch (apply with `patch -p0'):
+*** ../bash-5.2-patched/subst.c 2022-12-13 12:08:58.000000000 -0500 +--- subst.c 2022-12-14 09:09:53.000000000 -0500 +*************** +*** 1694,1698 ****
CHECK_STRING_OVERRUN (i, si, slen, c);
+! tlen = si - i - 1;
RESIZE_MALLOCED_BUFFER (result, result_index, tlen + 4, result_size, 64);
result[result_index++] = c;
+--- 1699,1703 ----
CHECK_STRING_OVERRUN (i, si, slen, c);
+! tlen = si - i - 2;
RESIZE_MALLOCED_BUFFER (result, result_index, tlen + 4, result_size, 64);
result[result_index++] = c;
+*************** +*** 1714,1718 ****
CHECK_STRING_OVERRUN (i, si, slen, c);
+! tlen = si - i - 1;
RESIZE_MALLOCED_BUFFER (result, result_index, tlen + 4, result_size, 64);
result[result_index++] = c;
+--- 1719,1723 ----
CHECK_STRING_OVERRUN (i, si, slen, c);
+! tlen = si - i - 2;
RESIZE_MALLOCED_BUFFER (result, result_index, tlen + 4, result_size, 64);
result[result_index++] = c;
+*** ../bash-5.2/patchlevel.h 2020-06-22 14:51:03.000000000 -0400 +--- patchlevel.h 2020-10-01 11:01:28.000000000 -0400 +*************** +*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
+! #define PATCHLEVEL 20
- #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
+! #define PATCHLEVEL 21
- #endif /* _PATCHLEVEL_H_ */