gawk-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[gawk-diffs] [SCM] gawk branch, gawk-4.1-stable, updated. gawk-4.1.0-548


From: Arnold Robbins
Subject: [gawk-diffs] [SCM] gawk branch, gawk-4.1-stable, updated. gawk-4.1.0-548-gb1f63ac
Date: Wed, 07 Jan 2015 20:24:53 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "gawk".

The branch, gawk-4.1-stable has been updated
       via  b1f63ac08d7da89ac7e8af4df5ca835527fc5b24 (commit)
       via  f70399532bd105c5f42ca040846aa537a8fa27bc (commit)
       via  385f22a32c3794615d713e519ae290eb09b2c4d2 (commit)
       via  9fc264e33c0fcc77ed18860a47bea824d75daebd (commit)
      from  4160a0e1fe1aaf4919162010a33550bc22af9454 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://git.sv.gnu.org/cgit/gawk.git/commit/?id=b1f63ac08d7da89ac7e8af4df5ca835527fc5b24

commit b1f63ac08d7da89ac7e8af4df5ca835527fc5b24
Author: Arnold D. Robbins <address@hidden>
Date:   Wed Jan 7 22:23:19 2015 +0200

    Load PROCINFO and ENVIRON if using extensions.

diff --git a/ChangeLog b/ChangeLog
index e3a73a8..ef07715 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -6,6 +6,16 @@
        * builtin.c (format_tree): Catch non-use of count$ for dynamic
        field width or precision.
 
+       Unrelated:
+
+       Load deferred variables if extensions are used; they might
+       want to access PROCINFO and/or ENVIRON. Thanks to Andrew Schorr
+       for pointing out the issue.
+
+       * awkgram.y (extensions_used): New variable. Set it on @load.
+       (do_add_scrfile): Set it on -l.
+       (process_deferred): Check it also.
+
 2014-12-10         Arnold D. Robbins     <address@hidden>
 
        * dfa.c: Sync with GNU grep.
diff --git a/awkgram.c b/awkgram.c
index 84140ee..b24e602 100644
--- a/awkgram.c
+++ b/awkgram.c
@@ -160,6 +160,7 @@ static int lasttok = 0;
 static bool eof_warned = false;        /* GLOBAL: want warning for each file */
 static int break_allowed;      /* kludge for break */
 static int continue_allowed;   /* kludge for continue */
+static bool extensions_used = false;   /* program uses extensions */
 
 #define END_FILE       -1000
 #define END_SRC        -2000
@@ -195,7 +196,7 @@ extern double fmod(double x, double y);
 
 #define YYSTYPE INSTRUCTION *
 
-#line 199 "awkgram.c" /* yacc.c:339  */
+#line 200 "awkgram.c" /* yacc.c:339  */
 
 # ifndef YY_NULLPTR
 #  if defined __cplusplus && 201103L <= __cplusplus
@@ -349,7 +350,7 @@ int yyparse (void);
 
 /* Copy the second part of user declarations.  */
 
-#line 353 "awkgram.c" /* yacc.c:358  */
+#line 354 "awkgram.c" /* yacc.c:358  */
 
 #ifdef short
 # undef short
@@ -651,25 +652,25 @@ static const yytype_uint8 yytranslate[] =
   /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   198,   198,   200,   205,   206,   212,   224,   228,   239,
-     245,   250,   258,   266,   268,   273,   281,   283,   289,   290,
-     292,   318,   329,   340,   346,   355,   365,   367,   369,   375,
-     380,   381,   385,   404,   403,   437,   439,   444,   445,   458,
-     463,   464,   468,   470,   472,   479,   569,   611,   653,   766,
-     773,   780,   790,   799,   808,   817,   828,   844,   843,   867,
-     879,   879,   977,   977,  1010,  1040,  1046,  1047,  1053,  1054,
-    1061,  1066,  1078,  1092,  1094,  1102,  1107,  1109,  1117,  1119,
-    1128,  1129,  1137,  1142,  1142,  1153,  1157,  1165,  1166,  1169,
-    1171,  1176,  1177,  1186,  1187,  1192,  1197,  1203,  1205,  1207,
-    1214,  1215,  1221,  1222,  1227,  1229,  1234,  1236,  1244,  1249,
-    1258,  1265,  1267,  1269,  1285,  1295,  1302,  1304,  1309,  1311,
-    1313,  1321,  1323,  1328,  1330,  1335,  1337,  1339,  1389,  1391,
-    1393,  1395,  1397,  1399,  1401,  1403,  1417,  1422,  1427,  1452,
-    1458,  1460,  1462,  1464,  1466,  1468,  1473,  1477,  1509,  1511,
-    1517,  1523,  1536,  1537,  1538,  1543,  1548,  1552,  1556,  1571,
-    1584,  1589,  1625,  1643,  1644,  1650,  1651,  1656,  1658,  1665,
-    1682,  1699,  1701,  1708,  1713,  1721,  1731,  1743,  1752,  1756,
-    1760,  1764,  1768,  1772,  1775,  1777,  1781,  1785,  1789
+       0,   199,   199,   201,   206,   207,   213,   225,   229,   240,
+     246,   251,   259,   267,   269,   274,   283,   285,   291,   292,
+     294,   320,   331,   342,   348,   357,   367,   369,   371,   377,
+     382,   383,   387,   406,   405,   439,   441,   446,   447,   460,
+     465,   466,   470,   472,   474,   481,   571,   613,   655,   768,
+     775,   782,   792,   801,   810,   819,   830,   846,   845,   869,
+     881,   881,   979,   979,  1012,  1042,  1048,  1049,  1055,  1056,
+    1063,  1068,  1080,  1094,  1096,  1104,  1109,  1111,  1119,  1121,
+    1130,  1131,  1139,  1144,  1144,  1155,  1159,  1167,  1168,  1171,
+    1173,  1178,  1179,  1188,  1189,  1194,  1199,  1205,  1207,  1209,
+    1216,  1217,  1223,  1224,  1229,  1231,  1236,  1238,  1246,  1251,
+    1260,  1267,  1269,  1271,  1287,  1297,  1304,  1306,  1311,  1313,
+    1315,  1323,  1325,  1330,  1332,  1337,  1339,  1341,  1391,  1393,
+    1395,  1397,  1399,  1401,  1403,  1405,  1419,  1424,  1429,  1454,
+    1460,  1462,  1464,  1466,  1468,  1470,  1475,  1479,  1511,  1513,
+    1519,  1525,  1538,  1539,  1540,  1545,  1550,  1554,  1558,  1573,
+    1586,  1591,  1627,  1645,  1646,  1652,  1653,  1658,  1660,  1667,
+    1684,  1701,  1703,  1710,  1715,  1723,  1733,  1745,  1754,  1758,
+    1762,  1766,  1770,  1774,  1777,  1779,  1783,  1787,  1791
 };
 #endif
 
