diff options
43 files changed, 1986 insertions, 1684 deletions
@@ -1,3 +1,20 @@ +2015-04-28 Arnold D. Robbins <arnold@skeeve.com> + + * awkgram.y (yylex): Rework the bracket handling from zero. + Thanks to Michal Jaegermann for yet another test case. + + Unrelated: + + * eval.c (setup_frame): Restore call-by-value for $0. This was + necessitated by the changes on 2014-11-11 for conserving + memory use. Thanks to Andrew Schorr for the report and isolating + the cause of the problem. + +2015-04-27 Arnold D. Robbins <arnold@skeeve.com> + + * awkgram.y (yylex): Make change of Jan 7 for parsing regexps + work better. Thanks to Nelson Beebe. + 2015-04-26 Arnold D. Robbins <arnold@skeeve.com> * dfa.c: Sync with grep. @@ -15,6 +32,15 @@ 2015-04-16 Arnold D. Robbins <arnold@skeeve.com> + Let parameter names shadow the names of gawk additional built-ins. + Make it actually work. + + * awkgram.y (want_param_names): Now an enum, there are three states. + (grammar): Set states properly. + (yylex): Improve checking logic. + +2015-04-16 Arnold D. Robbins <arnold@skeeve.com> + * configure.ac: Updated by autoupdate. * configure, aclocal.m4: Regenerated. * io.c, main.c, profile.c: Removed use of RETSIGTYPE. @@ -34,6 +60,14 @@ * NEWS: Updated. +2015-04-15 Arnold D. Robbins <arnold@skeeve.com> + + Let parameter names shadow the names of gawk additional built-ins. + + * awkgram.y (want_param_names): New variable. + (yylex): Check it before returning a built-in token. + (grammar): Set and clear it in the right places. + 2015-04-14 Arnold D. Robbins <arnold@skeeve.com> * builtin.c (do_strftime): Restore checking for negative result and @@ -48,9 +82,23 @@ * builtin.c (call_sub): Fix for indirect gensub, 3 args now works. Unrelated: + + * builtin.c (do_sub): Improve some variable names for readability + and add / expand some comments. + + Unrelated: + * builtin.c (call_sub, call_match, call_split_func): Allow for regex to be Node_hardregex. +2015-04-14 Andrew J. Schorr <aschorr@telemetry-investments.com> + Arnold D. Robbins <arnold@skeeve.com> + + * builtin.c (do_sub): Make computations smarter; initial len + to malloc, test for final amount after all matches done and + need to copy in the final part of the original string. + + 2015-04-13 Arnold D. Robbins <arnold@skeeve.com> * regcomp.c (analyze): Prevent malloc(0). @@ -72,6 +120,15 @@ * Makefile.am (efence): Make this link again. Thanks to Michal Jaegermann for pointing out the problem. +2015-04-09 Andrew J. Schorr <aschorr@telemetry-investments.com> + + * awkgram.y (yyerror): Rationalize buffer size computations. Remove + old valgrind workarounds. + * debug.c (gprintf): Rationalize buffer size computations. + (serialize_subscript): Ditto. + * io.c (iop_finish): Rationalize buffer size computations. + * profile.c (pp_string): Correct space allocation computation. + 2015-04-08 John E. Malmberg <wb8tyw@qsl.net> * custom.h: VMS shares some code paths with ZOS_USS in @@ -485,6 +542,33 @@ * profile.c (pprint): Be sure to set ip2 in all paths through the code. Thanks to GCC 4.9 for the warning. +2014-12-18 Arnold D. Robbins <arnold@skeeve.com> + + * builtin.c (do_sub): Do not waste a byte at the end of a string. + +2014-12-14 Arnold D. Robbins <arnold@skeeve.com> + + * awkgram.y (yyerror): Do not waste a byte at the end of a string. + * builtin.c (do_match): Ditto. + * command.y (append_statement): Ditto. + * debug.c (gprintf, serialize): Ditto. + * field.c (set_FIELDWIDTHS): Ditto. + * io.c.c (grow_iop_buffer): Ditto. + * profile.c (pp_string, pp_group3): Ditto. + +2014-12-14 Andrew J. Schorr <aschorr@telemetry-investments.com> + + * array.c (concat_exp): Do not waste a byte at the end of a string. + * awkgram.y (common_exp): Ditto. + * builtin.c (do_substr): Ditto. + * eval.c (set_OFS): Ditto. + * field.c (rebuild_record): Ditto. + * gawkapi.h (r_make_string): Ditto. + * interpret.h (r_interpret): Ditto for Op_assign_concat. + * node.c (r_format_val, r_dupnode, make_str_node, str2wstr, wstr2str): + Ditto. + * re.c (make_regexp): Ditto. + 2014-12-20 Arnold D. Robbins <arnold@skeeve.com> Enable non-fatal output on per-file or global basis, @@ -414,7 +414,7 @@ concat_exp(int nargs, bool do_subsep) } len += (nargs - 1) * subseplen; - emalloc(str, char *, len + 2, "concat_exp"); + emalloc(str, char *, len + 1, "concat_exp"); r = args_array[nargs]; memcpy(str, r->stptr, r->stlen); @@ -129,6 +129,11 @@ static void check_comment(void); static bool at_seen = false; static bool want_source = false; static bool want_regexp = false; /* lexical scanning kludge */ +static enum { + FUNC_HEADER, + FUNC_BODY, + DONT_CHECK +} want_param_names = DONT_CHECK; /* ditto */ static char *in_function; /* parsing kludge */ static int rule = 0; @@ -202,7 +207,7 @@ extern double fmod(double x, double y); #define YYSTYPE INSTRUCTION * -#line 206 "awkgram.c" /* yacc.c:339 */ +#line 211 "awkgram.c" /* yacc.c:339 */ # ifndef YY_NULLPTR # if defined __cplusplus && 201103L <= __cplusplus @@ -358,7 +363,7 @@ int yyparse (void); /* Copy the second part of user declarations. */ -#line 362 "awkgram.c" /* yacc.c:358 */ +#line 367 "awkgram.c" /* yacc.c:358 */ #ifdef short # undef short @@ -600,16 +605,16 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 1220 +#define YYLAST 1236 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 76 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 69 +#define YYNNTS 70 /* YYNRULES -- Number of rules. */ -#define YYNRULES 202 +#define YYNRULES 203 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 349 +#define YYNSTATES 350 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned by yylex, with out-of-bounds checking. */ @@ -660,27 +665,27 @@ static const yytype_uint8 yytranslate[] = /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 205, 205, 207, 212, 213, 217, 229, 234, 245, - 251, 257, 266, 274, 276, 281, 289, 291, 297, 305, - 315, 345, 359, 373, 381, 392, 404, 406, 408, 414, - 422, 423, 427, 462, 461, 495, 522, 524, 529, 535, - 563, 568, 569, 573, 575, 577, 584, 674, 716, 758, - 871, 878, 885, 895, 904, 913, 922, 933, 949, 948, - 972, 984, 984, 1082, 1082, 1115, 1145, 1151, 1152, 1158, - 1159, 1166, 1171, 1183, 1197, 1199, 1207, 1212, 1214, 1222, - 1231, 1233, 1242, 1243, 1251, 1256, 1256, 1267, 1271, 1279, - 1280, 1283, 1285, 1290, 1291, 1300, 1301, 1306, 1311, 1317, - 1319, 1321, 1328, 1329, 1335, 1336, 1341, 1343, 1348, 1350, - 1358, 1363, 1372, 1373, 1378, 1380, 1385, 1387, 1395, 1400, - 1408, 1409, 1414, 1421, 1425, 1427, 1429, 1442, 1459, 1469, - 1476, 1478, 1483, 1485, 1487, 1495, 1497, 1502, 1504, 1509, - 1511, 1513, 1563, 1565, 1567, 1569, 1571, 1573, 1575, 1577, - 1591, 1596, 1601, 1626, 1632, 1634, 1636, 1638, 1640, 1642, - 1647, 1651, 1683, 1685, 1691, 1697, 1710, 1711, 1712, 1717, - 1722, 1726, 1730, 1745, 1758, 1763, 1800, 1829, 1830, 1836, - 1837, 1842, 1844, 1851, 1868, 1885, 1887, 1894, 1899, 1907, - 1917, 1929, 1938, 1942, 1946, 1950, 1954, 1958, 1961, 1963, - 1967, 1971, 1975 + 0, 210, 210, 212, 217, 218, 222, 234, 239, 250, + 257, 263, 272, 280, 282, 287, 295, 297, 303, 311, + 321, 351, 365, 379, 387, 398, 410, 412, 414, 420, + 428, 429, 433, 433, 469, 468, 502, 529, 531, 536, + 542, 570, 575, 576, 580, 582, 584, 591, 681, 723, + 765, 878, 885, 892, 902, 911, 920, 929, 940, 956, + 955, 979, 991, 991, 1089, 1089, 1122, 1152, 1158, 1159, + 1165, 1166, 1173, 1178, 1190, 1204, 1206, 1214, 1219, 1221, + 1229, 1238, 1240, 1249, 1250, 1258, 1263, 1263, 1274, 1278, + 1286, 1287, 1290, 1292, 1297, 1298, 1307, 1308, 1313, 1318, + 1324, 1326, 1328, 1335, 1336, 1342, 1343, 1348, 1350, 1355, + 1357, 1365, 1370, 1379, 1380, 1385, 1387, 1392, 1394, 1402, + 1407, 1415, 1416, 1421, 1428, 1432, 1434, 1436, 1449, 1466, + 1476, 1483, 1485, 1490, 1492, 1494, 1502, 1504, 1509, 1511, + 1516, 1518, 1520, 1570, 1572, 1574, 1576, 1578, 1580, 1582, + 1584, 1598, 1603, 1608, 1633, 1639, 1641, 1643, 1645, 1647, + 1649, 1654, 1658, 1690, 1692, 1698, 1704, 1717, 1718, 1719, + 1724, 1729, 1733, 1737, 1752, 1765, 1770, 1807, 1836, 1837, + 1843, 1844, 1849, 1851, 1858, 1875, 1892, 1894, 1901, 1906, + 1914, 1924, 1936, 1945, 1949, 1953, 1957, 1961, 1965, 1968, + 1970, 1974, 1978, 1982 }; #endif @@ -703,10 +708,10 @@ static const char *const yytname[] = "'!'", "UNARY", "'^'", "'$'", "'('", "')'", "'@'", "'['", "']'", "'{'", "'}'", "';'", "$accept", "program", "rule", "source", "library", "pattern", "action", "func_name", "lex_builtin", "function_prologue", - "regexp", "$@1", "hard_regexp", "a_slash", "statements", - "statement_term", "statement", "non_compound_stmt", "$@2", "simple_stmt", - "$@3", "$@4", "opt_simple_stmt", "case_statements", "case_statement", - "case_value", "print", "print_expression_list", "output_redir", "$@5", + "$@1", "regexp", "$@2", "hard_regexp", "a_slash", "statements", + "statement_term", "statement", "non_compound_stmt", "$@3", "simple_stmt", + "$@4", "$@5", "opt_simple_stmt", "case_statements", "case_statement", + "case_value", "print", "print_expression_list", "output_redir", "$@6", "if_statement", "nls", "opt_nls", "input_redir", "opt_param_list", "param_list", "opt_exp", "opt_expression_list", "expression_list", "opt_fcall_expression_list", "fcall_expression_list", "fcall_exp", "exp", @@ -735,55 +740,55 @@ static const yytype_uint16 yytoknum[] = }; # endif -#define YYPACT_NINF -274 +#define YYPACT_NINF -275 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-274))) + (!!((Yystate) == (-275))) -#define YYTABLE_NINF -114 +#define YYTABLE_NINF -115 #define yytable_value_is_error(Yytable_value) \ - (!!((Yytable_value) == (-114))) + (!!((Yytable_value) == (-115))) /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ static const yytype_int16 yypact[] = { - -274, 360, -274, -274, -17, -23, -274, -274, -274, -274, - 128, -274, -274, 14, 14, 14, -11, 8, -274, -274, - -274, 1123, 1123, -274, 1123, 1150, 853, 151, -274, -20, - -10, -274, -274, 20, 868, 1049, 252, 276, -274, -274, - -274, -274, 264, 779, 853, -274, 9, -274, -274, -274, - -274, -274, 28, 45, -274, 10, -274, -274, -274, 779, - 779, 134, 75, 104, 75, 75, 1123, 127, -274, -274, - 15, 333, 44, 63, -274, 106, -274, -274, -274, 20, - -274, 106, -274, 157, -274, -274, 1076, 152, 1123, 1123, - 1123, 106, -274, -274, -274, 1123, 145, 252, 1123, 1123, - 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, - -274, 164, -274, -274, 172, 1123, -274, -274, -274, 97, - 73, -274, 1091, 36, 1091, -274, -274, -274, 26, 1123, - -274, 97, 97, 333, -274, -274, -274, 1123, 106, -274, - 146, 900, -274, -274, 16, -21, -274, 34, -21, 20, - -274, 583, -274, -274, -274, 173, -274, 209, 374, 1032, - 1123, 215, 14, 102, 102, 75, 75, 75, 75, 102, - 102, 75, 75, 75, 75, -274, -274, 1091, -274, 1076, - 826, -274, -274, -274, 97, 111, 252, -274, -274, 1091, - -274, 152, -274, 1091, -274, -274, -274, -274, -274, 120, - -274, 42, 126, 131, 106, 135, -21, -21, -274, -274, - -21, 1123, -21, 106, -274, -274, -21, -274, -274, 1091, - -274, 115, 106, 1123, 1091, -274, -274, -274, -274, 106, - -274, 43, -274, 1123, 1123, -274, 203, 1123, 1123, 699, - 933, -274, -274, -274, -21, 1091, -274, -274, -274, 630, - 583, 106, -274, -274, 1091, -274, -274, -274, 333, -21, - -23, 147, 333, 333, 199, -5, -274, 115, -274, 853, - 216, -274, 4, -274, -274, 106, -274, -274, 122, -274, - -274, -274, 106, 106, 167, 152, 106, 15, -274, -274, - 699, -274, -274, -10, 699, 1123, 97, 746, 146, 1123, - 218, -274, -274, 333, 106, 246, 106, 1049, 106, 144, - 106, 699, 106, 981, 699, -274, 272, 185, -274, 168, - -274, -274, 981, 97, -274, -274, -274, 236, 238, -274, - -274, 185, -274, 106, -274, 97, 106, -274, -274, 106, - -274, 106, 699, -274, 433, 699, -274, 508, -274 + -275, 376, -275, -275, -12, -9, -275, -275, -275, -275, + 171, -275, -275, 44, 44, 44, 5, 40, -275, -275, + -275, 1139, 1139, -275, 1139, 1166, 869, 27, -275, -18, + 2, -275, -275, 89, 884, 1065, 192, 214, -275, -275, + -275, -275, 248, 795, 869, -275, 10, -275, -275, -275, + -275, -275, 116, 82, -275, 115, -275, -275, -275, 795, + 795, 166, 107, 104, 107, 107, 1139, 117, -275, -275, + 15, 349, 23, 45, -275, 125, -275, -275, -275, 89, + -275, 125, -275, 178, -275, -275, 1092, 172, 1139, 1139, + 1139, 125, -275, -275, -275, 1139, 146, 192, 1139, 1139, + 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, + -275, 181, -275, -275, 173, 1139, -275, -275, -275, 128, + 73, -275, 1107, 14, 1107, -275, -275, -275, -275, 1139, + -275, 128, 128, 349, -275, -275, -275, 1139, 125, -275, + 152, 916, -275, -275, 16, 92, -275, 20, 92, 89, + -275, 599, -275, -275, -275, 148, -275, 124, 22, 1048, + 1139, 199, 44, 265, 265, 107, 107, 107, 107, 265, + 265, 107, 107, 107, 107, -275, -275, 1107, -275, 1092, + 842, -275, 43, 192, -275, -275, 1107, -275, 172, -275, + 1107, -275, -275, -275, -275, -275, 133, -275, 41, 144, + 145, 125, 147, 92, 92, -275, -275, 92, 1139, 92, + 125, -275, -275, 92, -275, -275, 1107, -275, 151, 125, + 1139, 1107, -275, -275, -275, -275, -275, -275, 128, 76, + -275, 1139, 1139, -275, 224, 1139, 1139, 715, 949, -275, + -275, -275, 92, 1107, -275, -275, -275, 646, 599, 125, + -275, -275, 1107, 125, -275, 49, 349, 92, -9, 160, + 349, 349, 206, 113, -275, 151, -275, 869, 225, -275, + 169, -275, -275, -275, -275, -275, 125, -275, -275, 11, + -275, -275, -275, 125, 125, 179, 172, 125, 15, -275, + -275, 715, -275, -275, 2, 715, 1139, 128, 762, 152, + 1139, 219, -275, -275, 349, 125, 275, 125, 1065, 125, + 112, 125, 715, 125, 997, 715, -275, 261, 205, -275, + 191, -275, -275, 997, 128, -275, -275, -275, 271, 272, + -275, -275, 205, -275, 125, -275, 128, 125, -275, -275, + 125, -275, 125, 715, -275, 449, 715, -275, 524, -275 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -791,65 +796,65 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_uint8 yydefact[] = { - 2, 0, 1, 6, 0, 188, 170, 171, 21, 22, - 0, 23, 24, 177, 0, 0, 0, 165, 5, 89, - 37, 0, 0, 36, 0, 0, 0, 0, 3, 0, - 0, 160, 33, 4, 19, 131, 139, 140, 142, 166, - 174, 190, 167, 0, 0, 185, 0, 189, 27, 26, - 30, 31, 0, 0, 28, 93, 178, 168, 169, 0, - 0, 0, 173, 167, 172, 161, 0, 194, 167, 108, - 0, 106, 0, 0, 175, 91, 200, 7, 8, 41, - 38, 91, 9, 0, 90, 135, 0, 0, 0, 0, - 0, 91, 136, 138, 137, 0, 0, 141, 0, 0, + 2, 0, 1, 6, 0, 189, 171, 172, 21, 22, + 0, 23, 24, 178, 0, 0, 0, 166, 5, 90, + 38, 0, 0, 37, 0, 0, 0, 0, 3, 0, + 0, 161, 34, 4, 19, 132, 140, 141, 143, 167, + 175, 191, 168, 0, 0, 186, 0, 190, 27, 26, + 30, 31, 0, 0, 28, 94, 179, 169, 170, 0, + 0, 0, 174, 168, 173, 162, 0, 195, 168, 109, + 0, 107, 0, 0, 176, 92, 201, 7, 8, 42, + 39, 92, 9, 0, 91, 136, 0, 0, 0, 0, + 0, 92, 137, 139, 138, 0, 0, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 133, 132, 150, 151, 0, 0, 116, 35, 121, 0, - 0, 114, 120, 0, 106, 187, 186, 29, 0, 0, - 149, 0, 0, 0, 192, 193, 191, 109, 91, 197, - 0, 0, 162, 14, 0, 0, 17, 0, 0, 92, - 195, 0, 42, 34, 126, 127, 128, 124, 125, 0, - 0, 129, 177, 147, 148, 144, 145, 146, 143, 158, - 159, 155, 156, 157, 154, 123, 134, 122, 176, 117, - 0, 184, 99, 97, 0, 0, 94, 163, 164, 110, - 202, 0, 111, 107, 13, 10, 16, 11, 40, 0, - 58, 0, 0, 0, 91, 0, 0, 0, 80, 81, - 0, 102, 0, 91, 39, 52, 0, 61, 45, 66, - 38, 198, 91, 0, 20, 153, 118, 119, 115, 91, - 100, 0, 152, 0, 102, 63, 0, 0, 0, 0, - 67, 53, 54, 55, 0, 103, 56, 196, 60, 0, - 0, 91, 199, 43, 130, 32, 101, 98, 0, 0, - 179, 0, 0, 0, 0, 188, 68, 0, 57, 0, - 84, 82, 0, 44, 25, 91, 59, 64, 0, 181, - 183, 65, 91, 91, 0, 0, 91, 0, 85, 62, - 0, 180, 182, 0, 0, 0, 0, 0, 83, 0, - 87, 69, 47, 0, 91, 0, 91, 86, 91, 0, - 91, 0, 91, 67, 0, 71, 0, 0, 70, 0, - 48, 49, 67, 0, 88, 74, 77, 0, 0, 78, - 79, 0, 201, 91, 46, 0, 91, 76, 75, 91, - 38, 91, 0, 38, 0, 0, 51, 0, 50 + 134, 133, 151, 152, 0, 0, 117, 36, 122, 0, + 0, 115, 121, 0, 107, 188, 187, 29, 32, 0, + 150, 0, 0, 0, 193, 194, 192, 110, 92, 198, + 0, 0, 163, 14, 0, 0, 17, 0, 0, 93, + 196, 0, 43, 35, 127, 128, 129, 125, 126, 0, + 0, 130, 178, 148, 149, 145, 146, 147, 144, 159, + 160, 156, 157, 158, 155, 124, 135, 123, 177, 118, + 0, 185, 0, 95, 164, 165, 111, 203, 0, 112, + 108, 13, 10, 16, 11, 41, 0, 59, 0, 0, + 0, 92, 0, 0, 0, 81, 82, 0, 103, 0, + 92, 40, 53, 0, 62, 46, 67, 39, 199, 92, + 0, 20, 154, 119, 120, 116, 100, 98, 0, 0, + 153, 0, 103, 64, 0, 0, 0, 0, 68, 54, + 55, 56, 0, 104, 57, 197, 61, 0, 0, 92, + 200, 44, 131, 92, 101, 0, 0, 0, 180, 0, + 0, 0, 0, 189, 69, 0, 58, 0, 85, 83, + 0, 45, 25, 33, 102, 99, 92, 60, 65, 0, + 182, 184, 66, 92, 92, 0, 0, 92, 0, 86, + 63, 0, 181, 183, 0, 0, 0, 0, 0, 84, + 0, 88, 70, 48, 0, 92, 0, 92, 87, 92, + 0, 92, 0, 92, 68, 0, 72, 0, 0, 71, + 0, 49, 50, 68, 0, 89, 75, 78, 0, 0, + 79, 80, 0, 202, 92, 47, 0, 92, 77, 76, + 92, 39, 92, 0, 39, 0, 0, 52, 0, 51 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -274, -274, -274, -274, -274, -274, 223, -274, -274, -274, - -70, -274, -82, -274, -196, -55, -19, -274, -274, -179, - -274, -274, -273, -274, -274, -274, -274, -274, -274, -274, - -274, 5, 47, -274, -274, -274, 21, -274, -41, 117, - -274, 2, -1, -274, -274, -274, -42, 17, -274, 233, - -274, 1, 100, -274, -274, -8, -37, -274, -274, -80, - -2, -274, -28, -242, -49, -274, -15, -72, -110 + -275, -275, -275, -275, -275, -275, 252, -275, -275, -275, + -275, -33, -275, -80, -275, -213, 100, -144, -275, -275, + -231, -275, -275, -274, -275, -275, -275, -275, -275, -275, + -275, -275, 7, 62, -275, -275, -275, 54, -275, -43, + 1, -275, -23, -1, -275, -275, -275, -13, 17, -275, + 263, -275, 8, 127, -275, -275, 21, -36, -275, -275, + -78, -2, -275, -27, -230, -65, -275, -15, -38, -94 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { -1, 1, 28, 145, 148, 29, 77, 53, 54, 30, - 31, 83, 118, 32, 151, 78, 214, 215, 234, 216, - 249, 260, 267, 309, 318, 331, 217, 270, 289, 299, - 218, 149, 150, 130, 184, 185, 244, 271, 70, 119, - 120, 121, 219, 115, 94, 95, 35, 36, 37, 38, - 39, 40, 55, 277, 278, 279, 45, 46, 47, 41, - 42, 136, 220, 221, 142, 251, 222, 333, 141 + 182, 31, 83, 118, 32, 151, 78, 211, 212, 232, + 213, 247, 258, 265, 310, 319, 332, 214, 268, 290, + 300, 215, 149, 150, 130, 228, 229, 242, 269, 70, + 119, 120, 121, 216, 115, 94, 95, 35, 36, 37, + 38, 39, 40, 55, 278, 279, 280, 45, 46, 47, + 41, 42, 136, 217, 218, 142, 249, 219, 334, 141 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -857,256 +862,258 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 34, 80, 80, 123, 154, 137, 33, 156, 273, 126, - 180, 56, 57, 58, 81, -105, 137, 194, 5, 63, - 63, 140, 63, 68, 250, 71, 125, 182, 74, 175, - 183, 19, 19, 63, 79, 196, 285, 137, 62, 64, - 323, 65, 122, 124, 256, 143, 235, 257, 44, 335, - 144, 43, 97, 75, 76, 76, -105, 59, 122, 122, - 138, 266, 74, 75, 146, 133, 44, 129, -12, 147, - 178, 138, 84, -105, 179, 231, 60, 334, 127, -105, - 44, 25, 187, 188, 139, 155, -15, 157, 158, 159, - 195, -12, 138, 197, 161, -95, 63, 63, 63, 63, - 63, 63, 63, 63, 63, 63, 63, 63, 181, -15, - 236, 232, 230, 128, 177, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 63, 152, 138, - 81, 48, 49, 81, 266, 229, 189, 4, 160, 291, - 193, 103, -113, 266, 344, 315, 186, 347, 112, 113, - 79, 241, 242, 79, 4, 243, 5, 246, 19, 224, - 56, 248, 153, 100, 101, 102, 139, 138, 103, 316, - 317, 134, 135, 117, 50, 51, 131, 132, 122, 122, - -96, 226, 228, 85, 162, 190, 176, 191, 233, 268, - 76, 81, 81, 44, 237, 81, 19, 81, 52, 238, - 72, 81, 73, 240, 276, 296, 252, 261, 272, 275, - 245, 79, 79, 282, 283, 79, 281, 79, -91, 85, - 264, 79, 254, 280, 86, -114, 284, 288, 287, 81, - 92, 93, 258, 245, 330, 295, 262, 263, 298, 308, - 332, 280, 213, 337, 81, 338, 329, 304, 124, 79, - 87, 239, 286, 82, 310, 259, 85, 307, 67, 339, - 247, 86, 225, 0, 79, 301, 92, 93, 71, 253, - 292, 300, -114, -114, 336, 302, 255, 110, 111, 325, - 326, 117, 306, 0, 0, 0, 341, 87, 88, 89, - 312, 0, 321, 0, 303, 324, 305, 63, 274, 0, - 90, 0, 0, 92, 93, 63, 0, 0, 112, 113, - 0, 98, 99, 100, 101, 102, 0, 114, 103, 0, - 0, 76, 290, 346, 97, 20, 348, 0, 0, 293, - 294, 327, 328, 297, 23, 104, 105, 106, 107, 108, - 0, 0, 109, 85, 0, 0, 0, 0, 86, 0, - 0, 311, 0, 313, 0, 314, 319, 320, 0, 322, - 2, 3, 0, 4, 5, 0, 0, 6, 7, 0, - 0, 0, 0, 0, 87, 88, 89, 0, 8, 9, - 340, 0, 0, 342, 85, 0, 343, 90, 345, 86, - 92, 93, 0, 0, 0, 0, 10, 11, 12, 13, - 0, 0, 139, 0, 14, 15, 16, 17, 18, 0, - 0, 0, 19, 20, 0, 87, 88, 0, 0, 21, - 22, 0, 23, 0, 24, 0, 0, 25, 26, 0, - 27, 92, 93, -18, 198, -18, 4, 5, 0, 0, - 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 199, 0, 200, 201, 202, -73, -73, - 203, 204, 205, 206, 207, 208, 209, 210, 211, 0, - 0, 0, 13, 212, 0, 0, 0, 14, 15, 16, - 17, 0, 0, 0, 0, -73, 20, 0, 0, 0, - 0, 0, 21, 22, 0, 23, 0, 24, 0, 0, - 25, 26, 0, 61, 0, 0, 75, -73, 76, 198, - 0, 4, 5, 0, 0, 6, 7, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 199, 0, - 200, 201, 202, -72, -72, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 0, 0, 0, 13, 212, 0, - 0, 0, 14, 15, 16, 17, 0, 0, 0, 0, - -72, 20, 0, 0, 0, 0, 0, 21, 22, 0, - 23, 0, 24, 0, 0, 25, 26, 0, 61, 0, - 0, 75, -72, 76, 198, 0, 4, 5, 0, 0, - 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 199, 0, 200, 201, 202, 0, 0, - 203, 204, 205, 206, 207, 208, 209, 210, 211, 0, - 0, 0, 13, 212, 0, 0, 0, 14, 15, 16, - 17, 69, 0, 4, 5, 0, 20, 6, 7, 0, - 0, -104, 21, 22, 0, 23, 0, 24, 0, 0, - 25, 26, 0, 61, 0, 0, 75, 213, 76, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, - 0, 0, 0, 0, 14, 15, 16, 17, 0, 0, - 0, 0, -104, 20, 0, 0, 0, 0, 0, 21, - 22, 0, 23, 0, 24, 0, 0, 25, 269, -104, - 61, 0, 4, 5, 0, -104, 6, 7, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 199, - 0, 200, 201, 202, 0, 0, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 0, 0, 0, 13, 212, - 0, 0, 0, 14, 15, 16, 17, 0, 0, 4, - 5, 0, 20, 6, 7, 0, 0, 0, 21, 22, + 34, 123, 80, 80, 248, 140, 154, 264, 33, 156, + 126, 56, 57, 58, 81, 137, 137, 191, 271, 63, + 63, 193, 63, 68, 143, 71, 180, 125, 292, 144, + 4, 175, 85, 63, 19, 74, 79, 86, 62, 64, + 324, 65, 122, 124, 226, 233, 146, 227, 5, 336, + 274, 147, 97, 275, 178, 75, 43, 76, 122, 122, + 131, 132, 44, 87, 88, 133, 184, 185, -12, 74, + 138, 138, -15, 59, 179, 75, 72, 254, 73, 92, + 93, 44, 44, 264, 139, 155, 181, 157, 158, 159, + 335, -12, 264, 262, 161, -15, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 60, 234, + 230, 25, -96, 316, 177, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 63, 345, 138, + 81, 348, 138, 81, 85, 255, 186, 317, 318, 86, + 190, 84, -114, 152, 19, -97, 183, 301, 112, 113, + 128, 303, 79, 160, 286, 79, 223, 225, 85, 221, + 56, 134, 135, 253, 19, 87, 127, 76, 322, 4, + 137, 325, 129, 103, 48, 49, 5, 19, 122, 122, + -106, 92, 93, 153, 44, 162, -92, 176, 81, 81, + 117, 276, 81, 188, 81, 283, 284, 139, 81, 347, + 187, 231, 349, 250, 270, 92, 93, 243, 297, -115, + 79, 79, 235, 236, 79, 238, 79, 50, 51, 252, + 79, -106, 281, 299, 288, 138, 76, 81, 259, 282, + 256, 243, 305, 285, 260, 261, 289, 331, -106, 311, + 309, 52, 81, 281, -106, 192, 124, 296, 194, 79, + 287, 98, 99, 100, 101, 102, -115, -115, 103, 337, + 333, 110, 111, 237, 79, 210, 71, 302, 326, 327, + 117, 342, 245, 104, 105, 106, 107, 108, 338, 339, + 109, 251, 82, 307, 330, 85, 257, 308, 67, 222, + 86, 313, 112, 113, 340, 304, 0, 306, 63, 0, + 293, 114, 0, 239, 240, 0, 63, 241, 0, 244, + 0, 272, 0, 246, 20, 273, 87, 88, 89, 0, + 328, 329, 0, 23, 0, 97, 100, 101, 102, 90, + 0, 103, 92, 93, 0, 0, 0, 0, 291, 0, + 0, 0, 266, 0, 0, 294, 295, 0, 0, 298, + 76, 0, 0, 0, 0, 0, 0, 277, 0, 85, + 0, 0, 0, 0, 86, 0, 0, 312, 0, 314, + 0, 315, 320, 321, 0, 323, 2, 3, 0, 4, + 5, 0, 0, 6, 7, 0, 0, 0, 0, 0, + 87, 88, 89, 0, 8, 9, 341, 0, 0, 343, + 0, 0, 344, 90, 346, 0, 92, 93, 0, 0, + 0, 0, 10, 11, 12, 13, 0, 0, 139, 0, + 14, 15, 16, 17, 18, 0, 0, 0, 19, 20, + 0, 0, 0, 0, 0, 21, 22, 0, 23, 0, + 24, 0, 0, 25, 26, 0, 27, 0, 0, -18, + 195, -18, 4, 5, 0, 0, 6, 7, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 196, + 0, 197, 198, 199, -74, -74, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 0, 0, 0, 13, 209, + 0, 0, 0, 14, 15, 16, 17, 0, 0, 0, + 0, -74, 20, 0, 0, 0, 0, 0, 21, 22, + 0, 23, 0, 24, 0, 0, 25, 26, 0, 61, + 0, 0, 75, -74, 76, 195, 0, 4, 5, 0, + 0, 6, 7, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 196, 0, 197, 198, 199, -73, + -73, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 0, 0, 0, 13, 209, 0, 0, 0, 14, 15, + 16, 17, 0, 0, 0, 0, -73, 20, 0, 0, + 0, 0, 0, 21, 22, 0, 23, 0, 24, 0, + 0, 25, 26, 0, 61, 0, 0, 75, -73, 76, + 195, 0, 4, 5, 0, 0, 6, 7, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 196, + 0, 197, 198, 199, 0, 0, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 0, 0, 0, 13, 209, + 0, 0, 0, 14, 15, 16, 17, 69, 0, 4, + 5, 0, 20, 6, 7, 0, 0, -105, 21, 22, + 0, 23, 0, 24, 0, 0, 25, 26, 0, 61, + 0, 0, 75, 210, 76, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, + 14, 15, 16, 17, 0, 0, 0, 0, -105, 20, + 0, 0, 0, 0, 0, 21, 22, 0, 23, 0, + 24, 0, 0, 25, 267, -105, 61, 0, 4, 5, + 0, -105, 6, 7, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 196, 0, 197, 198, 199, + 0, 0, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 0, 0, 0, 13, 209, 0, 0, 0, 14, + 15, 16, 17, 0, 0, 4, 5, 0, 20, 6, + 7, 0, 0, 0, 21, 22, 0, 23, 0, 24, + 0, 0, 25, 26, 0, 61, 0, 0, 75, 0, + 76, 0, 0, 0, 0, 0, 116, 0, 4, 5, + 0, 13, 6, 7, 117, 0, 14, 15, 16, 17, + 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, + 0, 21, 22, 0, 23, 0, 24, 0, 0, 25, + 26, 0, 61, 0, 13, 0, 0, 76, 0, 14, + 15, 16, 17, 224, 0, 4, 5, 0, 20, 6, + 7, 117, 0, 0, 21, 22, 0, 23, 0, 24, + 0, 0, 25, 26, -113, 61, 0, 0, 0, 0, + 69, 0, 4, 5, 0, 0, 6, 7, 0, 0, + 0, 13, 0, 0, 0, 0, 14, 15, 16, 17, + 0, 0, 0, 0, 85, 20, 0, 0, 0, 86, + 0, 21, 22, 0, 23, 0, 24, 0, 13, 25, + 26, 0, 61, 14, 15, 16, 17, 189, 0, 4, + 5, 0, 20, 6, 7, 87, 88, 89, 21, 22, + 0, 23, 0, 24, 0, 0, 25, 26, 90, 61, + 91, 92, 93, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 4, 263, 0, 13, 6, 7, 0, 0, + 14, 15, 16, 17, 0, 0, 0, 0, 0, 20, + 0, 0, 198, 0, 0, 21, 22, 0, 23, 0, + 24, 205, 206, 25, 26, 0, 61, 0, 13, 0, + 0, 0, 0, 14, 15, 16, 17, 0, 0, 0, + 4, 5, 20, 0, 6, 7, 0, 0, 21, 22, + 0, 23, 0, 24, 0, 0, 25, 26, 0, 61, + 198, 0, 0, 0, 0, 0, 0, 0, 0, 205, + 206, 0, 0, 0, 0, 0, 13, 0, 0, 0, + 0, 14, 15, 16, 17, 0, 0, 0, 0, 0, + 20, 0, 0, 0, 0, 0, 21, 22, 85, 23, + 0, 24, 0, 86, 25, 26, 0, 61, 4, 5, + 0, 0, 6, 7, 0, 0, 0, 96, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, + 88, 89, 0, 0, 0, 4, 5, 0, 0, 6, + 7, 117, 90, 220, 13, 92, 93, 0, 0, 14, + 15, 16, 17, 0, 0, 0, 0, 85, 20, 0, + 0, 0, 86, 0, 21, 22, 0, 23, 0, 24, + 0, 13, 25, 26, 0, 61, 14, 15, 16, 17, + 0, 0, 4, 5, 0, 20, 6, 7, 87, 88, + 89, 21, 22, 0, 23, 0, 24, 0, 0, 25, + 26, 90, 61, 0, 92, 93, 0, 0, 0, 4, + 5, 0, 0, 6, 7, 0, 0, 0, 13, 0, + 0, 0, 0, 14, 15, 16, 17, 0, 0, 0, + 0, 0, 20, 0, 0, 0, 0, 0, 21, 22, 0, 23, 0, 24, 0, 0, 25, 26, 0, 61, - 0, 0, 75, 0, 76, 0, 0, 0, 0, 0, - 116, 0, 4, 5, 0, 13, 6, 7, 117, 0, 14, 15, 16, 17, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 21, 22, 0, 23, 0, - 24, 0, 0, 25, 26, 0, 61, 0, 13, 0, - 0, 76, 0, 14, 15, 16, 17, 227, 0, 4, - 5, 0, 20, 6, 7, 117, 0, 0, 21, 22, - 0, 23, 0, 24, 0, 0, 25, 26, -112, 61, - 0, 0, 0, 0, 69, 0, 4, 5, 0, 0, - 6, 7, 0, 0, 0, 13, 0, 0, 0, 0, - 14, 15, 16, 17, 0, 0, 0, 0, 85, 20, - 0, 0, 0, 86, 0, 21, 22, 0, 23, 0, - 24, 0, 13, 25, 26, 0, 61, 14, 15, 16, - 17, 192, 0, 4, 5, 0, 20, 6, 7, 87, - 88, 89, 21, 22, 0, 23, 0, 24, 0, 0, - 25, 26, 90, 61, 91, 92, 93, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 4, 265, 0, 13, - 6, 7, 0, 0, 14, 15, 16, 17, 0, 0, - 0, 0, 0, 20, 0, 0, 201, 0, 0, 21, - 22, 0, 23, 0, 24, 208, 209, 25, 26, 0, - 61, 0, 13, 0, 0, 0, 0, 14, 15, 16, - 17, 0, 0, 0, 4, 5, 20, 0, 6, 7, - 0, 0, 21, 22, 0, 23, 0, 24, 0, 0, - 25, 26, 0, 61, 201, 0, 0, 0, 0, 0, - 0, 0, 0, 208, 209, 0, 0, 0, 0, 0, - 13, 0, 0, 0, 0, 14, 15, 16, 17, 0, - 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, - 21, 22, 85, 23, 0, 24, 0, 86, 25, 26, - 0, 61, 4, 5, 0, 0, 6, 7, 0, 0, - 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 87, 88, 89, 0, 0, 0, 4, - 5, 0, 0, 6, 7, 117, 90, 223, 13, 92, - 93, 0, 0, 14, 15, 16, 17, 0, 0, 0, - 0, 85, 20, 0, 0, 0, 86, 0, 21, 22, - 0, 23, 0, 24, 0, 13, 25, 26, 0, 61, - 14, 15, 16, 17, 0, 0, 4, 5, 0, 20, - 6, 7, 87, 88, 89, 21, 22, 0, 23, 0, - 24, 0, 0, 25, 26, 90, 61, 0, 92, 93, - 0, 0, 0, 4, 5, 0, 0, 6, 7, 0, - 0, 0, 13, 0, 0, 0, 0, 14, 15, 16, - 17, 0, 0, 0, 0, 0, 20, 0, 0, 0, - 0, 0, 21, 22, 0, 23, 0, 24, 0, 0, - 25, 26, 0, 61, 14, 15, 16, 17, 0, 0, - 0, 0, 0, 20, 0, 0, 0, 0, 0, 21, - 22, 0, 23, 0, 24, 0, 0, 25, 66, 0, - 61 + 24, 0, 0, 25, 66, 0, 61 }; static const yytype_int16 yycheck[] = { - 1, 29, 30, 44, 86, 1, 1, 87, 250, 46, - 120, 13, 14, 15, 29, 11, 1, 1, 4, 21, - 22, 70, 24, 25, 220, 26, 17, 1, 27, 111, - 4, 52, 52, 35, 29, 1, 41, 1, 21, 22, - 313, 24, 43, 44, 1, 1, 4, 4, 71, 322, - 6, 68, 35, 73, 75, 75, 52, 68, 59, 60, - 56, 240, 61, 73, 1, 66, 71, 57, 52, 6, - 119, 56, 52, 69, 1, 185, 68, 319, 50, 75, - 71, 67, 131, 132, 69, 86, 52, 88, 89, 90, - 145, 75, 56, 148, 95, 69, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 72, 75, - 68, 191, 1, 68, 115, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 129, 81, 56, - 145, 3, 4, 148, 313, 184, 137, 3, 91, 17, - 141, 66, 69, 322, 340, 1, 129, 343, 44, 45, - 145, 206, 207, 148, 3, 210, 4, 212, 52, 160, - 162, 216, 5, 61, 62, 63, 69, 56, 66, 25, - 26, 44, 45, 9, 46, 47, 59, 60, 179, 180, - 69, 179, 180, 10, 39, 138, 14, 41, 68, 244, - 75, 206, 207, 71, 68, 210, 52, 212, 70, 68, - 49, 216, 51, 68, 259, 285, 221, 4, 249, 258, - 211, 206, 207, 262, 263, 210, 69, 212, 74, 10, - 239, 216, 223, 260, 15, 10, 27, 11, 269, 244, - 57, 58, 233, 234, 316, 68, 237, 238, 287, 21, - 55, 278, 74, 7, 259, 7, 316, 296, 249, 244, - 41, 204, 267, 30, 303, 234, 10, 299, 25, 331, - 213, 15, 162, -1, 259, 293, 57, 58, 269, 222, - 278, 290, 57, 58, 323, 294, 229, 13, 14, 7, - 8, 9, 297, -1, -1, -1, 335, 41, 42, 43, - 305, -1, 311, -1, 295, 314, 297, 299, 251, -1, - 54, -1, -1, 57, 58, 307, -1, -1, 44, 45, - -1, 59, 60, 61, 62, 63, -1, 53, 66, -1, - -1, 75, 275, 342, 307, 53, 345, -1, -1, 282, - 283, 59, 60, 286, 62, 59, 60, 61, 62, 63, - -1, -1, 66, 10, -1, -1, -1, -1, 15, -1, - -1, 304, -1, 306, -1, 308, 309, 310, -1, 312, - 0, 1, -1, 3, 4, -1, -1, 7, 8, -1, - -1, -1, -1, -1, 41, 42, 43, -1, 18, 19, - 333, -1, -1, 336, 10, -1, 339, 54, 341, 15, - 57, 58, -1, -1, -1, -1, 36, 37, 38, 39, - -1, -1, 69, -1, 44, 45, 46, 47, 48, -1, - -1, -1, 52, 53, -1, 41, 42, -1, -1, 59, - 60, -1, 62, -1, 64, -1, -1, 67, 68, -1, - 70, 57, 58, 73, 1, 75, 3, 4, -1, -1, - 7, 8, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 20, -1, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, - -1, -1, 39, 40, -1, -1, -1, 44, 45, 46, - 47, -1, -1, -1, -1, 52, 53, -1, -1, -1, - -1, -1, 59, 60, -1, 62, -1, 64, -1, -1, - 67, 68, -1, 70, -1, -1, 73, 74, 75, 1, - -1, 3, 4, -1, -1, 7, 8, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 20, -1, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, -1, -1, -1, 39, 40, -1, - -1, -1, 44, 45, 46, 47, -1, -1, -1, -1, - 52, 53, -1, -1, -1, -1, -1, 59, 60, -1, - 62, -1, 64, -1, -1, 67, 68, -1, 70, -1, - -1, 73, 74, 75, 1, -1, 3, 4, -1, -1, - 7, 8, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 20, -1, 22, 23, 24, -1, -1, - 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, - -1, -1, 39, 40, -1, -1, -1, 44, 45, 46, - 47, 1, -1, 3, 4, -1, 53, 7, 8, -1, - -1, 11, 59, 60, -1, 62, -1, 64, -1, -1, - 67, 68, -1, 70, -1, -1, 73, 74, 75, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 39, - -1, -1, -1, -1, 44, 45, 46, 47, -1, -1, - -1, -1, 52, 53, -1, -1, -1, -1, -1, 59, - 60, -1, 62, -1, 64, -1, -1, 67, 68, 69, - 70, -1, 3, 4, -1, 75, 7, 8, -1, -1, + 1, 44, 29, 30, 217, 70, 86, 238, 1, 87, + 46, 13, 14, 15, 29, 1, 1, 1, 248, 21, + 22, 1, 24, 25, 1, 26, 120, 17, 17, 6, + 3, 111, 10, 35, 52, 27, 29, 15, 21, 22, + 314, 24, 43, 44, 1, 4, 1, 4, 4, 323, + 1, 6, 35, 4, 119, 73, 68, 75, 59, 60, + 59, 60, 71, 41, 42, 66, 131, 132, 52, 61, + 56, 56, 52, 68, 1, 73, 49, 1, 51, 57, + 58, 71, 71, 314, 69, 86, 72, 88, 89, 90, + 320, 75, 323, 237, 95, 75, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 68, 68, + 188, 67, 69, 1, 115, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 129, 341, 56, + 145, 344, 56, 148, 10, 229, 137, 25, 26, 15, + 141, 52, 69, 81, 52, 69, 129, 291, 44, 45, + 68, 295, 145, 91, 41, 148, 179, 180, 10, 160, + 162, 44, 45, 228, 52, 41, 50, 75, 312, 3, + 1, 315, 57, 66, 3, 4, 4, 52, 179, 180, + 11, 57, 58, 5, 71, 39, 74, 14, 203, 204, + 9, 256, 207, 41, 209, 260, 261, 69, 213, 343, + 138, 68, 346, 218, 247, 57, 58, 208, 286, 10, + 203, 204, 68, 68, 207, 68, 209, 46, 47, 220, + 213, 52, 258, 288, 267, 56, 75, 242, 4, 69, + 231, 232, 297, 27, 235, 236, 11, 317, 69, 304, + 21, 70, 257, 279, 75, 145, 247, 68, 148, 242, + 265, 59, 60, 61, 62, 63, 57, 58, 66, 324, + 55, 13, 14, 201, 257, 74, 267, 294, 7, 8, + 9, 336, 210, 59, 60, 61, 62, 63, 7, 7, + 66, 219, 30, 298, 317, 10, 232, 300, 25, 162, + 15, 306, 44, 45, 332, 296, -1, 298, 300, -1, + 279, 53, -1, 203, 204, -1, 308, 207, -1, 209, + -1, 249, -1, 213, 53, 253, 41, 42, 43, -1, + 59, 60, -1, 62, -1, 308, 61, 62, 63, 54, + -1, 66, 57, 58, -1, -1, -1, -1, 276, -1, + -1, -1, 242, -1, -1, 283, 284, -1, -1, 287, + 75, -1, -1, -1, -1, -1, -1, 257, -1, 10, + -1, -1, -1, -1, 15, -1, -1, 305, -1, 307, + -1, 309, 310, 311, -1, 313, 0, 1, -1, 3, + 4, -1, -1, 7, 8, -1, -1, -1, -1, -1, + 41, 42, 43, -1, 18, 19, 334, -1, -1, 337, + -1, -1, 340, 54, 342, -1, 57, 58, -1, -1, + -1, -1, 36, 37, 38, 39, -1, -1, 69, -1, + 44, 45, 46, 47, 48, -1, -1, -1, 52, 53, + -1, -1, -1, -1, -1, 59, 60, -1, 62, -1, + 64, -1, -1, 67, 68, -1, 70, -1, -1, 73, + 1, 75, 3, 4, -1, -1, 7, 8, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 20, + -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, -1, -1, -1, 39, 40, + -1, -1, -1, 44, 45, 46, 47, -1, -1, -1, + -1, 52, 53, -1, -1, -1, -1, -1, 59, 60, + -1, 62, -1, 64, -1, -1, 67, 68, -1, 70, + -1, -1, 73, 74, 75, 1, -1, 3, 4, -1, + -1, 7, 8, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 20, -1, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + -1, -1, -1, 39, 40, -1, -1, -1, 44, 45, + 46, 47, -1, -1, -1, -1, 52, 53, -1, -1, + -1, -1, -1, 59, 60, -1, 62, -1, 64, -1, + -1, 67, 68, -1, 70, -1, -1, 73, 74, 75, + 1, -1, 3, 4, -1, -1, 7, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 20, -1, 22, 23, 24, -1, -1, 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, -1, -1, 39, 40, - -1, -1, -1, 44, 45, 46, 47, -1, -1, 3, - 4, -1, 53, 7, 8, -1, -1, -1, 59, 60, + -1, -1, -1, 44, 45, 46, 47, 1, -1, 3, + 4, -1, 53, 7, 8, -1, -1, 11, 59, 60, + -1, 62, -1, 64, -1, -1, 67, 68, -1, 70, + -1, -1, 73, 74, 75, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 39, -1, -1, -1, -1, + 44, 45, 46, 47, -1, -1, -1, -1, 52, 53, + -1, -1, -1, -1, -1, 59, 60, -1, 62, -1, + 64, -1, -1, 67, 68, 69, 70, -1, 3, 4, + -1, 75, 7, 8, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 20, -1, 22, 23, 24, + -1, -1, 27, 28, 29, 30, 31, 32, 33, 34, + 35, -1, -1, -1, 39, 40, -1, -1, -1, 44, + 45, 46, 47, -1, -1, 3, 4, -1, 53, 7, + 8, -1, -1, -1, 59, 60, -1, 62, -1, 64, + -1, -1, 67, 68, -1, 70, -1, -1, 73, -1, + 75, -1, -1, -1, -1, -1, 1, -1, 3, 4, + -1, 39, 7, 8, 9, -1, 44, 45, 46, 47, + -1, -1, -1, -1, -1, 53, -1, -1, -1, -1, + -1, 59, 60, -1, 62, -1, 64, -1, -1, 67, + 68, -1, 70, -1, 39, -1, -1, 75, -1, 44, + 45, 46, 47, 1, -1, 3, 4, -1, 53, 7, + 8, 9, -1, -1, 59, 60, -1, 62, -1, 64, + -1, -1, 67, 68, 69, 70, -1, -1, -1, -1, + 1, -1, 3, 4, -1, -1, 7, 8, -1, -1, + -1, 39, -1, -1, -1, -1, 44, 45, 46, 47, + -1, -1, -1, -1, 10, 53, -1, -1, -1, 15, + -1, 59, 60, -1, 62, -1, 64, -1, 39, 67, + 68, -1, 70, 44, 45, 46, 47, 1, -1, 3, + 4, -1, 53, 7, 8, 41, 42, 43, 59, 60, + -1, 62, -1, 64, -1, -1, 67, 68, 54, 70, + 56, 57, 58, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 3, 4, -1, 39, 7, 8, -1, -1, + 44, 45, 46, 47, -1, -1, -1, -1, -1, 53, + -1, -1, 23, -1, -1, 59, 60, -1, 62, -1, + 64, 32, 33, 67, 68, -1, 70, -1, 39, -1, + -1, -1, -1, 44, 45, 46, 47, -1, -1, -1, + 3, 4, 53, -1, 7, 8, -1, -1, 59, 60, + -1, 62, -1, 64, -1, -1, 67, 68, -1, 70, + 23, -1, -1, -1, -1, -1, -1, -1, -1, 32, + 33, -1, -1, -1, -1, -1, 39, -1, -1, -1, + -1, 44, 45, 46, 47, -1, -1, -1, -1, -1, + 53, -1, -1, -1, -1, -1, 59, 60, 10, 62, + -1, 64, -1, 15, 67, 68, -1, 70, 3, 4, + -1, -1, 7, 8, -1, -1, -1, 12, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 41, + 42, 43, -1, -1, -1, 3, 4, -1, -1, 7, + 8, 9, 54, 55, 39, 57, 58, -1, -1, 44, + 45, 46, 47, -1, -1, -1, -1, 10, 53, -1, + -1, -1, 15, -1, 59, 60, -1, 62, -1, 64, + -1, 39, 67, 68, -1, 70, 44, 45, 46, 47, + -1, -1, 3, 4, -1, 53, 7, 8, 41, 42, + 43, 59, 60, -1, 62, -1, 64, -1, -1, 67, + 68, 54, 70, -1, 57, 58, -1, -1, -1, 3, + 4, -1, -1, 7, 8, -1, -1, -1, 39, -1, + -1, -1, -1, 44, 45, 46, 47, -1, -1, -1, + -1, -1, 53, -1, -1, -1, -1, -1, 59, 60, -1, 62, -1, 64, -1, -1, 67, 68, -1, 70, - -1, -1, 73, -1, 75, -1, -1, -1, -1, -1, - 1, -1, 3, 4, -1, 39, 7, 8, 9, -1, 44, 45, 46, 47, -1, -1, -1, -1, -1, 53, -1, -1, -1, -1, -1, 59, 60, -1, 62, -1, - 64, -1, -1, 67, 68, -1, 70, -1, 39, -1, - -1, 75, -1, 44, 45, 46, 47, 1, -1, 3, - 4, -1, 53, 7, 8, 9, -1, -1, 59, 60, - -1, 62, -1, 64, -1, -1, 67, 68, 69, 70, - -1, -1, -1, -1, 1, -1, 3, 4, -1, -1, - 7, 8, -1, -1, -1, 39, -1, -1, -1, -1, - 44, 45, 46, 47, -1, -1, -1, -1, 10, 53, - -1, -1, -1, 15, -1, 59, 60, -1, 62, -1, - 64, -1, 39, 67, 68, -1, 70, 44, 45, 46, - 47, 1, -1, 3, 4, -1, 53, 7, 8, 41, - 42, 43, 59, 60, -1, 62, -1, 64, -1, -1, - 67, 68, 54, 70, 56, 57, 58, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 3, 4, -1, 39, - 7, 8, -1, -1, 44, 45, 46, 47, -1, -1, - -1, -1, -1, 53, -1, -1, 23, -1, -1, 59, - 60, -1, 62, -1, 64, 32, 33, 67, 68, -1, - 70, -1, 39, -1, -1, -1, -1, 44, 45, 46, - 47, -1, -1, -1, 3, 4, 53, -1, 7, 8, - -1, -1, 59, 60, -1, 62, -1, 64, -1, -1, - 67, 68, -1, 70, 23, -1, -1, -1, -1, -1, - -1, -1, -1, 32, 33, -1, -1, -1, -1, -1, - 39, -1, -1, -1, -1, 44, 45, 46, 47, -1, - -1, -1, -1, -1, 53, -1, -1, -1, -1, -1, - 59, 60, 10, 62, -1, 64, -1, 15, 67, 68, - -1, 70, 3, 4, -1, -1, 7, 8, -1, -1, - -1, 12, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 41, 42, 43, -1, -1, -1, 3, - 4, -1, -1, 7, 8, 9, 54, 55, 39, 57, - 58, -1, -1, 44, 45, 46, 47, -1, -1, -1, - -1, 10, 53, -1, -1, -1, 15, -1, 59, 60, - -1, 62, -1, 64, -1, 39, 67, 68, -1, 70, - 44, 45, 46, 47, -1, -1, 3, 4, -1, 53, - 7, 8, 41, 42, 43, 59, 60, -1, 62, -1, - 64, -1, -1, 67, 68, 54, 70, -1, 57, 58, - -1, -1, -1, 3, 4, -1, -1, 7, 8, -1, - -1, -1, 39, -1, -1, -1, -1, 44, 45, 46, - 47, -1, -1, -1, -1, -1, 53, -1, -1, -1, - -1, -1, 59, 60, -1, 62, -1, 64, -1, -1, - 67, 68, -1, 70, 44, 45, 46, 47, -1, -1, - -1, -1, -1, 53, -1, -1, -1, -1, -1, 59, - 60, -1, 62, -1, 64, -1, -1, 67, 68, -1, - 70 + 64, -1, -1, 67, 68, -1, 70 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -1116,38 +1123,38 @@ static const yytype_uint8 yystos[] = 0, 77, 0, 1, 3, 4, 7, 8, 18, 19, 36, 37, 38, 39, 44, 45, 46, 47, 48, 52, 53, 59, 60, 62, 64, 67, 68, 70, 78, 81, - 85, 86, 89, 107, 118, 122, 123, 124, 125, 126, - 127, 135, 136, 68, 71, 132, 133, 134, 3, 4, - 46, 47, 70, 83, 84, 128, 136, 136, 136, 68, - 68, 70, 123, 136, 123, 123, 68, 125, 136, 1, - 114, 118, 49, 51, 127, 73, 75, 82, 91, 107, - 138, 142, 82, 87, 52, 10, 15, 41, 42, 43, - 54, 56, 57, 58, 120, 121, 12, 123, 59, 60, + 85, 87, 90, 108, 119, 123, 124, 125, 126, 127, + 128, 136, 137, 68, 71, 133, 134, 135, 3, 4, + 46, 47, 70, 83, 84, 129, 137, 137, 137, 68, + 68, 70, 124, 137, 124, 124, 68, 126, 137, 1, + 115, 119, 49, 51, 128, 73, 75, 82, 92, 108, + 139, 143, 82, 88, 52, 10, 15, 41, 42, 43, + 54, 56, 57, 58, 121, 122, 12, 124, 59, 60, 61, 62, 63, 66, 59, 60, 61, 62, 63, 66, - 13, 14, 44, 45, 53, 119, 1, 9, 88, 115, - 116, 117, 118, 114, 118, 17, 132, 50, 68, 57, - 109, 115, 115, 118, 44, 45, 137, 1, 56, 69, - 140, 144, 140, 1, 6, 79, 1, 6, 80, 107, - 108, 90, 108, 5, 88, 118, 135, 118, 118, 118, - 108, 118, 39, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 88, 14, 118, 140, 1, - 144, 72, 1, 4, 110, 111, 123, 140, 140, 118, - 108, 41, 1, 118, 1, 91, 1, 91, 1, 20, - 22, 23, 24, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 40, 74, 92, 93, 95, 102, 106, 118, - 138, 139, 142, 55, 118, 128, 117, 1, 117, 140, - 1, 144, 135, 68, 94, 4, 68, 68, 68, 108, - 68, 91, 91, 91, 112, 118, 91, 108, 91, 96, - 90, 141, 142, 108, 118, 108, 1, 4, 118, 112, - 97, 4, 118, 118, 92, 4, 95, 98, 91, 68, - 103, 113, 114, 139, 108, 140, 91, 129, 130, 131, - 132, 69, 140, 140, 27, 41, 142, 114, 11, 104, - 108, 17, 131, 108, 108, 68, 135, 108, 140, 105, - 92, 138, 92, 118, 140, 118, 142, 122, 21, 99, - 140, 108, 142, 108, 108, 1, 25, 26, 100, 108, - 108, 92, 108, 98, 92, 7, 8, 59, 60, 86, - 88, 101, 55, 143, 139, 98, 140, 7, 7, 143, - 108, 140, 108, 108, 90, 108, 92, 90, 92 + 13, 14, 44, 45, 53, 120, 1, 9, 89, 116, + 117, 118, 119, 115, 119, 17, 133, 50, 68, 57, + 110, 116, 116, 119, 44, 45, 138, 1, 56, 69, + 141, 145, 141, 1, 6, 79, 1, 6, 80, 108, + 109, 91, 109, 5, 89, 119, 136, 119, 119, 119, + 109, 119, 39, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 89, 14, 119, 141, 1, + 145, 72, 86, 124, 141, 141, 119, 109, 41, 1, + 119, 1, 92, 1, 92, 1, 20, 22, 23, 24, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 40, + 74, 93, 94, 96, 103, 107, 119, 139, 140, 143, + 55, 119, 129, 118, 1, 118, 1, 4, 111, 112, + 136, 68, 95, 4, 68, 68, 68, 109, 68, 92, + 92, 92, 113, 119, 92, 109, 92, 97, 91, 142, + 143, 109, 119, 141, 1, 145, 119, 113, 98, 4, + 119, 119, 93, 4, 96, 99, 92, 68, 104, 114, + 115, 140, 109, 109, 1, 4, 141, 92, 130, 131, + 132, 133, 69, 141, 141, 27, 41, 143, 115, 11, + 105, 109, 17, 132, 109, 109, 68, 136, 109, 141, + 106, 93, 139, 93, 119, 141, 119, 143, 123, 21, + 100, 141, 109, 143, 109, 109, 1, 25, 26, 101, + 109, 109, 93, 109, 99, 93, 7, 8, 59, 60, + 87, 89, 102, 55, 144, 140, 99, 141, 7, 7, + 144, 109, 141, 109, 109, 91, 109, 93, 91, 93 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ @@ -1156,24 +1163,24 @@ static const yytype_uint8 yyr1[] = 0, 76, 77, 77, 77, 77, 77, 78, 78, 78, 78, 78, 79, 79, 79, 80, 80, 80, 81, 81, 81, 81, 81, 81, 81, 82, 83, 83, 83, 83, - 84, 84, 85, 87, 86, 88, 89, 89, 90, 90, - 90, 91, 91, 92, 92, 92, 92, 92, 92, 92, - 92, 92, 92, 93, 93, 93, 93, 93, 94, 93, - 93, 96, 95, 97, 95, 95, 95, 98, 98, 99, - 99, 99, 100, 100, 101, 101, 101, 101, 101, 101, - 102, 102, 103, 103, 104, 105, 104, 106, 106, 107, - 107, 108, 108, 109, 109, 110, 110, 111, 111, 111, - 111, 111, 112, 112, 113, 113, 114, 114, 114, 114, - 114, 114, 115, 115, 116, 116, 116, 116, 116, 116, - 117, 117, 118, 118, 118, 118, 118, 118, 118, 118, - 118, 118, 119, 119, 119, 120, 120, 121, 121, 122, - 122, 122, 123, 123, 123, 123, 123, 123, 123, 123, + 84, 84, 86, 85, 88, 87, 89, 90, 90, 91, + 91, 91, 92, 92, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 94, 94, 94, 94, 94, 95, + 94, 94, 97, 96, 98, 96, 96, 96, 99, 99, + 100, 100, 100, 101, 101, 102, 102, 102, 102, 102, + 102, 103, 103, 104, 104, 105, 106, 105, 107, 107, + 108, 108, 109, 109, 110, 110, 111, 111, 112, 112, + 112, 112, 112, 113, 113, 114, 114, 115, 115, 115, + 115, 115, 115, 116, 116, 117, 117, 117, 117, 117, + 117, 118, 118, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 120, 120, 120, 121, 121, 122, 122, 123, 123, 123, 124, 124, 124, 124, 124, 124, 124, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 126, 126, 127, 128, 128, 129, - 129, 130, 130, 131, 132, 133, 133, 134, 135, 135, - 136, 136, 137, 137, 137, 138, 139, 140, 141, 141, - 142, 143, 144 + 124, 124, 124, 124, 125, 125, 125, 125, 125, 125, + 125, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 127, 127, 128, 129, 129, + 130, 130, 131, 131, 132, 133, 134, 134, 135, 136, + 136, 137, 137, 138, 138, 138, 139, 140, 141, 142, + 142, 143, 144, 145 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -1182,24 +1189,24 @@ static const yytype_uint8 yyr2[] = 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 4, 4, 1, 2, 1, 1, 2, 1, 0, 1, 4, 1, 1, 1, 1, 5, 1, 1, 1, 2, - 1, 1, 6, 0, 3, 1, 1, 1, 0, 2, - 2, 1, 2, 2, 3, 1, 9, 6, 8, 8, - 12, 11, 1, 2, 2, 2, 2, 3, 0, 4, - 2, 0, 4, 0, 4, 4, 1, 0, 1, 0, - 2, 2, 5, 4, 1, 2, 2, 1, 1, 1, - 1, 1, 1, 3, 0, 0, 3, 6, 9, 1, - 2, 0, 1, 0, 2, 0, 1, 1, 3, 1, - 2, 3, 0, 1, 0, 1, 1, 3, 1, 2, - 3, 3, 0, 1, 1, 3, 1, 2, 3, 3, - 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, - 5, 1, 1, 1, 2, 1, 1, 1, 1, 1, - 1, 2, 1, 3, 3, 3, 3, 3, 3, 3, - 2, 2, 5, 4, 3, 3, 3, 3, 3, 3, - 1, 2, 3, 4, 4, 1, 1, 1, 2, 2, - 1, 1, 2, 2, 1, 2, 4, 0, 1, 0, - 2, 1, 2, 1, 3, 1, 2, 2, 1, 2, - 1, 3, 1, 1, 0, 2, 2, 1, 0, 1, - 1, 1, 2 + 1, 1, 0, 7, 0, 3, 1, 1, 1, 0, + 2, 2, 1, 2, 2, 3, 1, 9, 6, 8, + 8, 12, 11, 1, 2, 2, 2, 2, 3, 0, + 4, 2, 0, 4, 0, 4, 4, 1, 0, 1, + 0, 2, 2, 5, 4, 1, 2, 2, 1, 1, + 1, 1, 1, 1, 3, 0, 0, 3, 6, 9, + 1, 2, 0, 1, 0, 2, 0, 1, 1, 3, + 1, 2, 3, 0, 1, 0, 1, 1, 3, 1, + 2, 3, 3, 0, 1, 1, 3, 1, 2, 3, + 3, 1, 1, 3, 3, 3, 3, 3, 3, 3, + 3, 5, 1, 1, 1, 2, 1, 1, 1, 1, + 1, 1, 2, 1, 3, 3, 3, 3, 3, 3, + 3, 2, 2, 5, 4, 3, 3, 3, 3, 3, + 3, 1, 2, 3, 4, 4, 1, 1, 1, 2, + 2, 1, 1, 2, 2, 1, 2, 4, 0, 1, + 0, 2, 1, 2, 1, 3, 1, 2, 2, 1, + 2, 1, 3, 1, 1, 0, 2, 2, 1, 0, + 1, 1, 1, 2 }; @@ -1876,24 +1883,24 @@ yyreduce: switch (yyn) { case 3: -#line 208 "awkgram.y" /* yacc.c:1646 */ +#line 213 "awkgram.y" /* yacc.c:1646 */ { rule = 0; yyerrok; } -#line 1885 "awkgram.c" /* yacc.c:1646 */ +#line 1892 "awkgram.c" /* yacc.c:1646 */ break; case 5: -#line 214 "awkgram.y" /* yacc.c:1646 */ +#line 219 "awkgram.y" /* yacc.c:1646 */ { next_sourcefile(); } -#line 1893 "awkgram.c" /* yacc.c:1646 */ +#line 1900 "awkgram.c" /* yacc.c:1646 */ break; case 6: -#line 218 "awkgram.y" /* yacc.c:1646 */ +#line 223 "awkgram.y" /* yacc.c:1646 */ { rule = 0; /* @@ -1902,20 +1909,20 @@ yyreduce: */ /* yyerrok; */ } -#line 1906 "awkgram.c" /* yacc.c:1646 */ +#line 1913 "awkgram.c" /* yacc.c:1646 */ break; case 7: -#line 230 "awkgram.y" /* yacc.c:1646 */ +#line 235 "awkgram.y" /* yacc.c:1646 */ { (void) append_rule((yyvsp[-1]), (yyvsp[0])); first_rule = false; } -#line 1915 "awkgram.c" /* yacc.c:1646 */ +#line 1922 "awkgram.c" /* yacc.c:1646 */ break; case 8: -#line 235 "awkgram.y" /* yacc.c:1646 */ +#line 240 "awkgram.y" /* yacc.c:1646 */ { if (rule != Rule) { msg(_("%s blocks must have an action part"), ruletab[rule]); @@ -1926,41 +1933,42 @@ yyreduce: } else /* pattern rule with non-empty pattern */ (void) append_rule((yyvsp[-1]), NULL); } -#line 1930 "awkgram.c" /* yacc.c:1646 */ +#line 1937 "awkgram.c" /* yacc.c:1646 */ break; case 9: -#line 246 "awkgram.y" /* yacc.c:1646 */ +#line 251 "awkgram.y" /* yacc.c:1646 */ { in_function = NULL; (void) mk_function((yyvsp[-1]), (yyvsp[0])); + want_param_names = DONT_CHECK; yyerrok; } -#line 1940 "awkgram.c" /* yacc.c:1646 */ +#line 1948 "awkgram.c" /* yacc.c:1646 */ break; case 10: -#line 252 "awkgram.y" /* yacc.c:1646 */ +#line 258 "awkgram.y" /* yacc.c:1646 */ { want_source = false; at_seen = false; yyerrok; } -#line 1950 "awkgram.c" /* yacc.c:1646 */ +#line 1958 "awkgram.c" /* yacc.c:1646 */ break; case 11: -#line 258 "awkgram.y" /* yacc.c:1646 */ +#line 264 "awkgram.y" /* yacc.c:1646 */ { want_source = false; at_seen = false; yyerrok; } -#line 1960 "awkgram.c" /* yacc.c:1646 */ +#line 1968 "awkgram.c" /* yacc.c:1646 */ break; case 12: -#line 267 "awkgram.y" /* yacc.c:1646 */ +#line 273 "awkgram.y" /* yacc.c:1646 */ { if (include_source((yyvsp[0])) < 0) YYABORT; @@ -1968,23 +1976,23 @@ yyreduce: bcfree((yyvsp[0])); (yyval) = NULL; } -#line 1972 "awkgram.c" /* yacc.c:1646 */ +#line 1980 "awkgram.c" /* yacc.c:1646 */ break; case 13: -#line 275 "awkgram.y" /* yacc.c:1646 */ +#line 281 "awkgram.y" /* yacc.c:1646 */ { (yyval) = NULL; } -#line 1978 "awkgram.c" /* yacc.c:1646 */ +#line 1986 "awkgram.c" /* yacc.c:1646 */ break; case 14: -#line 277 "awkgram.y" /* yacc.c:1646 */ +#line 283 "awkgram.y" /* yacc.c:1646 */ { (yyval) = NULL; } -#line 1984 "awkgram.c" /* yacc.c:1646 */ +#line 1992 "awkgram.c" /* yacc.c:1646 */ break; case 15: -#line 282 "awkgram.y" /* yacc.c:1646 */ +#line 288 "awkgram.y" /* yacc.c:1646 */ { if (load_library((yyvsp[0])) < 0) YYABORT; @@ -1992,23 +2000,23 @@ yyreduce: bcfree((yyvsp[0])); (yyval) = NULL; } -#line 1996 "awkgram.c" /* yacc.c:1646 */ +#line 2004 "awkgram.c" /* yacc.c:1646 */ break; case 16: -#line 290 "awkgram.y" /* yacc.c:1646 */ +#line 296 "awkgram.y" /* yacc.c:1646 */ { (yyval) = NULL; } -#line 2002 "awkgram.c" /* yacc.c:1646 */ +#line 2010 "awkgram.c" /* yacc.c:1646 */ break; case 17: -#line 292 "awkgram.y" /* yacc.c:1646 */ +#line 298 "awkgram.y" /* yacc.c:1646 */ { (yyval) = NULL; } -#line 2008 "awkgram.c" /* yacc.c:1646 */ +#line 2016 "awkgram.c" /* yacc.c:1646 */ break; case 18: -#line 297 "awkgram.y" /* yacc.c:1646 */ +#line 303 "awkgram.y" /* yacc.c:1646 */ { rule = Rule; if (comment != NULL) { @@ -2017,11 +2025,11 @@ yyreduce: } else (yyval) = NULL; } -#line 2021 "awkgram.c" /* yacc.c:1646 */ +#line 2029 "awkgram.c" /* yacc.c:1646 */ break; case 19: -#line 306 "awkgram.y" /* yacc.c:1646 */ +#line 312 "awkgram.y" /* yacc.c:1646 */ { rule = Rule; if (comment != NULL) { @@ -2030,11 +2038,11 @@ yyreduce: } else (yyval) = (yyvsp[0]); } -#line 2034 "awkgram.c" /* yacc.c:1646 */ +#line 2042 "awkgram.c" /* yacc.c:1646 */ break; case 20: -#line 316 "awkgram.y" /* yacc.c:1646 */ +#line 322 "awkgram.y" /* yacc.c:1646 */ { INSTRUCTION *tp; @@ -2064,11 +2072,11 @@ yyreduce: (yyval) = list_append(list_merge((yyvsp[-3]), (yyvsp[0])), tp); rule = Rule; } -#line 2068 "awkgram.c" /* yacc.c:1646 */ +#line 2076 "awkgram.c" /* yacc.c:1646 */ break; case 21: -#line 346 "awkgram.y" /* yacc.c:1646 */ +#line 352 "awkgram.y" /* yacc.c:1646 */ { static int begin_seen = 0; @@ -2082,11 +2090,11 @@ yyreduce: check_comment(); (yyval) = (yyvsp[0]); } -#line 2086 "awkgram.c" /* yacc.c:1646 */ +#line 2094 "awkgram.c" /* yacc.c:1646 */ break; case 22: -#line 360 "awkgram.y" /* yacc.c:1646 */ +#line 366 "awkgram.y" /* yacc.c:1646 */ { static int end_seen = 0; @@ -2100,11 +2108,11 @@ yyreduce: check_comment(); (yyval) = (yyvsp[0]); } -#line 2104 "awkgram.c" /* yacc.c:1646 */ +#line 2112 "awkgram.c" /* yacc.c:1646 */ break; case 23: -#line 374 "awkgram.y" /* yacc.c:1646 */ +#line 380 "awkgram.y" /* yacc.c:1646 */ { func_first = false; (yyvsp[0])->in_rule = rule = BEGINFILE; @@ -2112,11 +2120,11 @@ yyreduce: check_comment(); (yyval) = (yyvsp[0]); } -#line 2116 "awkgram.c" /* yacc.c:1646 */ +#line 2124 "awkgram.c" /* yacc.c:1646 */ break; case 24: -#line 382 "awkgram.y" /* yacc.c:1646 */ +#line 388 "awkgram.y" /* yacc.c:1646 */ { func_first = false; (yyvsp[0])->in_rule = rule = ENDFILE; @@ -2124,11 +2132,11 @@ yyreduce: check_comment(); (yyval) = (yyvsp[0]); } -#line 2128 "awkgram.c" /* yacc.c:1646 */ +#line 2136 "awkgram.c" /* yacc.c:1646 */ break; case 25: -#line 393 "awkgram.y" /* yacc.c:1646 */ +#line 399 "awkgram.y" /* yacc.c:1646 */ { INSTRUCTION *ip; if ((yyvsp[-3]) == NULL) @@ -2137,42 +2145,48 @@ yyreduce: ip = (yyvsp[-3]); (yyval) = ip; } -#line 2141 "awkgram.c" /* yacc.c:1646 */ +#line 2149 "awkgram.c" /* yacc.c:1646 */ break; case 26: -#line 405 "awkgram.y" /* yacc.c:1646 */ +#line 411 "awkgram.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[0]); } -#line 2147 "awkgram.c" /* yacc.c:1646 */ +#line 2155 "awkgram.c" /* yacc.c:1646 */ break; case 27: -#line 407 "awkgram.y" /* yacc.c:1646 */ +#line 413 "awkgram.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[0]); } -#line 2153 "awkgram.c" /* yacc.c:1646 */ +#line 2161 "awkgram.c" /* yacc.c:1646 */ break; case 28: -#line 409 "awkgram.y" /* yacc.c:1646 */ +#line 415 "awkgram.y" /* yacc.c:1646 */ { yyerror(_("`%s' is a built-in function, it cannot be redefined"), tokstart); YYABORT; } -#line 2163 "awkgram.c" /* yacc.c:1646 */ +#line 2171 "awkgram.c" /* yacc.c:1646 */ break; case 29: -#line 415 "awkgram.y" /* yacc.c:1646 */ +#line 421 "awkgram.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[0]); at_seen = false; } -#line 2172 "awkgram.c" /* yacc.c:1646 */ +#line 2180 "awkgram.c" /* yacc.c:1646 */ break; case 32: -#line 428 "awkgram.y" /* yacc.c:1646 */ +#line 433 "awkgram.y" /* yacc.c:1646 */ + { want_param_names = FUNC_HEADER; } +#line 2186 "awkgram.c" /* yacc.c:1646 */ + break; + + case 33: +#line 434 "awkgram.y" /* yacc.c:1646 */ { /* * treat any comments between BOF and the first function @@ -2190,26 +2204,27 @@ yyreduce: comment = NULL; } func_first = false; - (yyvsp[-5])->source_file = source; - if (install_function((yyvsp[-4])->lextok, (yyvsp[-5]), (yyvsp[-2])) < 0) + (yyvsp[-6])->source_file = source; + if (install_function((yyvsp[-5])->lextok, (yyvsp[-6]), (yyvsp[-2])) < 0) YYABORT; - in_function = (yyvsp[-4])->lextok; - (yyvsp[-4])->lextok = NULL; - bcfree((yyvsp[-4])); - /* $4 already free'd in install_function */ - (yyval) = (yyvsp[-5]); + in_function = (yyvsp[-5])->lextok; + (yyvsp[-5])->lextok = NULL; + bcfree((yyvsp[-5])); + /* $5 already free'd in install_function */ + (yyval) = (yyvsp[-6]); + want_param_names = FUNC_BODY; } -#line 2203 "awkgram.c" /* yacc.c:1646 */ +#line 2218 "awkgram.c" /* yacc.c:1646 */ break; - case 33: -#line 462 "awkgram.y" /* yacc.c:1646 */ + case 34: +#line 469 "awkgram.y" /* yacc.c:1646 */ { want_regexp = true; } -#line 2209 "awkgram.c" /* yacc.c:1646 */ +#line 2224 "awkgram.c" /* yacc.c:1646 */ break; - case 34: -#line 464 "awkgram.y" /* yacc.c:1646 */ + case 35: +#line 471 "awkgram.y" /* yacc.c:1646 */ { NODE *n, *exp; char *re; @@ -2238,11 +2253,11 @@ yyreduce: (yyval)->opcode = Op_match_rec; (yyval)->memory = n; } -#line 2242 "awkgram.c" /* yacc.c:1646 */ +#line 2257 "awkgram.c" /* yacc.c:1646 */ break; - case 35: -#line 496 "awkgram.y" /* yacc.c:1646 */ + case 36: +#line 503 "awkgram.y" /* yacc.c:1646 */ { NODE *n, *exp; char *re; @@ -2267,28 +2282,28 @@ yyreduce: #endif (yyval)->memory = n; } -#line 2271 "awkgram.c" /* yacc.c:1646 */ +#line 2286 "awkgram.c" /* yacc.c:1646 */ break; - case 36: -#line 523 "awkgram.y" /* yacc.c:1646 */ + case 37: +#line 530 "awkgram.y" /* yacc.c:1646 */ { bcfree((yyvsp[0])); } -#line 2277 "awkgram.c" /* yacc.c:1646 */ +#line 2292 "awkgram.c" /* yacc.c:1646 */ break; - case 38: -#line 529 "awkgram.y" /* yacc.c:1646 */ + case 39: +#line 536 "awkgram.y" /* yacc.c:1646 */ { if (comment != NULL) { (yyval) = list_create(comment); comment = NULL; } else (yyval) = NULL; } -#line 2288 "awkgram.c" /* yacc.c:1646 */ +#line 2303 "awkgram.c" /* yacc.c:1646 */ break; - case 39: -#line 536 "awkgram.y" /* yacc.c:1646 */ + case 40: +#line 543 "awkgram.y" /* yacc.c:1646 */ { if ((yyvsp[0]) == NULL) { if (comment == NULL) @@ -2316,40 +2331,40 @@ yyreduce: } yyerrok; } -#line 2320 "awkgram.c" /* yacc.c:1646 */ +#line 2335 "awkgram.c" /* yacc.c:1646 */ break; - case 40: -#line 564 "awkgram.y" /* yacc.c:1646 */ + case 41: +#line 571 "awkgram.y" /* yacc.c:1646 */ { (yyval) = NULL; } -#line 2326 "awkgram.c" /* yacc.c:1646 */ +#line 2341 "awkgram.c" /* yacc.c:1646 */ break; - case 43: -#line 574 "awkgram.y" /* yacc.c:1646 */ + case 44: +#line 581 "awkgram.y" /* yacc.c:1646 */ { (yyval) = NULL; } -#line 2332 "awkgram.c" /* yacc.c:1646 */ +#line 2347 "awkgram.c" /* yacc.c:1646 */ break; - case 44: -#line 576 "awkgram.y" /* yacc.c:1646 */ + case 45: +#line 583 "awkgram.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[-1]); } -#line 2338 "awkgram.c" /* yacc.c:1646 */ +#line 2353 "awkgram.c" /* yacc.c:1646 */ break; - case 45: -#line 578 "awkgram.y" /* yacc.c:1646 */ + case 46: +#line 585 "awkgram.y" /* yacc.c:1646 */ { if (do_pretty_print) (yyval) = list_prepend((yyvsp[0]), instruction(Op_exec_count)); else (yyval) = (yyvsp[0]); } -#line 2349 "awkgram.c" /* yacc.c:1646 */ +#line 2364 "awkgram.c" /* yacc.c:1646 */ break; - case 46: -#line 585 "awkgram.y" /* yacc.c:1646 */ + case 47: +#line 592 "awkgram.y" /* yacc.c:1646 */ { INSTRUCTION *dflt, *curr = NULL, *cexp, *cstmt; INSTRUCTION *ip, *nextc, *tbreak; @@ -2439,11 +2454,11 @@ yyreduce: break_allowed--; fix_break_continue(ip, tbreak, NULL); } -#line 2443 "awkgram.c" /* yacc.c:1646 */ +#line 2458 "awkgram.c" /* yacc.c:1646 */ break; - case 47: -#line 675 "awkgram.y" /* yacc.c:1646 */ + case 48: +#line 682 "awkgram.y" /* yacc.c:1646 */ { /* * ----------------- @@ -2485,11 +2500,11 @@ yyreduce: continue_allowed--; fix_break_continue(ip, tbreak, tcont); } -#line 2489 "awkgram.c" /* yacc.c:1646 */ +#line 2504 "awkgram.c" /* yacc.c:1646 */ break; - case 48: -#line 717 "awkgram.y" /* yacc.c:1646 */ + case 49: +#line 724 "awkgram.y" /* yacc.c:1646 */ { /* * ----------------- @@ -2531,11 +2546,11 @@ yyreduce: } /* else $1 and $4 are NULLs */ } -#line 2535 "awkgram.c" /* yacc.c:1646 */ +#line 2550 "awkgram.c" /* yacc.c:1646 */ break; - case 49: -#line 759 "awkgram.y" /* yacc.c:1646 */ + case 50: +#line 766 "awkgram.y" /* yacc.c:1646 */ { INSTRUCTION *ip; char *var_name = (yyvsp[-5])->lextok; @@ -2648,44 +2663,44 @@ regular_loop: break_allowed--; continue_allowed--; } -#line 2652 "awkgram.c" /* yacc.c:1646 */ +#line 2667 "awkgram.c" /* yacc.c:1646 */ break; - case 50: -#line 872 "awkgram.y" /* yacc.c:1646 */ + case 51: +#line 879 "awkgram.y" /* yacc.c:1646 */ { (yyval) = mk_for_loop((yyvsp[-11]), (yyvsp[-9]), (yyvsp[-6]), (yyvsp[-3]), (yyvsp[0])); break_allowed--; continue_allowed--; } -#line 2663 "awkgram.c" /* yacc.c:1646 */ +#line 2678 "awkgram.c" /* yacc.c:1646 */ break; - case 51: -#line 879 "awkgram.y" /* yacc.c:1646 */ + case 52: +#line 886 "awkgram.y" /* yacc.c:1646 */ { (yyval) = mk_for_loop((yyvsp[-10]), (yyvsp[-8]), (INSTRUCTION *) NULL, (yyvsp[-3]), (yyvsp[0])); break_allowed--; continue_allowed--; } -#line 2674 "awkgram.c" /* yacc.c:1646 */ +#line 2689 "awkgram.c" /* yacc.c:1646 */ break; - case 52: -#line 886 "awkgram.y" /* yacc.c:1646 */ + case 53: +#line 893 "awkgram.y" /* yacc.c:1646 */ { if (do_pretty_print) (yyval) = list_prepend((yyvsp[0]), instruction(Op_exec_count)); else (yyval) = (yyvsp[0]); } -#line 2685 "awkgram.c" /* yacc.c:1646 */ +#line 2700 "awkgram.c" /* yacc.c:1646 */ break; - case 53: -#line 896 "awkgram.y" /* yacc.c:1646 */ + case 54: +#line 903 "awkgram.y" /* yacc.c:1646 */ { if (! break_allowed) error_ln((yyvsp[-1])->source_line, @@ -2694,11 +2709,11 @@ regular_loop: (yyval) = list_create((yyvsp[-1])); } -#line 2698 "awkgram.c" /* yacc.c:1646 */ +#line 2713 "awkgram.c" /* yacc.c:1646 */ break; - case 54: -#line 905 "awkgram.y" /* yacc.c:1646 */ + case 55: +#line 912 "awkgram.y" /* yacc.c:1646 */ { if (! continue_allowed) error_ln((yyvsp[-1])->source_line, @@ -2707,11 +2722,11 @@ regular_loop: (yyval) = list_create((yyvsp[-1])); } -#line 2711 "awkgram.c" /* yacc.c:1646 */ +#line 2726 "awkgram.c" /* yacc.c:1646 */ break; - case 55: -#line 914 "awkgram.y" /* yacc.c:1646 */ + case 56: +#line 921 "awkgram.y" /* yacc.c:1646 */ { /* if inside function (rule = 0), resolve context at run-time */ if (rule && rule != Rule) @@ -2720,11 +2735,11 @@ regular_loop: (yyvsp[-1])->target_jmp = ip_rec; (yyval) = list_create((yyvsp[-1])); } -#line 2724 "awkgram.c" /* yacc.c:1646 */ +#line 2739 "awkgram.c" /* yacc.c:1646 */ break; - case 56: -#line 923 "awkgram.y" /* yacc.c:1646 */ + case 57: +#line 930 "awkgram.y" /* yacc.c:1646 */ { /* if inside function (rule = 0), resolve context at run-time */ if (rule == BEGIN || rule == END || rule == ENDFILE) @@ -2735,11 +2750,11 @@ regular_loop: (yyvsp[-1])->target_endfile = ip_endfile; (yyval) = list_create((yyvsp[-1])); } -#line 2739 "awkgram.c" /* yacc.c:1646 */ +#line 2754 "awkgram.c" /* yacc.c:1646 */ break; - case 57: -#line 934 "awkgram.y" /* yacc.c:1646 */ + case 58: +#line 941 "awkgram.y" /* yacc.c:1646 */ { /* Initialize the two possible jump targets, the actual target * is resolved at run-time. @@ -2754,20 +2769,20 @@ regular_loop: } else (yyval) = list_append((yyvsp[-1]), (yyvsp[-2])); } -#line 2758 "awkgram.c" /* yacc.c:1646 */ +#line 2773 "awkgram.c" /* yacc.c:1646 */ break; - case 58: -#line 949 "awkgram.y" /* yacc.c:1646 */ + case 59: +#line 956 "awkgram.y" /* yacc.c:1646 */ { if (! in_function) yyerror(_("`return' used outside function context")); } -#line 2767 "awkgram.c" /* yacc.c:1646 */ +#line 2782 "awkgram.c" /* yacc.c:1646 */ break; - case 59: -#line 952 "awkgram.y" /* yacc.c:1646 */ + case 60: +#line 959 "awkgram.y" /* yacc.c:1646 */ { if ((yyvsp[-1]) == NULL) { (yyval) = list_create((yyvsp[-3])); @@ -2788,17 +2803,17 @@ regular_loop: (yyval) = list_append((yyvsp[-1]), (yyvsp[-3])); } } -#line 2792 "awkgram.c" /* yacc.c:1646 */ +#line 2807 "awkgram.c" /* yacc.c:1646 */ break; - case 61: -#line 984 "awkgram.y" /* yacc.c:1646 */ + case 62: +#line 991 "awkgram.y" /* yacc.c:1646 */ { in_print = true; in_parens = 0; } -#line 2798 "awkgram.c" /* yacc.c:1646 */ +#line 2813 "awkgram.c" /* yacc.c:1646 */ break; - case 62: -#line 985 "awkgram.y" /* yacc.c:1646 */ + case 63: +#line 992 "awkgram.y" /* yacc.c:1646 */ { /* * Optimization: plain `print' has no expression list, so $3 is null. @@ -2895,17 +2910,17 @@ regular_print: } } } -#line 2899 "awkgram.c" /* yacc.c:1646 */ +#line 2914 "awkgram.c" /* yacc.c:1646 */ break; - case 63: -#line 1082 "awkgram.y" /* yacc.c:1646 */ + case 64: +#line 1089 "awkgram.y" /* yacc.c:1646 */ { sub_counter = 0; } -#line 2905 "awkgram.c" /* yacc.c:1646 */ +#line 2920 "awkgram.c" /* yacc.c:1646 */ break; - case 64: -#line 1083 "awkgram.y" /* yacc.c:1646 */ + case 65: +#line 1090 "awkgram.y" /* yacc.c:1646 */ { char *arr = (yyvsp[-2])->lextok; @@ -2938,11 +2953,11 @@ regular_print: (yyval) = list_append(list_append((yyvsp[0]), (yyvsp[-2])), (yyvsp[-3])); } } -#line 2942 "awkgram.c" /* yacc.c:1646 */ +#line 2957 "awkgram.c" /* yacc.c:1646 */ break; - case 65: -#line 1120 "awkgram.y" /* yacc.c:1646 */ + case 66: +#line 1127 "awkgram.y" /* yacc.c:1646 */ { static bool warned = false; char *arr = (yyvsp[-1])->lextok; @@ -2968,52 +2983,52 @@ regular_print: fatal(_("`delete' is not allowed with FUNCTAB")); } } -#line 2972 "awkgram.c" /* yacc.c:1646 */ +#line 2987 "awkgram.c" /* yacc.c:1646 */ break; - case 66: -#line 1146 "awkgram.y" /* yacc.c:1646 */ + case 67: +#line 1153 "awkgram.y" /* yacc.c:1646 */ { (yyval) = optimize_assignment((yyvsp[0])); } -#line 2978 "awkgram.c" /* yacc.c:1646 */ +#line 2993 "awkgram.c" /* yacc.c:1646 */ break; - case 67: -#line 1151 "awkgram.y" /* yacc.c:1646 */ + case 68: +#line 1158 "awkgram.y" /* yacc.c:1646 */ { (yyval) = NULL; } -#line 2984 "awkgram.c" /* yacc.c:1646 */ +#line 2999 "awkgram.c" /* yacc.c:1646 */ break; - case 68: -#line 1153 "awkgram.y" /* yacc.c:1646 */ + case 69: +#line 1160 "awkgram.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[0]); } -#line 2990 "awkgram.c" /* yacc.c:1646 */ +#line 3005 "awkgram.c" /* yacc.c:1646 */ break; - case 69: -#line 1158 "awkgram.y" /* yacc.c:1646 */ + case 70: +#line 1165 "awkgram.y" /* yacc.c:1646 */ { (yyval) = NULL; } -#line 2996 "awkgram.c" /* yacc.c:1646 */ +#line 3011 "awkgram.c" /* yacc.c:1646 */ break; - case 70: -#line 1160 "awkgram.y" /* yacc.c:1646 */ + case 71: +#line 1167 "awkgram.y" /* yacc.c:1646 */ { if ((yyvsp[-1]) == NULL) (yyval) = list_create((yyvsp[0])); else (yyval) = list_prepend((yyvsp[-1]), (yyvsp[0])); } -#line 3007 "awkgram.c" /* yacc.c:1646 */ +#line 3022 "awkgram.c" /* yacc.c:1646 */ break; - case 71: -#line 1167 "awkgram.y" /* yacc.c:1646 */ + case 72: +#line 1174 "awkgram.y" /* yacc.c:1646 */ { (yyval) = NULL; } -#line 3013 "awkgram.c" /* yacc.c:1646 */ +#line 3028 "awkgram.c" /* yacc.c:1646 */ break; - case 72: -#line 1172 "awkgram.y" /* yacc.c:1646 */ + case 73: +#line 1179 "awkgram.y" /* yacc.c:1646 */ { INSTRUCTION *casestmt = (yyvsp[0]); if ((yyvsp[0]) == NULL) @@ -3025,11 +3040,11 @@ regular_print: bcfree((yyvsp[-2])); (yyval) = (yyvsp[-4]); } -#line 3029 "awkgram.c" /* yacc.c:1646 */ +#line 3044 "awkgram.c" /* yacc.c:1646 */ break; - case 73: -#line 1184 "awkgram.y" /* yacc.c:1646 */ + case 74: +#line 1191 "awkgram.y" /* yacc.c:1646 */ { INSTRUCTION *casestmt = (yyvsp[0]); if ((yyvsp[0]) == NULL) @@ -3040,17 +3055,17 @@ regular_print: (yyvsp[-3])->case_stmt = casestmt; (yyval) = (yyvsp[-3]); } -#line 3044 "awkgram.c" /* yacc.c:1646 */ +#line 3059 "awkgram.c" /* yacc.c:1646 */ break; - case 74: -#line 1198 "awkgram.y" /* yacc.c:1646 */ + case 75: +#line 1205 "awkgram.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[0]); } -#line 3050 "awkgram.c" /* yacc.c:1646 */ +#line 3065 "awkgram.c" /* yacc.c:1646 */ break; - case 75: -#line 1200 "awkgram.y" /* yacc.c:1646 */ + case 76: +#line 1207 "awkgram.y" /* yacc.c:1646 */ { NODE *n = (yyvsp[0])->memory; (void) force_number(n); @@ -3058,26 +3073,26 @@ regular_print: bcfree((yyvsp[-1])); (yyval) = (yyvsp[0]); } -#line 3062 "awkgram.c" /* yacc.c:1646 */ +#line 3077 "awkgram.c" /* yacc.c:1646 */ break; - case 76: -#line 1208 "awkgram.y" /* yacc.c:1646 */ + case 77: +#line 1215 "awkgram.y" /* yacc.c:1646 */ { bcfree((yyvsp[-1])); (yyval) = (yyvsp[0]); } -#line 3071 "awkgram.c" /* yacc.c:1646 */ +#line 3086 "awkgram.c" /* yacc.c:1646 */ break; - case 77: -#line 1213 "awkgram.y" /* yacc.c:1646 */ + case 78: +#line 1220 "awkgram.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[0]); } -#line 3077 "awkgram.c" /* yacc.c:1646 */ +#line 3092 "awkgram.c" /* yacc.c:1646 */ break; - case 78: -#line 1215 "awkgram.y" /* yacc.c:1646 */ + case 79: +#line 1222 "awkgram.y" /* yacc.c:1646 */ { if ((yyvsp[0])->memory->type == Node_regex) (yyvsp[0])->opcode = Op_push_re; @@ -3085,57 +3100,57 @@ regular_print: (yyvsp[0])->opcode = Op_push; (yyval) = (yyvsp[0]); } -#line 3089 "awkgram.c" /* yacc.c:1646 */ +#line 3104 "awkgram.c" /* yacc.c:1646 */ break; - case 79: -#line 1223 "awkgram.y" /* yacc.c:1646 */ + case 80: +#line 1230 "awkgram.y" /* yacc.c:1646 */ { assert((yyvsp[0])->memory->type == Node_hardregex); (yyvsp[0])->opcode = Op_push_re; (yyval) = (yyvsp[0]); } -#line 3099 "awkgram.c" /* yacc.c:1646 */ +#line 3114 "awkgram.c" /* yacc.c:1646 */ break; - case 80: -#line 1232 "awkgram.y" /* yacc.c:1646 */ + case 81: +#line 1239 "awkgram.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[0]); } -#line 3105 "awkgram.c" /* yacc.c:1646 */ +#line 3120 "awkgram.c" /* yacc.c:1646 */ break; - case 81: -#line 1234 "awkgram.y" /* yacc.c:1646 */ + case 82: +#line 1241 "awkgram.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[0]); } -#line 3111 "awkgram.c" /* yacc.c:1646 */ +#line 3126 "awkgram.c" /* yacc.c:1646 */ break; - case 83: -#line 1244 "awkgram.y" /* yacc.c:1646 */ + case 84: +#line 1251 "awkgram.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[-1]); } -#line 3119 "awkgram.c" /* yacc.c:1646 */ +#line 3134 "awkgram.c" /* yacc.c:1646 */ break; - case 84: -#line 1251 "awkgram.y" /* yacc.c:1646 */ + case 85: +#line 1258 "awkgram.y" /* yacc.c:1646 */ { in_print = false; in_parens = 0; (yyval) = NULL; } -#line 3129 "awkgram.c" /* yacc.c:1646 */ +#line 3144 "awkgram.c" /* yacc.c:1646 */ break; - case 85: -#line 1256 "awkgram.y" /* yacc.c:1646 */ + case 86: +#line 1263 "awkgram.y" /* yacc.c:1646 */ { in_print = false; in_parens = 0; } -#line 3135 "awkgram.c" /* yacc.c:1646 */ +#line 3150 "awkgram.c" /* yacc.c:1646 */ break; - case 86: -#line 1257 "awkgram.y" /* yacc.c:1646 */ + case 87: +#line 1264 "awkgram.y" /* yacc.c:1646 */ { if ((yyvsp[-2])->redir_type == redirect_twoway && (yyvsp[0])->lasti->opcode == Op_K_getline_redir @@ -3143,136 +3158,136 @@ regular_print: yyerror(_("multistage two-way pipelines don't work")); (yyval) = list_prepend((yyvsp[0]), (yyvsp[-2])); } -#line 3147 "awkgram.c" /* yacc.c:1646 */ +#line 3162 "awkgram.c" /* yacc.c:1646 */ break; - case 87: -#line 1268 "awkgram.y" /* yacc.c:1646 */ + case 88: +#line 1275 "awkgram.y" /* yacc.c:1646 */ { (yyval) = mk_condition((yyvsp[-3]), (yyvsp[-5]), (yyvsp[0]), NULL, NULL); } -#line 3155 "awkgram.c" /* yacc.c:1646 */ +#line 3170 "awkgram.c" /* yacc.c:1646 */ break; - case 88: -#line 1273 "awkgram.y" /* yacc.c:1646 */ + case 89: +#line 1280 "awkgram.y" /* yacc.c:1646 */ { (yyval) = mk_condition((yyvsp[-6]), (yyvsp[-8]), (yyvsp[-3]), (yyvsp[-2]), (yyvsp[0])); } -#line 3163 "awkgram.c" /* yacc.c:1646 */ +#line 3178 "awkgram.c" /* yacc.c:1646 */ break; - case 93: -#line 1290 "awkgram.y" /* yacc.c:1646 */ + case 94: +#line 1297 "awkgram.y" /* yacc.c:1646 */ { (yyval) = NULL; } -#line 3169 "awkgram.c" /* yacc.c:1646 */ +#line 3184 "awkgram.c" /* yacc.c:1646 */ break; - case 94: -#line 1292 "awkgram.y" /* yacc.c:1646 */ + case 95: +#line 1299 "awkgram.y" /* yacc.c:1646 */ { bcfree((yyvsp[-1])); (yyval) = (yyvsp[0]); } -#line 3178 "awkgram.c" /* yacc.c:1646 */ +#line 3193 "awkgram.c" /* yacc.c:1646 */ break; - case 95: -#line 1300 "awkgram.y" /* yacc.c:1646 */ + case 96: +#line 1307 "awkgram.y" /* yacc.c:1646 */ { (yyval) = NULL; } -#line 3184 "awkgram.c" /* yacc.c:1646 */ +#line 3199 "awkgram.c" /* yacc.c:1646 */ break; - case 96: -#line 1302 "awkgram.y" /* yacc.c:1646 */ + case 97: +#line 1309 "awkgram.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[0]); } -#line 3190 "awkgram.c" /* yacc.c:1646 */ +#line 3205 "awkgram.c" /* yacc.c:1646 */ break; - case 97: -#line 1307 "awkgram.y" /* yacc.c:1646 */ + case 98: +#line 1314 "awkgram.y" /* yacc.c:1646 */ { (yyvsp[0])->param_count = 0; (yyval) = list_create((yyvsp[0])); } -#line 3199 "awkgram.c" /* yacc.c:1646 */ +#line 3214 "awkgram.c" /* yacc.c:1646 */ break; - case 98: -#line 1312 "awkgram.y" /* yacc.c:1646 */ + case 99: +#line 1319 "awkgram.y" /* yacc.c:1646 */ { (yyvsp[0])->param_count = (yyvsp[-2])->lasti->param_count + 1; (yyval) = list_append((yyvsp[-2]), (yyvsp[0])); yyerrok; } -#line 3209 "awkgram.c" /* yacc.c:1646 */ +#line 3224 "awkgram.c" /* yacc.c:1646 */ break; - case 99: -#line 1318 "awkgram.y" /* yacc.c:1646 */ + case 100: +#line 1325 "awkgram.y" /* yacc.c:1646 */ { (yyval) = NULL; } -#line 3215 "awkgram.c" /* yacc.c:1646 */ +#line 3230 "awkgram.c" /* yacc.c:1646 */ break; - case 100: -#line 1320 "awkgram.y" /* yacc.c:1646 */ + case 101: +#line 1327 "awkgram.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[-1]); } -#line 3221 "awkgram.c" /* yacc.c:1646 */ +#line 3236 "awkgram.c" /* yacc.c:1646 */ break; - case 101: -#line 1322 "awkgram.y" /* yacc.c:1646 */ + case 102: +#line 1329 "awkgram.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[-2]); } -#line 3227 "awkgram.c" /* yacc.c:1646 */ +#line 3242 "awkgram.c" /* yacc.c:1646 */ break; - case 102: -#line 1328 "awkgram.y" /* yacc.c:1646 */ + case 103: +#line 1335 "awkgram.y" /* yacc.c:1646 */ { (yyval) = NULL; } -#line 3233 "awkgram.c" /* yacc.c:1646 */ +#line 3248 "awkgram.c" /* yacc.c:1646 */ break; - case 103: -#line 1330 "awkgram.y" /* yacc.c:1646 */ + case 104: +#line 1337 "awkgram.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[0]); } -#line 3239 "awkgram.c" /* yacc.c:1646 */ +#line 3254 "awkgram.c" /* yacc.c:1646 */ break; - case 104: -#line 1335 "awkgram.y" /* yacc.c:1646 */ + case 105: +#line 1342 "awkgram.y" /* yacc.c:1646 */ { (yyval) = NULL; } -#line 3245 "awkgram.c" /* yacc.c:1646 */ +#line 3260 "awkgram.c" /* yacc.c:1646 */ break; - case 105: -#line 1337 "awkgram.y" /* yacc.c:1646 */ + case 106: +#line 1344 "awkgram.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[0]); } -#line 3251 "awkgram.c" /* yacc.c:1646 */ +#line 3266 "awkgram.c" /* yacc.c:1646 */ break; - case 106: -#line 1342 "awkgram.y" /* yacc.c:1646 */ + case 107: +#line 1349 "awkgram.y" /* yacc.c:1646 */ { (yyval) = mk_expression_list(NULL, (yyvsp[0])); } -#line 3257 "awkgram.c" /* yacc.c:1646 */ +#line 3272 "awkgram.c" /* yacc.c:1646 */ break; - case 107: -#line 1344 "awkgram.y" /* yacc.c:1646 */ + case 108: +#line 1351 "awkgram.y" /* yacc.c:1646 */ { (yyval) = mk_expression_list((yyvsp[-2]), (yyvsp[0])); yyerrok; } -#line 3266 "awkgram.c" /* yacc.c:1646 */ +#line 3281 "awkgram.c" /* yacc.c:1646 */ break; - case 108: -#line 1349 "awkgram.y" /* yacc.c:1646 */ + case 109: +#line 1356 "awkgram.y" /* yacc.c:1646 */ { (yyval) = NULL; } -#line 3272 "awkgram.c" /* yacc.c:1646 */ +#line 3287 "awkgram.c" /* yacc.c:1646 */ break; - case 109: -#line 1351 "awkgram.y" /* yacc.c:1646 */ + case 110: +#line 1358 "awkgram.y" /* yacc.c:1646 */ { /* * Returning the expression list instead of NULL lets @@ -3280,62 +3295,62 @@ regular_print: */ (yyval) = (yyvsp[-1]); } -#line 3284 "awkgram.c" /* yacc.c:1646 */ +#line 3299 "awkgram.c" /* yacc.c:1646 */ break; - case 110: -#line 1359 "awkgram.y" /* yacc.c:1646 */ + case 111: +#line 1366 "awkgram.y" /* yacc.c:1646 */ { /* Ditto */ (yyval) = mk_expression_list((yyvsp[-2]), (yyvsp[0])); } -#line 3293 "awkgram.c" /* yacc.c:1646 */ +#line 3308 "awkgram.c" /* yacc.c:1646 */ break; - case 111: -#line 1364 "awkgram.y" /* yacc.c:1646 */ + case 112: +#line 1371 "awkgram.y" /* yacc.c:1646 */ { /* Ditto */ (yyval) = (yyvsp[-2]); } -#line 3302 "awkgram.c" /* yacc.c:1646 */ +#line 3317 "awkgram.c" /* yacc.c:1646 */ break; - case 112: -#line 1372 "awkgram.y" /* yacc.c:1646 */ + case 113: +#line 1379 "awkgram.y" /* yacc.c:1646 */ { (yyval) = NULL; } -#line 3308 "awkgram.c" /* yacc.c:1646 */ +#line 3323 "awkgram.c" /* yacc.c:1646 */ break; - case 113: -#line 1374 "awkgram.y" /* yacc.c:1646 */ + case 114: +#line 1381 "awkgram.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[0]); } -#line 3314 "awkgram.c" /* yacc.c:1646 */ +#line 3329 "awkgram.c" /* yacc.c:1646 */ break; - case 114: -#line 1379 "awkgram.y" /* yacc.c:1646 */ + case 115: +#line 1386 "awkgram.y" /* yacc.c:1646 */ { (yyval) = mk_expression_list(NULL, (yyvsp[0])); } -#line 3320 "awkgram.c" /* yacc.c:1646 */ +#line 3335 "awkgram.c" /* yacc.c:1646 */ break; - case 115: -#line 1381 "awkgram.y" /* yacc.c:1646 */ + case 116: +#line 1388 "awkgram.y" /* yacc.c:1646 */ { (yyval) = mk_expression_list((yyvsp[-2]), (yyvsp[0])); yyerrok; } -#line 3329 "awkgram.c" /* yacc.c:1646 */ +#line 3344 "awkgram.c" /* yacc.c:1646 */ break; - case 116: -#line 1386 "awkgram.y" /* yacc.c:1646 */ + case 117: +#line 1393 "awkgram.y" /* yacc.c:1646 */ { (yyval) = NULL; } -#line 3335 "awkgram.c" /* yacc.c:1646 */ +#line 3350 "awkgram.c" /* yacc.c:1646 */ break; - case 117: -#line 1388 "awkgram.y" /* yacc.c:1646 */ + case 118: +#line 1395 "awkgram.y" /* yacc.c:1646 */ { /* * Returning the expression list instead of NULL lets @@ -3343,72 +3358,72 @@ regular_print: */ (yyval) = (yyvsp[-1]); } -#line 3347 "awkgram.c" /* yacc.c:1646 */ +#line 3362 "awkgram.c" /* yacc.c:1646 */ break; - case 118: -#line 1396 "awkgram.y" /* yacc.c:1646 */ + case 119: +#line 1403 "awkgram.y" /* yacc.c:1646 */ { /* Ditto */ (yyval) = mk_expression_list((yyvsp[-2]), (yyvsp[0])); } -#line 3356 "awkgram.c" /* yacc.c:1646 */ +#line 3371 "awkgram.c" /* yacc.c:1646 */ break; - case 119: -#line 1401 "awkgram.y" /* yacc.c:1646 */ + case 120: +#line 1408 "awkgram.y" /* yacc.c:1646 */ { /* Ditto */ (yyval) = (yyvsp[-2]); } -#line 3365 "awkgram.c" /* yacc.c:1646 */ +#line 3380 "awkgram.c" /* yacc.c:1646 */ break; - case 120: -#line 1408 "awkgram.y" /* yacc.c:1646 */ + case 121: +#line 1415 "awkgram.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[0]); } -#line 3371 "awkgram.c" /* yacc.c:1646 */ +#line 3386 "awkgram.c" /* yacc.c:1646 */ break; - case 121: -#line 1409 "awkgram.y" /* yacc.c:1646 */ + case 122: +#line 1416 "awkgram.y" /* yacc.c:1646 */ { (yyval) = list_create((yyvsp[0])); } -#line 3377 "awkgram.c" /* yacc.c:1646 */ +#line 3392 "awkgram.c" /* yacc.c:1646 */ break; - case 122: -#line 1415 "awkgram.y" /* yacc.c:1646 */ + case 123: +#line 1422 "awkgram.y" /* yacc.c:1646 */ { if (do_lint && (yyvsp[0])->lasti->opcode == Op_match_rec) lintwarn_ln((yyvsp[-1])->source_line, _("regular expression on right of assignment")); (yyval) = mk_assignment((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); } -#line 3388 "awkgram.c" /* yacc.c:1646 */ +#line 3403 "awkgram.c" /* yacc.c:1646 */ break; - case 123: -#line 1422 "awkgram.y" /* yacc.c:1646 */ + case 124: +#line 1429 "awkgram.y" /* yacc.c:1646 */ { (yyval) = mk_assignment((yyvsp[-2]), list_create((yyvsp[0])), (yyvsp[-1])); } -#line 3396 "awkgram.c" /* yacc.c:1646 */ +#line 3411 "awkgram.c" /* yacc.c:1646 */ break; - case 124: -#line 1426 "awkgram.y" /* yacc.c:1646 */ + case 125: +#line 1433 "awkgram.y" /* yacc.c:1646 */ { (yyval) = mk_boolean((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); } -#line 3402 "awkgram.c" /* yacc.c:1646 */ +#line 3417 "awkgram.c" /* yacc.c:1646 */ break; - case 125: -#line 1428 "awkgram.y" /* yacc.c:1646 */ + case 126: +#line 1435 "awkgram.y" /* yacc.c:1646 */ { (yyval) = mk_boolean((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); } -#line 3408 "awkgram.c" /* yacc.c:1646 */ +#line 3423 "awkgram.c" /* yacc.c:1646 */ break; - case 126: -#line 1430 "awkgram.y" /* yacc.c:1646 */ + case 127: +#line 1437 "awkgram.y" /* yacc.c:1646 */ { if ((yyvsp[-2])->lasti->opcode == Op_match_rec) warning_ln((yyvsp[-1])->source_line, @@ -3421,11 +3436,11 @@ regular_print: bcfree((yyvsp[0])); (yyval) = list_append((yyvsp[-2]), (yyvsp[-1])); } -#line 3425 "awkgram.c" /* yacc.c:1646 */ +#line 3440 "awkgram.c" /* yacc.c:1646 */ break; - case 127: -#line 1443 "awkgram.y" /* yacc.c:1646 */ + case 128: +#line 1450 "awkgram.y" /* yacc.c:1646 */ { if ((yyvsp[-2])->lasti->opcode == Op_match_rec) warning_ln((yyvsp[-1])->source_line, @@ -3442,11 +3457,11 @@ regular_print: (yyval) = list_append(list_merge((yyvsp[-2]), (yyvsp[0])), (yyvsp[-1])); } } -#line 3446 "awkgram.c" /* yacc.c:1646 */ +#line 3461 "awkgram.c" /* yacc.c:1646 */ break; - case 128: -#line 1460 "awkgram.y" /* yacc.c:1646 */ + case 129: +#line 1467 "awkgram.y" /* yacc.c:1646 */ { if (do_lint_old) warning_ln((yyvsp[-1])->source_line, @@ -3456,91 +3471,91 @@ regular_print: (yyvsp[-1])->expr_count = 1; (yyval) = list_append(list_merge((yyvsp[-2]), (yyvsp[0])), (yyvsp[-1])); } -#line 3460 "awkgram.c" /* yacc.c:1646 */ +#line 3475 "awkgram.c" /* yacc.c:1646 */ break; - case 129: -#line 1470 "awkgram.y" /* yacc.c:1646 */ + case 130: +#line 1477 "awkgram.y" /* yacc.c:1646 */ { if (do_lint && (yyvsp[0])->lasti->opcode == Op_match_rec) lintwarn_ln((yyvsp[-1])->source_line, _("regular expression on right of comparison")); (yyval) = list_append(list_merge((yyvsp[-2]), (yyvsp[0])), (yyvsp[-1])); } -#line 3471 "awkgram.c" /* yacc.c:1646 */ - break; - - case 130: -#line 1477 "awkgram.y" /* yacc.c:1646 */ - { (yyval) = mk_condition((yyvsp[-4]), (yyvsp[-3]), (yyvsp[-2]), (yyvsp[-1]), (yyvsp[0])); } -#line 3477 "awkgram.c" /* yacc.c:1646 */ +#line 3486 "awkgram.c" /* yacc.c:1646 */ break; case 131: -#line 1479 "awkgram.y" /* yacc.c:1646 */ - { (yyval) = (yyvsp[0]); } -#line 3483 "awkgram.c" /* yacc.c:1646 */ +#line 1484 "awkgram.y" /* yacc.c:1646 */ + { (yyval) = mk_condition((yyvsp[-4]), (yyvsp[-3]), (yyvsp[-2]), (yyvsp[-1]), (yyvsp[0])); } +#line 3492 "awkgram.c" /* yacc.c:1646 */ break; case 132: -#line 1484 "awkgram.y" /* yacc.c:1646 */ +#line 1486 "awkgram.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[0]); } -#line 3489 "awkgram.c" /* yacc.c:1646 */ +#line 3498 "awkgram.c" /* yacc.c:1646 */ break; case 133: -#line 1486 "awkgram.y" /* yacc.c:1646 */ +#line 1491 "awkgram.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[0]); } -#line 3495 "awkgram.c" /* yacc.c:1646 */ +#line 3504 "awkgram.c" /* yacc.c:1646 */ break; case 134: -#line 1488 "awkgram.y" /* yacc.c:1646 */ +#line 1493 "awkgram.y" /* yacc.c:1646 */ + { (yyval) = (yyvsp[0]); } +#line 3510 "awkgram.c" /* yacc.c:1646 */ + break; + + case 135: +#line 1495 "awkgram.y" /* yacc.c:1646 */ { (yyvsp[0])->opcode = Op_assign_quotient; (yyval) = (yyvsp[0]); } -#line 3504 "awkgram.c" /* yacc.c:1646 */ - break; - - case 135: -#line 1496 "awkgram.y" /* yacc.c:1646 */ - { (yyval) = (yyvsp[0]); } -#line 3510 "awkgram.c" /* yacc.c:1646 */ +#line 3519 "awkgram.c" /* yacc.c:1646 */ break; case 136: -#line 1498 "awkgram.y" /* yacc.c:1646 */ +#line 1503 "awkgram.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[0]); } -#line 3516 "awkgram.c" /* yacc.c:1646 */ +#line 3525 "awkgram.c" /* yacc.c:1646 */ break; case 137: -#line 1503 "awkgram.y" /* yacc.c:1646 */ +#line 1505 "awkgram.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[0]); } -#line 3522 "awkgram.c" /* yacc.c:1646 */ +#line 3531 "awkgram.c" /* yacc.c:1646 */ break; case 138: -#line 1505 "awkgram.y" /* yacc.c:1646 */ +#line 1510 "awkgram.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[0]); } -#line 3528 "awkgram.c" /* yacc.c:1646 */ +#line 3537 "awkgram.c" /* yacc.c:1646 */ break; case 139: -#line 1510 "awkgram.y" /* yacc.c:1646 */ +#line 1512 "awkgram.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[0]); } -#line 3534 "awkgram.c" /* yacc.c:1646 */ +#line 3543 "awkgram.c" /* yacc.c:1646 */ break; case 140: -#line 1512 "awkgram.y" /* yacc.c:1646 */ +#line 1517 "awkgram.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[0]); } -#line 3540 "awkgram.c" /* yacc.c:1646 */ +#line 3549 "awkgram.c" /* yacc.c:1646 */ break; case 141: -#line 1514 "awkgram.y" /* yacc.c:1646 */ +#line 1519 "awkgram.y" /* yacc.c:1646 */ + { (yyval) = (yyvsp[0]); } +#line 3555 "awkgram.c" /* yacc.c:1646 */ + break; + + case 142: +#line 1521 "awkgram.y" /* yacc.c:1646 */ { int count = 2; bool is_simple_var = false; @@ -3569,7 +3584,7 @@ regular_print: n1 = force_string(n1); n2 = force_string(n2); nlen = n1->stlen + n2->stlen; - erealloc(n1->stptr, char *, nlen + 2, "constant fold"); + erealloc(n1->stptr, char *, nlen + 1, "constant fold"); memcpy(n1->stptr + n1->stlen, n2->stptr, n2->stlen); n1->stlen = nlen; n1->stptr[nlen] = '\0'; @@ -3587,47 +3602,47 @@ regular_print: max_args = count; } } -#line 3591 "awkgram.c" /* yacc.c:1646 */ - break; - - case 143: -#line 1566 "awkgram.y" /* yacc.c:1646 */ - { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); } -#line 3597 "awkgram.c" /* yacc.c:1646 */ +#line 3606 "awkgram.c" /* yacc.c:1646 */ break; case 144: -#line 1568 "awkgram.y" /* yacc.c:1646 */ +#line 1573 "awkgram.y" /* yacc.c:1646 */ { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); } -#line 3603 "awkgram.c" /* yacc.c:1646 */ +#line 3612 "awkgram.c" /* yacc.c:1646 */ break; case 145: -#line 1570 "awkgram.y" /* yacc.c:1646 */ +#line 1575 "awkgram.y" /* yacc.c:1646 */ { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); } -#line 3609 "awkgram.c" /* yacc.c:1646 */ +#line 3618 "awkgram.c" /* yacc.c:1646 */ break; case 146: -#line 1572 "awkgram.y" /* yacc.c:1646 */ +#line 1577 "awkgram.y" /* yacc.c:1646 */ { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); } -#line 3615 "awkgram.c" /* yacc.c:1646 */ +#line 3624 "awkgram.c" /* yacc.c:1646 */ break; case 147: -#line 1574 "awkgram.y" /* yacc.c:1646 */ +#line 1579 "awkgram.y" /* yacc.c:1646 */ { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); } -#line 3621 "awkgram.c" /* yacc.c:1646 */ +#line 3630 "awkgram.c" /* yacc.c:1646 */ break; case 148: -#line 1576 "awkgram.y" /* yacc.c:1646 */ +#line 1581 "awkgram.y" /* yacc.c:1646 */ { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); } -#line 3627 "awkgram.c" /* yacc.c:1646 */ +#line 3636 "awkgram.c" /* yacc.c:1646 */ break; case 149: -#line 1578 "awkgram.y" /* yacc.c:1646 */ +#line 1583 "awkgram.y" /* yacc.c:1646 */ + { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); } +#line 3642 "awkgram.c" /* yacc.c:1646 */ + break; + + case 150: +#line 1585 "awkgram.y" /* yacc.c:1646 */ { /* * In BEGINFILE/ENDFILE, allow `getline [var] < file' @@ -3641,29 +3656,29 @@ regular_print: _("non-redirected `getline' undefined inside END action")); (yyval) = mk_getline((yyvsp[-2]), (yyvsp[-1]), (yyvsp[0]), redirect_input); } -#line 3645 "awkgram.c" /* yacc.c:1646 */ +#line 3660 "awkgram.c" /* yacc.c:1646 */ break; - case 150: -#line 1592 "awkgram.y" /* yacc.c:1646 */ + case 151: +#line 1599 "awkgram.y" /* yacc.c:1646 */ { (yyvsp[0])->opcode = Op_postincrement; (yyval) = mk_assignment((yyvsp[-1]), NULL, (yyvsp[0])); } -#line 3654 "awkgram.c" /* yacc.c:1646 */ +#line 3669 "awkgram.c" /* yacc.c:1646 */ break; - case 151: -#line 1597 "awkgram.y" /* yacc.c:1646 */ + case 152: +#line 1604 "awkgram.y" /* yacc.c:1646 */ { (yyvsp[0])->opcode = Op_postdecrement; (yyval) = mk_assignment((yyvsp[-1]), NULL, (yyvsp[0])); } -#line 3663 "awkgram.c" /* yacc.c:1646 */ +#line 3678 "awkgram.c" /* yacc.c:1646 */ break; - case 152: -#line 1602 "awkgram.y" /* yacc.c:1646 */ + case 153: +#line 1609 "awkgram.y" /* yacc.c:1646 */ { if (do_lint_old) { warning_ln((yyvsp[-1])->source_line, @@ -3683,64 +3698,64 @@ regular_print: (yyval) = list_append(list_merge(t, (yyvsp[0])), (yyvsp[-1])); } } -#line 3687 "awkgram.c" /* yacc.c:1646 */ +#line 3702 "awkgram.c" /* yacc.c:1646 */ break; - case 153: -#line 1627 "awkgram.y" /* yacc.c:1646 */ + case 154: +#line 1634 "awkgram.y" /* yacc.c:1646 */ { (yyval) = mk_getline((yyvsp[-1]), (yyvsp[0]), (yyvsp[-3]), (yyvsp[-2])->redir_type); bcfree((yyvsp[-2])); } -#line 3696 "awkgram.c" /* yacc.c:1646 */ - break; - - case 154: -#line 1633 "awkgram.y" /* yacc.c:1646 */ - { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); } -#line 3702 "awkgram.c" /* yacc.c:1646 */ +#line 3711 "awkgram.c" /* yacc.c:1646 */ break; case 155: -#line 1635 "awkgram.y" /* yacc.c:1646 */ +#line 1640 "awkgram.y" /* yacc.c:1646 */ { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); } -#line 3708 "awkgram.c" /* yacc.c:1646 */ +#line 3717 "awkgram.c" /* yacc.c:1646 */ break; case 156: -#line 1637 "awkgram.y" /* yacc.c:1646 */ +#line 1642 "awkgram.y" /* yacc.c:1646 */ { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); } -#line 3714 "awkgram.c" /* yacc.c:1646 */ +#line 3723 "awkgram.c" /* yacc.c:1646 */ break; case 157: -#line 1639 "awkgram.y" /* yacc.c:1646 */ +#line 1644 "awkgram.y" /* yacc.c:1646 */ { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); } -#line 3720 "awkgram.c" /* yacc.c:1646 */ +#line 3729 "awkgram.c" /* yacc.c:1646 */ break; case 158: -#line 1641 "awkgram.y" /* yacc.c:1646 */ +#line 1646 "awkgram.y" /* yacc.c:1646 */ { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); } -#line 3726 "awkgram.c" /* yacc.c:1646 */ +#line 3735 "awkgram.c" /* yacc.c:1646 */ break; case 159: -#line 1643 "awkgram.y" /* yacc.c:1646 */ +#line 1648 "awkgram.y" /* yacc.c:1646 */ { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); } -#line 3732 "awkgram.c" /* yacc.c:1646 */ +#line 3741 "awkgram.c" /* yacc.c:1646 */ break; case 160: -#line 1648 "awkgram.y" /* yacc.c:1646 */ +#line 1650 "awkgram.y" /* yacc.c:1646 */ + { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); } +#line 3747 "awkgram.c" /* yacc.c:1646 */ + break; + + case 161: +#line 1655 "awkgram.y" /* yacc.c:1646 */ { (yyval) = list_create((yyvsp[0])); } -#line 3740 "awkgram.c" /* yacc.c:1646 */ +#line 3755 "awkgram.c" /* yacc.c:1646 */ break; - case 161: -#line 1652 "awkgram.y" /* yacc.c:1646 */ + case 162: +#line 1659 "awkgram.y" /* yacc.c:1646 */ { if ((yyvsp[0])->opcode == Op_match_rec) { (yyvsp[0])->opcode = Op_nomatch; @@ -3772,37 +3787,37 @@ regular_print: } } } -#line 3776 "awkgram.c" /* yacc.c:1646 */ +#line 3791 "awkgram.c" /* yacc.c:1646 */ break; - case 162: -#line 1684 "awkgram.y" /* yacc.c:1646 */ + case 163: +#line 1691 "awkgram.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[-1]); } -#line 3782 "awkgram.c" /* yacc.c:1646 */ +#line 3797 "awkgram.c" /* yacc.c:1646 */ break; - case 163: -#line 1686 "awkgram.y" /* yacc.c:1646 */ + case 164: +#line 1693 "awkgram.y" /* yacc.c:1646 */ { (yyval) = snode((yyvsp[-1]), (yyvsp[-3])); if ((yyval) == NULL) YYABORT; } -#line 3792 "awkgram.c" /* yacc.c:1646 */ +#line 3807 "awkgram.c" /* yacc.c:1646 */ break; - case 164: -#line 1692 "awkgram.y" /* yacc.c:1646 */ + case 165: +#line 1699 "awkgram.y" /* yacc.c:1646 */ { (yyval) = snode((yyvsp[-1]), (yyvsp[-3])); if ((yyval) == NULL) YYABORT; } -#line 3802 "awkgram.c" /* yacc.c:1646 */ +#line 3817 "awkgram.c" /* yacc.c:1646 */ break; - case 165: -#line 1698 "awkgram.y" /* yacc.c:1646 */ + case 166: +#line 1705 "awkgram.y" /* yacc.c:1646 */ { static bool warned = false; @@ -3815,45 +3830,45 @@ regular_print: if ((yyval) == NULL) YYABORT; } -#line 3819 "awkgram.c" /* yacc.c:1646 */ +#line 3834 "awkgram.c" /* yacc.c:1646 */ break; - case 168: -#line 1713 "awkgram.y" /* yacc.c:1646 */ + case 169: +#line 1720 "awkgram.y" /* yacc.c:1646 */ { (yyvsp[-1])->opcode = Op_preincrement; (yyval) = mk_assignment((yyvsp[0]), NULL, (yyvsp[-1])); } -#line 3828 "awkgram.c" /* yacc.c:1646 */ +#line 3843 "awkgram.c" /* yacc.c:1646 */ break; - case 169: -#line 1718 "awkgram.y" /* yacc.c:1646 */ + case 170: +#line 1725 "awkgram.y" /* yacc.c:1646 */ { (yyvsp[-1])->opcode = Op_predecrement; (yyval) = mk_assignment((yyvsp[0]), NULL, (yyvsp[-1])); } -#line 3837 "awkgram.c" /* yacc.c:1646 */ +#line 3852 "awkgram.c" /* yacc.c:1646 */ break; - case 170: -#line 1723 "awkgram.y" /* yacc.c:1646 */ + case 171: +#line 1730 "awkgram.y" /* yacc.c:1646 */ { (yyval) = list_create((yyvsp[0])); } -#line 3845 "awkgram.c" /* yacc.c:1646 */ +#line 3860 "awkgram.c" /* yacc.c:1646 */ break; - case 171: -#line 1727 "awkgram.y" /* yacc.c:1646 */ + case 172: +#line 1734 "awkgram.y" /* yacc.c:1646 */ { (yyval) = list_create((yyvsp[0])); } -#line 3853 "awkgram.c" /* yacc.c:1646 */ +#line 3868 "awkgram.c" /* yacc.c:1646 */ break; - case 172: -#line 1731 "awkgram.y" /* yacc.c:1646 */ + case 173: +#line 1738 "awkgram.y" /* yacc.c:1646 */ { if ((yyvsp[0])->lasti->opcode == Op_push_i && ((yyvsp[0])->lasti->memory->flags & (STRCUR|STRING)) == 0 @@ -3868,11 +3883,11 @@ regular_print: (yyval) = list_append((yyvsp[0]), (yyvsp[-1])); } } -#line 3872 "awkgram.c" /* yacc.c:1646 */ +#line 3887 "awkgram.c" /* yacc.c:1646 */ break; - case 173: -#line 1746 "awkgram.y" /* yacc.c:1646 */ + case 174: +#line 1753 "awkgram.y" /* yacc.c:1646 */ { /* * was: $$ = $2 @@ -3882,20 +3897,20 @@ regular_print: (yyvsp[-1])->memory = make_number(0.0); (yyval) = list_append((yyvsp[0]), (yyvsp[-1])); } -#line 3886 "awkgram.c" /* yacc.c:1646 */ +#line 3901 "awkgram.c" /* yacc.c:1646 */ break; - case 174: -#line 1759 "awkgram.y" /* yacc.c:1646 */ + case 175: +#line 1766 "awkgram.y" /* yacc.c:1646 */ { func_use((yyvsp[0])->lasti->func_name, FUNC_USE); (yyval) = (yyvsp[0]); } -#line 3895 "awkgram.c" /* yacc.c:1646 */ +#line 3910 "awkgram.c" /* yacc.c:1646 */ break; - case 175: -#line 1764 "awkgram.y" /* yacc.c:1646 */ + case 176: +#line 1771 "awkgram.y" /* yacc.c:1646 */ { /* indirect function call */ INSTRUCTION *f, *t; @@ -3929,11 +3944,11 @@ regular_print: (yyval) = list_prepend((yyvsp[0]), t); at_seen = false; } -#line 3933 "awkgram.c" /* yacc.c:1646 */ +#line 3948 "awkgram.c" /* yacc.c:1646 */ break; - case 176: -#line 1801 "awkgram.y" /* yacc.c:1646 */ + case 177: +#line 1808 "awkgram.y" /* yacc.c:1646 */ { NODE *n; @@ -3958,49 +3973,49 @@ regular_print: (yyval) = list_append(t, (yyvsp[-3])); } } -#line 3962 "awkgram.c" /* yacc.c:1646 */ +#line 3977 "awkgram.c" /* yacc.c:1646 */ break; - case 177: -#line 1829 "awkgram.y" /* yacc.c:1646 */ + case 178: +#line 1836 "awkgram.y" /* yacc.c:1646 */ { (yyval) = NULL; } -#line 3968 "awkgram.c" /* yacc.c:1646 */ +#line 3983 "awkgram.c" /* yacc.c:1646 */ break; - case 178: -#line 1831 "awkgram.y" /* yacc.c:1646 */ + case 179: +#line 1838 "awkgram.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[0]); } -#line 3974 "awkgram.c" /* yacc.c:1646 */ +#line 3989 "awkgram.c" /* yacc.c:1646 */ break; - case 179: -#line 1836 "awkgram.y" /* yacc.c:1646 */ + case 180: +#line 1843 "awkgram.y" /* yacc.c:1646 */ { (yyval) = NULL; } -#line 3980 "awkgram.c" /* yacc.c:1646 */ +#line 3995 "awkgram.c" /* yacc.c:1646 */ break; - case 180: -#line 1838 "awkgram.y" /* yacc.c:1646 */ + case 181: +#line 1845 "awkgram.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[-1]); } -#line 3986 "awkgram.c" /* yacc.c:1646 */ +#line 4001 "awkgram.c" /* yacc.c:1646 */ break; - case 181: -#line 1843 "awkgram.y" /* yacc.c:1646 */ + case 182: +#line 1850 "awkgram.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[0]); } -#line 3992 "awkgram.c" /* yacc.c:1646 */ +#line 4007 "awkgram.c" /* yacc.c:1646 */ break; - case 182: -#line 1845 "awkgram.y" /* yacc.c:1646 */ + case 183: +#line 1852 "awkgram.y" /* yacc.c:1646 */ { (yyval) = list_merge((yyvsp[-1]), (yyvsp[0])); } -#line 4000 "awkgram.c" /* yacc.c:1646 */ +#line 4015 "awkgram.c" /* yacc.c:1646 */ break; - case 183: -#line 1852 "awkgram.y" /* yacc.c:1646 */ + case 184: +#line 1859 "awkgram.y" /* yacc.c:1646 */ { INSTRUCTION *ip = (yyvsp[0])->lasti; int count = ip->sub_count; /* # of SUBSEP-seperated expressions */ @@ -4014,11 +4029,11 @@ regular_print: sub_counter++; /* count # of dimensions */ (yyval) = (yyvsp[0]); } -#line 4018 "awkgram.c" /* yacc.c:1646 */ +#line 4033 "awkgram.c" /* yacc.c:1646 */ break; - case 184: -#line 1869 "awkgram.y" /* yacc.c:1646 */ + case 185: +#line 1876 "awkgram.y" /* yacc.c:1646 */ { INSTRUCTION *t = (yyvsp[-1]); if ((yyvsp[-1]) == NULL) { @@ -4032,31 +4047,31 @@ regular_print: (yyvsp[0])->sub_count = count_expressions(&t, false); (yyval) = list_append(t, (yyvsp[0])); } -#line 4036 "awkgram.c" /* yacc.c:1646 */ +#line 4051 "awkgram.c" /* yacc.c:1646 */ break; - case 185: -#line 1886 "awkgram.y" /* yacc.c:1646 */ + case 186: +#line 1893 "awkgram.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[0]); } -#line 4042 "awkgram.c" /* yacc.c:1646 */ +#line 4057 "awkgram.c" /* yacc.c:1646 */ break; - case 186: -#line 1888 "awkgram.y" /* yacc.c:1646 */ + case 187: +#line 1895 "awkgram.y" /* yacc.c:1646 */ { (yyval) = list_merge((yyvsp[-1]), (yyvsp[0])); } -#line 4050 "awkgram.c" /* yacc.c:1646 */ +#line 4065 "awkgram.c" /* yacc.c:1646 */ break; - case 187: -#line 1895 "awkgram.y" /* yacc.c:1646 */ + case 188: +#line 1902 "awkgram.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[-1]); } -#line 4056 "awkgram.c" /* yacc.c:1646 */ +#line 4071 "awkgram.c" /* yacc.c:1646 */ break; - case 188: -#line 1900 "awkgram.y" /* yacc.c:1646 */ + case 189: +#line 1907 "awkgram.y" /* yacc.c:1646 */ { char *var_name = (yyvsp[0])->lextok; @@ -4064,22 +4079,22 @@ regular_print: (yyvsp[0])->memory = variable((yyvsp[0])->source_line, var_name, Node_var_new); (yyval) = list_create((yyvsp[0])); } -#line 4068 "awkgram.c" /* yacc.c:1646 */ +#line 4083 "awkgram.c" /* yacc.c:1646 */ break; - case 189: -#line 1908 "awkgram.y" /* yacc.c:1646 */ + case 190: +#line 1915 "awkgram.y" /* yacc.c:1646 */ { char *arr = (yyvsp[-1])->lextok; (yyvsp[-1])->memory = variable((yyvsp[-1])->source_line, arr, Node_var_new); (yyvsp[-1])->opcode = Op_push_array; (yyval) = list_prepend((yyvsp[0]), (yyvsp[-1])); } -#line 4079 "awkgram.c" /* yacc.c:1646 */ +#line 4094 "awkgram.c" /* yacc.c:1646 */ break; - case 190: -#line 1918 "awkgram.y" /* yacc.c:1646 */ + case 191: +#line 1925 "awkgram.y" /* yacc.c:1646 */ { INSTRUCTION *ip = (yyvsp[0])->nexti; if (ip->opcode == Op_push @@ -4091,73 +4106,73 @@ regular_print: } else (yyval) = (yyvsp[0]); } -#line 4095 "awkgram.c" /* yacc.c:1646 */ +#line 4110 "awkgram.c" /* yacc.c:1646 */ break; - case 191: -#line 1930 "awkgram.y" /* yacc.c:1646 */ + case 192: +#line 1937 "awkgram.y" /* yacc.c:1646 */ { (yyval) = list_append((yyvsp[-1]), (yyvsp[-2])); if ((yyvsp[0]) != NULL) mk_assignment((yyvsp[-1]), NULL, (yyvsp[0])); } -#line 4105 "awkgram.c" /* yacc.c:1646 */ +#line 4120 "awkgram.c" /* yacc.c:1646 */ break; - case 192: -#line 1939 "awkgram.y" /* yacc.c:1646 */ + case 193: +#line 1946 "awkgram.y" /* yacc.c:1646 */ { (yyvsp[0])->opcode = Op_postincrement; } -#line 4113 "awkgram.c" /* yacc.c:1646 */ +#line 4128 "awkgram.c" /* yacc.c:1646 */ break; - case 193: -#line 1943 "awkgram.y" /* yacc.c:1646 */ + case 194: +#line 1950 "awkgram.y" /* yacc.c:1646 */ { (yyvsp[0])->opcode = Op_postdecrement; } -#line 4121 "awkgram.c" /* yacc.c:1646 */ +#line 4136 "awkgram.c" /* yacc.c:1646 */ break; - case 194: -#line 1946 "awkgram.y" /* yacc.c:1646 */ + case 195: +#line 1953 "awkgram.y" /* yacc.c:1646 */ { (yyval) = NULL; } -#line 4127 "awkgram.c" /* yacc.c:1646 */ +#line 4142 "awkgram.c" /* yacc.c:1646 */ break; - case 196: -#line 1954 "awkgram.y" /* yacc.c:1646 */ + case 197: +#line 1961 "awkgram.y" /* yacc.c:1646 */ { yyerrok; } -#line 4133 "awkgram.c" /* yacc.c:1646 */ +#line 4148 "awkgram.c" /* yacc.c:1646 */ break; - case 197: -#line 1958 "awkgram.y" /* yacc.c:1646 */ + case 198: +#line 1965 "awkgram.y" /* yacc.c:1646 */ { yyerrok; } -#line 4139 "awkgram.c" /* yacc.c:1646 */ +#line 4154 "awkgram.c" /* yacc.c:1646 */ break; - case 200: -#line 1967 "awkgram.y" /* yacc.c:1646 */ + case 201: +#line 1974 "awkgram.y" /* yacc.c:1646 */ { yyerrok; } -#line 4145 "awkgram.c" /* yacc.c:1646 */ +#line 4160 "awkgram.c" /* yacc.c:1646 */ break; - case 201: -#line 1971 "awkgram.y" /* yacc.c:1646 */ + case 202: +#line 1978 "awkgram.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[0]); yyerrok; } -#line 4151 "awkgram.c" /* yacc.c:1646 */ +#line 4166 "awkgram.c" /* yacc.c:1646 */ break; - case 202: -#line 1975 "awkgram.y" /* yacc.c:1646 */ + case 203: +#line 1982 "awkgram.y" /* yacc.c:1646 */ { yyerrok; } -#line 4157 "awkgram.c" /* yacc.c:1646 */ +#line 4172 "awkgram.c" /* yacc.c:1646 */ break; -#line 4161 "awkgram.c" /* yacc.c:1646 */ +#line 4176 "awkgram.c" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -4385,7 +4400,7 @@ yyreturn: #endif return yyresult; } -#line 1977 "awkgram.y" /* yacc.c:1906 */ +#line 1984 "awkgram.y" /* yacc.c:1906 */ struct token { @@ -4687,7 +4702,6 @@ yyerror(const char *m, ...) char *buf; int count; static char end_of_file_line[] = "(END OF FILE)"; - char save; print_included_from(); @@ -4715,24 +4729,15 @@ yyerror(const char *m, ...) bp = thisline + strlen(thisline); } - /* - * Saving and restoring *bp keeps valgrind happy, - * since the guts of glibc uses strlen, even though - * we're passing an explict precision. Sigh. - * - * 8/2003: We may not need this anymore. - */ - save = *bp; - *bp = '\0'; - msg("%.*s", (int) (bp - thisline), thisline); - *bp = save; va_start(args, m); if (mesg == NULL) mesg = m; - count = (bp - thisline) + strlen(mesg) + 2 + 1; + count = strlen(mesg) + 1; + if (lexptr != NULL) + count += (lexeme - thisline) + 2; emalloc(buf, char *, count, "yyerror"); bp = buf; @@ -5730,21 +5735,24 @@ yylex(void) collect_regexp: if (want_regexp) { int in_brack = 0; /* count brackets, [[:alnum:]] allowed */ + int b_index = -1; + int cur_index = 0; + /* - * Counting brackets is non-trivial. [[] is ok, - * and so is [\]], with a point being that /[/]/ as a regexp - * constant has to work. + * Here is what's ok with brackets: * - * Do not count [ or ] if either one is preceded by a \. - * A `[' should be counted if - * a) it is the first one so far (in_brack == 0) - * b) it is the `[' in `[:' - * A ']' should be counted if not preceded by a \, since - * it is either closing `:]' or just a plain list. - * According to POSIX, []] is how you put a ] into a set. - * Try to handle that too. + * [[] [^[] []] [^]] [.../...] + * [...\[...] [...\]...] [...\/...] + * + * (Remember that all of the above are inside /.../) * - * The code for \ handles \[ and \]. + * The code for \ handles \[, \] and \/. + * + * Otherwise, track the first open [ position, and if + * an embedded [ or ] occurs, allow it to pass through + * if it's right after the first [ or after [^. + * + * Whew! */ want_regexp = false; @@ -5754,17 +5762,21 @@ collect_regexp: if (gawk_mb_cur_max == 1 || nextc_is_1stbyte) switch (c) { case '[': - /* one day check for `.' and `=' too */ - if (nextc(false) == ':' || in_brack == 0) - in_brack++; - pushback(); - break; case ']': - if (tok[-1] == '[' - || (tok[-2] == '[' && tok[-1] == '^')) - /* do nothing */; - else + cur_index = tok - tokstart; + if (in_brack > 0 + && (cur_index == b_index + 1 + || (cur_index == b_index + 2 && tok[-1] == '^'))) + ; /* do nothing */ + else if (c == '[') { + in_brack++; + if (in_brack == 1) + b_index = tok - tokstart; + } else { in_brack--; + if (in_brack == 0) + b_index = -1; + } break; case '\\': if ((c = nextc(false)) == END_FILE) { @@ -6414,6 +6426,27 @@ retry: && lasttok != '@') goto out; + /* allow parameter names to shadow the names of gawk extension built-ins */ + if ((tokentab[mid].flags & GAWKX) != 0) { + switch (want_param_names) { + case FUNC_HEADER: + /* in header, defining parameter names */ + goto out; + case FUNC_BODY: + /* in body, name must be in symbol table for it to be a parameter */ + if (lookup(tokstart) != NULL) + goto out; + /* else + fall through */ + case DONT_CHECK: + /* regular code */ + break; + default: + cant_happen(); + break; + } + } + if (do_lint) { if ((tokentab[mid].flags & GAWKX) != 0 && (warntab[mid] & GAWKX) == 0) { lintwarn(_("`%s' is a gawk extension"), @@ -89,6 +89,11 @@ static void check_comment(void); static bool at_seen = false; static bool want_source = false; static bool want_regexp = false; /* lexical scanning kludge */ +static enum { + FUNC_HEADER, + FUNC_BODY, + DONT_CHECK +} want_param_names = DONT_CHECK; /* ditto */ static char *in_function; /* parsing kludge */ static int rule = 0; @@ -246,6 +251,7 @@ rule { in_function = NULL; (void) mk_function($1, $2); + want_param_names = DONT_CHECK; yyerrok; } | '@' LEX_INCLUDE source statement_term @@ -424,7 +430,7 @@ lex_builtin ; function_prologue - : LEX_FUNCTION func_name '(' opt_param_list r_paren opt_nls + : LEX_FUNCTION func_name '(' { want_param_names = FUNC_HEADER; } opt_param_list r_paren opt_nls { /* * treat any comments between BOF and the first function @@ -443,13 +449,14 @@ function_prologue } func_first = false; $1->source_file = source; - if (install_function($2->lextok, $1, $4) < 0) + if (install_function($2->lextok, $1, $5) < 0) YYABORT; in_function = $2->lextok; $2->lextok = NULL; bcfree($2); - /* $4 already free'd in install_function */ + /* $5 already free'd in install_function */ $$ = $1; + want_param_names = FUNC_BODY; } ; @@ -1539,7 +1546,7 @@ common_exp n1 = force_string(n1); n2 = force_string(n2); nlen = n1->stlen + n2->stlen; - erealloc(n1->stptr, char *, nlen + 2, "constant fold"); + erealloc(n1->stptr, char *, nlen + 1, "constant fold"); memcpy(n1->stptr + n1->stlen, n2->stptr, n2->stlen); n1->stlen = nlen; n1->stptr[nlen] = '\0'; @@ -2275,7 +2282,6 @@ yyerror(const char *m, ...) char *buf; int count; static char end_of_file_line[] = "(END OF FILE)"; - char save; print_included_from(); @@ -2303,24 +2309,15 @@ yyerror(const char *m, ...) bp = thisline + strlen(thisline); } - /* - * Saving and restoring *bp keeps valgrind happy, - * since the guts of glibc uses strlen, even though - * we're passing an explict precision. Sigh. - * - * 8/2003: We may not need this anymore. - */ - save = *bp; - *bp = '\0'; - msg("%.*s", (int) (bp - thisline), thisline); - *bp = save; va_start(args, m); if (mesg == NULL) mesg = m; - count = (bp - thisline) + strlen(mesg) + 2 + 1; + count = strlen(mesg) + 1; + if (lexptr != NULL) + count += (lexeme - thisline) + 2; emalloc(buf, char *, count, "yyerror"); bp = buf; @@ -3318,21 +3315,24 @@ yylex(void) collect_regexp: if (want_regexp) { int in_brack = 0; /* count brackets, [[:alnum:]] allowed */ + int b_index = -1; + int cur_index = 0; + /* - * Counting brackets is non-trivial. [[] is ok, - * and so is [\]], with a point being that /[/]/ as a regexp - * constant has to work. + * Here is what's ok with brackets: + * + * [[] [^[] []] [^]] [.../...] + * [...\[...] [...\]...] [...\/...] + * + * (Remember that all of the above are inside /.../) * - * Do not count [ or ] if either one is preceded by a \. - * A `[' should be counted if - * a) it is the first one so far (in_brack == 0) - * b) it is the `[' in `[:' - * A ']' should be counted if not preceded by a \, since - * it is either closing `:]' or just a plain list. - * According to POSIX, []] is how you put a ] into a set. - * Try to handle that too. + * The code for \ handles \[, \] and \/. * - * The code for \ handles \[ and \]. + * Otherwise, track the first open [ position, and if + * an embedded [ or ] occurs, allow it to pass through + * if it's right after the first [ or after [^. + * + * Whew! */ want_regexp = false; @@ -3342,17 +3342,21 @@ collect_regexp: if (gawk_mb_cur_max == 1 || nextc_is_1stbyte) switch (c) { case '[': - /* one day check for `.' and `=' too */ - if (nextc(false) == ':' || in_brack == 0) - in_brack++; - pushback(); - break; case ']': - if (tok[-1] == '[' - || (tok[-2] == '[' && tok[-1] == '^')) - /* do nothing */; - else + cur_index = tok - tokstart; + if (in_brack > 0 + && (cur_index == b_index + 1 + || (cur_index == b_index + 2 && tok[-1] == '^'))) + ; /* do nothing */ + else if (c == '[') { + in_brack++; + if (in_brack == 1) + b_index = tok - tokstart; + } else { in_brack--; + if (in_brack == 0) + b_index = -1; + } break; case '\\': if ((c = nextc(false)) == END_FILE) { @@ -4002,6 +4006,27 @@ retry: && lasttok != '@') goto out; + /* allow parameter names to shadow the names of gawk extension built-ins */ + if ((tokentab[mid].flags & GAWKX) != 0) { + switch (want_param_names) { + case FUNC_HEADER: + /* in header, defining parameter names */ + goto out; + case FUNC_BODY: + /* in body, name must be in symbol table for it to be a parameter */ + if (lookup(tokstart) != NULL) + goto out; + /* else + fall through */ + case DONT_CHECK: + /* regular code */ + break; + default: + cant_happen(); + break; + } + } + if (do_lint) { if ((tokentab[mid].flags & GAWKX) != 0 && (warntab[mid] & GAWKX) == 0) { lintwarn(_("`%s' is a gawk extension"), @@ -1847,7 +1847,7 @@ do_substr(int nargs) * way to do things. */ memset(& mbs, 0, sizeof(mbs)); - emalloc(substr, char *, (length * gawk_mb_cur_max) + 2, "do_substr"); + emalloc(substr, char *, (length * gawk_mb_cur_max) + 1, "do_substr"); wp = t1->wstptr + indx; for (cp = substr; length > 0; length--) { result = wcrtomb(cp, *wp, & mbs); @@ -2597,7 +2597,7 @@ do_match(int nargs) sprintf(buff, "%d", ii); ilen = strlen(buff); - amt = ilen + subseplen + strlen("length") + 2; + amt = ilen + subseplen + strlen("length") + 1; if (oldamt == 0) { emalloc(buf, char *, amt, "do_match"); @@ -2771,42 +2771,42 @@ do_sub(int nargs, unsigned int flags) int ampersands; int matches = 0; Regexp *rp; - NODE *s; /* subst. pattern */ - NODE *t; /* string to make sub. in; $0 if none given */ + NODE *rep_node; /* replacement text */ + NODE *target; /* string to make sub. in; $0 if none given */ NODE *tmp; NODE **lhs = NULL; long how_many = 1; /* one substitution for sub, also gensub default */ - int global; + bool global; long current; bool lastmatchnonzero; char *mb_indices = NULL; if ((flags & GENSUB) != 0) { double d; - NODE *t1; + NODE *glob_flag; tmp = PEEK(3); rp = re_update(tmp); - t = POP_STRING(); /* original string */ + target = POP_STRING(); /* original string */ - t1 = POP_SCALAR(); /* value of global flag */ - if ((t1->flags & (STRCUR|STRING)) != 0) { - if (t1->stlen > 0 && (t1->stptr[0] == 'g' || t1->stptr[0] == 'G')) + glob_flag = POP_SCALAR(); /* value of global flag */ + if ((glob_flag->flags & (STRCUR|STRING)) != 0) { + if (glob_flag->stlen > 0 && (glob_flag->stptr[0] == 'g' || glob_flag->stptr[0] == 'G')) how_many = -1; else { - (void) force_number(t1); - d = get_number_d(t1); - if ((t1->flags & NUMCUR) != 0) + (void) force_number(glob_flag); + d = get_number_d(glob_flag); + if ((glob_flag->flags & NUMCUR) != 0) goto set_how_many; warning(_("gensub: third argument `%.*s' treated as 1"), - (int) t1->stlen, t1->stptr); + (int) glob_flag->stlen, glob_flag->stptr); how_many = 1; } } else { - (void) force_number(t1); - d = get_number_d(t1); + (void) force_number(glob_flag); + d = get_number_d(glob_flag); set_how_many: if (d < 1) how_many = 1; @@ -2817,10 +2817,8 @@ set_how_many: if (d <= 0) warning(_("gensub: third argument %g treated as 1"), d); } - DEREF(t1); - + DEREF(glob_flag); } else { - /* take care of regexp early, in case re_update is fatal */ tmp = PEEK(2); @@ -2832,30 +2830,30 @@ set_how_many: /* original string */ if ((flags & LITERAL) != 0) - t = POP_STRING(); + target = POP_STRING(); else { lhs = POP_ADDRESS(); - t = force_string(*lhs); + target = force_string(*lhs); } } global = (how_many == -1); - s = POP_STRING(); /* replacement text */ + rep_node = POP_STRING(); /* replacement text */ decr_sp(); /* regexp, already updated above */ /* do the search early to avoid work on non-match */ - if (research(rp, t->stptr, 0, t->stlen, RE_NEED_START) == -1 || - RESTART(rp, t->stptr) > t->stlen) + if (research(rp, target->stptr, 0, target->stlen, RE_NEED_START) == -1 || + RESTART(rp, target->stptr) > target->stlen) goto done; - t->flags |= STRING; + target->flags |= STRING; - text = t->stptr; - textlen = t->stlen; + text = target->stptr; + textlen = target->stlen; - repl = s->stptr; - replend = repl + s->stlen; + repl = rep_node->stptr; + replend = repl + rep_node->stlen; repllen = replend - repl; ampersands = 0; @@ -2873,6 +2871,7 @@ set_how_many: index_multibyte_buffer(repl, mb_indices, repllen); } + /* compute length of replacement string, number of ampersands */ for (scan = repl; scan < replend; scan++) { if ((gawk_mb_cur_max == 1 || (repllen > 0 && mb_indices[scan - repl] == 1)) && (*scan == '&')) { @@ -2917,24 +2916,32 @@ set_how_many: lastmatchnonzero = false; - /* guesstimate how much room to allocate; +2 forces > 0 */ - buflen = textlen + (ampersands + 1) * repllen + 2; - emalloc(buf, char *, buflen + 2, "do_sub"); + /* guesstimate how much room to allocate; +1 forces > 0 */ + buflen = textlen + (ampersands + 1) * repllen + 1; + emalloc(buf, char *, buflen + 1, "do_sub"); buf[buflen] = '\0'; - buf[buflen + 1] = '\0'; bp = buf; for (current = 1;; current++) { matches++; - matchstart = t->stptr + RESTART(rp, t->stptr); - matchend = t->stptr + REEND(rp, t->stptr); + matchstart = target->stptr + RESTART(rp, target->stptr); + matchend = target->stptr + REEND(rp, target->stptr); /* * create the result, copying in parts of the original - * string + * string. note that length of replacement string can + * vary since ampersand is actual text of regexp match. + */ + + /* + * add 1 to len to handle "empty" case where + * matchend == matchstart and we force a match on a single + * char. Use 'matchend - text' instead of 'matchstart - text' + * because we may not actually make any substitution depending + * on the 'global' and 'how_many' values. */ - len = matchstart - text + repllen - + ampersands * (matchend - matchstart); + len = matchend - text + repllen + + ampersands * (matchend - matchstart) + 1; sofar = bp - buf; while (buflen < (sofar + len + 1)) { buflen *= 2; @@ -2981,13 +2988,13 @@ set_how_many: if (flags & GENSUB) { /* gensub, behave sanely */ if (isdigit((unsigned char) scan[1])) { int dig = scan[1] - '0'; - if (dig < NUMSUBPATS(rp, t->stptr) && SUBPATSTART(rp, tp->stptr, dig) != -1) { + if (dig < NUMSUBPATS(rp, target->stptr) && SUBPATSTART(rp, tp->stptr, dig) != -1) { char *start, *end; - start = t->stptr - + SUBPATSTART(rp, t->stptr, dig); - end = t->stptr - + SUBPATEND(rp, t->stptr, dig); + start = target->stptr + + SUBPATSTART(rp, target->stptr, dig); + end = target->stptr + + SUBPATEND(rp, target->stptr, dig); for (cp = start; cp < end; cp++) *bp++ = *cp; @@ -3041,19 +3048,29 @@ set_how_many: textlen = text + textlen - matchend; text = matchend; +#if 0 + if (bp - buf > sofar + len) + fprintf(stderr, "debug: len = %zu, but used %ld\n", len, (long)((bp - buf) - (long)sofar)); +#endif + if ((current >= how_many && ! global) || ((long) textlen <= 0 && matchstart == matchend) - || research(rp, t->stptr, text - t->stptr, textlen, RE_NEED_START) == -1) + || research(rp, target->stptr, text - target->stptr, textlen, RE_NEED_START) == -1) break; } sofar = bp - buf; - if (buflen - sofar - textlen - 1) { - buflen = sofar + textlen + 2; + if (buflen < (sofar + textlen + 1)) { + buflen = sofar + textlen + 1; erealloc(buf, char *, buflen, "do_sub"); bp = buf + sofar; } - for (scan = matchend; scan < text + textlen; scan++) + /* + * Note that text == matchend, since that assignment is made before + * exiting the 'for' loop above. Thus we copy in the rest of the + * original string. + */ + for (scan = text; scan < text + textlen; scan++) *bp++ = *scan; *bp = '\0'; textlen = bp - buf; @@ -3062,7 +3079,7 @@ set_how_many: efree(mb_indices); done: - DEREF(s); + DEREF(rep_node); if ((matches == 0 || (flags & LITERAL) != 0) && buf != NULL) { efree(buf); @@ -3072,18 +3089,18 @@ done: if (flags & GENSUB) { if (matches > 0) { /* return the result string */ - DEREF(t); + DEREF(target); assert(buf != NULL); return make_str_node(buf, textlen, ALREADY_MALLOCED); } /* return the original string */ - return t; + return target; } /* For a string literal, must not change the original string. */ if ((flags & LITERAL) != 0) - DEREF(t); + DEREF(target); else if (matches > 0) { unref(*lhs); *lhs = make_str_node(buf, textlen, ALREADY_MALLOCED); @@ -2515,7 +2515,7 @@ append_statement(CMDARG *stmt_list, char *stmt) len += strlen(a->a_string) + 1; /* 1 for ',' */ len += EVALSIZE; - emalloc(s, char *, (len + 2) * sizeof(char), "append_statement"); + emalloc(s, char *, (len + 1) * sizeof(char), "append_statement"); arg = mk_cmdarg(D_string); arg->a_string = s; arg->a_count = len; /* kludge */ @@ -2542,7 +2542,7 @@ append_statement(CMDARG *stmt_list, char *stmt) ssize = stmt_list->a_count; if (len > ssize - slen) { ssize = slen + len + EVALSIZE; - erealloc(s, char *, (ssize + 2) * sizeof(char), "append_statement"); + erealloc(s, char *, (ssize + 1) * sizeof(char), "append_statement"); stmt_list->a_string = s; stmt_list->a_count = ssize; } @@ -2554,7 +2554,7 @@ append_statement(CMDARG *stmt_list, char *stmt) } if (stmt == end_EVAL) - erealloc(stmt_list->a_string, char *, slen + 2, "append_statement"); + erealloc(stmt_list->a_string, char *, slen + 1, "append_statement"); return stmt_list; #undef EVALSIZE @@ -2921,7 +2921,7 @@ again: bool esc_seen = false; toklen = lexend - lexptr; - emalloc(str, char *, toklen + 2, "yylex"); + emalloc(str, char *, toklen + 1, "yylex"); p = str; while ((c = *++lexptr) != '"') { @@ -3100,7 +3100,7 @@ concat_args(CMDARG *arg, int count) arg = arg->next; } - emalloc(str, char *, len + 2, "concat_args"); + emalloc(str, char *, len + 1, "concat_args"); n = tmp[0]; memcpy(str, n->stptr, n->stlen); p = str + n->stlen; @@ -764,7 +764,7 @@ append_statement(CMDARG *stmt_list, char *stmt) len += strlen(a->a_string) + 1; /* 1 for ',' */ len += EVALSIZE; - emalloc(s, char *, (len + 2) * sizeof(char), "append_statement"); + emalloc(s, char *, (len + 1) * sizeof(char), "append_statement"); arg = mk_cmdarg(D_string); arg->a_string = s; arg->a_count = len; /* kludge */ @@ -791,7 +791,7 @@ append_statement(CMDARG *stmt_list, char *stmt) ssize = stmt_list->a_count; if (len > ssize - slen) { ssize = slen + len + EVALSIZE; - erealloc(s, char *, (ssize + 2) * sizeof(char), "append_statement"); + erealloc(s, char *, (ssize + 1) * sizeof(char), "append_statement"); stmt_list->a_string = s; stmt_list->a_count = ssize; } @@ -803,7 +803,7 @@ append_statement(CMDARG *stmt_list, char *stmt) } if (stmt == end_EVAL) - erealloc(stmt_list->a_string, char *, slen + 2, "append_statement"); + erealloc(stmt_list->a_string, char *, slen + 1, "append_statement"); return stmt_list; #undef EVALSIZE @@ -1170,7 +1170,7 @@ again: bool esc_seen = false; toklen = lexend - lexptr; - emalloc(str, char *, toklen + 2, "yylex"); + emalloc(str, char *, toklen + 1, "yylex"); p = str; while ((c = *++lexptr) != '"') { @@ -1349,7 +1349,7 @@ concat_args(CMDARG *arg, int count) arg = arg->next; } - emalloc(str, char *, len + 2, "concat_args"); + emalloc(str, char *, len + 1, "concat_args"); n = tmp[0]; memcpy(str, n->stptr, n->stlen); p = str + n->stlen; @@ -4205,10 +4205,10 @@ gprintf(FILE *fp, const char *format, ...) #define GPRINTF_BUFSIZ 512 if (buf == NULL) { buflen = GPRINTF_BUFSIZ; - emalloc(buf, char *, (buflen + 2) * sizeof(char), "gprintf"); + emalloc(buf, char *, buflen * sizeof(char), "gprintf"); } else if (buflen - bl < GPRINTF_BUFSIZ/2) { buflen += GPRINTF_BUFSIZ; - erealloc(buf, char *, (buflen + 2) * sizeof(char), "gprintf"); + erealloc(buf, char *, buflen * sizeof(char), "gprintf"); } #undef GPRINTF_BUFSIZ @@ -4227,7 +4227,7 @@ gprintf(FILE *fp, const char *format, ...) /* enlarge buffer, and try again */ buflen *= 2; - erealloc(buf, char *, (buflen + 2) * sizeof(char), "gprintf"); + erealloc(buf, char *, buflen * sizeof(char), "gprintf"); } bl = 0; @@ -4267,7 +4267,7 @@ gprintf(FILE *fp, const char *format, ...) static int serialize_subscript(char *buf, int buflen, struct list_item *item) { - int bl = 0, nchar, i; + int bl, nchar, i; NODE *sub; nchar = snprintf(buf, buflen, "%d%c%d%c%s%c%d%c", @@ -4277,7 +4277,7 @@ serialize_subscript(char *buf, int buflen, struct list_item *item) return 0; else if (nchar >= buflen) /* need larger buffer */ return nchar; - bl += nchar; + bl = nchar; for (i = 0; i < item->num_subs; i++) { sub = item->subs[i]; nchar = snprintf(buf + bl, buflen - bl, "%lu%c%s%c", @@ -4356,7 +4356,7 @@ serialize(int type) if (buf == NULL) { /* first time */ buflen = SERIALIZE_BUFSIZ; - emalloc(buf, char *, buflen + 2, "serialize"); + emalloc(buf, char *, buflen + 1, "serialize"); } bl = 0; @@ -4365,7 +4365,7 @@ serialize(int type) if (buflen - bl < SERIALIZE_BUFSIZ/2) { enlarge_buffer: buflen *= 2; - erealloc(buf, char *, buflen + 2, "serialize"); + erealloc(buf, char *, buflen + 1, "serialize"); } #undef SERIALIZE_BUFSIZ @@ -4466,7 +4466,7 @@ enlarge_buffer: } if (nchar > 0) { /* non-empty commands list */ - nchar += (strlen("commands ") + 20 + strlen("end") + 2); /* 20 for cnum (an int) */ + nchar += (strlen("commands ") + 20 + strlen("end") + 1); /* 20 for cnum (an int) */ if (nchar > buflen - bl) { buflen = bl + nchar; erealloc(buf, char *, buflen + 3, "serialize"); diff --git a/doc/ChangeLog b/doc/ChangeLog index c91b9bf1..c436758f 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,3 +1,7 @@ +2015-04-16 Arnold D. Robbins <arnold@skeeve.com> + + * gawktexi.in (Undocumented): More info added. + 2015-04-08 Arnold D. Robbins <arnold@skeeve.com> * gawktexi.in: Update feature history section. diff --git a/doc/gawk.texi b/doc/gawk.texi index e86e8bba..501aacde 100644 --- a/doc/gawk.texi +++ b/doc/gawk.texi @@ -4900,6 +4900,13 @@ Similarly, you may use @code{print} or @code{printf} statements in the @var{init} and @var{increment} parts of a @code{for} loop. This is another long-undocumented ``feature'' of Unix @command{awk}. +@command{gawk} lets you use the names of built-in functions that are +@command{gawk} extensions as the names of parameters in user-defined functions. +This is intended to ``future-proof'' old code that happens to use +function names added by @command{gawk} after the code was written. +Standard @command{awk} built-in functions, such as @code{sin()} or +@code{substr()} are @emph{not} shadowed in this way. + @end ignore @node Invoking Summary diff --git a/doc/gawktexi.in b/doc/gawktexi.in index aa2a78f3..663353d4 100644 --- a/doc/gawktexi.in +++ b/doc/gawktexi.in @@ -4811,6 +4811,13 @@ Similarly, you may use @code{print} or @code{printf} statements in the @var{init} and @var{increment} parts of a @code{for} loop. This is another long-undocumented ``feature'' of Unix @command{awk}. +@command{gawk} lets you use the names of built-in functions that are +@command{gawk} extensions as the names of parameters in user-defined functions. +This is intended to ``future-proof'' old code that happens to use +function names added by @command{gawk} after the code was written. +Standard @command{awk} built-in functions, such as @code{sin()} or +@code{substr()} are @emph{not} shadowed in this way. + @end ignore @node Invoking Summary @@ -828,9 +828,9 @@ set_OFS() new_ofs_len = OFS_node->var_value->stlen; if (OFS == NULL) - emalloc(OFS, char *, new_ofs_len + 2, "set_OFS"); + emalloc(OFS, char *, new_ofs_len + 1, "set_OFS"); else if (OFSlen < new_ofs_len) - erealloc(OFS, char *, new_ofs_len + 2, "set_OFS"); + erealloc(OFS, char *, new_ofs_len + 1, "set_OFS"); memcpy(OFS, OFS_node->var_value->stptr, OFS_node->var_value->stlen); OFSlen = new_ofs_len; @@ -1329,7 +1329,13 @@ setup_frame(INSTRUCTION *pc) if (m->type == Node_param_list) m = GET_PARAM(m->param_cnt); - + + /* $0 needs to be passed by value to a function */ + if (m == fields_arr[0]) { + DEREF(m); + m = dupnode(m); + } + switch (m->type) { case Node_var_new: case Node_var_array: diff --git a/extension/ChangeLog b/extension/ChangeLog index 2769a350..9df8ae00 100644 --- a/extension/ChangeLog +++ b/extension/ChangeLog @@ -86,6 +86,13 @@ (errno_la_SOURCES, errno_la_LDFLAGS, errno_la_LIBADD): Remove. (EXTRA_DIST): Remove errlist.h. +2014-12-14 Andrew J. Schorr <aschorr@telemetry-investments.com> + + * readfile.c (read_file_to_buffer): Do not waste a byte at the end of + a string. + * rwarray.c (read_value): Ditto. + * rwarray0.c (read_value): Ditto. + 2014-11-23 Arnold D. Robbins <arnold@skeeve.com> * inplace.c (do_inplace_begin): Jump through hoops to silence diff --git a/extension/readfile.c b/extension/readfile.c index d4b4aef9..7673589f 100644 --- a/extension/readfile.c +++ b/extension/readfile.c @@ -82,8 +82,8 @@ read_file_to_buffer(int fd, const struct stat *sbuf) goto done; } - emalloc(text, char *, sbuf->st_size + 2, "do_readfile"); - memset(text, '\0', sbuf->st_size + 2); + emalloc(text, char *, sbuf->st_size + 1, "do_readfile"); + memset(text, '\0', sbuf->st_size + 1); if ((ret = read(fd, text, sbuf->st_size)) != sbuf->st_size) { update_ERRNO_int(errno); diff --git a/extension/rwarray.c b/extension/rwarray.c index aa05a0d5..5bead973 100644 --- a/extension/rwarray.c +++ b/extension/rwarray.c @@ -468,8 +468,8 @@ read_value(FILE *fp, awk_value_t *value) len = ntohl(len); value->val_type = AWK_STRING; value->str_value.len = len; - value->str_value.str = gawk_malloc(len + 2); - memset(value->str_value.str, '\0', len + 2); + value->str_value.str = gawk_malloc(len + 1); + memset(value->str_value.str, '\0', len + 1); if (fread(value->str_value.str, 1, len, fp) != (ssize_t) len) { gawk_free(value->str_value.str); diff --git a/extension/rwarray0.c b/extension/rwarray0.c index e2de3cf5..ec3663cc 100644 --- a/extension/rwarray0.c +++ b/extension/rwarray0.c @@ -452,8 +452,8 @@ read_value(int fd, awk_value_t *value) len = ntohl(len); value->val_type = AWK_STRING; value->str_value.len = len; - value->str_value.str = malloc(len + 2); - memset(value->str_value.str, '\0', len + 2); + value->str_value.str = malloc(len + 1); + memset(value->str_value.str, '\0', len + 1); if (read(fd, value->str_value.str, len) != (ssize_t) len) { free(value->str_value.str); @@ -163,7 +163,7 @@ rebuild_record() tlen += (NF - 1) * OFSlen; if ((long) tlen < 0) tlen = 0; - emalloc(ops, char *, tlen + 2, "rebuild_record"); + emalloc(ops, char *, tlen + 1, "rebuild_record"); cops = ops; ops[0] = '\0'; for (i = 1; i <= NF; i++) { @@ -1138,7 +1138,7 @@ set_FIELDWIDTHS() FIELDWIDTHS[0] = 0; for (i = 1; ; i++) { unsigned long int tmp; - if (i + 2 >= fw_alloc) { + if (i + 1 >= fw_alloc) { fw_alloc *= 2; erealloc(FIELDWIDTHS, int *, fw_alloc * sizeof(int), "set_FIELDWIDTHS"); } @@ -827,7 +827,7 @@ r_make_string(const gawk_api_t *api, /* needed for emalloc */ result->str_value.len = length; if (duplicate) { - emalloc(cp, char *, length + 2, "r_make_string"); + emalloc(cp, char *, length + 1, "r_make_string"); memcpy(cp, string, length); cp[length] = '\0'; result->str_value.str = cp; diff --git a/helpers/ChangeLog b/helpers/ChangeLog index a5bbafb1..5a3f2fe3 100644 --- a/helpers/ChangeLog +++ b/helpers/ChangeLog @@ -1,3 +1,11 @@ +2015-04-09 Andrew J. Schorr <aschorr@telemetry-investments.com> + + * testdfa.c (setup_pattern): Rationalize buffer size computations. + +2014-12-18 Arnold D. Robbins <arnold@skeeve.com> + + * testdfa.c (setup_pattern): Do not waste a byte at the end of a string. + 2014-09-04 Arnold D. Robbins <arnold@skeeve.com> * chlistref.awk: New file. Finds @ref{} to non-chapters. diff --git a/helpers/testdfa.c b/helpers/testdfa.c index 25a229a2..2b773467 100644 --- a/helpers/testdfa.c +++ b/helpers/testdfa.c @@ -372,10 +372,10 @@ setup_pattern(const char *pattern, size_t *len) { size_t is_multibyte = 0; int c, c2; - size_t buflen = 0; + size_t buflen; mbstate_t mbs; bool has_anchor = false; - char *buf = NULL; + char *buf; char *dest; const char *src, *end; @@ -391,21 +391,12 @@ setup_pattern(const char *pattern, size_t *len) * escaped characters translated, and generate the regex * from that. */ + buf = (char *) malloc(*len + 1); if (buf == NULL) { - buf = (char *) malloc(*len + 2); - if (buf == NULL) { - fprintf(stderr, "%s: malloc failed\n", __func__); - exit(EXIT_FAILURE); - } - buflen = *len; - } else if (*len > buflen) { - buf = (char *) realloc(buf, *len + 2); - if (buf == NULL) { - fprintf(stderr, "%s: realloc failed\n", __func__); - exit(EXIT_FAILURE); - } - buflen = *len; + fprintf(stderr, "%s: malloc failed\n", __func__); + exit(EXIT_FAILURE); } + buflen = *len; dest = buf; while (src < end) { diff --git a/interpret.h b/interpret.h index b76952f1..03532f43 100644 --- a/interpret.h +++ b/interpret.h @@ -709,7 +709,7 @@ mod: if (t1 != t2 && t1->valref == 1 && (t1->flags & MPFN) == 0) { size_t nlen = t1->stlen + t2->stlen; - erealloc(t1->stptr, char *, nlen + 2, "r_interpret"); + erealloc(t1->stptr, char *, nlen + 1, "r_interpret"); memcpy(t1->stptr + t1->stlen, t2->stptr, t2->stlen); t1->stlen = nlen; t1->stptr[nlen] = '\0'; @@ -719,7 +719,7 @@ mod: size_t wlen = t1->wstlen + t2->wstlen; erealloc(t1->wstptr, wchar_t *, - sizeof(wchar_t) * (wlen + 2), "r_interpret"); + sizeof(wchar_t) * (wlen + 1), "r_interpret"); memcpy(t1->wstptr + t1->wstlen, t2->wstptr, t2->wstlen); t1->wstlen = wlen; t1->wstptr[wlen] = L'\0'; @@ -730,9 +730,10 @@ mod: size_t nlen = t1->stlen + t2->stlen; char *p; - emalloc(p, char *, nlen + 2, "r_interpret"); + emalloc(p, char *, nlen + 1, "r_interpret"); memcpy(p, t1->stptr, t1->stlen); memcpy(p + t1->stlen, t2->stptr, t2->stlen); + /* N.B. No NUL-termination required, since make_str_node will do it. */ unref(*lhs); t1 = *lhs = make_str_node(p, nlen, ALREADY_MALLOCED); } @@ -2709,6 +2709,7 @@ init_awkpath(path_info *pi) end++; len = end - start; if (len > 0) { + /* +2 is correct here; leave room for / */ emalloc(p, char *, len + 2, "init_awkpath"); memcpy(p, start, len); @@ -3163,7 +3164,7 @@ iop_finish(IOBUF *iop) lintwarn(_("data file `%s' is empty"), iop->public.name); iop->errcode = errno = 0; iop->count = iop->scanoff = 0; - emalloc(iop->buf, char *, iop->size += 2, "iop_finish"); + emalloc(iop->buf, char *, iop->size += 1, "iop_finish"); iop->off = iop->buf; iop->dataend = NULL; iop->end = iop->buf + iop->size; @@ -3195,10 +3196,10 @@ grow_iop_buffer(IOBUF *iop) size_t newsize; /* - * Lop off original extra two bytes, double the size, - * add them back. + * Lop off original extra byte, double the size, + * add it back. */ - newsize = ((iop->size - 2) * 2) + 2; + newsize = ((iop->size - 1) * 2) + 1; /* Check for overflow */ if (newsize <= iop->size) @@ -3206,7 +3207,7 @@ grow_iop_buffer(IOBUF *iop) /* Make sure there's room for a disk block */ if (newsize - valid < iop->readsize) - newsize += iop->readsize + 2; + newsize += iop->readsize + 1; /* Check for overflow, again */ if (newsize <= iop->size) @@ -261,7 +261,7 @@ r_format_val(const char *format, int index, NODE *s) } if (s->stptr != NULL) efree(s->stptr); - emalloc(s->stptr, char *, s->stlen + 2, "format_val"); + emalloc(s->stptr, char *, s->stlen + 1, "format_val"); memcpy(s->stptr, sp, s->stlen + 1); no_malloc: s->flags |= STRCUR; @@ -299,12 +299,12 @@ r_dupnode(NODE *n) r->wstlen = 0; if ((n->flags & STRCUR) != 0) { - emalloc(r->stptr, char *, n->stlen + 2, "r_dupnode"); + emalloc(r->stptr, char *, n->stlen + 1, "r_dupnode"); memcpy(r->stptr, n->stptr, n->stlen); r->stptr[n->stlen] = '\0'; if ((n->flags & WSTRCUR) != 0) { r->wstlen = n->wstlen; - emalloc(r->wstptr, wchar_t *, sizeof(wchar_t) * (n->wstlen + 2), "r_dupnode"); + emalloc(r->wstptr, wchar_t *, sizeof(wchar_t) * (n->wstlen + 1), "r_dupnode"); memcpy(r->wstptr, n->wstptr, n->wstlen * sizeof(wchar_t)); r->wstptr[n->wstlen] = L'\0'; r->flags |= WSTRCUR; @@ -377,7 +377,7 @@ make_str_node(const char *s, size_t len, int flags) if ((flags & ALREADY_MALLOCED) != 0) r->stptr = (char *) s; else { - emalloc(r->stptr, char *, len + 2, "make_str_node"); + emalloc(r->stptr, char *, len + 1, "make_str_node"); memcpy(r->stptr, s, len); } r->stptr[len] = '\0'; @@ -681,7 +681,7 @@ str2wstr(NODE *n, size_t **ptr) * realloc the wide string down in size. */ - emalloc(n->wstptr, wchar_t *, sizeof(wchar_t) * (n->stlen + 2), "str2wstr"); + emalloc(n->wstptr, wchar_t *, sizeof(wchar_t) * (n->stlen + 1), "str2wstr"); wsp = n->wstptr; /* @@ -755,7 +755,7 @@ str2wstr(NODE *n, size_t **ptr) n->flags |= WSTRCUR; #define ARBITRARY_AMOUNT_TO_GIVE_BACK 100 if (n->stlen - n->wstlen > ARBITRARY_AMOUNT_TO_GIVE_BACK) - erealloc(n->wstptr, wchar_t *, sizeof(wchar_t) * (n->wstlen + 2), "str2wstr"); + erealloc(n->wstptr, wchar_t *, sizeof(wchar_t) * (n->wstlen + 1), "str2wstr"); return n; } @@ -782,7 +782,7 @@ wstr2str(NODE *n) memset(& mbs, 0, sizeof(mbs)); length = n->wstlen; - emalloc(newval, char *, (length * gawk_mb_cur_max) + 2, "wstr2str"); + emalloc(newval, char *, (length * gawk_mb_cur_max) + 1, "wstr2str"); wp = n->wstptr; for (cp = newval; length > 0; length--) { diff --git a/old-extension/ChangeLog b/old-extension/ChangeLog index 55c8d31d..dad5c794 100644 --- a/old-extension/ChangeLog +++ b/old-extension/ChangeLog @@ -1,3 +1,12 @@ +2015-04-09 Andrew J. Schorr <aschorr@telemetry-investments.com> + + * bindarr.c (do_bind_array): Undo Arnold's change of 2014-12-18. + +2014-12-18 Arnold D. Robbins <arnold@skeeve.com> + + * bindarr.c (do_bind_array): Do not waste a byte at the end of a string. + * fileop.c (do_fread): Ditto. + 2014-01-07 Arnold D. Robbins <arnold@skeeve.com> * dbarray.awk: Use full name for lib to load in extenstion() call. diff --git a/old-extension/bindarr.c b/old-extension/bindarr.c index 60959903..41467425 100644 --- a/old-extension/bindarr.c +++ b/old-extension/bindarr.c @@ -235,7 +235,7 @@ do_bind_array(int nargs) } /* copy the array -- this is passed as the second argument to the functions */ - emalloc(aname, char *, strlen(t->vname) + 2, "do_bind_array"); + emalloc(aname, char *, 1 + strlen(symbol->vname) + 1, "do_bind_array"); aname[0] = '~'; /* any illegal character */ strcpy(& aname[1], symbol->vname); td = make_array(); diff --git a/old-extension/fileop.c b/old-extension/fileop.c index 86f62576..d76a7ded 100644 --- a/old-extension/fileop.c +++ b/old-extension/fileop.c @@ -55,7 +55,7 @@ do_fread(int nargs) force_number(arg); rlen = get_number_ui(arg); - emalloc(rbuf, char *, rlen + 2, "do_fread"); + emalloc(rbuf, char *, rlen + 1, "do_fread"); if ((count = fread(rbuf, 1, rlen, f->fp)) < rlen) { if (! feof(f->fp)) update_ERRNO_int(errno); @@ -8,10 +8,10 @@ # Review by Ask Hjorth Larsen <asklarsen@gmail.com>, 2011. msgid "" msgstr "" -"Project-Id-Version: gawk 4.0.0h\n" +"Project-Id-Version: gawk 4.1.1d\n" "Report-Msgid-Bugs-To: bug-gawk@gnu.org\n" -"POT-Creation-Date: 2015-02-26 20:05+0200\n" -"PO-Revision-Date: 2012-02-06 10:37+0100\n" +"POT-Creation-Date: 2015-04-16 17:16+0300\n" +"PO-Revision-Date: 2015-04-26 12:37+0200\n" "Last-Translator: Keld Simonsen <keld@keldix.com>\n" "Language-Team: Danish <dansk@dansk-gruppen.dk>\n" "Language: da\n" @@ -41,7 +41,7 @@ msgid "attempt to use scalar `%s' as an array" msgstr "forsøg på at bruge skalar '%s' som et array" #: array.c:409 array.c:576 builtin.c:85 builtin.c:1606 builtin.c:1652 -#: builtin.c:1665 builtin.c:2092 builtin.c:2106 eval.c:1149 eval.c:1153 +#: builtin.c:1665 builtin.c:2106 builtin.c:2120 eval.c:1149 eval.c:1153 #: eval.c:1558 #, c-format msgid "attempt to use array `%s' in a scalar context" @@ -58,9 +58,8 @@ msgid "attempt to use scalar `%s[\"%.*s\"]' as an array" msgstr "forsøg på at bruge skalaren '%s[\"%.*s\"]' som array" #: array.c:776 -#, fuzzy msgid "adump: first argument not an array" -msgstr "adump: argument er ikke et array" +msgstr "adump: første argument er ikke et array" #: array.c:815 msgid "asort: second argument not an array" @@ -80,23 +79,19 @@ msgstr "asorti: første argument er ikke et array" #: array.c:831 msgid "asort: cannot use a subarray of first arg for second arg" -msgstr "" -"asort: kan ikke bruge et underarray af første argument for andet argument" +msgstr "asort: kan ikke bruge et underarray af første argument for andet argument" #: array.c:832 msgid "asorti: cannot use a subarray of first arg for second arg" -msgstr "" -"asorti: kan ikke bruge et underarray af første argument for andet argument" +msgstr "asorti: kan ikke bruge et underarray af første argument for andet argument" #: array.c:837 msgid "asort: cannot use a subarray of second arg for first arg" -msgstr "" -"asort: kan ikke bruge et underarray af andet argument for første argument" +msgstr "asort: kan ikke bruge et underarray af andet argument for første argument" #: array.c:838 msgid "asorti: cannot use a subarray of second arg for first arg" -msgstr "" -"asorti: kan ikke bruge et underarray af andet argument for første argument" +msgstr "asorti: kan ikke bruge et underarray af andet argument for første argument" #: array.c:1313 #, c-format @@ -108,410 +103,398 @@ msgstr "'%s' er ugyldigt som funktionsnavn" msgid "sort comparison function `%s' is not defined" msgstr "funktionen for sorteringssammenligning '%s' er ikke defineret" -#: awkgram.y:226 +#: awkgram.y:225 #, c-format msgid "%s blocks must have an action part" msgstr "%s-blokke skal have en handlingsdel" -#: awkgram.y:229 +#: awkgram.y:228 msgid "each rule must have a pattern or an action part" msgstr "hver regel skal have et mønster eller en handlingsdel" -#: awkgram.y:320 awkgram.y:331 +#: awkgram.y:319 awkgram.y:330 msgid "old awk does not support multiple `BEGIN' or `END' rules" -msgstr "" -"gamle versioner af awk understøtter ikke flere 'BEGIN'- eller 'END'-regler" +msgstr "gamle versioner af awk understøtter ikke flere 'BEGIN'- eller 'END'-regler" -#: awkgram.y:368 +#: awkgram.y:367 #, c-format msgid "`%s' is a built-in function, it cannot be redefined" msgstr "'%s' er en indbygget funktion, den kan ikke omdefineres" -#: awkgram.y:417 +#: awkgram.y:416 msgid "regexp constant `//' looks like a C++ comment, but is not" msgstr "regexp-konstanten '//' ser ud som en C++-kommentar, men er det ikke" -#: awkgram.y:421 +#: awkgram.y:420 #, c-format msgid "regexp constant `/%s/' looks like a C comment, but is not" msgstr "regexp-konstanten '/%s/' ser ud som en C-kommentar, men er det ikke" -#: awkgram.y:513 +#: awkgram.y:512 #, c-format msgid "duplicate case values in switch body: %s" msgstr "dublet case-værdier i switch-krop %s" -#: awkgram.y:534 +#: awkgram.y:533 msgid "duplicate `default' detected in switch body" msgstr "dublet 'default' opdaget i switch-krop" -#: awkgram.y:794 awkgram.y:3751 +#: awkgram.y:793 awkgram.y:3750 msgid "`break' is not allowed outside a loop or switch" msgstr "'break' uden for en løkke eller switch er ikke tilladt" -#: awkgram.y:803 awkgram.y:3743 +#: awkgram.y:802 awkgram.y:3742 msgid "`continue' is not allowed outside a loop" msgstr "'continue' uden for en løkke er ikke tilladt" -#: awkgram.y:813 +#: awkgram.y:812 #, c-format msgid "`next' used in %s action" msgstr "'next' brugt i %s-handling" -#: awkgram.y:822 +#: awkgram.y:821 #, c-format msgid "`nextfile' used in %s action" msgstr "'nextfile' brugt i %s-handling" -#: awkgram.y:846 +#: awkgram.y:845 msgid "`return' used outside function context" msgstr "'return' brugt uden for funktion" -#: awkgram.y:920 +#: awkgram.y:919 msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'" -msgstr "" -"alenestående 'print' i BEGIN eller END-regel skulle muligvis være 'print " -"\"\"'" +msgstr "alenestående 'print' i BEGIN eller END-regel skulle muligvis være 'print \"\"'" -#: awkgram.y:986 awkgram.y:1035 +#: awkgram.y:985 awkgram.y:1034 msgid "`delete' is not allowed with SYMTAB" msgstr "" -#: awkgram.y:988 awkgram.y:1037 +#: awkgram.y:987 awkgram.y:1036 msgid "`delete' is not allowed with FUNCTAB" msgstr "" -#: awkgram.y:1022 awkgram.y:1026 +#: awkgram.y:1021 awkgram.y:1025 msgid "`delete(array)' is a non-portable tawk extension" msgstr "'delete array' er en ikke-portabel udvidelse fra tawk" -#: awkgram.y:1147 +#: awkgram.y:1146 msgid "multistage two-way pipelines don't work" msgstr "flertrins dobbeltrettede datakanaler fungerer ikke" -#: awkgram.y:1262 +#: awkgram.y:1261 msgid "regular expression on right of assignment" msgstr "regulært udtryk i højreleddet af en tildeling" -#: awkgram.y:1273 +#: awkgram.y:1272 msgid "regular expression on left of `~' or `!~' operator" msgstr "regulært udtryk på venstre side af en '~'- eller '!~'-operator" -#: awkgram.y:1289 awkgram.y:1431 +#: awkgram.y:1288 awkgram.y:1430 msgid "old awk does not support the keyword `in' except after `for'" -msgstr "" -"gamle versioner af awk understøtter ikke nøgleordet 'in' undtagen efter 'for'" +msgstr "gamle versioner af awk understøtter ikke nøgleordet 'in' undtagen efter 'for'" -#: awkgram.y:1299 +#: awkgram.y:1298 msgid "regular expression on right of comparison" msgstr "regulært udtryk i højreleddet af en sammenligning" -#: awkgram.y:1411 +#: awkgram.y:1410 #, c-format msgid "non-redirected `getline' invalid inside `%s' rule" msgstr "ikke-omdirigeret 'getline' ugyldig inden i '%s'-regel" -#: awkgram.y:1414 +#: awkgram.y:1413 msgid "non-redirected `getline' undefined inside END action" msgstr "ikke-omdirigeret 'getline' udefineret inden i END-handling" -#: awkgram.y:1433 +#: awkgram.y:1432 msgid "old awk does not support multidimensional arrays" msgstr "gamle versioner af awk understøtter ikke flerdimensionale array" -#: awkgram.y:1530 +#: awkgram.y:1529 msgid "call of `length' without parentheses is not portable" msgstr "kald af 'length' uden parenteser er ikke portabelt" -#: awkgram.y:1596 +#: awkgram.y:1595 msgid "indirect function calls are a gawk extension" msgstr "indirekte funktionskald er en gawk-udvidelse" -#: awkgram.y:1609 +#: awkgram.y:1608 #, c-format msgid "can not use special variable `%s' for indirect function call" msgstr "kan ikke bruge specialvariabel '%s' til indirekte funktionskald" -#: awkgram.y:1635 -#, fuzzy, c-format +#: awkgram.y:1634 +#, c-format msgid "attempt to use non-function `%s' in function call" -msgstr "forsøg på at bruge funktionen '%s' som et array" +msgstr "forsøg på at bruge ikke-funktionen '%s' som et funktionskald" -#: awkgram.y:1699 +#: awkgram.y:1698 msgid "invalid subscript expression" msgstr "ugyldigt indeksudtryk" -#: awkgram.y:2045 awkgram.y:2065 gawkapi.c:206 gawkapi.c:224 msg.c:126 +#: awkgram.y:2044 awkgram.y:2064 gawkapi.c:206 gawkapi.c:224 msg.c:126 msgid "warning: " msgstr "advarsel: " -#: awkgram.y:2063 gawkapi.c:192 gawkapi.c:221 msg.c:158 +#: awkgram.y:2062 gawkapi.c:192 gawkapi.c:221 msg.c:158 msgid "fatal: " msgstr "fatal: " -#: awkgram.y:2113 +#: awkgram.y:2112 msgid "unexpected newline or end of string" msgstr "uventet nylinjetegn eller strengafslutning" -#: awkgram.y:2392 awkgram.y:2468 awkgram.y:2691 debug.c:523 debug.c:539 +#: awkgram.y:2391 awkgram.y:2467 awkgram.y:2690 debug.c:523 debug.c:539 #: debug.c:2812 debug.c:5055 #, c-format msgid "can't open source file `%s' for reading (%s)" msgstr "kan ikke åbne kildefilen '%s' for læsning (%s)" -#: awkgram.y:2393 awkgram.y:2518 -#, fuzzy, c-format +#: awkgram.y:2392 awkgram.y:2517 +#, c-format msgid "can't open shared library `%s' for reading (%s)" -msgstr "kan ikke åbne kildefilen '%s' for læsning (%s)" +msgstr "kan ikke åbne delt bibliotek '%s' for læsning (%s)" -#: awkgram.y:2395 awkgram.y:2469 awkgram.y:2519 builtin.c:135 debug.c:5206 +#: awkgram.y:2394 awkgram.y:2468 awkgram.y:2518 builtin.c:135 debug.c:5206 msgid "reason unknown" msgstr "ukendt årsag" -#: awkgram.y:2404 awkgram.y:2428 +#: awkgram.y:2403 awkgram.y:2427 #, c-format msgid "can't include `%s' and use it as a program file" msgstr "" -#: awkgram.y:2417 +#: awkgram.y:2416 #, c-format msgid "already included source file `%s'" msgstr "allerede inkluderet kildefil '%s'" -#: awkgram.y:2418 -#, fuzzy, c-format +#: awkgram.y:2417 +#, c-format msgid "already loaded shared library `%s'" -msgstr "allerede inkluderet kildefil '%s'" +msgstr "allerede indlæst delt bibliotek '%s'" -#: awkgram.y:2453 +#: awkgram.y:2452 msgid "@include is a gawk extension" msgstr "@include er en gawk-udvidelse" -#: awkgram.y:2459 +#: awkgram.y:2458 msgid "empty filename after @include" msgstr "tomt filnavn efter @include" -#: awkgram.y:2503 -#, fuzzy +#: awkgram.y:2502 msgid "@load is a gawk extension" -msgstr "@include er en gawk-udvidelse" +msgstr "@load er en gawk-udvidelse" -#: awkgram.y:2509 -#, fuzzy +#: awkgram.y:2508 msgid "empty filename after @load" -msgstr "tomt filnavn efter @include" +msgstr "tomt filnavn efter @load" -#: awkgram.y:2643 +#: awkgram.y:2642 msgid "empty program text on command line" msgstr "tom programtekst på kommandolinjen" -#: awkgram.y:2758 +#: awkgram.y:2757 #, c-format msgid "can't read sourcefile `%s' (%s)" msgstr "kan ikke læse kildefilen '%s' (%s)" -#: awkgram.y:2769 +#: awkgram.y:2768 #, c-format msgid "source file `%s' is empty" msgstr "kildefilen '%s' er tom" -#: awkgram.y:2828 +#: awkgram.y:2827 #, c-format msgid "PEBKAC error: invalid character '\\%03o' in source code" msgstr "" -#: awkgram.y:2959 +#: awkgram.y:2958 msgid "source file does not end in newline" msgstr "kildefilen slutter ikke med en ny linje" -#: awkgram.y:3062 +#: awkgram.y:3061 msgid "unterminated regexp ends with `\\' at end of file" msgstr "uafsluttet regulært udtryk slutter med '\\' i slutningen af filen" -#: awkgram.y:3089 +#: awkgram.y:3088 #, c-format msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "%s: %d: regex-ændringstegn '/.../%c' fra tawk virker ikke i gawk" -#: awkgram.y:3093 +#: awkgram.y:3092 #, c-format msgid "tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "regex-ændringstegn '/.../%c' fra tawk virker ikke i gawk" -#: awkgram.y:3100 +#: awkgram.y:3099 msgid "unterminated regexp" msgstr "uafsluttet regulært udtryk" -#: awkgram.y:3104 +#: awkgram.y:3103 msgid "unterminated regexp at end of file" msgstr "uafsluttet regulært udtryk i slutningen af filen" -#: awkgram.y:3162 +#: awkgram.y:3161 msgid "use of `\\ #...' line continuation is not portable" msgstr "brug af '\\ #...' for linjefortsættelse er ikke portabelt" -#: awkgram.y:3178 +#: awkgram.y:3177 msgid "backslash not last character on line" msgstr "sidste tegn på linjen er ikke en omvendt skråstreg" -#: awkgram.y:3239 +#: awkgram.y:3238 msgid "POSIX does not allow operator `**='" msgstr "POSIX tillader ikke operatoren '**='" -#: awkgram.y:3241 +#: awkgram.y:3240 msgid "old awk does not support operator `**='" msgstr "gamle versioner af awk understøtter ikke operatoren '**='" -#: awkgram.y:3250 +#: awkgram.y:3249 msgid "POSIX does not allow operator `**'" msgstr "POSIX tillader ikke operatoren '**'" -#: awkgram.y:3252 +#: awkgram.y:3251 msgid "old awk does not support operator `**'" msgstr "gamle versioner af awk understøtter ikke operatoren '**'" -#: awkgram.y:3287 +#: awkgram.y:3286 msgid "operator `^=' is not supported in old awk" msgstr "operatoren '^=' understøttes ikke i gamle versioner af awk" -#: awkgram.y:3295 +#: awkgram.y:3294 msgid "operator `^' is not supported in old awk" msgstr "operatoren '^' understøttes ikke i gamle versioner af awk" -#: awkgram.y:3392 awkgram.y:3410 command.y:1180 +#: awkgram.y:3391 awkgram.y:3409 command.y:1180 msgid "unterminated string" msgstr "uafsluttet streng" -#: awkgram.y:3631 +#: awkgram.y:3630 #, c-format msgid "invalid char '%c' in expression" msgstr "ugyldigt tegn '%c' i udtryk" -#: awkgram.y:3678 +#: awkgram.y:3677 #, c-format msgid "`%s' is a gawk extension" msgstr "'%s' er en gawk-udvidelse" -#: awkgram.y:3683 +#: awkgram.y:3682 #, c-format msgid "POSIX does not allow `%s'" msgstr "POSIX tillader ikke '%s'" -#: awkgram.y:3691 +#: awkgram.y:3690 #, c-format msgid "`%s' is not supported in old awk" msgstr "'%s' understøttes ikke i gamle versioner af awk" -#: awkgram.y:3781 +#: awkgram.y:3780 msgid "`goto' considered harmful!\n" msgstr "'goto' anses for skadelig!\n" -#: awkgram.y:3815 +#: awkgram.y:3814 #, c-format msgid "%d is invalid as number of arguments for %s" msgstr "%d er et ugyldigt antal argumenter for %s" -#: awkgram.y:3850 +#: awkgram.y:3849 #, c-format msgid "%s: string literal as last arg of substitute has no effect" -msgstr "" -"%s: bogstavelig streng som sidste argument til erstatning har ingen effekt" +msgstr "%s: bogstavelig streng som sidste argument til erstatning har ingen effekt" -#: awkgram.y:3855 +#: awkgram.y:3854 #, c-format msgid "%s third parameter is not a changeable object" msgstr "%s: tredje argument er ikke et ændringsbart objekt" -#: awkgram.y:3938 awkgram.y:3941 +#: awkgram.y:3937 awkgram.y:3940 msgid "match: third argument is a gawk extension" msgstr "match: tredje argument er en gawk-udvidelse" -#: awkgram.y:3995 awkgram.y:3998 +#: awkgram.y:3994 awkgram.y:3997 msgid "close: second argument is a gawk extension" msgstr "close: andet argument er en gawk-udvidelse" -#: awkgram.y:4010 +#: awkgram.y:4009 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" -msgstr "" -"brug af dcgettext(_\"...\") er forkert: fjern det indledende " -"understregningstegn" +msgstr "brug af dcgettext(_\"...\") er forkert: fjern det indledende understregningstegn" -#: awkgram.y:4025 +#: awkgram.y:4024 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" -msgstr "" -"brug af dcgettext(_\"...\") er forkert: fjern det indledende " -"understregningstegn" +msgstr "brug af dcgettext(_\"...\") er forkert: fjern det indledende understregningstegn" -#: awkgram.y:4044 +#: awkgram.y:4043 #, fuzzy +#| msgid "index: received non-string second argument" msgid "index: regexp constant as second argument is not allowed" msgstr "indeks: andet argument er ikke en streng" -#: awkgram.y:4097 +#: awkgram.y:4096 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "funktionen '%s': parameteren '%s' overskygger en global variabel" -#: awkgram.y:4154 debug.c:4041 debug.c:4084 debug.c:5204 +#: awkgram.y:4153 debug.c:4041 debug.c:4084 debug.c:5204 #, c-format msgid "could not open `%s' for writing (%s)" msgstr "kunne ikke åbne '%s' for skrivning (%s)" -#: awkgram.y:4155 +#: awkgram.y:4154 msgid "sending variable list to standard error" msgstr "sender variabelliste til standard fejl" -#: awkgram.y:4163 +#: awkgram.y:4162 #, c-format msgid "%s: close failed (%s)" msgstr "%s: lukning mislykkedes (%s)" -#: awkgram.y:4188 +#: awkgram.y:4187 msgid "shadow_funcs() called twice!" msgstr "shadow_funcs() kaldt to gange!" -#: awkgram.y:4196 +#: awkgram.y:4195 msgid "there were shadowed variables." msgstr "der var skyggede variable." -#: awkgram.y:4267 +#: awkgram.y:4266 #, c-format msgid "function name `%s' previously defined" msgstr "funktionsnavnet '%s' er allerede defineret" -#: awkgram.y:4313 +#: awkgram.y:4312 #, c-format msgid "function `%s': can't use function name as parameter name" msgstr "funktionen '%s': kan ikke bruge funktionsnavn som parameternavn" -#: awkgram.y:4316 +#: awkgram.y:4315 #, c-format msgid "function `%s': can't use special variable `%s' as a function parameter" -msgstr "" -"funktionen '%s': kan ikke bruge specialvariabel '%s' som en " -"funktionsparameter" +msgstr "funktionen '%s': kan ikke bruge specialvariabel '%s' som en funktionsparameter" -#: awkgram.y:4324 +#: awkgram.y:4323 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "funktionen '%s': parameter %d, '%s', er samme som parameter %d" -#: awkgram.y:4411 awkgram.y:4417 +#: awkgram.y:4410 awkgram.y:4416 #, c-format msgid "function `%s' called but never defined" msgstr "funktionen '%s' kaldt, men aldrig defineret" -#: awkgram.y:4421 +#: awkgram.y:4420 #, c-format msgid "function `%s' defined but never called directly" msgstr "funktionen '%s' defineret, men aldrig kaldt direkte" -#: awkgram.y:4453 +#: awkgram.y:4452 #, c-format msgid "regexp constant for parameter #%d yields boolean value" msgstr "konstant regulært udtryk for parameter %d giver en boolesk værdi" -#: awkgram.y:4468 +#: awkgram.y:4467 #, c-format msgid "" "function `%s' called with space between name and `(',\n" @@ -520,22 +503,22 @@ msgstr "" "funktionen '%s' kaldt med blanktegn mellem navnet og '(',\n" "eller brugt som en variabel eller et array" -#: awkgram.y:4674 +#: awkgram.y:4673 msgid "division by zero attempted" msgstr "forsøgte at dividere med nul" -#: awkgram.y:4683 +#: awkgram.y:4682 #, c-format msgid "division by zero attempted in `%%'" msgstr "forsøgte at dividere med nul i '%%'" -#: awkgram.y:5003 -msgid "" -"cannot assign a value to the result of a field post-increment expression" +#: awkgram.y:5002 +msgid "cannot assign a value to the result of a field post-increment expression" msgstr "" -#: awkgram.y:5006 +#: awkgram.y:5005 #, fuzzy, c-format +#| msgid "%d is invalid as number of arguments for %s" msgid "invalid target of assignment (opcode %s)" msgstr "%d er et ugyldigt antal argumenter for %s" @@ -560,8 +543,7 @@ msgstr "exp: argumentet %g er uden for det tilladte område" #: builtin.c:229 #, c-format msgid "fflush: cannot flush: pipe `%s' opened for reading, not writing" -msgstr "" -"fflush: kan ikke rense: datakanalen '%s' åbnet for læsning, ikke skrivning" +msgstr "fflush: kan ikke rense: datakanalen '%s' åbnet for læsning, ikke skrivning" #: builtin.c:232 #, c-format @@ -644,8 +626,7 @@ msgstr "fatal: '$' tillades ikke efter et punktum i formatet" #: builtin.c:921 msgid "fatal: no `$' supplied for positional field width or precision" -msgstr "" -"fatal: intet '$' angivet for bredde eller præcision af positionsangivet felt" +msgstr "fatal: intet '$' angivet for bredde eller præcision af positionsangivet felt" #: builtin.c:991 msgid "`l' is meaningless in awk formats; ignored" @@ -672,14 +653,14 @@ msgid "fatal: `h' is not permitted in POSIX awk formats" msgstr "fatal: 'h' tillades ikke i POSIX awk-formater" #: builtin.c:1055 -#, fuzzy, c-format +#, c-format msgid "[s]printf: value %g is too big for %%c format" -msgstr "[s]printf: værdi %g er uden for område for '%%%c'-format" +msgstr "[s]printf: værdi %g er for stor for %%c-format" #: builtin.c:1068 -#, fuzzy, c-format +#, c-format msgid "[s]printf: value %g is not a valid wide character" -msgstr "[s]printf: værdi %g er uden for område for '%%%c'-format" +msgstr "[s]printf: værdi %g er ikke et gyldigt bredt tegn" #: builtin.c:1454 #, c-format @@ -689,8 +670,7 @@ msgstr "[s]printf: værdi %g er uden for område for '%%%c'-format" #: builtin.c:1552 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" -msgstr "" -"ignorerer ukendt formatspecificeringstegn '%c': intet argument konverteret" +msgstr "ignorerer ukendt formatspecificeringstegn '%c': intet argument konverteret" #: builtin.c:1557 msgid "fatal: not enough arguments to satisfy format string" @@ -709,9 +689,8 @@ msgid "too many arguments supplied for format string" msgstr "for mange argumenter til formatstrengen" #: builtin.c:1625 -#, fuzzy msgid "sprintf: no arguments" -msgstr "printf: ingen argumenter" +msgstr "sprintf: ingen argumenter" #: builtin.c:1648 builtin.c:1659 msgid "printf: no arguments" @@ -767,203 +746,211 @@ msgstr "substr: startindeks %g er forbi slutningen på strengen" #: builtin.c:1820 #, c-format -msgid "" -"substr: length %g at start index %g exceeds length of first argument (%lu)" -msgstr "" -"substr: længden %g ved startindeks %g overskrider længden af første argument " -"(%lu)" +msgid "substr: length %g at start index %g exceeds length of first argument (%lu)" +msgstr "substr: længden %g ved startindeks %g overskrider længden af første argument (%lu)" -#: builtin.c:1890 +#: builtin.c:1892 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "strftime: formatværdi i PROCINFO[\"strftime\"] har numerisk type" -#: builtin.c:1913 +#: builtin.c:1915 msgid "strftime: received non-numeric second argument" msgstr "strftime: fik et ikke-numerisk andet argument" -#: builtin.c:1917 +#: builtin.c:1924 msgid "strftime: second argument less than 0 or too big for time_t" msgstr "strftime: andet argument mindre end 0 eller for stort til time_t" -#: builtin.c:1924 +#: builtin.c:1928 +msgid "strftime: second argument out of range for time_t" +msgstr "strftime: andet argument uden for område for time_t" + +#: builtin.c:1935 msgid "strftime: received non-string first argument" msgstr "strftime: fik et første argument som ikke er en streng" -#: builtin.c:1931 +#: builtin.c:1942 msgid "strftime: received empty format string" msgstr "strftime: fik en tom formatstreng" -#: builtin.c:1997 +#: builtin.c:2011 msgid "mktime: received non-string argument" msgstr "mktime: fik et argument som ikke er en streng" -#: builtin.c:2014 +#: builtin.c:2028 msgid "mktime: at least one of the values is out of the default range" msgstr "mktime: mindst én af værdierne er udenfor standardområdet" -#: builtin.c:2049 +#: builtin.c:2063 msgid "'system' function not allowed in sandbox mode" msgstr "'system'-funktion ikke tilladt i sandkasse-tilstand" -#: builtin.c:2054 +#: builtin.c:2068 msgid "system: received non-string argument" msgstr "system: fik et argument som ikke er en streng" -#: builtin.c:2174 +#: builtin.c:2188 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "reference til ikke-initieret felt '$%d'" -#: builtin.c:2259 +#: builtin.c:2273 msgid "tolower: received non-string argument" msgstr "tolower: fik et argument som ikke er en streng" -#: builtin.c:2290 +#: builtin.c:2304 msgid "toupper: received non-string argument" msgstr "toupper: fik et argument som ikke er en streng" -#: builtin.c:2323 mpfr.c:679 +#: builtin.c:2337 mpfr.c:679 msgid "atan2: received non-numeric first argument" msgstr "atan2: fik et ikke-numerisk første argument" -#: builtin.c:2325 mpfr.c:681 +#: builtin.c:2339 mpfr.c:681 msgid "atan2: received non-numeric second argument" msgstr "atan2: fik et ikke-numerisk andet argument" -#: builtin.c:2344 +#: builtin.c:2358 msgid "sin: received non-numeric argument" msgstr "sin: fik et ikke-numerisk argument" -#: builtin.c:2360 +#: builtin.c:2374 msgid "cos: received non-numeric argument" msgstr "cos: fik et ikke-numerisk argument" -#: builtin.c:2413 mpfr.c:1176 +#: builtin.c:2427 mpfr.c:1176 msgid "srand: received non-numeric argument" msgstr "srand: fik et ikke-numerisk argument" -#: builtin.c:2444 +#: builtin.c:2458 msgid "match: third argument is not an array" msgstr "match: tredje argument er ikke et array" -#: builtin.c:2705 -#, fuzzy, c-format +#: builtin.c:2719 +#, c-format msgid "gensub: third argument `%.*s' treated as 1" -msgstr "gensub: 0 i tredje argument behandlet som 1" +msgstr "gensub: tredje argument '%.*s' behandlet som 1" -#: builtin.c:2720 -#, fuzzy, c-format +#: builtin.c:2734 +#, c-format msgid "gensub: third argument %g treated as 1" -msgstr "gensub: 0 i tredje argument behandlet som 1" +msgstr "gensub: tredje argument %g behandlet som 1" -#: builtin.c:3020 +#: builtin.c:3032 +#, c-format +msgid "%s: can be called indirectly only with two arguments" +msgstr "%s: kan kun kaldes indirekte med to argumenter" + +#: builtin.c:3122 +#, c-format +msgid "indirect call to %s requires at least two arguments" +msgstr "indirekte kald til %s kræver mindst to argumenter" + +#: builtin.c:3174 msgid "lshift: received non-numeric first argument" msgstr "lshift: fik et ikke-numerisk første argument" -#: builtin.c:3022 +#: builtin.c:3176 msgid "lshift: received non-numeric second argument" msgstr "lshift: fik et ikke-numerisk andet argument" -#: builtin.c:3028 -#, fuzzy, c-format +#: builtin.c:3182 +#, c-format msgid "lshift(%f, %f): negative values will give strange results" -msgstr "lshift(%lf, %lf): negative værdier vil give mærkelige resultater" +msgstr "lshift(%f, %f): negative værdier vil give mærkelige resultater" -#: builtin.c:3030 -#, fuzzy, c-format +#: builtin.c:3184 +#, c-format msgid "lshift(%f, %f): fractional values will be truncated" -msgstr "lshift(%lf, %lf): kommatalsværdier vil blive trunkeret" +msgstr "lshift(%f, %f): kommatalsværdier vil blive trunkeret" -#: builtin.c:3032 -#, fuzzy, c-format +#: builtin.c:3186 +#, c-format msgid "lshift(%f, %f): too large shift value will give strange results" -msgstr "" -"lshift(%lf, %lf): for store skifteværdier vil give mærkelige resultater" +msgstr "lshift(%f, %f): for stor skifteværdi vil give mærkelige resultater" -#: builtin.c:3057 +#: builtin.c:3211 msgid "rshift: received non-numeric first argument" msgstr "rshift: fik et ikke-numerisk første argument" -#: builtin.c:3059 +#: builtin.c:3213 msgid "rshift: received non-numeric second argument" msgstr "rshift: fik et ikke-numerisk andet argument" -#: builtin.c:3065 -#, fuzzy, c-format +#: builtin.c:3219 +#, c-format msgid "rshift(%f, %f): negative values will give strange results" -msgstr "rshift(%lf, %lf): negative værdier vil give mærkelige resultater" +msgstr "rshift(%f, %f): negative værdier vil give mærkelige resultater" -#: builtin.c:3067 -#, fuzzy, c-format +#: builtin.c:3221 +#, c-format msgid "rshift(%f, %f): fractional values will be truncated" -msgstr "rshift(%lf, %lf): kommatalsværdier vil blive trunkeret" +msgstr "rshift(%f, %f): kommatalsværdier vil blive trunkeret" -#: builtin.c:3069 -#, fuzzy, c-format +#: builtin.c:3223 +#, c-format msgid "rshift(%f, %f): too large shift value will give strange results" -msgstr "" -"rshift(%lf, %lf): for store skifteværdier vil give mærkelige resultater" +msgstr "rshift(%f, %f): for stor skifteværdi vil give mærkelige resultater" -#: builtin.c:3094 mpfr.c:988 -#, fuzzy +#: builtin.c:3248 mpfr.c:988 msgid "and: called with less than two arguments" -msgstr "sqrt: kaldt med negativt argument %g" +msgstr "and: kaldt med mindre end to argumenter" -#: builtin.c:3099 -#, fuzzy, c-format +#: builtin.c:3253 +#, c-format msgid "and: argument %d is non-numeric" -msgstr "exp: argumentet %g er uden for det tilladte område" +msgstr "and: argumentet %d er ikke-numerisk" -#: builtin.c:3103 +#: builtin.c:3257 #, fuzzy, c-format +#| msgid "and(%lf, %lf): negative values will give strange results" msgid "and: argument %d negative value %g will give strange results" msgstr "and(%lf, %lf): negative værdier vil give mærkelige resultater" -#: builtin.c:3126 mpfr.c:1020 -#, fuzzy +#: builtin.c:3280 mpfr.c:1020 msgid "or: called with less than two arguments" -msgstr "sqrt: kaldt med negativt argument %g" +msgstr "or: kaldt med mindre end to argumenter" -#: builtin.c:3131 -#, fuzzy, c-format +#: builtin.c:3285 +#, c-format msgid "or: argument %d is non-numeric" -msgstr "exp: argumentet %g er uden for det tilladte område" +msgstr "or: argumentet %d er ikke-numerisk" -#: builtin.c:3135 -#, fuzzy, c-format +#: builtin.c:3289 +#, c-format msgid "or: argument %d negative value %g will give strange results" -msgstr "compl(%lf): negative værdier vil give mærkelige resultater" +msgstr "or: argument %d negativ værdi %g vil give mærkelige resultater" -#: builtin.c:3157 mpfr.c:1051 -#, fuzzy +#: builtin.c:3311 mpfr.c:1051 msgid "xor: called with less than two arguments" -msgstr "sqrt: kaldt med negativt argument %g" +msgstr "zor: kaldt med mindre end to argumenter" -#: builtin.c:3163 -#, fuzzy, c-format +#: builtin.c:3317 +#, c-format msgid "xor: argument %d is non-numeric" -msgstr "exp: argumentet %g er uden for det tilladte område" +msgstr "xor: argumentet %d er ikke-numerisk" -#: builtin.c:3167 -#, fuzzy, c-format +#: builtin.c:3321 +#, c-format msgid "xor: argument %d negative value %g will give strange results" -msgstr "xor(%lf, %lf): negative værdier vil give mærkelige resultater" +msgstr "xor: argument %d negativ værdi %g vil give mærkelige resultater" -#: builtin.c:3192 mpfr.c:807 +#: builtin.c:3346 mpfr.c:807 msgid "compl: received non-numeric argument" msgstr "compl: fik et ikke-numerisk argument" -#: builtin.c:3198 -#, fuzzy, c-format +#: builtin.c:3352 +#, c-format msgid "compl(%f): negative value will give strange results" -msgstr "compl(%lf): negative værdier vil give mærkelige resultater" +msgstr "compl(%f): negativ værdi vil give mærkelige resultater" -#: builtin.c:3200 +#: builtin.c:3354 #, fuzzy, c-format +#| msgid "compl(%lf): fractional value will be truncated" msgid "compl(%f): fractional value will be truncated" msgstr "compl(%lf): kommatalsværdier vil blive trunkeret" -#: builtin.c:3369 +#: builtin.c:3523 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "dcgettext: '%s' er ikke en gyldig lokalitetskategori" @@ -975,13 +962,14 @@ msgstr "" #: command.y:289 #, fuzzy, c-format +#| msgid "Invalid range end" msgid "invalid frame number: %d" msgstr "Ugyldig intervalslutning" #: command.y:295 -#, fuzzy, c-format +#, c-format msgid "info: invalid option - \"%s\"" -msgstr "%s: ugyldigt flag - '%c'\n" +msgstr "info: ugyldigt flag - '%s'" #: command.y:321 #, c-format @@ -1024,18 +1012,17 @@ msgid "`silent' valid only in command `commands'" msgstr "" #: command.y:373 -#, fuzzy, c-format +#, c-format msgid "trace: invalid option - \"%s\"" -msgstr "%s: ugyldigt flag - '%c'\n" +msgstr "trace: ugyldigt flag - '%s'" #: command.y:387 msgid "condition: invalid breakpoint/watchpoint number" msgstr "" #: command.y:449 -#, fuzzy msgid "argument not a string" -msgstr "exp: argumentet %g er uden for det tilladte område" +msgstr "argument er ikke en streng" #: command.y:459 command.y:464 #, c-format @@ -1049,16 +1036,19 @@ msgstr "" #: command.y:531 #, fuzzy, c-format +#| msgid "%s: invalid option -- '%c'\n" msgid "enable: invalid option - \"%s\"" msgstr "%s: ugyldigt flag - '%c'\n" #: command.y:597 #, fuzzy, c-format +#| msgid "Invalid range end" msgid "invalid range specification: %d - %d" msgstr "Ugyldig intervalslutning" #: command.y:659 #, fuzzy +#| msgid "unknown value for field spec: %d\n" msgid "non-numeric value for field number" msgstr "ukendt værdi for felt-spec: %d\n" @@ -1071,14 +1061,11 @@ msgid "non-zero integer value" msgstr "" #: command.y:817 -msgid "" -"backtrace [N] - print trace of all or N innermost (outermost if N < 0) " -"frames." +msgid "backtrace [N] - print trace of all or N innermost (outermost if N < 0) frames." msgstr "" #: command.y:819 -msgid "" -"break [[filename:]N|function] - set breakpoint at the specified location." +msgid "break [[filename:]N|function] - set breakpoint at the specified location." msgstr "" #: command.y:821 @@ -1086,9 +1073,7 @@ msgid "clear [[filename:]N|function] - delete breakpoints previously set." msgstr "" #: command.y:823 -msgid "" -"commands [num] - starts a list of commands to be executed at a " -"breakpoint(watchpoint) hit." +msgid "commands [num] - starts a list of commands to be executed at a breakpoint(watchpoint) hit." msgstr "" #: command.y:825 @@ -1148,9 +1133,7 @@ msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT." msgstr "" #: command.y:853 -msgid "" -"info topic - source|sources|variables|functions|break|frame|args|locals|" -"display|watch." +msgid "info topic - source|sources|variables|functions|break|frame|args|locals|display|watch." msgstr "" #: command.y:855 @@ -1162,8 +1145,7 @@ msgid "next [COUNT] - step program, proceeding through subroutine calls." msgstr "" #: command.y:859 -msgid "" -"nexti [COUNT] - step one instruction, but proceed through subroutine calls." +msgid "nexti [COUNT] - step one instruction, but proceed through subroutine calls." msgstr "" #: command.y:861 @@ -1199,8 +1181,7 @@ msgid "set var = value - assign value to a scalar variable." msgstr "" #: command.y:879 -msgid "" -"silent - suspends usual message when stopped at a breakpoint/watchpoint." +msgid "silent - suspends usual message when stopped at a breakpoint/watchpoint." msgstr "" #: command.y:881 @@ -1228,9 +1209,7 @@ msgid "undisplay [N] - remove variable(s) from automatic display list." msgstr "" #: command.y:893 -msgid "" -"until [[filename:]N|function] - execute until program reaches a different " -"line or line N within current frame." +msgid "until [[filename:]N|function] - execute until program reaches a different line or line N within current frame." msgstr "" #: command.y:895 @@ -1246,9 +1225,7 @@ msgid "watch var - set a watchpoint for a variable." msgstr "" #: command.y:901 -msgid "" -"where [N] - (same as backtrace) print trace of all or N innermost (outermost " -"if N < 0) frames." +msgid "where [N] - (same as backtrace) print trace of all or N innermost (outermost if N < 0) frames." msgstr "" #: command.y:1013 debug.c:401 msg.c:135 @@ -1258,16 +1235,19 @@ msgstr "fejl: " #: command.y:1053 #, fuzzy, c-format +#| msgid "can't redirect from `%s' (%s)" msgid "can't read command (%s)\n" msgstr "kan ikke omdirigere fra '%s' (%s)" #: command.y:1067 #, fuzzy, c-format +#| msgid "can't redirect from `%s' (%s)" msgid "can't read command (%s)" msgstr "kan ikke omdirigere fra '%s' (%s)" #: command.y:1118 #, fuzzy +#| msgid "Invalid character class name" msgid "invalid character in command" msgstr "Ugyldigt tegnklassenavn" @@ -1283,6 +1263,7 @@ msgstr "" #: command.y:1286 #, fuzzy +#| msgid "Invalid collation character" msgid "invalid character" msgstr "Ugyldigt sorteringstegn" @@ -1325,11 +1306,13 @@ msgstr "" #: debug.c:448 debug.c:606 #, fuzzy, c-format +#| msgid "can't read sourcefile `%s' (%s)" msgid "can't read source file `%s' (%s)" msgstr "kan ikke læse kildefilen '%s' (%s)" #: debug.c:453 #, fuzzy, c-format +#| msgid "source file `%s' is empty" msgid "source file `%s' is empty.\n" msgstr "kildefilen '%s' er tom" @@ -1339,6 +1322,7 @@ msgstr "" #: debug.c:505 #, fuzzy, c-format +#| msgid "can't read sourcefile `%s' (%s)" msgid "cannot find source file named `%s' (%s)" msgstr "kan ikke læse kildefilen '%s' (%s)" @@ -1354,6 +1338,7 @@ msgstr "" #: debug.c:611 #, fuzzy, c-format +#| msgid "unexpected newline or end of string" msgid "unexpected eof while reading file `%s', line %d" msgstr "uventet nylinjetegn eller strengafslutning" @@ -1364,6 +1349,7 @@ msgstr "" #: debug.c:732 #, fuzzy, c-format +#| msgid "already included source file `%s'" msgid "Current source file: %s\n" msgstr "allerede inkluderet kildefil '%s'" @@ -1424,6 +1410,7 @@ msgstr "" #: debug.c:848 #, fuzzy +#| msgid "printf: no arguments" msgid "No arguments.\n" msgstr "printf: ingen argumenter" @@ -1457,26 +1444,31 @@ msgstr "" #: debug.c:1029 #, fuzzy, c-format +#| msgid "`exit' cannot be called in the current context" msgid "no symbol `%s' in current context\n" msgstr "'exit' kan ikke kaldes i den aktuelle kontekst" #: debug.c:1041 debug.c:1427 #, fuzzy, c-format +#| msgid "`%s' is not a legal variable name" msgid "`%s' is not an array\n" msgstr "'%s' er ikke et gyldigt variabelnavn" #: debug.c:1055 #, fuzzy, c-format +#| msgid "reference to uninitialized field `$%d'" msgid "$%ld = uninitialized field\n" msgstr "reference til ikke-initieret felt '$%d'" #: debug.c:1076 #, fuzzy, c-format +#| msgid "data file `%s' is empty" msgid "array `%s' is empty\n" msgstr "datafilen '%s' er tom" #: debug.c:1119 debug.c:1171 #, fuzzy, c-format +#| msgid "delete: index `%s' not in array `%s'" msgid "[\"%s\"] not in array `%s'\n" msgstr "delete: indeks '%s' findes ikke i array '%s'" @@ -1487,21 +1479,25 @@ msgstr "" #: debug.c:1236 debug.c:4964 #, fuzzy, c-format +#| msgid "`%s' is not a legal variable name" msgid "`%s' is not a scalar variable" msgstr "'%s' er ikke et gyldigt variabelnavn" #: debug.c:1258 debug.c:4994 #, fuzzy, c-format +#| msgid "attempt to use array `%s[\"%.*s\"]' in a scalar context" msgid "attempt to use array `%s[\"%s\"]' in a scalar context" msgstr "forsøg på at bruge array '%s[\"%.*s\"]' i skalarsammenhæng" #: debug.c:1280 debug.c:5005 #, fuzzy, c-format +#| msgid "attempt to use scalar `%s[\"%.*s\"]' as an array" msgid "attempt to use scalar `%s[\"%s\"]' as array" msgstr "forsøg på at bruge skalaren '%s[\"%.*s\"]' som array" #: debug.c:1423 #, fuzzy, c-format +#| msgid "`%s' is invalid as a function name" msgid "`%s' is a function" msgstr "'%s' er ugyldigt som funktionsnavn" @@ -1522,11 +1518,13 @@ msgstr "" #: debug.c:1528 #, fuzzy, c-format +#| msgid "delete: index `%s' not in array `%s'" msgid "%d: [\"%s\"] not in array `%s'\n" msgstr "delete: indeks '%s' findes ikke i array '%s'" #: debug.c:1767 #, fuzzy +#| msgid "attempt to use a scalar value as array" msgid "attempt to use scalar value as array" msgstr "forsøg på at bruge en skalar som array" @@ -1562,6 +1560,7 @@ msgstr "" #: debug.c:2017 #, fuzzy +#| msgid "Invalid range end" msgid "invalid frame number" msgstr "Ugyldig intervalslutning" @@ -1597,6 +1596,7 @@ msgstr "" #: debug.c:2369 debug.c:2492 debug.c:3350 #, fuzzy, c-format +#| msgid "exp: argument %g is out of range" msgid "line number %d in file `%s' out of range" msgstr "exp: argumentet %g er uden for det tilladte område" @@ -1632,6 +1632,7 @@ msgstr "" #: debug.c:2541 #, fuzzy, c-format +#| msgid "error reading input file `%s': %s" msgid "No breakpoint at file `%s', line #%d\n" msgstr "fejl ved læsning af inddatafilen '%s': %s" @@ -1737,6 +1738,7 @@ msgstr "" #: debug.c:3377 #, fuzzy, c-format +#| msgid "already included source file `%s'" msgid "invalid source line %d in file `%s'" msgstr "allerede inkluderet kildefil '%s'" @@ -1747,8 +1749,9 @@ msgstr "" #: debug.c:3424 #, fuzzy, c-format +#| msgid "adump: argument not an array" msgid "element not in array\n" -msgstr "delete: indeks '%s' findes ikke i array '%s'" +msgstr "adump: argument er ikke et array" #: debug.c:3424 #, c-format @@ -1780,6 +1783,7 @@ msgstr "" #: debug.c:5001 #, fuzzy, c-format +#| msgid "delete: index `%s' not in array `%s'" msgid "[\"%s\"] not in array `%s'" msgstr "delete: indeks '%s' findes ikke i array '%s'" @@ -1794,16 +1798,19 @@ msgstr "" #: debug.c:5381 #, fuzzy, c-format +#| msgid "`exit' cannot be called in the current context" msgid "`%s' not allowed in current context; statement ignored" msgstr "'exit' kan ikke kaldes i den aktuelle kontekst" #: debug.c:5389 #, fuzzy +#| msgid "`exit' cannot be called in the current context" msgid "`return' not allowed in current context; statement ignored" msgstr "'exit' kan ikke kaldes i den aktuelle kontekst" #: debug.c:5604 #, fuzzy, c-format +#| msgid "attempt to use array `%s' in scalar context" msgid "No symbol `%s' in current context" msgstr "forsøg på at bruge array '%s' i skalarsammenhæng" @@ -1814,6 +1821,7 @@ msgstr "" #: dfa.c:1119 #, fuzzy +#| msgid "Invalid character class name" msgid "invalid character class" msgstr "Ugyldigt tegnklassenavn" @@ -1827,11 +1835,13 @@ msgstr "" #: dfa.c:1474 #, fuzzy +#| msgid "Invalid content of \\{\\}" msgid "invalid content of \\{\\}" msgstr "Ugyldigt indhold i \\{\\}" #: dfa.c:1477 #, fuzzy +#| msgid "Regular expression too big" msgid "regular expression too big" msgstr "Regulært udtryk for stort" @@ -1952,6 +1962,7 @@ msgstr "udvidelser er ikke tilladt i sandkasse-tilstand" #: ext.c:68 #, fuzzy +#| msgid "@include is a gawk extension" msgid "-l / @load are gawk extensions" msgstr "@include er en gawk-udvidelse" @@ -1961,22 +1972,21 @@ msgstr "" #: ext.c:74 #, fuzzy, c-format +#| msgid "fatal: extension: cannot open `%s' (%s)\n" msgid "load_ext: cannot open library `%s' (%s)\n" msgstr "atalt: extension: kan ikke åbne '%s' (%s)\n" #: ext.c:80 #, fuzzy, c-format -msgid "" -"load_ext: library `%s': does not define `plugin_is_GPL_compatible' (%s)\n" -msgstr "" -"fatalt: extension: bibliotek '%s': definer ikke " -"'plugin_is_GPL_compatible' (%s)\n" +#| msgid "fatal: extension: library `%s': does not define `plugin_is_GPL_compatible' (%s)\n" +msgid "load_ext: library `%s': does not define `plugin_is_GPL_compatible' (%s)\n" +msgstr "fatalt: extension: bibliotek '%s': definer ikke 'plugin_is_GPL_compatible' (%s)\n" #: ext.c:86 #, fuzzy, c-format +#| msgid "fatal: extension: library `%s': cannot call function `%s' (%s)\n" msgid "load_ext: library `%s': cannot call function `%s' (%s)\n" -msgstr "" -"fatalt: extension: bibliotek '%s': kan ikke kalde funktionen '%s' (%s)\n" +msgstr "fatalt: extension: bibliotek '%s': kan ikke kalde funktionen '%s' (%s)\n" #: ext.c:90 #, c-format @@ -1993,45 +2003,49 @@ msgstr "" #: ext.c:156 #, fuzzy, c-format +#| msgid "fatal: extension: cannot open `%s' (%s)\n" msgid "extension: cannot open library `%s' (%s)" msgstr "atalt: extension: kan ikke åbne '%s' (%s)\n" #: ext.c:162 #, fuzzy, c-format -msgid "" -"extension: library `%s': does not define `plugin_is_GPL_compatible' (%s)" -msgstr "" -"fatalt: extension: bibliotek '%s': definer ikke " -"'plugin_is_GPL_compatible' (%s)\n" +#| msgid "fatal: extension: library `%s': does not define `plugin_is_GPL_compatible' (%s)\n" +msgid "extension: library `%s': does not define `plugin_is_GPL_compatible' (%s)" +msgstr "fatalt: extension: bibliotek '%s': definer ikke 'plugin_is_GPL_compatible' (%s)\n" #: ext.c:166 #, fuzzy, c-format +#| msgid "fatal: extension: library `%s': cannot call function `%s' (%s)\n" msgid "extension: library `%s': cannot call function `%s' (%s)" -msgstr "" -"fatalt: extension: bibliotek '%s': kan ikke kalde funktionen '%s' (%s)\n" +msgstr "fatalt: extension: bibliotek '%s': kan ikke kalde funktionen '%s' (%s)\n" #: ext.c:197 #, fuzzy +#| msgid "extension: missing function name" msgid "make_builtin: missing function name" msgstr "extension: mangler funktionsnavn" #: ext.c:212 #, fuzzy, c-format +#| msgid "extension: can't redefine function `%s'" msgid "make_builtin: can't redefine function `%s'" msgstr "extension: kan ikke omdefinere funktion '%s'" #: ext.c:216 #, fuzzy, c-format +#| msgid "extension: function `%s' already defined" msgid "make_builtin: function `%s' already defined" msgstr "extension: funktionen '%s' er allerede defineret" #: ext.c:220 #, fuzzy, c-format +#| msgid "extension: function name `%s' previously defined" msgid "make_builtin: function name `%s' previously defined" msgstr "extension: funktionsnavnet '%s' er defineret tidligere" #: ext.c:222 #, fuzzy, c-format +#| msgid "extension: can't use gawk built-in `%s' as function name" msgid "make_builtin: can't use gawk built-in `%s' as function name" msgstr "extension: kan ikke bruge gawk's indbyggede '%s' som funktionsnavn" @@ -2041,32 +2055,31 @@ msgid "make_builtin: negative argument count for function `%s'" msgstr "make_builtin: negativt argumentantal for funktion '%s'" #: ext.c:252 -#, fuzzy msgid "extension: missing function name" msgstr "extension: mangler funktionsnavn" #: ext.c:255 ext.c:259 -#, fuzzy, c-format +#, c-format msgid "extension: illegal character `%c' in function name `%s'" msgstr "extension: ugyldigt tegn '%c' i funktionsnavn '%s'" #: ext.c:267 -#, fuzzy, c-format +#, c-format msgid "extension: can't redefine function `%s'" msgstr "extension: kan ikke omdefinere funktion '%s'" #: ext.c:271 -#, fuzzy, c-format +#, c-format msgid "extension: function `%s' already defined" msgstr "extension: funktionen '%s' er allerede defineret" #: ext.c:275 -#, fuzzy, c-format +#, c-format msgid "extension: function name `%s' previously defined" -msgstr "funktionsnavnet '%s' er allerede defineret" +msgstr "extension: funktionsnavnet '%s' er defineret tidligere" #: ext.c:277 -#, fuzzy, c-format +#, c-format msgid "extension: can't use gawk built-in `%s' as function name" msgstr "extension: kan ikke bruge gawk's indbyggede '%s' som funktionsnavn" @@ -2083,14 +2096,12 @@ msgstr "funktion '%s': mangler argument nummer %d" #: ext.c:371 #, c-format msgid "function `%s': argument #%d: attempt to use scalar as an array" -msgstr "" -"funktion '%s': argument nummer %d: forsøg på at bruge skalar som et array" +msgstr "funktion '%s': argument nummer %d: forsøg på at bruge skalar som et array" #: ext.c:375 #, c-format msgid "function `%s': argument #%d: attempt to use array as a scalar" -msgstr "" -"funktion '%s': argument nummer %d: forsøg på at bruge array som en skalar" +msgstr "funktion '%s': argument nummer %d: forsøg på at bruge array som en skalar" #: ext.c:389 msgid "dynamic loading of library not supported" @@ -2098,6 +2109,7 @@ msgstr "" #: extension/filefuncs.c:159 #, fuzzy +#| msgid "sqrt: called with negative argument %g" msgid "chdir: called with incorrect number of arguments, expecting 1" msgstr "sqrt: kaldt med negativt argument %g" @@ -2108,21 +2120,24 @@ msgstr "" #: extension/filefuncs.c:472 #, fuzzy +#| msgid "sqrt: called with negative argument %g" msgid "stat: called with wrong number of arguments" msgstr "sqrt: kaldt med negativt argument %g" #: extension/filefuncs.c:479 #, fuzzy +#| msgid "%s: is parameter\n" msgid "stat: bad parameters" msgstr "%s: er parameter\n" #: extension/filefuncs.c:533 -#, fuzzy, c-format +#, c-format msgid "fts init: could not create variable %s" -msgstr "indeks: andet argument er ikke en streng" +msgstr "" #: extension/filefuncs.c:554 #, fuzzy +#| msgid "`%s' is not supported in old awk" msgid "fts is not supported on this system" msgstr "'%s' understøttes ikke i gamle versioner af awk" @@ -2135,9 +2150,8 @@ msgid "fill_stat_element: could not set element" msgstr "" #: extension/filefuncs.c:597 -#, fuzzy msgid "fill_path_element: could not set element" -msgstr "indeks: andet argument er ikke en streng" +msgstr "" #: extension/filefuncs.c:613 msgid "fill_error_element: could not set element" @@ -2149,34 +2163,36 @@ msgstr "" #: extension/filefuncs.c:670 extension/filefuncs.c:717 #: extension/filefuncs.c:735 -#, fuzzy msgid "fts-process: could not set element" -msgstr "indeks: andet argument er ikke en streng" +msgstr "" #: extension/filefuncs.c:784 #, fuzzy +#| msgid "sqrt: called with negative argument %g" msgid "fts: called with incorrect number of arguments, expecting 3" msgstr "sqrt: kaldt med negativt argument %g" #: extension/filefuncs.c:787 #, fuzzy +#| msgid "%s: is parameter\n" msgid "fts: bad first parameter" msgstr "%s: er parameter\n" #: extension/filefuncs.c:793 #, fuzzy +#| msgid "%s: is parameter\n" msgid "fts: bad second parameter" msgstr "%s: er parameter\n" #: extension/filefuncs.c:799 #, fuzzy +#| msgid "%s: is parameter\n" msgid "fts: bad third parameter" msgstr "%s: er parameter\n" #: extension/filefuncs.c:806 -#, fuzzy msgid "fts: could not flatten array\n" -msgstr "'%s' er ikke et gyldigt variabelnavn" +msgstr "" #: extension/filefuncs.c:824 msgid "fts: ignoring sneaky FTS_NOSTAT flag. nyah, nyah, nyah." @@ -2188,21 +2204,25 @@ msgstr "" #: extension/fnmatch.c:112 #, fuzzy +#| msgid "sqrt: called with negative argument %g" msgid "fnmatch: called with less than three arguments" msgstr "sqrt: kaldt med negativt argument %g" #: extension/fnmatch.c:115 #, fuzzy +#| msgid "sqrt: called with negative argument %g" msgid "fnmatch: called with more than three arguments" msgstr "sqrt: kaldt med negativt argument %g" #: extension/fnmatch.c:118 #, fuzzy +#| msgid "strftime: received non-string first argument" msgid "fnmatch: could not get first argument" msgstr "strftime: fik et første argument som ikke er en streng" #: extension/fnmatch.c:123 #, fuzzy +#| msgid "index: received non-string second argument" msgid "fnmatch: could not get second argument" msgstr "indeks: andet argument er ikke en streng" @@ -2229,6 +2249,7 @@ msgstr "" #: extension/fork.c:81 #, fuzzy +#| msgid "sqrt: called with negative argument %g" msgid "fork: called with too many arguments" msgstr "sqrt: kaldt med negativt argument %g" @@ -2238,16 +2259,19 @@ msgstr "" #: extension/fork.c:118 #, fuzzy +#| msgid "sqrt: called with negative argument %g" msgid "waitpid: called with too many arguments" msgstr "sqrt: kaldt med negativt argument %g" #: extension/fork.c:126 #, fuzzy +#| msgid "sqrt: called with negative argument %g" msgid "wait: called with no arguments" msgstr "sqrt: kaldt med negativt argument %g" #: extension/fork.c:143 #, fuzzy +#| msgid "sqrt: called with negative argument %g" msgid "wait: called with too many arguments" msgstr "sqrt: kaldt med negativt argument %g" @@ -2271,13 +2295,14 @@ msgstr "" #: extension/inplace.c:151 #, fuzzy, c-format +#| msgid "fatal: extension: cannot open `%s' (%s)\n" msgid "inplace_begin: Cannot stat `%s' (%s)" msgstr "atalt: extension: kan ikke åbne '%s' (%s)\n" #: extension/inplace.c:158 -#, fuzzy, c-format +#, c-format msgid "inplace_begin: `%s' is not a regular file" -msgstr "'%s' er ikke et gyldigt variabelnavn" +msgstr "" #: extension/inplace.c:169 #, c-format @@ -2286,6 +2311,7 @@ msgstr "" #: extension/inplace.c:181 #, fuzzy, c-format +#| msgid "%s: close failed (%s)" msgid "inplace_begin: chmod failed (%s)" msgstr "%s: lukning mislykkedes (%s)" @@ -2301,6 +2327,7 @@ msgstr "" #: extension/inplace.c:194 #, fuzzy, c-format +#| msgid "%s: close failed (%s)" msgid "inplace_begin: close(%d) failed (%s)" msgstr "%s: lukning mislykkedes (%s)" @@ -2319,6 +2346,7 @@ msgstr "" #: extension/inplace.c:229 #, fuzzy, c-format +#| msgid "%s: close failed (%s)" msgid "inplace_end: close(%d) failed (%s)" msgstr "%s: lukning mislykkedes (%s)" @@ -2329,41 +2357,49 @@ msgstr "" #: extension/inplace.c:246 #, fuzzy, c-format +#| msgid "pipe flush of `%s' failed (%s)." msgid "inplace_end: link(`%s', `%s') failed (%s)" msgstr "datakanalsrensning af '%s' mislykkedes (%s)." #: extension/inplace.c:256 #, fuzzy, c-format +#| msgid "close of fd %d (`%s') failed (%s)" msgid "inplace_end: rename(`%s', `%s') failed (%s)" msgstr "lukning af fd %d ('%s') mislykkedes (%s)" #: extension/ordchr.c:69 #, fuzzy +#| msgid "sqrt: called with negative argument %g" msgid "ord: called with too many arguments" msgstr "sqrt: kaldt med negativt argument %g" #: extension/ordchr.c:75 #, fuzzy +#| msgid "sqrt: called with negative argument %g" msgid "ord: called with no arguments" msgstr "sqrt: kaldt med negativt argument %g" #: extension/ordchr.c:77 #, fuzzy +#| msgid "sqrt: called with negative argument %g" msgid "ord: called with inappropriate argument(s)" msgstr "sqrt: kaldt med negativt argument %g" #: extension/ordchr.c:99 #, fuzzy +#| msgid "sqrt: called with negative argument %g" msgid "chr: called with too many arguments" msgstr "sqrt: kaldt med negativt argument %g" #: extension/ordchr.c:109 #, fuzzy +#| msgid "sqrt: called with negative argument %g" msgid "chr: called with no arguments" msgstr "sqrt: kaldt med negativt argument %g" #: extension/ordchr.c:111 #, fuzzy +#| msgid "sqrt: called with negative argument %g" msgid "chr: called with inappropriate argument(s)" msgstr "sqrt: kaldt med negativt argument %g" @@ -2374,11 +2410,13 @@ msgstr "" #: extension/readfile.c:113 #, fuzzy +#| msgid "sqrt: called with negative argument %g" msgid "readfile: called with too many arguments" msgstr "sqrt: kaldt med negativt argument %g" #: extension/readfile.c:137 #, fuzzy +#| msgid "sqrt: called with negative argument %g" msgid "readfile: called with no arguments" msgstr "sqrt: kaldt med negativt argument %g" @@ -2388,18 +2426,21 @@ msgstr "" #: extension/rwarray.c:124 extension/rwarray0.c:109 #, fuzzy +#| msgid "sqrt: called with negative argument %g" msgid "writea: called with too many arguments" msgstr "sqrt: kaldt med negativt argument %g" #: extension/rwarray.c:131 extension/rwarray0.c:116 #, fuzzy, c-format +#| msgid "exp: argument %g is out of range" msgid "do_writea: argument 0 is not a string\n" -msgstr "exp: argumentet %g er uden for det tilladte område\n" +msgstr "exp: argumentet %g er uden for det tilladte område" #: extension/rwarray.c:137 extension/rwarray0.c:122 #, fuzzy, c-format +#| msgid "split: fourth argument is not an array" msgid "do_writea: argument 1 is not an array\n" -msgstr "split: fjerde argument er ikke et array\n" +msgstr "split: fjerde argument er ikke et array" #: extension/rwarray.c:184 extension/rwarray0.c:169 #, c-format @@ -2413,18 +2454,21 @@ msgstr "" #: extension/rwarray.c:280 extension/rwarray0.c:265 #, fuzzy +#| msgid "sqrt: called with negative argument %g" msgid "reada: called with too many arguments" msgstr "sqrt: kaldt med negativt argument %g" #: extension/rwarray.c:287 extension/rwarray0.c:272 #, fuzzy, c-format +#| msgid "exp: argument %g is out of range" msgid "do_reada: argument 0 is not a string\n" msgstr "exp: argumentet %g er uden for det tilladte område" #: extension/rwarray.c:293 extension/rwarray0.c:278 #, fuzzy, c-format +#| msgid "adump: argument not an array" msgid "do_reada: argument 1 is not an array\n" -msgstr "match: tredje argument er ikke et array" +msgstr "adump: argument er ikke et array" #: extension/rwarray.c:337 extension/rwarray0.c:322 #, c-format @@ -2438,6 +2482,7 @@ msgstr "" #: extension/time.c:113 #, fuzzy +#| msgid "mktime: received non-string argument" msgid "gettimeofday: ignoring arguments" msgstr "mktime: fik et argument som ikke er en streng" @@ -2447,16 +2492,19 @@ msgstr "" #: extension/time.c:165 #, fuzzy +#| msgid "sqrt: called with negative argument %g" msgid "sleep: called with too many arguments" msgstr "sqrt: kaldt med negativt argument %g" #: extension/time.c:168 #, fuzzy +#| msgid "exp: received non-numeric argument" msgid "sleep: missing required numeric argument" msgstr "exp: fik et ikke-numerisk argument" #: extension/time.c:174 #, fuzzy +#| msgid "exp: argument %g is out of range" msgid "sleep: argument is negative" msgstr "exp: argumentet %g er uden for det tilladte område" @@ -2486,13 +2534,11 @@ msgstr "split: kan ikke bruge det samme array som andet og fjerde argument" #: field.c:985 msgid "split: cannot use a subarray of second arg for fourth arg" -msgstr "" -"split: kan ikke bruge et underarray af andet argument som fjerde argument" +msgstr "split: kan ikke bruge et underarray af andet argument som fjerde argument" #: field.c:988 msgid "split: cannot use a subarray of fourth arg for second arg" -msgstr "" -"split: kan ikke bruge et underarray af fjerde argument som andet argument" +msgstr "split: kan ikke bruge et underarray af fjerde argument som andet argument" #: field.c:1019 msgid "split: null string for third arg is a gawk extension" @@ -2516,13 +2562,11 @@ msgstr "patsplit: kan ikke bruge det samme array som andet og fjerde argument" #: field.c:1079 msgid "patsplit: cannot use a subarray of second arg for fourth arg" -msgstr "" -"patsplit: kan ikke bruge et underarray af andet argument som fjerde argument" +msgstr "patsplit: kan ikke bruge et underarray af andet argument som fjerde argument" #: field.c:1082 msgid "patsplit: cannot use a subarray of fourth arg for second arg" -msgstr "" -"patsplit: kan ikke bruge et underarray af fjerde argument som andet argument" +msgstr "patsplit: kan ikke bruge et underarray af fjerde argument som andet argument" #: field.c:1120 msgid "`FIELDWIDTHS' is a gawk extension" @@ -2559,6 +2603,7 @@ msgstr "" #: gawkapi.c:809 #, fuzzy +#| msgid "length: received array argument" msgid "remove_element: received null array" msgstr "length: fik et array-argument" @@ -2578,6 +2623,7 @@ msgstr "" #: getopt.c:604 getopt.c:633 #, fuzzy, c-format +#| msgid "%s: option '%s' is ambiguous\n" msgid "%s: option '%s' is ambiguous; possibilities:" msgstr "%s: flaget '%s' er flertydigt\n" @@ -2663,8 +2709,7 @@ msgstr "udtrykket for '%s'-omdirigering har en tom streng som værdi" #: io.c:794 #, c-format msgid "filename `%s' for `%s' redirection may be result of logical expression" -msgstr "" -"filnavnet '%s' for '%s'-omdirigering kan være resultatet af et logisk udtryk" +msgstr "filnavnet '%s' for '%s'-omdirigering kan være resultatet af et logisk udtryk" #: io.c:842 #, c-format @@ -2697,11 +2742,8 @@ msgid "can't redirect to `%s' (%s)" msgstr "kan ikke omdirigere til '%s' (%s)" #: io.c:1073 -msgid "" -"reached system limit for open files: starting to multiplex file descriptors" -msgstr "" -"nåede systembegrænsningen for åbne filer: begynder at multiplekse " -"fildeskriptorer" +msgid "reached system limit for open files: starting to multiplex file descriptors" +msgstr "nåede systembegrænsningen for åbne filer: begynder at multiplekse fildeskriptorer" #: io.c:1089 #, c-format @@ -2728,8 +2770,7 @@ msgstr "lukning af omdirigering som aldrig blev åbnet" #: io.c:1238 #, c-format msgid "close: redirection `%s' not opened with `|&', second argument ignored" -msgstr "" -"close: omdirigeringen '%s' blev ikke åbnet med '|&', andet argument ignoreret" +msgstr "close: omdirigeringen '%s' blev ikke åbnet med '|&', andet argument ignoreret" #: io.c:1255 #, c-format @@ -2761,12 +2802,12 @@ msgstr "ingen eksplicit lukning af datakanalen '%s' angivet" msgid "no explicit close of file `%s' provided" msgstr "ingen eksplicit lukning af filen '%s' angivet" -#: io.c:1317 io.c:1375 main.c:628 main.c:670 +#: io.c:1317 io.c:1375 main.c:632 main.c:674 #, c-format msgid "error writing standard output (%s)" msgstr "fejl ved skrivning til standard ud (%s)" -#: io.c:1322 io.c:1381 main.c:630 +#: io.c:1322 io.c:1381 main.c:634 #, c-format msgid "error writing standard error (%s)" msgstr "fejl ved skrivning til standard fejl (%s)" @@ -2796,145 +2837,138 @@ msgstr "lokal port %s ugyldig i '/inet'" msgid "remote host and port information (%s, %s) invalid" msgstr "fjernvært og portinformation (%s, %s) ugyldige" -#: io.c:1673 +#: io.c:1699 msgid "TCP/IP communications are not supported" msgstr "TCP/IP-kommunikation understøttes ikke" -#: io.c:1854 +#: io.c:1880 #, c-format msgid "could not open `%s', mode `%s'" msgstr "kunne ikke åbne '%s', tilstand '%s'" -#: io.c:1904 +#: io.c:1930 #, c-format msgid "close of master pty failed (%s)" msgstr "lukning af master-pty mislykkedes (%s)" -#: io.c:1906 io.c:2092 io.c:2293 +#: io.c:1932 io.c:2118 io.c:2319 #, c-format msgid "close of stdout in child failed (%s)" msgstr "lukning af standard ud i underproces mislykkedes (%s)" -#: io.c:1909 +#: io.c:1935 #, c-format msgid "moving slave pty to stdout in child failed (dup: %s)" -msgstr "" -"flytning af slave-pty til standard ud i underproces mislykkedes (dup: %s)" +msgstr "flytning af slave-pty til standard ud i underproces mislykkedes (dup: %s)" -#: io.c:1911 io.c:2097 +#: io.c:1937 io.c:2123 #, c-format msgid "close of stdin in child failed (%s)" msgstr "lukning af standard ind i underproces mislykkedes (%s)" -#: io.c:1914 +#: io.c:1940 #, c-format msgid "moving slave pty to stdin in child failed (dup: %s)" -msgstr "" -"flytning af slave-pty til standard ind i underproces mislykkedes (dup: %s)" +msgstr "flytning af slave-pty til standard ind i underproces mislykkedes (dup: %s)" -#: io.c:1916 io.c:1938 +#: io.c:1942 io.c:1964 #, c-format msgid "close of slave pty failed (%s)" msgstr "lukning af slave-pty mislykkedes (%s)" -#: io.c:2027 io.c:2095 io.c:2264 io.c:2296 +#: io.c:2053 io.c:2121 io.c:2290 io.c:2322 #, c-format msgid "moving pipe to stdout in child failed (dup: %s)" -msgstr "" -"flytning af datakanal til standard ud i underproces mislykkedes (dup: %s)" +msgstr "flytning af datakanal til standard ud i underproces mislykkedes (dup: %s)" -#: io.c:2034 io.c:2100 +#: io.c:2060 io.c:2126 #, c-format msgid "moving pipe to stdin in child failed (dup: %s)" -msgstr "" -"flytning af datakanalen til standard ind i underproces mislykkedes (dup: %s)" +msgstr "flytning af datakanalen til standard ind i underproces mislykkedes (dup: %s)" -#: io.c:2060 io.c:2286 +#: io.c:2086 io.c:2312 msgid "restoring stdout in parent process failed\n" msgstr "genskabelse af standard ud i forælderprocessen mislykkedes\n" -#: io.c:2068 +#: io.c:2094 msgid "restoring stdin in parent process failed\n" msgstr "genskabelse af standard ind i forælderprocessen mislykkedes\n" -#: io.c:2103 io.c:2298 io.c:2313 +#: io.c:2129 io.c:2324 io.c:2339 #, c-format msgid "close of pipe failed (%s)" msgstr "lukning af datakanalen mislykkedes (%s)" -#: io.c:2162 +#: io.c:2188 msgid "`|&' not supported" msgstr "'|&' understøttes ikke" -#: io.c:2249 +#: io.c:2275 #, c-format msgid "cannot open pipe `%s' (%s)" msgstr "kan ikke åbne datakanalen '%s' (%s)" -#: io.c:2307 +#: io.c:2333 #, c-format msgid "cannot create child process for `%s' (fork: %s)" msgstr "kan ikke oprette barneproces for '%s' (fork: %s)" -#: io.c:2734 +#: io.c:2760 msgid "register_input_parser: received NULL pointer" msgstr "" -#: io.c:2762 +#: io.c:2788 #, c-format msgid "input parser `%s' conflicts with previously installed input parser `%s'" msgstr "" -#: io.c:2769 +#: io.c:2795 #, c-format msgid "input parser `%s' failed to open `%s'" msgstr "" -#: io.c:2789 +#: io.c:2815 msgid "register_output_wrapper: received NULL pointer" msgstr "" -#: io.c:2817 +#: io.c:2843 #, c-format -msgid "" -"output wrapper `%s' conflicts with previously installed output wrapper `%s'" +msgid "output wrapper `%s' conflicts with previously installed output wrapper `%s'" msgstr "" -#: io.c:2824 +#: io.c:2850 #, c-format msgid "output wrapper `%s' failed to open `%s'" msgstr "" -#: io.c:2845 +#: io.c:2871 msgid "register_output_processor: received NULL pointer" msgstr "" -#: io.c:2874 +#: io.c:2900 #, c-format -msgid "" -"two-way processor `%s' conflicts with previously installed two-way processor " -"`%s'" +msgid "two-way processor `%s' conflicts with previously installed two-way processor `%s'" msgstr "" -#: io.c:2883 +#: io.c:2909 #, c-format msgid "two way processor `%s' failed to open `%s'" msgstr "" -#: io.c:3008 +#: io.c:3034 #, c-format msgid "data file `%s' is empty" msgstr "datafilen '%s' er tom" -#: io.c:3050 io.c:3058 +#: io.c:3076 io.c:3084 msgid "could not allocate more input memory" msgstr "kunne ikke allokere mere hukommelse til inddata" -#: io.c:3636 +#: io.c:3662 msgid "multicharacter value of `RS' is a gawk extension" msgstr "'RS' som flertegnsværdi er en gawk-udvidelse" -#: io.c:3783 +#: io.c:3809 msgid "IPv6 communication is not supported" msgstr "IPv6-kommunikation understøttes ikke" @@ -2957,6 +2991,7 @@ msgstr "at køre %s setuid root kan være et sikkerhedsproblem" #: main.c:346 #, fuzzy +#| msgid "`--posix' overrides `--binary'" msgid "`--posix' overrides `--characters-as-bytes'" msgstr "'--posix' tilsidesætter '--binary'" @@ -3027,6 +3062,7 @@ msgstr "\t-d[fil]\t\t--dump-variables[=fil]\n" #: main.c:579 #, fuzzy +#| msgid "\t-p[file]\t\t--profile[=file]\n" msgid "\t-D[file]\t\t--debug[=file]\n" msgstr "\t-p[fil]\t\t--profile[=fil]\n" @@ -3054,62 +3090,68 @@ msgstr "" msgid "\t-l library\t\t--load=library\n" msgstr "" -#: main.c:586 +#. TRANSLATORS: the "fatal" and "invalid" here are literal +#. values, they should not be translated. Thanks. +#. +#: main.c:590 #, fuzzy +#| msgid "\t-L [fatal]\t\t--lint[=fatal]\n" msgid "\t-L[fatal|invalid]\t--lint[=fatal|invalid]\n" msgstr "\t-L [fatal]\t\t--lint[=fatal]\n" -#: main.c:587 +#: main.c:591 #, fuzzy +#| msgid "\t-g\t\t\t--gen-pot\n" msgid "\t-M\t\t\t--bignum\n" msgstr "\t-g\t\t\t--gen-pot\n" -#: main.c:588 +#: main.c:592 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "\t-N\t\t\t--use-lc-numeric\n" -#: main.c:589 +#: main.c:593 msgid "\t-n\t\t\t--non-decimal-data\n" msgstr "\t-n\t\t\t--non-decimal-data\n" -#: main.c:590 +#: main.c:594 #, fuzzy +#| msgid "\t-p[file]\t\t--profile[=file]\n" msgid "\t-o[file]\t\t--pretty-print[=file]\n" msgstr "\t-p[fil]\t\t--profile[=fil]\n" -#: main.c:591 +#: main.c:595 msgid "\t-O\t\t\t--optimize\n" msgstr "\t-O\t\t\t--optimize\n" -#: main.c:592 +#: main.c:596 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "\t-p[fil]\t\t--profile[=fil]\n" -#: main.c:593 +#: main.c:597 msgid "\t-P\t\t\t--posix\n" msgstr "\t-P\t\t\t--posix\n" -#: main.c:594 +#: main.c:598 msgid "\t-r\t\t\t--re-interval\n" msgstr "\t-r\t\t\t--re-interval\n" -#: main.c:595 +#: main.c:599 msgid "\t-S\t\t\t--sandbox\n" msgstr "\t-S\t\t\t--sandbox\n" -#: main.c:596 +#: main.c:600 msgid "\t-t\t\t\t--lint-old\n" msgstr "\t-t\t\t\t--lint-old\n" -#: main.c:597 +#: main.c:601 msgid "\t-V\t\t\t--version\n" msgstr "\t-V\t\t\t--version\n" -#: main.c:599 +#: main.c:603 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "\t-W nostalgia\t\t--nostalgia\n" -#: main.c:602 +#: main.c:606 msgid "\t-Y\t\t--parsedebug\n" msgstr "\t-Y\t\t--parsedebug\n" @@ -3118,7 +3160,7 @@ msgstr "\t-Y\t\t--parsedebug\n" #. for this application. Please add _another line_ with the #. address for translation bugs. #. no-wrap -#: main.c:611 +#: main.c:615 msgid "" "\n" "To report bugs, see node `Bugs' in `gawk.info', which is\n" @@ -3131,7 +3173,7 @@ msgstr "" "\n" "Rapportér kommentarer til oversættelsen til <dansk@dansk-gruppen.dk>.\n" -#: main.c:615 +#: main.c:619 msgid "" "gawk is a pattern scanning and processing language.\n" "By default it reads standard input and writes standard output.\n" @@ -3141,7 +3183,7 @@ msgstr "" "Almindeligvis læser gawk fra standard ind og skriver til standard ud.\n" "\n" -#: main.c:619 +#: main.c:623 msgid "" "Examples:\n" "\tgawk '{ sum += $1 }; END { print sum }' file\n" @@ -3151,7 +3193,7 @@ msgstr "" "\tgawk '{ sum += $1 }; END { print sum }' fil\n" "\tgawk -F: '{ print $1 }' /etc/passwd\n" -#: main.c:644 +#: main.c:648 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -3166,12 +3208,11 @@ msgstr "" "\n" "Dette program er frit programmel. Du kan distribuere det og/eller\n" "ændre det under betingelserne i GNU General Public License, offentliggjort\n" -"af Free Software Foundation, enten version 3 af licensen, eller (hvis du " -"vil)\n" +"af Free Software Foundation, enten version 3 af licensen, eller (hvis du vil)\n" "enhver senere version.\n" "\n" -#: main.c:652 +#: main.c:656 msgid "" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" @@ -3185,7 +3226,7 @@ msgstr "" "General Public License for yderligere information.\n" "\n" -#: main.c:658 +#: main.c:662 msgid "" "You should have received a copy of the GNU General Public License\n" "along with this program. If not, see http://www.gnu.org/licenses/.\n" @@ -3193,16 +3234,16 @@ msgstr "" "Du bør have fået en kopi af GNU General Public License sammen\n" "med dette program. Hvis ikke, så se http://www.gnu.org/licenses/.\n" -#: main.c:695 +#: main.c:699 msgid "-Ft does not set FS to tab in POSIX awk" msgstr "-Ft sætter ikke FS til tab i POSIX-awk" -#: main.c:982 +#: main.c:986 #, c-format msgid "unknown value for field spec: %d\n" msgstr "ukendt værdi for felt-spec: %d\n" -#: main.c:1080 +#: main.c:1084 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" @@ -3211,102 +3252,109 @@ msgstr "" "%s: '%s' argument til '-v' ikke på formen 'var=værdi'\n" "\n" -#: main.c:1106 +#: main.c:1110 #, c-format msgid "`%s' is not a legal variable name" msgstr "'%s' er ikke et gyldigt variabelnavn" -#: main.c:1109 +#: main.c:1113 #, c-format msgid "`%s' is not a variable name, looking for file `%s=%s'" msgstr "'%s' er ikke et variabelnavn, leder efter fil '%s=%s'" -#: main.c:1113 +#: main.c:1117 #, c-format msgid "cannot use gawk builtin `%s' as variable name" msgstr "kan ikke bruge gawk's indbyggede '%s' som variabelnavn" -#: main.c:1118 +#: main.c:1122 #, c-format msgid "cannot use function `%s' as variable name" msgstr "kan ikke bruge funktion '%s' som variabelnavn" -#: main.c:1171 +#: main.c:1175 msgid "floating point exception" msgstr "flydendetalsundtagelse" -#: main.c:1178 +#: main.c:1182 msgid "fatal error: internal error" msgstr "fatal fejl: intern fejl" -#: main.c:1193 +#: main.c:1197 msgid "fatal error: internal error: segfault" msgstr "fatal fejl: intern fejl: segmentfejl" -#: main.c:1205 +#: main.c:1209 msgid "fatal error: internal error: stack overflow" msgstr "fatal fejl: intern fejl: stakoverløb" -#: main.c:1264 +#: main.c:1268 #, c-format msgid "no pre-opened fd %d" msgstr "ingen fd %d åbnet i forvejen" -#: main.c:1271 +#: main.c:1275 #, c-format msgid "could not pre-open /dev/null for fd %d" msgstr "kunne ikke i forvejen åbne /dev/null for fd %d" -#: main.c:1485 +#: main.c:1489 msgid "empty argument to `-e/--source' ignored" msgstr "tomt argument til '-e/--source' ignoreret" -#: main.c:1556 +#: main.c:1560 msgid "-M ignored: MPFR/GMP support not compiled in" msgstr "" -#: main.c:1577 +#: main.c:1581 #, c-format msgid "%s: option `-W %s' unrecognized, ignored\n" msgstr "%s: flaget '-W %s' ukendt, ignoreret\n" -#: main.c:1630 +#: main.c:1634 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: flaget kræver et argument -- %c\n" #: mpfr.c:557 #, fuzzy, c-format +#| msgid "BINMODE value `%s' is invalid, treated as 3" msgid "PREC value `%.*s' is invalid" msgstr "BINMODE værdi '%s' er ugyldig, behandles som 3" #: mpfr.c:615 #, fuzzy, c-format +#| msgid "BINMODE value `%s' is invalid, treated as 3" msgid "RNDMODE value `%.*s' is invalid" msgstr "BINMODE værdi '%s' er ugyldig, behandles som 3" #: mpfr.c:711 #, fuzzy, c-format +#| msgid "cos: received non-numeric argument" msgid "%s: received non-numeric argument" msgstr "cos: fik et ikke-numerisk argument" #: mpfr.c:820 #, fuzzy +#| msgid "compl(%lf): negative value will give strange results" msgid "compl(%Rg): negative value will give strange results" msgstr "compl(%lf): negative værdier vil give mærkelige resultater" #: mpfr.c:824 #, fuzzy +#| msgid "compl(%lf): fractional value will be truncated" msgid "comp(%Rg): fractional value will be truncated" msgstr "compl(%lf): kommatalsværdier vil blive trunkeret" #: mpfr.c:836 #, fuzzy, c-format +#| msgid "compl(%lf): negative value will give strange results" msgid "cmpl(%Zd): negative values will give strange results" msgstr "compl(%lf): negative værdier vil give mærkelige resultater" #: mpfr.c:855 #, fuzzy, c-format +#| msgid "cos: received non-numeric argument" msgid "%s: received non-numeric argument #%d" msgstr "cos: fik et ikke-numerisk argument" @@ -3316,18 +3364,21 @@ msgstr "" #: mpfr.c:877 #, fuzzy +#| msgid "and(%lf, %lf): negative values will give strange results" msgid "%s: argument #%d negative value %Rg will give strange results" -msgstr "compl(%lf): negative værdier vil give mærkelige resultater" +msgstr "and(%lf, %lf): negative værdier vil give mærkelige resultater" #: mpfr.c:883 #, fuzzy +#| msgid "and(%lf, %lf): fractional values will be truncated" msgid "%s: argument #%d fractional value %Rg will be truncated" -msgstr "or(%lf, %lf): kommatalsværdier vil blive trunkeret" +msgstr "and(%lf, %lf): kommatalsværdier vil blive trunkeret" #: mpfr.c:898 #, fuzzy, c-format +#| msgid "and(%lf, %lf): negative values will give strange results" msgid "%s: argument #%d negative value %Zd will give strange results" -msgstr "compl(%lf): negative værdier vil give mærkelige resultater" +msgstr "and(%lf, %lf): negative værdier vil give mærkelige resultater" #: msg.c:68 #, c-format @@ -3353,12 +3404,8 @@ msgstr "ingen heksadecimale cifre i '\\x'-kontrolsekvenser" #: node.c:567 #, c-format -msgid "" -"hex escape \\x%.*s of %d characters probably not interpreted the way you " -"expect" -msgstr "" -"den heksadecimale sekvens \\x%.*s på %d tegn nok ikke forstået som du " -"forventer det" +msgid "hex escape \\x%.*s of %d characters probably not interpreted the way you expect" +msgstr "den heksadecimale sekvens \\x%.*s på %d tegn nok ikke forstået som du forventer det" #: node.c:582 #, c-format @@ -3366,12 +3413,8 @@ msgid "escape sequence `\\%c' treated as plain `%c'" msgstr "kontrolsekvensen '\\%c' behandlet som kun '%c'" #: node.c:726 -msgid "" -"Invalid multibyte data detected. There may be a mismatch between your data " -"and your locale." -msgstr "" -"Ugyldigt multibyte data fundet. Måske er der uoverensstemmelse mellem dine " -"data og dit locale." +msgid "Invalid multibyte data detected. There may be a mismatch between your data and your locale." +msgstr "Ugyldigt multibyte data fundet. Måske er der uoverensstemmelse mellem dine data og dit locale." #: posix/gawkmisc.c:177 #, c-format @@ -3383,17 +3426,20 @@ msgstr "%s %s '%s': kunne ikke få fat på fd flag: (fcntl F_GETFD: %s)" msgid "%s %s `%s': could not set close-on-exec: (fcntl F_SETFD: %s)" msgstr "%s %s '%s': kunne ikke sætte luk-ved-exec (fcntl F_SETFD: %s)" -#: profile.c:71 +#: profile.c:91 #, c-format msgid "could not open `%s' for writing: %s" msgstr "kunne ikke åbne '%s' for skrivning: %s" -#: profile.c:73 +#: profile.c:93 msgid "sending profile to standard error" msgstr "sender profilen til standard fejl" -#: profile.c:193 +#: profile.c:213 #, fuzzy, c-format +#| msgid "" +#| "\t# Rule(s)\n" +#| "\n" msgid "" "\t# %s rule(s)\n" "\n" @@ -3401,7 +3447,7 @@ msgstr "" "\t# Regler\n" "\n" -#: profile.c:198 +#: profile.c:218 #, c-format msgid "" "\t# Rule(s)\n" @@ -3410,29 +3456,30 @@ msgstr "" "\t# Regler\n" "\n" -#: profile.c:272 +#: profile.c:292 #, c-format msgid "internal error: %s with null vname" msgstr "intern fejl: %s med null vname" -#: profile.c:538 +#: profile.c:558 #, fuzzy +#| msgid "internal error: %s with null vname" msgid "internal error: builtin with null fname" msgstr "intern fejl: %s med null vname" -#: profile.c:958 +#: profile.c:978 #, c-format msgid "" "\t# Loaded extensions (-l and/or @load)\n" "\n" msgstr "" -#: profile.c:981 +#: profile.c:1001 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "\t# profil til gawk oprettet %s\n" -#: profile.c:1521 +#: profile.c:1555 #, c-format msgid "" "\n" @@ -3441,7 +3488,7 @@ msgstr "" "\n" "\t# Funktioner, listede alfabetisk\n" -#: profile.c:1559 +#: profile.c:1593 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "redir2str: uykendt omdirigeringstype %d" @@ -3481,6 +3528,7 @@ msgstr "Ugyldig bagudreference" #: regcomp.c:160 #, fuzzy +#| msgid "Unmatched [ or [^" msgid "Unmatched [, [^, [:, [., or [=" msgstr "Ubalanceret [ eller [^" @@ -3526,6 +3574,7 @@ msgstr "Intet foregående regulært udtryk" #: symbol.c:677 #, fuzzy, c-format +#| msgid "function `%s': can't use function name as parameter name" msgid "function `%s': can't use function `%s' as a parameter name" msgstr "funktionen '%s': kan ikke bruge funktionsnavn som parameternavn" @@ -3533,89 +3582,59 @@ msgstr "funktionen '%s': kan ikke bruge funktionsnavn som parameternavn" msgid "can not pop main context" msgstr "" -#~ msgid "`getline var' invalid inside `%s' rule" -#~ msgstr "'getline var' ugyldig inden i '%s' regel" - -#~ msgid "`getline' invalid inside `%s' rule" -#~ msgstr "'getline' ugyldig inden i '%s' regel" - -#~ msgid "no (known) protocol supplied in special filename `%s'" -#~ msgstr "ingen (kendt) protokol opgivet i special-filnavn '%s'" - -#~ msgid "special file name `%s' is incomplete" -#~ msgstr "special-filnavn '%s' er ufuldstændigt" - -#~ msgid "must supply a remote hostname to `/inet'" -#~ msgstr "fjernmaskinenavn til '/inet' skal angives" - -#~ msgid "must supply a remote port to `/inet'" -#~ msgstr "fjernport til '/inet' skal angives" - -#~ msgid "" -#~ "\t# %s block(s)\n" -#~ "\n" -#~ msgstr "" -#~ "\t# %s blokke\n" -#~ "\n" - -#~ msgid "range of the form `[%c-%c]' is locale dependent" -#~ msgstr "område på formen `[%c-%c]' er locale-afhængig" +#~ msgid "reference to uninitialized element `%s[\"%.*s\"]'" +#~ msgstr "reference til ikke-initieret element '%s[\"%.*s\"]'" -#, fuzzy -#~ msgid "[s]printf called with no arguments" -#~ msgstr "sqrt: kaldt med negativt argument %g" +#~ msgid "subscript of array `%s' is null string" +#~ msgstr "indeks i array '%s' er en tom streng" -#~ msgid "`-m[fr]' option irrelevant in gawk" -#~ msgstr "'-m[fr]'-flaget er irrelevant i gawk" +#~ msgid "%s: empty (null)\n" +#~ msgstr "%s: tom (null)\n" -#~ msgid "-m option usage: `-m[fr] nnn'" -#~ msgstr "brug af flaget -m: '-m[fr] nnn'" +#~ msgid "%s: empty (zero)\n" +#~ msgstr "%s: tom (nul)\n" -#, fuzzy -#~ msgid "%s: received non-numeric first argument" -#~ msgstr "or: fik et ikke-numerisk første argument" +#~ msgid "%s: table_size = %d, array_size = %d\n" +#~ msgstr "%s: tabelstørrelse = %d, arraystørrelse = %d\n" -#, fuzzy -#~ msgid "%s: received non-numeric second argument" -#~ msgstr "or: fik et ikke-numerisk andet argument" +#~ msgid "%s: array_ref to %s\n" +#~ msgstr "%s: arrayreference til %s\n" -#, fuzzy -#~ msgid "%s(%Rg, ..): negative values will give strange results" -#~ msgstr "or(%lf, %lf): negative værdier vil give mærkelige resultater" +#~ msgid "`nextfile' is a gawk extension" +#~ msgstr "'nextfile' er en gawk-udvidelse" -#, fuzzy -#~ msgid "%s(%Rg, ..): fractional values will be truncated" -#~ msgstr "or(%lf, %lf): kommatalsværdier vil blive trunkeret" +#~ msgid "`delete array' is a gawk extension" +#~ msgstr "'delete array' er en gawk-udvidelse" -#, fuzzy -#~ msgid "%s(%Zd, ..): negative values will give strange results" -#~ msgstr "or(%lf, %lf): negative værdier vil give mærkelige resultater" +#~ msgid "`getline var' invalid inside `%s' rule" +#~ msgstr "'getline var' ugyldig inden i '%s' regel" -#, fuzzy -#~ msgid "%s(.., %Rg): negative values will give strange results" -#~ msgstr "or(%lf, %lf): negative værdier vil give mærkelige resultater" +#~ msgid "`getline' invalid inside `%s' rule" +#~ msgstr "'getline' ugyldig inden i '%s' regel" -#, fuzzy -#~ msgid "%s(.., %Zd): negative values will give strange results" -#~ msgstr "or(%lf, %lf): negative værdier vil give mærkelige resultater" +#~ msgid "use of non-array as array" +#~ msgstr "brug af ikke-array som array" #~ msgid "`%s' is a Bell Labs extension" #~ msgstr "'%s' er en Bell Labs-udvidelse" -#~ msgid "`nextfile' is a gawk extension" -#~ msgstr "'nextfile' er en gawk-udvidelse" - -#~ msgid "`delete array' is a gawk extension" -#~ msgstr "'delete array' er en gawk-udvidelse" - #~ msgid "and: received non-numeric first argument" #~ msgstr "and: fik et ikke-numerisk første argument" #~ msgid "and: received non-numeric second argument" #~ msgstr "and: fik et ikke-numerisk andet argument" -#~ msgid "and(%lf, %lf): fractional values will be truncated" -#~ msgstr "and(%lf, %lf): kommatalsværdier vil blive trunkeret" +#~ msgid "or: received non-numeric first argument" +#~ msgstr "or: fik et ikke-numerisk første argument" + +#~ msgid "or: received non-numeric second argument" +#~ msgstr "or: fik et ikke-numerisk andet argument" + +#~ msgid "or(%lf, %lf): negative values will give strange results" +#~ msgstr "or(%lf, %lf): negative værdier vil give mærkelige resultater" + +#~ msgid "or(%lf, %lf): fractional values will be truncated" +#~ msgstr "or(%lf, %lf): kommatalsværdier vil blive trunkeret" #~ msgid "xor: received non-numeric first argument" #~ msgstr "xor: fik et ikke-numerisk første argument" @@ -3626,30 +3645,6 @@ msgstr "" #~ msgid "xor(%lf, %lf): fractional values will be truncated" #~ msgstr "xor(%lf, %lf): kommatalsværdier vil blive trunkeret" -#~ msgid "Operation Not Supported" -#~ msgstr "Operationen understøttes ikke" - -#~ msgid "reference to uninitialized element `%s[\"%.*s\"]'" -#~ msgstr "reference til ikke-initieret element '%s[\"%.*s\"]'" - -#~ msgid "subscript of array `%s' is null string" -#~ msgstr "indeks i array '%s' er en tom streng" - -#~ msgid "%s: empty (null)\n" -#~ msgstr "%s: tom (null)\n" - -#~ msgid "%s: empty (zero)\n" -#~ msgstr "%s: tom (nul)\n" - -#~ msgid "%s: table_size = %d, array_size = %d\n" -#~ msgstr "%s: tabelstørrelse = %d, arraystørrelse = %d\n" - -#~ msgid "%s: array_ref to %s\n" -#~ msgstr "%s: arrayreference til %s\n" - -#~ msgid "use of non-array as array" -#~ msgstr "brug af ikke-array som array" - #~ msgid "can't use function name `%s' as variable or array" #~ msgstr "kan ikke bruge funktionsnavnet '%s' som variabel eller array" @@ -3659,11 +3654,8 @@ msgstr "" #~ msgid "statement has no effect" #~ msgstr "kommandoen har ingen effekt" -#~ msgid "" -#~ "for loop: array `%s' changed size from %ld to %ld during loop execution" -#~ msgstr "" -#~ "for-løkke: array '%s' ændrede størrelse fra %ld til %ld under udførelse " -#~ "af løkken" +#~ msgid "for loop: array `%s' changed size from %ld to %ld during loop execution" +#~ msgstr "for-løkke: array '%s' ændrede størrelse fra %ld til %ld under udførelse af løkken" #~ msgid "function called indirectly through `%s' does not exist" #~ msgstr "funktion kaldt indirekte via '%s' eksisterer ikke" @@ -3680,12 +3672,43 @@ msgstr "" #~ msgid "Sorry, don't know how to interpret `%s'" #~ msgstr "Véd desværre ikke hvordan '%s' skal fortolkes" +#~ msgid "Operation Not Supported" +#~ msgstr "Operationen understøttes ikke" + +#~ msgid "no (known) protocol supplied in special filename `%s'" +#~ msgstr "ingen (kendt) protokol opgivet i special-filnavn '%s'" + +#~ msgid "special file name `%s' is incomplete" +#~ msgstr "special-filnavn '%s' er ufuldstændigt" + +#~ msgid "must supply a remote hostname to `/inet'" +#~ msgstr "fjernmaskinenavn til '/inet' skal angives" + +#~ msgid "must supply a remote port to `/inet'" +#~ msgstr "fjernport til '/inet' skal angives" + +#~ msgid "`-m[fr]' option irrelevant in gawk" +#~ msgstr "'-m[fr]'-flaget er irrelevant i gawk" + +#~ msgid "-m option usage: `-m[fr] nnn'" +#~ msgstr "brug af flaget -m: '-m[fr] nnn'" + #~ msgid "\t-R file\t\t\t--command=file\n" #~ msgstr "\t-R file\t\t\t--command=fil\n" #~ msgid "could not find groups: %s" #~ msgstr "kunne ikke finde grupper: %s" +#~ msgid "" +#~ "\t# %s block(s)\n" +#~ "\n" +#~ msgstr "" +#~ "\t# %s blokke\n" +#~ "\n" + +#~ msgid "range of the form `[%c-%c]' is locale dependent" +#~ msgstr "område på formen `[%c-%c]' er locale-afhængig" + #~ msgid "assignment is not allowed to result of builtin function" #~ msgstr "tildeling er ikke tilladt til resultatet fra en indbygget funktion" @@ -3725,11 +3748,8 @@ msgstr "" #~ msgid "`nextfile' cannot be called from a BEGIN rule" #~ msgstr "'nextfile' kan ikke kaldes fra en BEGIN-regel" -#~ msgid "" -#~ "concatenation: side effects in one expression have changed the length of " -#~ "another!" -#~ msgstr "" -#~ "konkatenering: sideeffekter i et udtryk har ændret længden af et andet!" +#~ msgid "concatenation: side effects in one expression have changed the length of another!" +#~ msgstr "konkatenering: sideeffekter i et udtryk har ændret længden af et andet!" #~ msgid "illegal type (%s) in tree_eval" #~ msgstr "ugyldig type (%s) i tree_eval" @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: GNU Awk 4.0.73, API: 0.0\n" "Report-Msgid-Bugs-To: bug-gawk@gnu.org\n" "POT-Creation-Date: 2015-02-26 20:05+0200\n" -"PO-Revision-Date: 2014-12-14 22:10+0100\n" +"PO-Revision-Date: 2015-04-27 10:10+0100\n" "Last-Translator: Antonio Colombo <azc100@gmail.com>\n" "Language-Team: Italian <it@li.org>\n" "Language: it\n" @@ -230,7 +230,7 @@ msgstr "" #: awkgram.y:1635 #, c-format msgid "attempt to use non-function `%s' in function call" -msgstr "" +msgstr "tentativo di usare la non-funzione `%s' in una chiamata di funzione" #: awkgram.y:1699 msgid "invalid subscript expression" @@ -2384,7 +2384,7 @@ msgstr "readfile: chiamata senza argomenti" #: extension/revoutput.c:125 msgid "revoutput: could not initialize REVOUT variable" -msgstr "" +msgstr "revoutput: non riesco a inizializzare la variabile REVOUT" #: extension/rwarray.c:124 extension/rwarray0.c:109 msgid "writea: called with too many arguments" @@ -3526,23 +3526,11 @@ msgid "No previous regular expression" msgstr "Nessuna espressione regolare precedente" #: symbol.c:677 -#, fuzzy, c-format msgid "function `%s': can't use function `%s' as a parameter name" msgstr "" -"funzione `%s': non è possibile usare nome della funzione come nome parametro" +"funzione `%s': non è possibile come nome parametro quello della funzione `%s'" #: symbol.c:809 msgid "can not pop main context" msgstr "non posso salire più in alto nello stack" -#~ msgid "div: third argument is not an array" -#~ msgstr "div: terzo argomento non-vettoriale" - -#~ msgid "div: received non-numeric first argument" -#~ msgstr "div: il primo argomento ricevuto non è numerico" - -#~ msgid "div: received non-numeric second argument" -#~ msgstr "div: il secondo argomento ricevuto non è numerico" - -#~ msgid "div: division by zero attempted" -#~ msgstr "div: tentativo di dividere per zero" @@ -6,13 +6,13 @@ # Christer Andersson <klamm@comhem.se>, 2007. # Göran Uddeborg <goeran@uddeborg.se>, 2011, 2012, 2013, 2014, 2015. # -# $Revision: 1.19 $ +# $Revision: 1.20 $ msgid "" msgstr "" "Project-Id-Version: gawk 4.1.1d\n" "Report-Msgid-Bugs-To: bug-gawk@gnu.org\n" "POT-Creation-Date: 2015-04-16 17:16+0300\n" -"PO-Revision-Date: 2015-04-16 21:44+0200\n" +"PO-Revision-Date: 2015-04-22 22:34+0200\n" "Last-Translator: Göran Uddeborg <goeran@uddeborg.se>\n" "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n" "Language: sv\n" @@ -306,7 +306,7 @@ msgstr "kÀllfilen \"%s\" Àr tom" #: awkgram.y:2827 #, c-format msgid "PEBKAC error: invalid character '\\%03o' in source code" -msgstr "PEBKAC-fel: ogiltigt tecken â\\%03oâ i kÀllkodenc" +msgstr "PEBKAC-fel: ogiltigt tecken â\\%03oâ i kÀllkoden" #: awkgram.y:2958 msgid "source file does not end in newline" @@ -1549,7 +1549,7 @@ msgstr "Observera: brytpunkt %d (aktiverad), Àr ocksÃ¥ satt vid %s:%d" #: debug.c:2214 #, c-format msgid "Note: breakpoint %d (disabled, ignore next %ld hits), also set at %s:%d" -msgstr "Observera: brytpunkt %d (avaktiverad, intorera följande %ld trÀffar), Àr ocksÃ¥ satt vid %s:%d" +msgstr "Observera: brytpunkt %d (avaktiverad, ignorera följande %ld trÀffar), Àr ocksÃ¥ satt vid %s:%d" #: debug.c:2221 #, c-format @@ -2618,7 +2618,7 @@ msgstr "nÃ¥dde systembegrÀnsningen för öppna filer: börjar multiplexa fildes #: io.c:1089 #, c-format msgid "close of `%s' failed (%s)." -msgstr "stÀngning av \"%s\" misslyckades (%s)" +msgstr "stÀngning av \"%s\" misslyckades (%s)." #: io.c:1097 msgid "too many pipes or input files open" @@ -2685,17 +2685,17 @@ msgstr "fel vid skrivning till standard fel (%s)" #: io.c:1330 #, c-format msgid "pipe flush of `%s' failed (%s)." -msgstr "rörspolning av \"%s\" misslyckades (%s)" +msgstr "rörspolning av \"%s\" misslyckades (%s)." #: io.c:1333 #, c-format msgid "co-process flush of pipe to `%s' failed (%s)." -msgstr "koprocesspolning av röret till \"%s\" misslyckades (%s)" +msgstr "koprocesspolning av röret till \"%s\" misslyckades (%s)." #: io.c:1336 #, c-format msgid "file flush of `%s' failed (%s)." -msgstr "filspolning av \"%s\" misslyckades (%s)" +msgstr "filspolning av \"%s\" misslyckades (%s)." #: io.c:1453 #, c-format @@ -1359,7 +1359,7 @@ pp_string(const char *in_str, size_t len, int delim) osiz *= 2; \ } ofre -= (l) - osiz = len + 3 + 2; /* initial size; 3 for delim + terminating null */ + osiz = len + 3 + 1; /* initial size; 3 for delim + terminating null */ emalloc(obuf, char *, osiz, "pp_string"); obufout = obuf; ofre = osiz - 1; @@ -1371,10 +1371,9 @@ pp_string(const char *in_str, size_t len, int delim) *obufout++ = '\\'; *obufout++ = delim; } else if (*str == '\0') { - chksize(4); - *obufout++ = '\\'; *obufout++ = '0'; + chksize(2); /* need 2 more chars for this case */ *obufout++ = '0'; *obufout++ = '0'; } else if ((cp = strchr(escapes, *str)) != NULL) { @@ -1384,7 +1383,7 @@ pp_string(const char *in_str, size_t len, int delim) /* NB: Deliberate use of lower-case versions. */ } else if (isascii(*str) && isprint(*str)) { *obufout++ = *str; - ofre += 1; + ofre += 1; /* used 1 less than expected */ } else { size_t len; @@ -1607,7 +1606,7 @@ pp_group3(const char *s1, const char *s2, const char *s3) len1 = strlen(s1); len2 = strlen(s2); len3 = strlen(s3); - l = len1 + len2 + len3 + 2; + l = len1 + len2 + len3 + 1; emalloc(str, char *, l, "pp_group3"); s = str; if (len1 > 0) { @@ -75,10 +75,10 @@ make_regexp(const char *s, size_t len, bool ignorecase, bool dfa, bool canfatal) * from that. */ if (buf == NULL) { - emalloc(buf, char *, len + 2, "make_regexp"); + emalloc(buf, char *, len + 1, "make_regexp"); buflen = len; } else if (len > buflen) { - erealloc(buf, char *, len + 2, "make_regexp"); + erealloc(buf, char *, len + 1, "make_regexp"); buflen = len; } dest = buf; diff --git a/test/ChangeLog b/test/ChangeLog index 285c2802..ba14f533 100644 --- a/test/ChangeLog +++ b/test/ChangeLog @@ -1,3 +1,19 @@ +2015-04-27 Andrew J. Schorr <aschorr@telemetry-investments.com> + + * Makefile.am (inpref): New test. + * inpref.awk, inpref.in, inpref.ok: New files. + +2015-04-27 Arnold D. Robbins <arnold@skeeve.com> + + * Makefile.am (regexpbrack2): New test. + * regexpbrack2.awk, regexpbrack2.in, regexpbrack2.ok: New files. + Thanks to Nelson Beebe. + +2015-04-16 Arnold D. Robbins <arnold@skeeve.com> + + * Makefile.am (shadowbuiltin): New test. + * shadowbuiltin.awk, shadowbuiltin.ok: New files. + 2015-04-14 Arnold D. Robbins <arnold@skeeve.com> * indirectbuiltin.awk: Add another test (gensub 3 args). diff --git a/test/Makefile.am b/test/Makefile.am index 9ec3fc6c..c53e65c1 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -411,6 +411,9 @@ EXTRA_DIST = \ icasers.awk \ icasers.in \ icasers.ok \ + inpref.awk \ + inpref.in \ + inpref.ok \ id.awk \ id.ok \ igncdym.awk \ @@ -783,6 +786,9 @@ EXTRA_DIST = \ regexpbrack.awk \ regexpbrack.in \ regexpbrack.ok \ + regexpbrack2.awk \ + regexpbrack2.in \ + regexpbrack2.ok \ regexprange.awk \ regexprange.ok \ reginttrad.awk \ @@ -868,6 +874,8 @@ EXTRA_DIST = \ sclifin.ok \ shadow.awk \ shadow.ok \ + shadowbuiltin.awk \ + shadowbuiltin.ok \ sort1.awk \ sort1.ok \ sortempty.awk \ @@ -1032,7 +1040,7 @@ BASIC_TESTS = \ gsubasgn gsubtest gsubtst2 gsubtst3 gsubtst4 gsubtst5 gsubtst6 \ gsubtst7 gsubtst8 \ hex hsprint \ - inputred intest intprec iobug1 \ + inpref inputred intest intprec iobug1 \ leaddig leadnl litoct longsub longwrds \ manglprm math membug1 messages minusstr mmap8k mtchi18n \ nasty nasty2 negexp negrange nested nfldstr nfloop nfneg nfset nlfldsep \ @@ -1043,7 +1051,7 @@ BASIC_TESTS = \ paramdup paramres paramtyp paramuninitglobal parse1 parsefld parseme \ pcntplus posix2008sub prdupval prec printf0 printf1 prmarscl prmreuse \ prt1eval prtoeval \ - rand randtest range1 rebt8b1 redfilnm regeq regexpbrack regexprange regrange reindops \ + rand randtest range1 rebt8b1 redfilnm regeq regexpbrack regexpbrack2 regexprange regrange reindops \ reparse resplit rri1 rs rsnul1nl rsnulbig rsnulbig2 rstest1 rstest2 \ rstest3 rstest4 rstest5 rswhite \ scalar sclforin sclifin sortempty sortglos splitargv splitarr splitdef \ @@ -1075,7 +1083,8 @@ GAWK_EXT_TESTS = \ profile0 profile1 profile2 profile3 profile4 profile5 profile6 profile7 \ profile8 pty1 \ rebuf regnul1 regnul2 regx8bit reginttrad reint reint2 rsgetline rsglstdin rsstart1 \ - rsstart2 rsstart3 rstest6 shadow sortfor sortu split_after_fpat \ + rsstart2 rsstart3 rstest6 shadow shadowbuiltin \ + sortfor sortu split_after_fpat \ splitarg4 strftime \ strtonum switch2 symtab1 symtab2 symtab3 symtab4 symtab5 symtab6 \ symtab7 symtab8 symtab9 \ diff --git a/test/Makefile.in b/test/Makefile.in index 9c01d192..caae2ba5 100644 --- a/test/Makefile.in +++ b/test/Makefile.in @@ -668,6 +668,9 @@ EXTRA_DIST = \ icasers.awk \ icasers.in \ icasers.ok \ + inpref.awk \ + inpref.in \ + inpref.ok \ id.awk \ id.ok \ igncdym.awk \ @@ -1040,6 +1043,9 @@ EXTRA_DIST = \ regexpbrack.awk \ regexpbrack.in \ regexpbrack.ok \ + regexpbrack2.awk \ + regexpbrack2.in \ + regexpbrack2.ok \ regexprange.awk \ regexprange.ok \ reginttrad.awk \ @@ -1125,6 +1131,8 @@ EXTRA_DIST = \ sclifin.ok \ shadow.awk \ shadow.ok \ + shadowbuiltin.awk \ + shadowbuiltin.ok \ sort1.awk \ sort1.ok \ sortempty.awk \ @@ -1288,7 +1296,7 @@ BASIC_TESTS = \ gsubasgn gsubtest gsubtst2 gsubtst3 gsubtst4 gsubtst5 gsubtst6 \ gsubtst7 gsubtst8 \ hex hsprint \ - inputred intest intprec iobug1 \ + inpref inputred intest intprec iobug1 \ leaddig leadnl litoct longsub longwrds \ manglprm math membug1 messages minusstr mmap8k mtchi18n \ nasty nasty2 negexp negrange nested nfldstr nfloop nfneg nfset nlfldsep \ @@ -1299,7 +1307,7 @@ BASIC_TESTS = \ paramdup paramres paramtyp paramuninitglobal parse1 parsefld parseme \ pcntplus posix2008sub prdupval prec printf0 printf1 prmarscl prmreuse \ prt1eval prtoeval \ - rand randtest range1 rebt8b1 redfilnm regeq regexpbrack regexprange regrange reindops \ + rand randtest range1 rebt8b1 redfilnm regeq regexpbrack regexpbrack2 regexprange regrange reindops \ reparse resplit rri1 rs rsnul1nl rsnulbig rsnulbig2 rstest1 rstest2 \ rstest3 rstest4 rstest5 rswhite \ scalar sclforin sclifin sortempty sortglos splitargv splitarr splitdef \ @@ -1331,7 +1339,8 @@ GAWK_EXT_TESTS = \ profile0 profile1 profile2 profile3 profile4 profile5 profile6 profile7 \ profile8 pty1 \ rebuf regnul1 regnul2 regx8bit reginttrad reint reint2 rsgetline rsglstdin rsstart1 \ - rsstart2 rsstart3 rstest6 shadow sortfor sortu split_after_fpat \ + rsstart2 rsstart3 rstest6 shadow shadowbuiltin \ + sortfor sortu split_after_fpat \ splitarg4 strftime \ strtonum switch2 symtab1 symtab2 symtab3 symtab4 symtab5 symtab6 \ symtab7 symtab8 symtab9 \ @@ -2944,6 +2953,11 @@ hsprint: @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +inpref: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + inputred: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -3251,6 +3265,11 @@ regexpbrack: @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +regexpbrack2: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + regexprange: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -3786,6 +3805,11 @@ shadow: @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +shadowbuiltin: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + sortfor: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ diff --git a/test/Maketests b/test/Maketests index 219d592d..61b0ec8e 100644 --- a/test/Maketests +++ b/test/Maketests @@ -405,6 +405,11 @@ hsprint: @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +inpref: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + inputred: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -712,6 +717,11 @@ regexpbrack: @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +regexpbrack2: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + regexprange: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -1247,6 +1257,11 @@ shadow: @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +shadowbuiltin: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + sortfor: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ diff --git a/test/inpref.awk b/test/inpref.awk new file mode 100644 index 00000000..d64ffe7f --- /dev/null +++ b/test/inpref.awk @@ -0,0 +1,9 @@ +function test(x) { + print x + getline + print x +} + +{ + test($0) +} diff --git a/test/inpref.in b/test/inpref.in new file mode 100644 index 00000000..a32119c8 --- /dev/null +++ b/test/inpref.in @@ -0,0 +1,2 @@ +hello +goodbye diff --git a/test/inpref.ok b/test/inpref.ok new file mode 100644 index 00000000..317e9677 --- /dev/null +++ b/test/inpref.ok @@ -0,0 +1,2 @@ +hello +hello diff --git a/test/regexpbrack2.awk b/test/regexpbrack2.awk new file mode 100644 index 00000000..81424844 --- /dev/null +++ b/test/regexpbrack2.awk @@ -0,0 +1,2 @@ +NR == 1 { gsub(/\\\\[;?!,()<>|+@%\]\[]/, " ") ; print "\"" $0 "\"" } +NR == 2 { gsub(/\\\\[;?!,()<>|+@%\]\[^]/, " ") ; print "\"" $0 "\"" } diff --git a/test/regexpbrack2.in b/test/regexpbrack2.in new file mode 100644 index 00000000..42888dd0 --- /dev/null +++ b/test/regexpbrack2.in @@ -0,0 +1,2 @@ +test: \\; \\? \\! +test: \\; \\? \\! diff --git a/test/regexpbrack2.ok b/test/regexpbrack2.ok new file mode 100644 index 00000000..9c2a2922 --- /dev/null +++ b/test/regexpbrack2.ok @@ -0,0 +1,2 @@ +"test: " +"test: " diff --git a/test/shadowbuiltin.awk b/test/shadowbuiltin.awk new file mode 100644 index 00000000..3ae21725 --- /dev/null +++ b/test/shadowbuiltin.awk @@ -0,0 +1,10 @@ +function foo(gensub) +{ + print gensub + print lshift(1, 1) +} + +BEGIN { + x = 5 + foo(x) +} diff --git a/test/shadowbuiltin.ok b/test/shadowbuiltin.ok new file mode 100644 index 00000000..47586a86 --- /dev/null +++ b/test/shadowbuiltin.ok @@ -0,0 +1,2 @@ +5 +2 |