@@ -1842,26 +1843,26 @@ yyreduce:
   switch (yyn)
     {
         case 3:
-#line 201 "awkgram.y" /* yacc.c:1646  */
+#line 202 "awkgram.y" /* yacc.c:1646  */
     {
                rule = 0;
                yyerrok;
          }
-#line 1851 "awkgram.c" /* yacc.c:1646  */
+#line 1852 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 5:
-#line 207 "awkgram.y" /* yacc.c:1646  */
+#line 208 "awkgram.y" /* yacc.c:1646  */
     {
                next_sourcefile();
                if (sourcefile == srcfiles)
                        process_deferred();
          }
-#line 1861 "awkgram.c" /* yacc.c:1646  */
+#line 1862 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 6:
-#line 213 "awkgram.y" /* yacc.c:1646  */
+#line 214 "awkgram.y" /* yacc.c:1646  */
     {
                rule = 0;
                /*
@@ -1870,19 +1871,19 @@ yyreduce:
                 */
                /* yyerrok; */
          }
-#line 1874 "awkgram.c" /* yacc.c:1646  */
+#line 1875 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 7:
-#line 225 "awkgram.y" /* yacc.c:1646  */
+#line 226 "awkgram.y" /* yacc.c:1646  */
     {
                (void) append_rule((yyvsp[-1]), (yyvsp[0]));
          }
-#line 1882 "awkgram.c" /* yacc.c:1646  */
+#line 1883 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 8:
-#line 229 "awkgram.y" /* yacc.c:1646  */
+#line 230 "awkgram.y" /* yacc.c:1646  */
     {
                if (rule != Rule) {
                        msg(_("%s blocks must have an action part"), 
ruletab[rule]);
@@ -1893,39 +1894,39 @@ yyreduce:
                } else          /* pattern rule with non-empty pattern */
                        (void) append_rule((yyvsp[-1]), NULL);
          }
-#line 1897 "awkgram.c" /* yacc.c:1646  */
+#line 1898 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 9:
-#line 240 "awkgram.y" /* yacc.c:1646  */
+#line 241 "awkgram.y" /* yacc.c:1646  */
     {
                in_function = NULL;
                (void) mk_function((yyvsp[-1]), (yyvsp[0]));
                yyerrok;
          }
-#line 1907 "awkgram.c" /* yacc.c:1646  */
+#line 1908 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 10:
-#line 246 "awkgram.y" /* yacc.c:1646  */
+#line 247 "awkgram.y" /* yacc.c:1646  */
     {
                want_source = false;
                yyerrok;
          }
-#line 1916 "awkgram.c" /* yacc.c:1646  */
+#line 1917 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 11:
-#line 251 "awkgram.y" /* yacc.c:1646  */
+#line 252 "awkgram.y" /* yacc.c:1646  */
     {
                want_source = false;
                yyerrok;
          }
-#line 1925 "awkgram.c" /* yacc.c:1646  */
+#line 1926 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 12:
-#line 259 "awkgram.y" /* yacc.c:1646  */
+#line 260 "awkgram.y" /* yacc.c:1646  */
     {
                if (include_source((yyvsp[0])) < 0)
                        YYABORT;
@@ -1933,59 +1934,60 @@ yyreduce:
                bcfree((yyvsp[0]));
                (yyval) = NULL;
          }
-#line 1937 "awkgram.c" /* yacc.c:1646  */
+#line 1938 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 13:
-#line 267 "awkgram.y" /* yacc.c:1646  */
+#line 268 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 1943 "awkgram.c" /* yacc.c:1646  */
+#line 1944 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 14:
-#line 269 "awkgram.y" /* yacc.c:1646  */
+#line 270 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 1949 "awkgram.c" /* yacc.c:1646  */
+#line 1950 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 15:
-#line 274 "awkgram.y" /* yacc.c:1646  */
+#line 275 "awkgram.y" /* yacc.c:1646  */
     {
+               extensions_used = true;
                if (load_library((yyvsp[0])) < 0)
                        YYABORT;
                efree((yyvsp[0])->lextok);
                bcfree((yyvsp[0]));
                (yyval) = NULL;
          }
-#line 1961 "awkgram.c" /* yacc.c:1646  */
+#line 1963 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 16:
-#line 282 "awkgram.y" /* yacc.c:1646  */
+#line 284 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 1967 "awkgram.c" /* yacc.c:1646  */
+#line 1969 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 17:
-#line 284 "awkgram.y" /* yacc.c:1646  */
+#line 286 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 1973 "awkgram.c" /* yacc.c:1646  */
+#line 1975 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 18:
-#line 289 "awkgram.y" /* yacc.c:1646  */
+#line 291 "awkgram.y" /* yacc.c:1646  */
     {  (yyval) = NULL; rule = Rule; }
-#line 1979 "awkgram.c" /* yacc.c:1646  */
+#line 1981 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 19:
-#line 291 "awkgram.y" /* yacc.c:1646  */
+#line 293 "awkgram.y" /* yacc.c:1646  */
     {  (yyval) = (yyvsp[0]); rule = Rule; }
-#line 1985 "awkgram.c" /* yacc.c:1646  */
+#line 1987 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 20:
-#line 293 "awkgram.y" /* yacc.c:1646  */
+#line 295 "awkgram.y" /* yacc.c:1646  */
     {
                INSTRUCTION *tp;
 
@@ -2011,11 +2013,11 @@ yyreduce:
                (yyval) = list_append(list_merge((yyvsp[-3]), (yyvsp[0])), tp);
                rule = Rule;
          }
-#line 2015 "awkgram.c" /* yacc.c:1646  */
+#line 2017 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 21:
-#line 319 "awkgram.y" /* yacc.c:1646  */
+#line 321 "awkgram.y" /* yacc.c:1646  */
     {
                static int begin_seen = 0;
                if (do_lint_old && ++begin_seen == 2)
@@ -2026,11 +2028,11 @@ yyreduce:
                (yyvsp[0])->source_file = source;
                (yyval) = (yyvsp[0]);
          }
-#line 2030 "awkgram.c" /* yacc.c:1646  */
+#line 2032 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 22:
-#line 330 "awkgram.y" /* yacc.c:1646  */
+#line 332 "awkgram.y" /* yacc.c:1646  */
     {
                static int end_seen = 0;
                if (do_lint_old && ++end_seen == 2)
@@ -2041,70 +2043,70 @@ yyreduce:
                (yyvsp[0])->source_file = source;
                (yyval) = (yyvsp[0]);
          }
-#line 2045 "awkgram.c" /* yacc.c:1646  */
+#line 2047 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 23:
-#line 341 "awkgram.y" /* yacc.c:1646  */
+#line 343 "awkgram.y" /* yacc.c:1646  */
     {
                (yyvsp[0])->in_rule = rule = BEGINFILE;
                (yyvsp[0])->source_file = source;
                (yyval) = (yyvsp[0]);
          }
-#line 2055 "awkgram.c" /* yacc.c:1646  */
+#line 2057 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 24:
-#line 347 "awkgram.y" /* yacc.c:1646  */
+#line 349 "awkgram.y" /* yacc.c:1646  */
     {
                (yyvsp[0])->in_rule = rule = ENDFILE;
                (yyvsp[0])->source_file = source;
                (yyval) = (yyvsp[0]);
          }
-#line 2065 "awkgram.c" /* yacc.c:1646  */
+#line 2067 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 25:
-#line 356 "awkgram.y" /* yacc.c:1646  */
+#line 358 "awkgram.y" /* yacc.c:1646  */
     {
                if ((yyvsp[-3]) == NULL)
                        (yyval) = list_create(instruction(Op_no_op));
                else
                        (yyval) = (yyvsp[-3]);
          }
-#line 2076 "awkgram.c" /* yacc.c:1646  */
+#line 2078 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 26:
-#line 366 "awkgram.y" /* yacc.c:1646  */
+#line 368 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 2082 "awkgram.c" /* yacc.c:1646  */
+#line 2084 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 27:
-#line 368 "awkgram.y" /* yacc.c:1646  */
+#line 370 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 2088 "awkgram.c" /* yacc.c:1646  */
+#line 2090 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 28:
-#line 370 "awkgram.y" /* yacc.c:1646  */
+#line 372 "awkgram.y" /* yacc.c:1646  */
     {
                yyerror(_("`%s' is a built-in function, it cannot be 
redefined"),
                                        tokstart);
                YYABORT;
          }
-#line 2098 "awkgram.c" /* yacc.c:1646  */
+#line 2100 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 29:
-#line 376 "awkgram.y" /* yacc.c:1646  */
+#line 378 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 2104 "awkgram.c" /* yacc.c:1646  */
+#line 2106 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 32:
-#line 386 "awkgram.y" /* yacc.c:1646  */
+#line 388 "awkgram.y" /* yacc.c:1646  */
     {
                (yyvsp[-5])->source_file = source;
                if (install_function((yyvsp[-4])->lextok, (yyvsp[-5]), 
(yyvsp[-2])) < 0)
@@ -2115,17 +2117,17 @@ yyreduce:
                /* $4 already free'd in install_function */
                (yyval) = (yyvsp[-5]);
          }
-#line 2119 "awkgram.c" /* yacc.c:1646  */
+#line 2121 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 33:
-#line 404 "awkgram.y" /* yacc.c:1646  */
+#line 406 "awkgram.y" /* yacc.c:1646  */
     { want_regexp = true; }
-#line 2125 "awkgram.c" /* yacc.c:1646  */
+#line 2127 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 34:
-#line 406 "awkgram.y" /* yacc.c:1646  */
+#line 408 "awkgram.y" /* yacc.c:1646  */
     {
                  NODE *n, *exp;
                  char *re;
@@ -2154,23 +2156,23 @@ yyreduce:
                  (yyval)->opcode = Op_match_rec;
                  (yyval)->memory = n;
                }
-#line 2158 "awkgram.c" /* yacc.c:1646  */
+#line 2160 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 35:
-#line 438 "awkgram.y" /* yacc.c:1646  */
+#line 440 "awkgram.y" /* yacc.c:1646  */
     { bcfree((yyvsp[0])); }
-#line 2164 "awkgram.c" /* yacc.c:1646  */
+#line 2166 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 37:
-#line 444 "awkgram.y" /* yacc.c:1646  */
+#line 446 "awkgram.y" /* yacc.c:1646  */
     {  (yyval) = NULL; }
-#line 2170 "awkgram.c" /* yacc.c:1646  */
+#line 2172 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 38:
-#line 446 "awkgram.y" /* yacc.c:1646  */
+#line 448 "awkgram.y" /* yacc.c:1646  */
     {
                if ((yyvsp[0]) == NULL)
                        (yyval) = (yyvsp[-1]);
@@ -2183,40 +2185,40 @@ yyreduce:
                }
            yyerrok;
          }
-#line 2187 "awkgram.c" /* yacc.c:1646  */
+#line 2189 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 39:
-#line 459 "awkgram.y" /* yacc.c:1646  */
+#line 461 "awkgram.y" /* yacc.c:1646  */
     {  (yyval) = NULL; }
-#line 2193 "awkgram.c" /* yacc.c:1646  */
+#line 2195 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 42:
-#line 469 "awkgram.y" /* yacc.c:1646  */
+#line 471 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 2199 "awkgram.c" /* yacc.c:1646  */
+#line 2201 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 43:
-#line 471 "awkgram.y" /* yacc.c:1646  */
+#line 473 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[-1]); }
-#line 2205 "awkgram.c" /* yacc.c:1646  */
+#line 2207 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 44:
-#line 473 "awkgram.y" /* yacc.c:1646  */
+#line 475 "awkgram.y" /* yacc.c:1646  */
     {
                if (do_pretty_print)
                        (yyval) = list_prepend((yyvsp[0]), 
instruction(Op_exec_count));
                else
                        (yyval) = (yyvsp[0]);
          }
-#line 2216 "awkgram.c" /* yacc.c:1646  */
+#line 2218 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 45:
-#line 480 "awkgram.y" /* yacc.c:1646  */
+#line 482 "awkgram.y" /* yacc.c:1646  */
     {
                INSTRUCTION *dflt, *curr = NULL, *cexp, *cstmt;
                INSTRUCTION *ip, *nextc, *tbreak;
@@ -2306,11 +2308,11 @@ yyreduce:
                break_allowed--;                        
                fix_break_continue(ip, tbreak, NULL);
          }
-#line 2310 "awkgram.c" /* yacc.c:1646  */
+#line 2312 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 46:
-#line 570 "awkgram.y" /* yacc.c:1646  */
+#line 572 "awkgram.y" /* yacc.c:1646  */
     { 
                /*
                 *    -----------------
@@ -2352,11 +2354,11 @@ yyreduce:
                continue_allowed--;
                fix_break_continue(ip, tbreak, tcont);
          }
-#line 2356 "awkgram.c" /* yacc.c:1646  */
+#line 2358 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 47:
-#line 612 "awkgram.y" /* yacc.c:1646  */
+#line 614 "awkgram.y" /* yacc.c:1646  */
     {
                /*
                 *    -----------------
@@ -2398,11 +2400,11 @@ yyreduce:
                } /* else
                        $1 and $4 are NULLs */
          }
-#line 2402 "awkgram.c" /* yacc.c:1646  */
+#line 2404 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 48:
-#line 654 "awkgram.y" /* yacc.c:1646  */
+#line 656 "awkgram.y" /* yacc.c:1646  */
     {
                INSTRUCTION *ip;
                char *var_name = (yyvsp[-5])->lextok;
@@ -2515,44 +2517,44 @@ regular_loop:
                break_allowed--;
                continue_allowed--;
          }
-#line 2519 "awkgram.c" /* yacc.c:1646  */
+#line 2521 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 49:
-#line 767 "awkgram.y" /* yacc.c:1646  */
+#line 769 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = mk_for_loop((yyvsp[-11]), (yyvsp[-9]), (yyvsp[-6]), 
(yyvsp[-3]), (yyvsp[0]));
 
                break_allowed--;
                continue_allowed--;
          }
-#line 2530 "awkgram.c" /* yacc.c:1646  */
+#line 2532 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 50:
-#line 774 "awkgram.y" /* yacc.c:1646  */
+#line 776 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = mk_for_loop((yyvsp[-10]), (yyvsp[-8]), (INSTRUCTION 
*) NULL, (yyvsp[-3]), (yyvsp[0]));
 
                break_allowed--;
                continue_allowed--;
          }
-#line 2541 "awkgram.c" /* yacc.c:1646  */
+#line 2543 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 51:
-#line 781 "awkgram.y" /* yacc.c:1646  */
+#line 783 "awkgram.y" /* yacc.c:1646  */
     {
                if (do_pretty_print)
                        (yyval) = list_prepend((yyvsp[0]), 
instruction(Op_exec_count));
                else
                        (yyval) = (yyvsp[0]);
          }
-#line 2552 "awkgram.c" /* yacc.c:1646  */
+#line 2554 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 52:
-#line 791 "awkgram.y" /* yacc.c:1646  */
+#line 793 "awkgram.y" /* yacc.c:1646  */
     { 
                if (! break_allowed)
                        error_ln((yyvsp[-1])->source_line,
@@ -2561,11 +2563,11 @@ regular_loop:
                (yyval) = list_create((yyvsp[-1]));
 
          }
-#line 2565 "awkgram.c" /* yacc.c:1646  */
+#line 2567 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 53:
-#line 800 "awkgram.y" /* yacc.c:1646  */
+#line 802 "awkgram.y" /* yacc.c:1646  */
     {
                if (! continue_allowed)
                        error_ln((yyvsp[-1])->source_line,
@@ -2574,11 +2576,11 @@ regular_loop:
                (yyval) = list_create((yyvsp[-1]));
 
          }
-#line 2578 "awkgram.c" /* yacc.c:1646  */
+#line 2580 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 54:
-#line 809 "awkgram.y" /* yacc.c:1646  */
+#line 811 "awkgram.y" /* yacc.c:1646  */
     {
                /* if inside function (rule = 0), resolve context at run-time */
                if (rule && rule != Rule)
@@ -2587,11 +2589,11 @@ regular_loop:
                (yyvsp[-1])->target_jmp = ip_rec;
                (yyval) = list_create((yyvsp[-1]));
          }
-#line 2591 "awkgram.c" /* yacc.c:1646  */
+#line 2593 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 55:
-#line 818 "awkgram.y" /* yacc.c:1646  */
+#line 820 "awkgram.y" /* yacc.c:1646  */
     {
                /* if inside function (rule = 0), resolve context at run-time */
                if (rule == BEGIN || rule == END || rule == ENDFILE)
@@ -2602,11 +2604,11 @@ regular_loop:
                (yyvsp[-1])->target_endfile = ip_endfile;
                (yyval) = list_create((yyvsp[-1]));
          }
-#line 2606 "awkgram.c" /* yacc.c:1646  */
+#line 2608 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 56:
-#line 829 "awkgram.y" /* yacc.c:1646  */
+#line 831 "awkgram.y" /* yacc.c:1646  */
     {
                /* Initialize the two possible jump targets, the actual target
                 * is resolved at run-time. 
@@ -2621,20 +2623,20 @@ regular_loop:
                } else
                        (yyval) = list_append((yyvsp[-1]), (yyvsp[-2]));
          }
-#line 2625 "awkgram.c" /* yacc.c:1646  */
+#line 2627 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 57:
-#line 844 "awkgram.y" /* yacc.c:1646  */
+#line 846 "awkgram.y" /* yacc.c:1646  */
     {
                if (! in_function)
                        yyerror(_("`return' used outside function context"));
          }
-#line 2634 "awkgram.c" /* yacc.c:1646  */
+#line 2636 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 58:
-#line 847 "awkgram.y" /* yacc.c:1646  */
+#line 849 "awkgram.y" /* yacc.c:1646  */
     {
                if ((yyvsp[-1]) == NULL) {
                        (yyval) = list_create((yyvsp[-3]));
@@ -2655,17 +2657,17 @@ regular_loop:
                        (yyval) = list_append((yyvsp[-1]), (yyvsp[-3]));
                }
          }
-#line 2659 "awkgram.c" /* yacc.c:1646  */
+#line 2661 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 60:
-#line 879 "awkgram.y" /* yacc.c:1646  */
+#line 881 "awkgram.y" /* yacc.c:1646  */
     { in_print = true; in_parens = 0; }
-#line 2665 "awkgram.c" /* yacc.c:1646  */
+#line 2667 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 61:
-#line 880 "awkgram.y" /* yacc.c:1646  */
+#line 882 "awkgram.y" /* yacc.c:1646  */
     {
                /*
                 * Optimization: plain `print' has no expression list, so $3 is 
null.
@@ -2762,17 +2764,17 @@ regular_print:
                        }
                }
          }
-#line 2766 "awkgram.c" /* yacc.c:1646  */
+#line 2768 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 62:
-#line 977 "awkgram.y" /* yacc.c:1646  */
+#line 979 "awkgram.y" /* yacc.c:1646  */
     { sub_counter = 0; }
-#line 2772 "awkgram.c" /* yacc.c:1646  */
+#line 2774 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 63:
-#line 978 "awkgram.y" /* yacc.c:1646  */
+#line 980 "awkgram.y" /* yacc.c:1646  */
     {
                char *arr = (yyvsp[-2])->lextok;
 
@@ -2805,11 +2807,11 @@ regular_print:
                        (yyval) = list_append(list_append((yyvsp[0]), 
(yyvsp[-2])), (yyvsp[-3]));
                }
          }
-#line 2809 "awkgram.c" /* yacc.c:1646  */
+#line 2811 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 64:
-#line 1015 "awkgram.y" /* yacc.c:1646  */
+#line 1017 "awkgram.y" /* yacc.c:1646  */
     {
                static bool warned = false;
                char *arr = (yyvsp[-1])->lextok;
@@ -2835,52 +2837,52 @@ regular_print:
                                fatal(_("`delete' is not allowed with 
FUNCTAB"));
                }
          }
-#line 2839 "awkgram.c" /* yacc.c:1646  */
+#line 2841 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 65:
-#line 1041 "awkgram.y" /* yacc.c:1646  */
+#line 1043 "awkgram.y" /* yacc.c:1646  */
     {  (yyval) = optimize_assignment((yyvsp[0])); }
-#line 2845 "awkgram.c" /* yacc.c:1646  */
+#line 2847 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 66:
-#line 1046 "awkgram.y" /* yacc.c:1646  */
+#line 1048 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 2851 "awkgram.c" /* yacc.c:1646  */
+#line 2853 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 67:
-#line 1048 "awkgram.y" /* yacc.c:1646  */
+#line 1050 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 2857 "awkgram.c" /* yacc.c:1646  */
+#line 2859 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 68:
-#line 1053 "awkgram.y" /* yacc.c:1646  */
+#line 1055 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 2863 "awkgram.c" /* yacc.c:1646  */
+#line 2865 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 69:
-#line 1055 "awkgram.y" /* yacc.c:1646  */
+#line 1057 "awkgram.y" /* yacc.c:1646  */
     {
                if ((yyvsp[-1]) == NULL)
                        (yyval) = list_create((yyvsp[0]));
                else
                        (yyval) = list_prepend((yyvsp[-1]), (yyvsp[0]));
          }
-#line 2874 "awkgram.c" /* yacc.c:1646  */
+#line 2876 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 70:
-#line 1062 "awkgram.y" /* yacc.c:1646  */
+#line 1064 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 2880 "awkgram.c" /* yacc.c:1646  */
+#line 2882 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 71:
-#line 1067 "awkgram.y" /* yacc.c:1646  */
+#line 1069 "awkgram.y" /* yacc.c:1646  */
     {
                INSTRUCTION *casestmt = (yyvsp[0]);
                if ((yyvsp[0]) == NULL)
@@ -2892,11 +2894,11 @@ regular_print:
                bcfree((yyvsp[-2]));
                (yyval) = (yyvsp[-4]);
          }
-#line 2896 "awkgram.c" /* yacc.c:1646  */
+#line 2898 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 72:
-#line 1079 "awkgram.y" /* yacc.c:1646  */
+#line 1081 "awkgram.y" /* yacc.c:1646  */
     {
                INSTRUCTION *casestmt = (yyvsp[0]);
                if ((yyvsp[0]) == NULL)
@@ -2907,17 +2909,17 @@ regular_print:
                (yyvsp[-3])->case_stmt = casestmt;
                (yyval) = (yyvsp[-3]);
          }
-#line 2911 "awkgram.c" /* yacc.c:1646  */
+#line 2913 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 73:
-#line 1093 "awkgram.y" /* yacc.c:1646  */
+#line 1095 "awkgram.y" /* yacc.c:1646  */
     {  (yyval) = (yyvsp[0]); }
-#line 2917 "awkgram.c" /* yacc.c:1646  */
+#line 2919 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 74:
-#line 1095 "awkgram.y" /* yacc.c:1646  */
+#line 1097 "awkgram.y" /* yacc.c:1646  */
     { 
                NODE *n = (yyvsp[0])->memory;
                (void) force_number(n);
@@ -2925,71 +2927,71 @@ regular_print:
                bcfree((yyvsp[-1]));
                (yyval) = (yyvsp[0]);
          }
-#line 2929 "awkgram.c" /* yacc.c:1646  */
+#line 2931 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 75:
-#line 1103 "awkgram.y" /* yacc.c:1646  */
+#line 1105 "awkgram.y" /* yacc.c:1646  */
     {
                bcfree((yyvsp[-1]));
                (yyval) = (yyvsp[0]);
          }
-#line 2938 "awkgram.c" /* yacc.c:1646  */
+#line 2940 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 76:
-#line 1108 "awkgram.y" /* yacc.c:1646  */
+#line 1110 "awkgram.y" /* yacc.c:1646  */
     {  (yyval) = (yyvsp[0]); }
-#line 2944 "awkgram.c" /* yacc.c:1646  */
+#line 2946 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 77:
-#line 1110 "awkgram.y" /* yacc.c:1646  */
+#line 1112 "awkgram.y" /* yacc.c:1646  */
     {
                (yyvsp[0])->opcode = Op_push_re;
                (yyval) = (yyvsp[0]);
          }
-#line 2953 "awkgram.c" /* yacc.c:1646  */
+#line 2955 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 78:
-#line 1118 "awkgram.y" /* yacc.c:1646  */
+#line 1120 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 2959 "awkgram.c" /* yacc.c:1646  */
+#line 2961 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 79:
-#line 1120 "awkgram.y" /* yacc.c:1646  */
+#line 1122 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 2965 "awkgram.c" /* yacc.c:1646  */
+#line 2967 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 81:
-#line 1130 "awkgram.y" /* yacc.c:1646  */
+#line 1132 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = (yyvsp[-1]);
          }
-#line 2973 "awkgram.c" /* yacc.c:1646  */
+#line 2975 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 82:
-#line 1137 "awkgram.y" /* yacc.c:1646  */
+#line 1139 "awkgram.y" /* yacc.c:1646  */
     {
                in_print = false;
                in_parens = 0;
                (yyval) = NULL;
          }
-#line 2983 "awkgram.c" /* yacc.c:1646  */
+#line 2985 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 83:
-#line 1142 "awkgram.y" /* yacc.c:1646  */
+#line 1144 "awkgram.y" /* yacc.c:1646  */
     { in_print = false; in_parens = 0; }
-#line 2989 "awkgram.c" /* yacc.c:1646  */
+#line 2991 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 84:
-#line 1143 "awkgram.y" /* yacc.c:1646  */
+#line 1145 "awkgram.y" /* yacc.c:1646  */
     {
                if ((yyvsp[-2])->redir_type == redirect_twoway
                        && (yyvsp[0])->lasti->opcode == Op_K_getline_redir
@@ -2997,136 +2999,136 @@ regular_print:
                        yyerror(_("multistage two-way pipelines don't work"));
                (yyval) = list_prepend((yyvsp[0]), (yyvsp[-2]));
          }
-#line 3001 "awkgram.c" /* yacc.c:1646  */
+#line 3003 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 85:
-#line 1154 "awkgram.y" /* yacc.c:1646  */
+#line 1156 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = mk_condition((yyvsp[-3]), (yyvsp[-5]), (yyvsp[0]), 
NULL, NULL);
          }
-#line 3009 "awkgram.c" /* yacc.c:1646  */
+#line 3011 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 86:
-#line 1159 "awkgram.y" /* yacc.c:1646  */
+#line 1161 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = mk_condition((yyvsp[-6]), (yyvsp[-8]), (yyvsp[-3]), 
(yyvsp[-2]), (yyvsp[0]));
          }
-#line 3017 "awkgram.c" /* yacc.c:1646  */
+#line 3019 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 91:
-#line 1176 "awkgram.y" /* yacc.c:1646  */
+#line 1178 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 3023 "awkgram.c" /* yacc.c:1646  */
+#line 3025 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 92:
-#line 1178 "awkgram.y" /* yacc.c:1646  */
+#line 1180 "awkgram.y" /* yacc.c:1646  */
     {
                bcfree((yyvsp[-1]));
                (yyval) = (yyvsp[0]);
          }
-#line 3032 "awkgram.c" /* yacc.c:1646  */
+#line 3034 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 93:
-#line 1186 "awkgram.y" /* yacc.c:1646  */
+#line 1188 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 3038 "awkgram.c" /* yacc.c:1646  */
+#line 3040 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 94:
-#line 1188 "awkgram.y" /* yacc.c:1646  */
+#line 1190 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]) ; }
-#line 3044 "awkgram.c" /* yacc.c:1646  */
+#line 3046 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 95:
-#line 1193 "awkgram.y" /* yacc.c:1646  */
+#line 1195 "awkgram.y" /* yacc.c:1646  */
     {
                (yyvsp[0])->param_count = 0;
                (yyval) = list_create((yyvsp[0]));
          }
-#line 3053 "awkgram.c" /* yacc.c:1646  */
+#line 3055 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 96:
-#line 1198 "awkgram.y" /* yacc.c:1646  */
+#line 1200 "awkgram.y" /* yacc.c:1646  */
     {
                (yyvsp[0])->param_count =  (yyvsp[-2])->lasti->param_count + 1;
                (yyval) = list_append((yyvsp[-2]), (yyvsp[0]));
                yyerrok;
          }
-#line 3063 "awkgram.c" /* yacc.c:1646  */
+#line 3065 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 97:
-#line 1204 "awkgram.y" /* yacc.c:1646  */
+#line 1206 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 3069 "awkgram.c" /* yacc.c:1646  */
+#line 3071 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 98:
-#line 1206 "awkgram.y" /* yacc.c:1646  */
+#line 1208 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[-1]); }
-#line 3075 "awkgram.c" /* yacc.c:1646  */
+#line 3077 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 99:
-#line 1208 "awkgram.y" /* yacc.c:1646  */
+#line 1210 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[-2]); }
-#line 3081 "awkgram.c" /* yacc.c:1646  */
+#line 3083 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 100:
-#line 1214 "awkgram.y" /* yacc.c:1646  */
+#line 1216 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 3087 "awkgram.c" /* yacc.c:1646  */
+#line 3089 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 101:
-#line 1216 "awkgram.y" /* yacc.c:1646  */
+#line 1218 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3093 "awkgram.c" /* yacc.c:1646  */
+#line 3095 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 102:
-#line 1221 "awkgram.y" /* yacc.c:1646  */
+#line 1223 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 3099 "awkgram.c" /* yacc.c:1646  */
+#line 3101 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 103:
-#line 1223 "awkgram.y" /* yacc.c:1646  */
+#line 1225 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3105 "awkgram.c" /* yacc.c:1646  */
+#line 3107 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 104:
-#line 1228 "awkgram.y" /* yacc.c:1646  */
+#line 1230 "awkgram.y" /* yacc.c:1646  */
     {  (yyval) = mk_expression_list(NULL, (yyvsp[0])); }
-#line 3111 "awkgram.c" /* yacc.c:1646  */
+#line 3113 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 105:
-#line 1230 "awkgram.y" /* yacc.c:1646  */
+#line 1232 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = mk_expression_list((yyvsp[-2]), (yyvsp[0]));
                yyerrok;
          }
-#line 3120 "awkgram.c" /* yacc.c:1646  */
+#line 3122 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 106:
-#line 1235 "awkgram.y" /* yacc.c:1646  */
+#line 1237 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 3126 "awkgram.c" /* yacc.c:1646  */
+#line 3128 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 107:
-#line 1237 "awkgram.y" /* yacc.c:1646  */
+#line 1239 "awkgram.y" /* yacc.c:1646  */
     {
                /*
                 * Returning the expression list instead of NULL lets
@@ -3134,52 +3136,52 @@ regular_print:
                 */
                (yyval) = (yyvsp[-1]);
          }
-#line 3138 "awkgram.c" /* yacc.c:1646  */
+#line 3140 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 108:
-#line 1245 "awkgram.y" /* yacc.c:1646  */
+#line 1247 "awkgram.y" /* yacc.c:1646  */
     {
                /* Ditto */
                (yyval) = mk_expression_list((yyvsp[-2]), (yyvsp[0]));
          }
-#line 3147 "awkgram.c" /* yacc.c:1646  */
+#line 3149 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 109:
-#line 1250 "awkgram.y" /* yacc.c:1646  */
+#line 1252 "awkgram.y" /* yacc.c:1646  */
     {
                /* Ditto */
                (yyval) = (yyvsp[-2]);
          }
-#line 3156 "awkgram.c" /* yacc.c:1646  */
+#line 3158 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 110:
-#line 1259 "awkgram.y" /* yacc.c:1646  */
+#line 1261 "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 3167 "awkgram.c" /* yacc.c:1646  */
+#line 3169 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 111:
-#line 1266 "awkgram.y" /* yacc.c:1646  */
+#line 1268 "awkgram.y" /* yacc.c:1646  */
     {  (yyval) = mk_boolean((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3173 "awkgram.c" /* yacc.c:1646  */
+#line 3175 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 112:
-#line 1268 "awkgram.y" /* yacc.c:1646  */
+#line 1270 "awkgram.y" /* yacc.c:1646  */
     {  (yyval) = mk_boolean((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3179 "awkgram.c" /* yacc.c:1646  */
+#line 3181 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 113:
-#line 1270 "awkgram.y" /* yacc.c:1646  */
+#line 1272 "awkgram.y" /* yacc.c:1646  */
     {
                if ((yyvsp[-2])->lasti->opcode == Op_match_rec)
                        warning_ln((yyvsp[-1])->source_line,
@@ -3195,11 +3197,11 @@ regular_print:
                        (yyval) = list_append(list_merge((yyvsp[-2]), 
(yyvsp[0])), (yyvsp[-1]));
                }
          }
-#line 3199 "awkgram.c" /* yacc.c:1646  */
+#line 3201 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 114:
-#line 1286 "awkgram.y" /* yacc.c:1646  */
+#line 1288 "awkgram.y" /* yacc.c:1646  */
     {
                if (do_lint_old)
                        warning_ln((yyvsp[-1])->source_line,
@@ -3209,91 +3211,91 @@ regular_print:
                (yyvsp[-1])->expr_count = 1;
                (yyval) = list_append(list_merge((yyvsp[-2]), (yyvsp[0])), 
(yyvsp[-1]));
          }
-#line 3213 "awkgram.c" /* yacc.c:1646  */
+#line 3215 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 115:
-#line 1296 "awkgram.y" /* yacc.c:1646  */
+#line 1298 "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 3224 "awkgram.c" /* yacc.c:1646  */
+#line 3226 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 116:
-#line 1303 "awkgram.y" /* yacc.c:1646  */
+#line 1305 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = mk_condition((yyvsp[-4]), (yyvsp[-3]), (yyvsp[-2]), 
(yyvsp[-1]), (yyvsp[0])); }
-#line 3230 "awkgram.c" /* yacc.c:1646  */
+#line 3232 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 117:
-#line 1305 "awkgram.y" /* yacc.c:1646  */
+#line 1307 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3236 "awkgram.c" /* yacc.c:1646  */
+#line 3238 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 118:
-#line 1310 "awkgram.y" /* yacc.c:1646  */
+#line 1312 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3242 "awkgram.c" /* yacc.c:1646  */
+#line 3244 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 119:
-#line 1312 "awkgram.y" /* yacc.c:1646  */
+#line 1314 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3248 "awkgram.c" /* yacc.c:1646  */
+#line 3250 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 120:
-#line 1314 "awkgram.y" /* yacc.c:1646  */
+#line 1316 "awkgram.y" /* yacc.c:1646  */
     {  
                (yyvsp[0])->opcode = Op_assign_quotient;
                (yyval) = (yyvsp[0]);
          }
-#line 3257 "awkgram.c" /* yacc.c:1646  */
+#line 3259 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 121:
-#line 1322 "awkgram.y" /* yacc.c:1646  */
+#line 1324 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3263 "awkgram.c" /* yacc.c:1646  */
+#line 3265 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 122:
-#line 1324 "awkgram.y" /* yacc.c:1646  */
+#line 1326 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3269 "awkgram.c" /* yacc.c:1646  */
+#line 3271 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 123:
-#line 1329 "awkgram.y" /* yacc.c:1646  */
+#line 1331 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3275 "awkgram.c" /* yacc.c:1646  */
+#line 3277 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 124:
-#line 1331 "awkgram.y" /* yacc.c:1646  */
+#line 1333 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3281 "awkgram.c" /* yacc.c:1646  */
+#line 3283 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 125:
-#line 1336 "awkgram.y" /* yacc.c:1646  */
+#line 1338 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3287 "awkgram.c" /* yacc.c:1646  */
+#line 3289 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 126:
-#line 1338 "awkgram.y" /* yacc.c:1646  */
+#line 1340 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3293 "awkgram.c" /* yacc.c:1646  */
+#line 3295 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 127:
-#line 1340 "awkgram.y" /* yacc.c:1646  */
+#line 1342 "awkgram.y" /* yacc.c:1646  */
     {
                int count = 2;
                bool is_simple_var = false;
@@ -3340,47 +3342,47 @@ regular_print:
                                max_args = count;
                }
          }
-#line 3344 "awkgram.c" /* yacc.c:1646  */
+#line 3346 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 129:
-#line 1392 "awkgram.y" /* yacc.c:1646  */
+#line 1394 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3350 "awkgram.c" /* yacc.c:1646  */
+#line 3352 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 130:
-#line 1394 "awkgram.y" /* yacc.c:1646  */
+#line 1396 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3356 "awkgram.c" /* yacc.c:1646  */
+#line 3358 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 131:
-#line 1396 "awkgram.y" /* yacc.c:1646  */
+#line 1398 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3362 "awkgram.c" /* yacc.c:1646  */
+#line 3364 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 132:
-#line 1398 "awkgram.y" /* yacc.c:1646  */
+#line 1400 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3368 "awkgram.c" /* yacc.c:1646  */
+#line 3370 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 133:
-#line 1400 "awkgram.y" /* yacc.c:1646  */
+#line 1402 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3374 "awkgram.c" /* yacc.c:1646  */
+#line 3376 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 134:
-#line 1402 "awkgram.y" /* yacc.c:1646  */
+#line 1404 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3380 "awkgram.c" /* yacc.c:1646  */
+#line 3382 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 135:
-#line 1404 "awkgram.y" /* yacc.c:1646  */
+#line 1406 "awkgram.y" /* yacc.c:1646  */
     {
                /*
                 * In BEGINFILE/ENDFILE, allow `getline [var] < file'
@@ -3394,29 +3396,29 @@ regular_print:
                                _("non-redirected `getline' undefined inside 
END action"));
                (yyval) = mk_getline((yyvsp[-2]), (yyvsp[-1]), (yyvsp[0]), 
redirect_input);
          }
-#line 3398 "awkgram.c" /* yacc.c:1646  */
+#line 3400 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 136:
-#line 1418 "awkgram.y" /* yacc.c:1646  */
+#line 1420 "awkgram.y" /* yacc.c:1646  */
     {
                (yyvsp[0])->opcode = Op_postincrement;
                (yyval) = mk_assignment((yyvsp[-1]), NULL, (yyvsp[0]));
          }
-#line 3407 "awkgram.c" /* yacc.c:1646  */
+#line 3409 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 137:
-#line 1423 "awkgram.y" /* yacc.c:1646  */
+#line 1425 "awkgram.y" /* yacc.c:1646  */
     {
                (yyvsp[0])->opcode = Op_postdecrement;
                (yyval) = mk_assignment((yyvsp[-1]), NULL, (yyvsp[0]));
          }
-#line 3416 "awkgram.c" /* yacc.c:1646  */
+#line 3418 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 138:
-#line 1428 "awkgram.y" /* yacc.c:1646  */
+#line 1430 "awkgram.y" /* yacc.c:1646  */
     {
                if (do_lint_old) {
                    warning_ln((yyvsp[-1])->source_line,
@@ -3436,64 +3438,64 @@ regular_print:
                        (yyval) = list_append(list_merge(t, (yyvsp[0])), 
(yyvsp[-1]));
                }
          }
-#line 3440 "awkgram.c" /* yacc.c:1646  */
+#line 3442 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 139:
-#line 1453 "awkgram.y" /* yacc.c:1646  */
+#line 1455 "awkgram.y" /* yacc.c:1646  */
     {
                  (yyval) = mk_getline((yyvsp[-1]), (yyvsp[0]), (yyvsp[-3]), 
(yyvsp[-2])->redir_type);
                  bcfree((yyvsp[-2]));
                }
-#line 3449 "awkgram.c" /* yacc.c:1646  */
+#line 3451 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 140:
-#line 1459 "awkgram.y" /* yacc.c:1646  */
+#line 1461 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3455 "awkgram.c" /* yacc.c:1646  */
+#line 3457 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 141:
-#line 1461 "awkgram.y" /* yacc.c:1646  */
+#line 1463 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3461 "awkgram.c" /* yacc.c:1646  */
+#line 3463 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 142:
-#line 1463 "awkgram.y" /* yacc.c:1646  */
+#line 1465 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3467 "awkgram.c" /* yacc.c:1646  */
+#line 3469 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 143:
-#line 1465 "awkgram.y" /* yacc.c:1646  */
+#line 1467 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3473 "awkgram.c" /* yacc.c:1646  */
+#line 3475 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 144:
-#line 1467 "awkgram.y" /* yacc.c:1646  */
+#line 1469 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3479 "awkgram.c" /* yacc.c:1646  */
+#line 3481 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 145:
-#line 1469 "awkgram.y" /* yacc.c:1646  */
+#line 1471 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3485 "awkgram.c" /* yacc.c:1646  */
+#line 3487 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 146:
-#line 1474 "awkgram.y" /* yacc.c:1646  */
+#line 1476 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = list_create((yyvsp[0]));
          }
-#line 3493 "awkgram.c" /* yacc.c:1646  */
+#line 3495 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 147:
-#line 1478 "awkgram.y" /* yacc.c:1646  */
+#line 1480 "awkgram.y" /* yacc.c:1646  */
     {
                if ((yyvsp[0])->opcode == Op_match_rec) {
                        (yyvsp[0])->opcode = Op_nomatch;
@@ -3525,37 +3527,37 @@ regular_print:
                        }
                }
           }
-#line 3529 "awkgram.c" /* yacc.c:1646  */
+#line 3531 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 148:
-#line 1510 "awkgram.y" /* yacc.c:1646  */
+#line 1512 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[-1]); }
-#line 3535 "awkgram.c" /* yacc.c:1646  */
+#line 3537 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 149:
-#line 1512 "awkgram.y" /* yacc.c:1646  */
+#line 1514 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = snode((yyvsp[-1]), (yyvsp[-3]));
                if ((yyval) == NULL)
                        YYABORT;
          }
-#line 3545 "awkgram.c" /* yacc.c:1646  */
+#line 3547 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 150:
-#line 1518 "awkgram.y" /* yacc.c:1646  */
+#line 1520 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = snode((yyvsp[-1]), (yyvsp[-3]));
                if ((yyval) == NULL)
                        YYABORT;
          }
-#line 3555 "awkgram.c" /* yacc.c:1646  */
+#line 3557 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 151:
-#line 1524 "awkgram.y" /* yacc.c:1646  */
+#line 1526 "awkgram.y" /* yacc.c:1646  */
     {
                static bool warned = false;
 
@@ -3568,45 +3570,45 @@ regular_print:
                if ((yyval) == NULL)
                        YYABORT;
          }
-#line 3572 "awkgram.c" /* yacc.c:1646  */
+#line 3574 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 154:
-#line 1539 "awkgram.y" /* yacc.c:1646  */
+#line 1541 "awkgram.y" /* yacc.c:1646  */
     {
                (yyvsp[-1])->opcode = Op_preincrement;
                (yyval) = mk_assignment((yyvsp[0]), NULL, (yyvsp[-1]));
          }
-#line 3581 "awkgram.c" /* yacc.c:1646  */
+#line 3583 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 155:
-#line 1544 "awkgram.y" /* yacc.c:1646  */
+#line 1546 "awkgram.y" /* yacc.c:1646  */
     {
                (yyvsp[-1])->opcode = Op_predecrement;
                (yyval) = mk_assignment((yyvsp[0]), NULL, (yyvsp[-1]));
          }
-#line 3590 "awkgram.c" /* yacc.c:1646  */
+#line 3592 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 156:
-#line 1549 "awkgram.y" /* yacc.c:1646  */
+#line 1551 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = list_create((yyvsp[0]));
          }
-#line 3598 "awkgram.c" /* yacc.c:1646  */
+#line 3600 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 157:
-#line 1553 "awkgram.y" /* yacc.c:1646  */
+#line 1555 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = list_create((yyvsp[0]));
          }
-#line 3606 "awkgram.c" /* yacc.c:1646  */
+#line 3608 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 158:
-#line 1557 "awkgram.y" /* yacc.c:1646  */
+#line 1559 "awkgram.y" /* yacc.c:1646  */
     {
                if ((yyvsp[0])->lasti->opcode == Op_push_i
                        && ((yyvsp[0])->lasti->memory->flags & (STRCUR|STRING)) 
== 0
@@ -3621,11 +3623,11 @@ regular_print:
                        (yyval) = list_append((yyvsp[0]), (yyvsp[-1]));
                }
          }
-#line 3625 "awkgram.c" /* yacc.c:1646  */
+#line 3627 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 159:
-#line 1572 "awkgram.y" /* yacc.c:1646  */
+#line 1574 "awkgram.y" /* yacc.c:1646  */
     {
            /*
             * was: $$ = $2
@@ -3635,20 +3637,20 @@ regular_print:
                (yyvsp[-1])->memory = make_number(0.0);
                (yyval) = list_append((yyvsp[0]), (yyvsp[-1]));
          }
-#line 3639 "awkgram.c" /* yacc.c:1646  */
+#line 3641 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 160:
-#line 1585 "awkgram.y" /* yacc.c:1646  */
+#line 1587 "awkgram.y" /* yacc.c:1646  */
     {
                func_use((yyvsp[0])->lasti->func_name, FUNC_USE);
                (yyval) = (yyvsp[0]);
          }
-#line 3648 "awkgram.c" /* yacc.c:1646  */
+#line 3650 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 161:
-#line 1590 "awkgram.y" /* yacc.c:1646  */
+#line 1592 "awkgram.y" /* yacc.c:1646  */
     {
                /* indirect function call */
                INSTRUCTION *f, *t;
@@ -3681,11 +3683,11 @@ regular_print:
 
                (yyval) = list_prepend((yyvsp[0]), t);
          }
-#line 3685 "awkgram.c" /* yacc.c:1646  */
+#line 3687 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 162:
-#line 1626 "awkgram.y" /* yacc.c:1646  */
+#line 1628 "awkgram.y" /* yacc.c:1646  */
     {
                param_sanity((yyvsp[-1]));
                (yyvsp[-3])->opcode = Op_func_call;
@@ -3699,49 +3701,49 @@ regular_print:
                        (yyval) = list_append(t, (yyvsp[-3]));
                }
          }
-#line 3703 "awkgram.c" /* yacc.c:1646  */
+#line 3705 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 163:
-#line 1643 "awkgram.y" /* yacc.c:1646  */
+#line 1645 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 3709 "awkgram.c" /* yacc.c:1646  */
+#line 3711 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 164:
-#line 1645 "awkgram.y" /* yacc.c:1646  */
+#line 1647 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3715 "awkgram.c" /* yacc.c:1646  */
+#line 3717 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 165:
-#line 1650 "awkgram.y" /* yacc.c:1646  */
+#line 1652 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 3721 "awkgram.c" /* yacc.c:1646  */
+#line 3723 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 166:
-#line 1652 "awkgram.y" /* yacc.c:1646  */
+#line 1654 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[-1]); }
-#line 3727 "awkgram.c" /* yacc.c:1646  */
+#line 3729 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 167:
-#line 1657 "awkgram.y" /* yacc.c:1646  */
+#line 1659 "awkgram.y" /* yacc.c:1646  */
     {  (yyval) = (yyvsp[0]); }
-#line 3733 "awkgram.c" /* yacc.c:1646  */
+#line 3735 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 168:
-#line 1659 "awkgram.y" /* yacc.c:1646  */
+#line 1661 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = list_merge((yyvsp[-1]), (yyvsp[0]));
          }
-#line 3741 "awkgram.c" /* yacc.c:1646  */
+#line 3743 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 169:
-#line 1666 "awkgram.y" /* yacc.c:1646  */
+#line 1668 "awkgram.y" /* yacc.c:1646  */
     {
                INSTRUCTION *ip = (yyvsp[0])->lasti; 
                int count = ip->sub_count;      /* # of SUBSEP-seperated 
expressions */
@@ -3755,11 +3757,11 @@ regular_print:
                sub_counter++;  /* count # of dimensions */
                (yyval) = (yyvsp[0]);
          }
-#line 3759 "awkgram.c" /* yacc.c:1646  */
+#line 3761 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 170:
-#line 1683 "awkgram.y" /* yacc.c:1646  */
+#line 1685 "awkgram.y" /* yacc.c:1646  */
     {
                INSTRUCTION *t = (yyvsp[-1]);
                if ((yyvsp[-1]) == NULL) {
@@ -3773,31 +3775,31 @@ regular_print:
                        (yyvsp[0])->sub_count = count_expressions(&t, false);
                (yyval) = list_append(t, (yyvsp[0]));
          }
-#line 3777 "awkgram.c" /* yacc.c:1646  */
+#line 3779 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 171:
-#line 1700 "awkgram.y" /* yacc.c:1646  */
+#line 1702 "awkgram.y" /* yacc.c:1646  */
     {  (yyval) = (yyvsp[0]); }
-#line 3783 "awkgram.c" /* yacc.c:1646  */
+#line 3785 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 172:
-#line 1702 "awkgram.y" /* yacc.c:1646  */
+#line 1704 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = list_merge((yyvsp[-1]), (yyvsp[0]));
          }
-#line 3791 "awkgram.c" /* yacc.c:1646  */
+#line 3793 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 173:
-#line 1709 "awkgram.y" /* yacc.c:1646  */
+#line 1711 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[-1]); }
-#line 3797 "awkgram.c" /* yacc.c:1646  */
+#line 3799 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 174:
-#line 1714 "awkgram.y" /* yacc.c:1646  */
+#line 1716 "awkgram.y" /* yacc.c:1646  */
     {
                char *var_name = (yyvsp[0])->lextok;
 
@@ -3805,22 +3807,22 @@ regular_print:
                (yyvsp[0])->memory = variable((yyvsp[0])->source_line, 
var_name, Node_var_new);
                (yyval) = list_create((yyvsp[0]));
          }
-#line 3809 "awkgram.c" /* yacc.c:1646  */
+#line 3811 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 175:
-#line 1722 "awkgram.y" /* yacc.c:1646  */
+#line 1724 "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 3820 "awkgram.c" /* yacc.c:1646  */
+#line 3822 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 176:
-#line 1732 "awkgram.y" /* yacc.c:1646  */
+#line 1734 "awkgram.y" /* yacc.c:1646  */
     {
                INSTRUCTION *ip = (yyvsp[0])->nexti;
                if (ip->opcode == Op_push
@@ -3832,73 +3834,73 @@ regular_print:
                } else
                        (yyval) = (yyvsp[0]);
          }
-#line 3836 "awkgram.c" /* yacc.c:1646  */
+#line 3838 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 177:
-#line 1744 "awkgram.y" /* yacc.c:1646  */
+#line 1746 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = list_append((yyvsp[-1]), (yyvsp[-2]));
                if ((yyvsp[0]) != NULL)
                        mk_assignment((yyvsp[-1]), NULL, (yyvsp[0]));
          }
-#line 3846 "awkgram.c" /* yacc.c:1646  */
+#line 3848 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 178:
-#line 1753 "awkgram.y" /* yacc.c:1646  */
+#line 1755 "awkgram.y" /* yacc.c:1646  */
     {
                (yyvsp[0])->opcode = Op_postincrement;
          }
-#line 3854 "awkgram.c" /* yacc.c:1646  */
+#line 3856 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 179:
-#line 1757 "awkgram.y" /* yacc.c:1646  */
+#line 1759 "awkgram.y" /* yacc.c:1646  */
     {
                (yyvsp[0])->opcode = Op_postdecrement;
          }
-#line 3862 "awkgram.c" /* yacc.c:1646  */
+#line 3864 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 180:
-#line 1760 "awkgram.y" /* yacc.c:1646  */
+#line 1762 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 3868 "awkgram.c" /* yacc.c:1646  */
+#line 3870 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 182:
-#line 1768 "awkgram.y" /* yacc.c:1646  */
+#line 1770 "awkgram.y" /* yacc.c:1646  */
     { yyerrok; }
-#line 3874 "awkgram.c" /* yacc.c:1646  */
+#line 3876 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 183:
-#line 1772 "awkgram.y" /* yacc.c:1646  */
+#line 1774 "awkgram.y" /* yacc.c:1646  */
     { yyerrok; }
-#line 3880 "awkgram.c" /* yacc.c:1646  */
+#line 3882 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 186:
-#line 1781 "awkgram.y" /* yacc.c:1646  */
+#line 1783 "awkgram.y" /* yacc.c:1646  */
     { yyerrok; }
-#line 3886 "awkgram.c" /* yacc.c:1646  */
+#line 3888 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 187:
-#line 1785 "awkgram.y" /* yacc.c:1646  */
+#line 1787 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); yyerrok; }
-#line 3892 "awkgram.c" /* yacc.c:1646  */
+#line 3894 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 188:
-#line 1789 "awkgram.y" /* yacc.c:1646  */
+#line 1791 "awkgram.y" /* yacc.c:1646  */
     { yyerrok; }
-#line 3898 "awkgram.c" /* yacc.c:1646  */
+#line 3900 "awkgram.c" /* yacc.c:1646  */
     break;
 
 
-#line 3902 "awkgram.c" /* yacc.c:1646  */
+#line 3904 "awkgram.c" /* yacc.c:1646  */
       default: break;
     }
   /* User semantic actions sometimes alter yychar, and that requires
@@ -4126,7 +4128,7 @@ yyreturn:
 #endif
   return yyresult;
 }
-#line 1791 "awkgram.y" /* yacc.c:1906  */
+#line 1793 "awkgram.y" /* yacc.c:1906  */
 
 
 struct token {
@@ -4683,6 +4685,8 @@ do_add_srcfile(enum srctype stype, char *src, char *path, 
SRCFILE *thisfile)
        s->prev = thisfile->prev;
        thisfile->prev->next = s;
        thisfile->prev = s;
+       if (stype == SRC_EXTLIB)
+               extensions_used = true;
        return s;
 }
 
@@ -6811,6 +6815,7 @@ static bool
 is_deferred_variable(const char *name)
 {
        struct deferred_variable *dv;
+
        for (dv = deferred_variables; dv != NULL; dv = dv->next)
                if (strcmp(name, dv->name) == 0)
                        return true;
@@ -6852,18 +6857,17 @@ variable(int location, char *name, NODETYPE type)
        return r;
 }
 
-/* process_deferred --- if the program uses SYMTAB, load deferred variables */
+/* process_deferred --- if the program uses SYMTAB or extensions, load 
deferred variables */
 
 static void
 process_deferred()
 {
        struct deferred_variable *dv;
 
-       if (! symtab_used)
-               return;
-
-       for (dv = deferred_variables; dv != NULL; dv = dv->next) {
-               (void) dv->load_func();
+       if (symtab_used || extensions_used) {
+               for (dv = deferred_variables; dv != NULL; dv = dv->next) {
+                       (void) dv->load_func();
+               }
        }
 }
 
diff --git a/awkgram.y b/awkgram.y
index 267cf07..b43e305 100644
--- a/awkgram.y
+++ b/awkgram.y
@@ -120,6 +120,7 @@ static int lasttok = 0;
 static bool eof_warned = false;        /* GLOBAL: want warning for each file */
 static int break_allowed;      /* kludge for break */
 static int continue_allowed;   /* kludge for continue */
+static bool extensions_used = false;   /* program uses extensions */
 
 #define END_FILE       -1000
 #define END_SRC        -2000
@@ -272,6 +273,7 @@ source
 library
        : FILENAME
          {
+               extensions_used = true;
                if (load_library($1) < 0)
                        YYABORT;
                efree($1->lextok);
@@ -2344,6 +2346,8 @@ do_add_srcfile(enum srctype stype, char *src, char *path, 
SRCFILE *thisfile)
        s->prev = thisfile->prev;
        thisfile->prev->next = s;
        thisfile->prev = s;
+       if (stype == SRC_EXTLIB)
+               extensions_used = true;
        return s;
 }
 
@@ -4472,6 +4476,7 @@ static bool
 is_deferred_variable(const char *name)
 {
        struct deferred_variable *dv;
+
        for (dv = deferred_variables; dv != NULL; dv = dv->next)
                if (strcmp(name, dv->name) == 0)
                        return true;
@@ -4513,18 +4518,17 @@ variable(int location, char *name, NODETYPE type)
        return r;
 }
 
-/* process_deferred --- if the program uses SYMTAB, load deferred variables */
+/* process_deferred --- if the program uses SYMTAB or extensions, load 
deferred variables */
 
 static void
 process_deferred()
 {
        struct deferred_variable *dv;
 
-       if (! symtab_used)
-               return;
-
-       for (dv = deferred_variables; dv != NULL; dv = dv->next) {
-               (void) dv->load_func();
+       if (symtab_used || extensions_used) {
+               for (dv = deferred_variables; dv != NULL; dv = dv->next) {
+                       (void) dv->load_func();
+               }
        }
 }
 
diff --git a/extension/ChangeLog b/extension/ChangeLog
index 41c8a0e..582a344 100644
--- a/extension/ChangeLog
+++ b/extension/ChangeLog
@@ -1,3 +1,7 @@
+2015-01-07         Arnold D. Robbins     <address@hidden>
+
+       * testext.c (var_test): Adjust for PROCINFO now being there.
+
 2014-11-23         Arnold D. Robbins     <address@hidden>
 
        * inplace.c (do_inplace_begin): Jump through hoops to silence
diff --git a/extension/testext.c b/extension/testext.c
index 7462265..4a1e703 100644
--- a/extension/testext.c
+++ b/extension/testext.c
@@ -3,7 +3,7 @@
  */
 
 /*
- * Copyright (C) 2012, 2013, 2014
+ * Copyright (C) 2012, 2013, 2014, 2015
  * the Free Software Foundation, Inc.
  * 
  * This file is part of GAWK, the GNU implementation of the
@@ -302,11 +302,11 @@ var_test(int nargs, awk_value_t *result)
                goto out;
        }
 
-       /* look up PROCINFO - should fail */
+       /* look up PROCINFO - should succeed fail */
        if (sym_lookup("PROCINFO", AWK_ARRAY, & value))
-               printf("var_test: sym_lookup of PROCINFO failed - got a 
value!\n");
+               printf("var_test: sym_lookup of PROCINFO passed - got a 
value!\n");
        else
-               printf("var_test: sym_lookup of PROCINFO passed - did not get a 
value\n");
+               printf("var_test: sym_lookup of PROCINFO failed - did not get a 
value\n");
 
        /* look up a reserved variable - should pass */
        if (sym_lookup("ARGC", AWK_NUMBER, & value))
diff --git a/test/ChangeLog b/test/ChangeLog
index 8d6086b..2cc8851 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -8,6 +8,10 @@
        * Makefile.am (printfbad4): New test.
        * printfbad4.awk, printfbad4.ok: New files.
 
+       Unrelated:
+
+       * testext.ok: Adjust for code changes.
+
 2014-12-24         Arnold D. Robbins     <address@hidden>
 
        * Makefile.am (badbuild): New test.
diff --git a/test/testext.ok b/test/testext.ok
index 9b36bf7..a828ecb 100644
--- a/test/testext.ok
+++ b/test/testext.ok
@@ -15,7 +15,7 @@ try_modify_environ: set_array_element of ENVIRON failed
 try_modify_environ: marking element "testext" for deletion
 try_del_environ() could not delete element - pass
 try_del_environ() could not add an element - pass
-var_test: sym_lookup of PROCINFO passed - did not get a value
+var_test: sym_lookup of PROCINFO passed - got a value!
 var_test: sym_lookup of ARGC passed - got a value!
 var_test: sym_update of ARGC failed - correctly
 var_test: sym_update("testvar") succeeded

http://git.sv.gnu.org/cgit/gawk.git/commit/?id=f70399532bd105c5f42ca040846aa537a8fa27bc

commit f70399532bd105c5f42ca040846aa537a8fa27bc
Author: Arnold D. Robbins <address@hidden>
Date:   Wed Jan 7 22:12:50 2015 +0200

    Fix count$ in printf for dynamic width/precision.

diff --git a/ChangeLog b/ChangeLog
index 231288a..e3a73a8 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -3,6 +3,8 @@
        * configure.ac: Update debug flags if developing.
        * awkgram.y (yylex): Regex parsing bug fix for bracket expressions.
        Thanks to Mike Brennan for the report.
+       * builtin.c (format_tree): Catch non-use of count$ for dynamic
+       field width or precision.
 
 2014-12-10         Arnold D. Robbins     <address@hidden>
 
diff --git a/builtin.c b/builtin.c
index 53210c4..9b85de2 100644
--- a/builtin.c
+++ b/builtin.c
@@ -3,7 +3,7 @@
  */
 
 /* 
- * Copyright (C) 1986, 1988, 1989, 1991-2014 the Free Software Foundation, Inc.
+ * Copyright (C) 1986, 1988, 1989, 1991-2015 the Free Software Foundation, Inc.
  * 
  * This file is part of GAWK, the GNU implementation of the
  * AWK Programming Language.
@@ -904,7 +904,10 @@ check_pos:
                case '*':
                        if (cur == NULL)
                                break;
-                       if (! do_traditional && isdigit((unsigned char) *s1)) {
+                       if (! do_traditional && used_dollar && ! 
isdigit((unsigned char) *s1)) {
+                               fatal(_("fatal: must use `count$' on all 
formats or none"));
+                               break;  /* silence warnings */
+                       } else if (! do_traditional && isdigit((unsigned char) 
*s1)) {
                                int val = 0;
 
                                for (; n0 > 0 && *s1 && isdigit((unsigned char) 
*s1); s1++, n0--) {
diff --git a/test/ChangeLog b/test/ChangeLog
index 95134f6..8d6086b 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -3,6 +3,11 @@
        * Makefile.am (regexpbrack): New test.
        * regexpbrack.awk, regexpbrack.in, regexpbrack.ok: New files.
 
+       Unrelated:
+
+       * Makefile.am (printfbad4): New test.
+       * printfbad4.awk, printfbad4.ok: New files.
+
 2014-12-24         Arnold D. Robbins     <address@hidden>
 
        * Makefile.am (badbuild): New test.
diff --git a/test/Makefile.am b/test/Makefile.am
index df0da10..12bde88 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -692,6 +692,8 @@ EXTRA_DIST = \
        printfbad2.ok \
        printfbad3.awk \
        printfbad3.ok \
+       printfbad4.awk \
+       printfbad4.ok \
        printfloat.awk \
        printhuge.awk \
        printhuge.ok \
@@ -1029,7 +1031,7 @@ GAWK_EXT_TESTS = \
        lint lintold lintwarn \
        manyfiles match1 match2 match3 mbstr1 \
        nastyparm next nondec nondec2 \
-       patsplit posix printfbad1 printfbad2 printfbad3 printhuge procinfs \
+       patsplit posix printfbad1 printfbad2 printfbad3 printfbad4 printhuge 
procinfs \
        profile1 profile2 profile3 profile4 profile5 profile6 profile7 pty1 \
        rebuf regnul1 regnul2 regx8bit reginttrad reint reint2 rsgetline 
rsglstdin rsstart1 \
        rsstart2 rsstart3 rstest6 shadow sortfor sortu split_after_fpat \
diff --git a/test/Makefile.in b/test/Makefile.in
index 5bd39f4..55650e1 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -939,6 +939,8 @@ EXTRA_DIST = \
        printfbad2.ok \
        printfbad3.awk \
        printfbad3.ok \
+       printfbad4.awk \
+       printfbad4.ok \
        printfloat.awk \
        printhuge.awk \
        printhuge.ok \
@@ -1275,7 +1277,7 @@ GAWK_EXT_TESTS = \
        lint lintold lintwarn \
        manyfiles match1 match2 match3 mbstr1 \
        nastyparm next nondec nondec2 \
-       patsplit posix printfbad1 printfbad2 printfbad3 printhuge procinfs \
+       patsplit posix printfbad1 printfbad2 printfbad3 printfbad4 printhuge 
procinfs \
        profile1 profile2 profile3 profile4 profile5 profile6 profile7 pty1 \
        rebuf regnul1 regnul2 regx8bit reginttrad reint reint2 rsgetline 
rsglstdin rsstart1 \
        rsstart2 rsstart3 rstest6 shadow sortfor sortu split_after_fpat \
@@ -3590,6 +3592,11 @@ printfbad3:
        @AWKPATH="$(srcdir)" $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
        @-$(CMP) "$(srcdir)"/address@hidden _$@ && rm -f _$@
 
+printfbad4:
+       @echo $@
+       @AWKPATH="$(srcdir)" $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
+       @-$(CMP) "$(srcdir)"/address@hidden _$@ && rm -f _$@
+
 procinfs:
        @echo $@
        @AWKPATH="$(srcdir)" $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
diff --git a/test/Maketests b/test/Maketests
index 4104f14..5c4c40f 100644
--- a/test/Maketests
+++ b/test/Maketests
@@ -1162,6 +1162,11 @@ printfbad3:
        @AWKPATH="$(srcdir)" $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
        @-$(CMP) "$(srcdir)"/address@hidden _$@ && rm -f _$@
 
+printfbad4:
+       @echo $@
+       @AWKPATH="$(srcdir)" $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
+       @-$(CMP) "$(srcdir)"/address@hidden _$@ && rm -f _$@
+
 procinfs:
        @echo $@
        @AWKPATH="$(srcdir)" $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
diff --git a/test/printfbad4.awk b/test/printfbad4.awk
new file mode 100644
index 0000000..dd9220a
--- /dev/null
+++ b/test/printfbad4.awk
@@ -0,0 +1,5 @@
+BEGIN {
+       for (i = 1; i <= 10; i++) {
+               printf "%03$*d %2$d \n", 4, 5, i
+       }
+}
diff --git a/test/printfbad4.ok b/test/printfbad4.ok
new file mode 100644
index 0000000..71eed3d
--- /dev/null
+++ b/test/printfbad4.ok
@@ -0,0 +1,2 @@
+gawk: printfbad4.awk:3: fatal: fatal: must use `count$' on all formats or none
+EXIT CODE: 2

http://git.sv.gnu.org/cgit/gawk.git/commit/?id=385f22a32c3794615d713e519ae290eb09b2c4d2

commit 385f22a32c3794615d713e519ae290eb09b2c4d2
Author: Arnold D. Robbins <address@hidden>
Date:   Wed Jan 7 22:07:24 2015 +0200

    Bug fix in regexp parsing.

diff --git a/ChangeLog b/ChangeLog
index a4afb19..231288a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,8 @@
 2015-01-07         Arnold D. Robbins     <address@hidden>
 
        * configure.ac: Update debug flags if developing.
+       * awkgram.y (yylex): Regex parsing bug fix for bracket expressions.
+       Thanks to Mike Brennan for the report.
 
 2014-12-10         Arnold D. Robbins     <address@hidden>
 
diff --git a/awkgram.c b/awkgram.c
index 431954d..84140ee 100644
--- a/awkgram.c
+++ b/awkgram.c
@@ -5374,10 +5374,8 @@ yylex(void)
                                pushback();
                                break;
                        case ']':
-                               if (tokstart[0] == '['
-                                   && (tok == tokstart + 1
-                                       || (tok == tokstart + 2
-                                           && tokstart[1] == '^')))
+                               if (tok[-1] == '['
+                                   || (tok[-2] == '[' && tok[-1] == '^'))
                                        /* do nothing */;
                                else
                                        in_brack--;
diff --git a/awkgram.y b/awkgram.y
index 9cf88da..267cf07 100644
--- a/awkgram.y
+++ b/awkgram.y
@@ -3,7 +3,7 @@
  */
 
 /* 
- * Copyright (C) 1986, 1988, 1989, 1991-2014 the Free Software Foundation, Inc.
+ * Copyright (C) 1986, 1988, 1989, 1991-2015 the Free Software Foundation, Inc.
  * 
  * This file is part of GAWK, the GNU implementation of the
  * AWK Programming Language.
@@ -3035,10 +3035,8 @@ yylex(void)
                                pushback();
                                break;
                        case ']':
-                               if (tokstart[0] == '['
-                                   && (tok == tokstart + 1
-                                       || (tok == tokstart + 2
-                                           && tokstart[1] == '^')))
+                               if (tok[-1] == '['
+                                   || (tok[-2] == '[' && tok[-1] == '^'))
                                        /* do nothing */;
                                else
                                        in_brack--;
diff --git a/test/ChangeLog b/test/ChangeLog
index 8d39af7..95134f6 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -1,3 +1,8 @@
+2015-01-07         Arnold D. Robbins     <address@hidden>
+
+       * Makefile.am (regexpbrack): New test.
+       * regexpbrack.awk, regexpbrack.in, regexpbrack.ok: New files.
+
 2014-12-24         Arnold D. Robbins     <address@hidden>
 
        * Makefile.am (badbuild): New test.
diff --git a/test/Makefile.am b/test/Makefile.am
index b93f851..df0da10 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -1,7 +1,7 @@
 #
 # test/Makefile.am --- automake input file for gawk
 #
-# Copyright (C) 1988-2014 the Free Software Foundation, Inc.
+# Copyright (C) 1988-2015 the Free Software Foundation, Inc.
 #
 # This file is part of GAWK, the GNU implementation of the
 # AWK Programming Language.
@@ -742,6 +742,9 @@ EXTRA_DIST = \
        regeq.awk \
        regeq.in \
        regeq.ok \
+       regexpbrack.awk \
+       regexpbrack.in \
+       regexpbrack.ok \
        regexprange.awk \
        regexprange.ok \
        reginttrad.awk \
@@ -999,7 +1002,7 @@ BASIC_TESTS = \
        paramdup paramres paramtyp paramuninitglobal parse1 parsefld parseme \
        pcntplus posix2008sub prdupval prec printf0 printf1 prmarscl prmreuse \
        prt1eval prtoeval \
-       rand range1 rebt8b1 redfilnm regeq regexprange regrange reindops \
+       rand range1 rebt8b1 redfilnm regeq regexpbrack regexprange regrange 
reindops \
        reparse resplit rri1 rs rsnul1nl rsnulbig rsnulbig2 rstest1 rstest2 \
        rstest3 rstest4 rstest5 rswhite \
        scalar sclforin sclifin sortempty sortglos splitargv splitarr splitdef \
diff --git a/test/Makefile.in b/test/Makefile.in
index 7a281ec..5bd39f4 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -17,7 +17,7 @@
 #
 # test/Makefile.am --- automake input file for gawk
 #
-# Copyright (C) 1988-2014 the Free Software Foundation, Inc.
+# Copyright (C) 1988-2015 the Free Software Foundation, Inc.
 #
 # This file is part of GAWK, the GNU implementation of the
 # AWK Programming Language.
@@ -989,6 +989,9 @@ EXTRA_DIST = \
        regeq.awk \
        regeq.in \
        regeq.ok \
+       regexpbrack.awk \
+       regexpbrack.in \
+       regexpbrack.ok \
        regexprange.awk \
        regexprange.ok \
        reginttrad.awk \
@@ -1245,7 +1248,7 @@ BASIC_TESTS = \
        paramdup paramres paramtyp paramuninitglobal parse1 parsefld parseme \
        pcntplus posix2008sub prdupval prec printf0 printf1 prmarscl prmreuse \
        prt1eval prtoeval \
-       rand range1 rebt8b1 redfilnm regeq regexprange regrange reindops \
+       rand range1 rebt8b1 redfilnm regeq regexpbrack regexprange regrange 
reindops \
        reparse resplit rri1 rs rsnul1nl rsnulbig rsnulbig2 rstest1 rstest2 \
        rstest3 rstest4 rstest5 rswhite \
        scalar sclforin sclifin sortempty sortglos splitargv splitarr splitdef \
@@ -3122,6 +3125,11 @@ regeq:
        @AWKPATH="$(srcdir)" $(AWK) -f address@hidden  < 
"$(srcdir)"/address@hidden >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
        @-$(CMP) "$(srcdir)"/address@hidden _$@ && rm -f _$@
 
+regexpbrack:
+       @echo $@
+       @AWKPATH="$(srcdir)" $(AWK) -f address@hidden  < 
"$(srcdir)"/address@hidden >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+       @-$(CMP) "$(srcdir)"/address@hidden _$@ && rm -f _$@
+
 regexprange:
        @echo $@
        @AWKPATH="$(srcdir)" $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
diff --git a/test/Maketests b/test/Maketests
index e1b92bf..4104f14 100644
--- a/test/Maketests
+++ b/test/Maketests
@@ -697,6 +697,11 @@ regeq:
        @AWKPATH="$(srcdir)" $(AWK) -f address@hidden  < 
"$(srcdir)"/address@hidden >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
        @-$(CMP) "$(srcdir)"/address@hidden _$@ && rm -f _$@
 
+regexpbrack:
+       @echo $@
+       @AWKPATH="$(srcdir)" $(AWK) -f address@hidden  < 
"$(srcdir)"/address@hidden >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+       @-$(CMP) "$(srcdir)"/address@hidden _$@ && rm -f _$@
+
 regexprange:
        @echo $@
        @AWKPATH="$(srcdir)" $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
diff --git a/test/regexpbrack.awk b/test/regexpbrack.awk
new file mode 100644
index 0000000..136cd19
--- /dev/null
+++ b/test/regexpbrack.awk
@@ -0,0 +1,2 @@
+/[]+()0-9.,$%/'"-]*$/
+/^[]+()0-9.,$%/'"-]*$/
diff --git a/test/regexpbrack.in b/test/regexpbrack.in
new file mode 100644
index 0000000..e69de29
diff --git a/test/regexpbrack.ok b/test/regexpbrack.ok
new file mode 100644
index 0000000..e69de29

http://git.sv.gnu.org/cgit/gawk.git/commit/?id=9fc264e33c0fcc77ed18860a47bea824d75daebd

commit 9fc264e33c0fcc77ed18860a47bea824d75daebd
Author: Arnold D. Robbins <address@hidden>
Date:   Wed Jan 7 22:01:34 2015 +0200

    Update debug flags for compiling when developing.

diff --git a/ChangeLog b/ChangeLog
index fdb550a..a4afb19 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2015-01-07         Arnold D. Robbins     <address@hidden>
+
+       * configure.ac: Update debug flags if developing.
+
 2014-12-10         Arnold D. Robbins     <address@hidden>
 
        * dfa.c: Sync with GNU grep.
diff --git a/configure b/configure
index 77a80df..8e2cc7c 100755
--- a/configure
+++ b/configure
@@ -5845,7 +5845,7 @@ then
        # enable debugging using macros also
        if test "$GCC" = yes
        then
-               CFLAGS="$CFLAGS -Wall -fno-builtin -g3 -gdwarf-2"
+               CFLAGS="$CFLAGS -Wall -fno-builtin -g3"
        fi
        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
diff --git a/configure.ac b/configure.ac
index 5667b7c..8d03ca1 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,7 +1,7 @@
 dnl
 dnl configure.ac --- autoconf input file for gawk
 dnl
-dnl Copyright (C) 1995-2014 the Free Software Foundation, Inc.
+dnl Copyright (C) 1995-2015 the Free Software Foundation, Inc.
 dnl
 dnl This file is part of GAWK, the GNU implementation of the
 dnl AWK Programming Language.
@@ -97,7 +97,7 @@ then
        # enable debugging using macros also
        if test "$GCC" = yes
        then
-               CFLAGS="$CFLAGS -Wall -fno-builtin -g3 -gdwarf-2"
+               CFLAGS="$CFLAGS -Wall -fno-builtin -g3"
        fi
        AC_MSG_RESULT([yes])
 else

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                             |   18 +
 awkgram.c                             |  740 +++++++++++++++++----------------
 awkgram.y                             |   24 +-
 builtin.c                             |    7 +-
 configure                             |    2 +-
 configure.ac                          |    4 +-
 extension/ChangeLog                   |    4 +
 extension/testext.c                   |    8 +-
 test/ChangeLog                        |   14 +
 test/Makefile.am                      |   11 +-
 test/Makefile.in                      |   21 +-
 test/Maketests                        |   10 +
 test/printfbad4.awk                   |    5 +
 test/printfbad4.ok                    |    2 +
 test/regexpbrack.awk                  |    2 +
 test/{arrayprm2.ok => regexpbrack.in} |    0
 test/{arrayprm2.ok => regexpbrack.ok} |    0
 test/testext.ok                       |    2 +-
 18 files changed, 478 insertions(+), 396 deletions(-)
 create mode 100644 test/printfbad4.awk
 create mode 100644 test/printfbad4.ok
 create mode 100644 test/regexpbrack.awk
 copy test/{arrayprm2.ok => regexpbrack.in} (100%)
 copy test/{arrayprm2.ok => regexpbrack.ok} (100%)


hooks/post-receive
-- 
gawk



reply via email to

[Prev in Thread] Current Thread [Next in Thread]