gawk-diffs
[Top][All Lists]
Advanced

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

[gawk-diffs] [SCM] gawk branch, select, updated. gawk-4.1.0-1091-g1edb5c


From: Andrew J. Schorr
Subject: [gawk-diffs] [SCM] gawk branch, select, updated. gawk-4.1.0-1091-g1edb5cb
Date: Mon, 19 Jan 2015 20:04:40 +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, select has been updated
       via  1edb5cb33d55a4f866c799d41680088b927f7846 (commit)
       via  f77c13a546af58cb8cdb593f49bbfa844b10dd7e (commit)
       via  d680707683794b92f2fc69e71dcb5b2a154598be (commit)
       via  a07103b076a9a88d89bf063396a74f2272749cf4 (commit)
       via  f25f9c52b1ab284ac1055b4f8321a2da33e81fcb (commit)
       via  85699a5cba88f4ee910e2c3ef42b5cc165102b51 (commit)
       via  28f563a6f54c8ea9c63537356966508c4685b538 (commit)
       via  a59a81a68ca26293f8e3df25da2cfe20e61d7c85 (commit)
       via  f18e168ff20217143bd922f158a1c56058795e89 (commit)
       via  c6cc60329c5bfc6c181cc45b09f30ac8a8a20b49 (commit)
       via  16d6377af8d1683a29b9dc7d7ab3e8d4bc1ebd48 (commit)
       via  976be25f6d3ea05f658a43abee336fe7e3bd419d (commit)
       via  0e829ea9a5062cac730f5a8368ab2062c1ef67fd (commit)
       via  2ff844d50c0ecbc4dc660cf7e8989476f56fb3e7 (commit)
       via  b1f63ac08d7da89ac7e8af4df5ca835527fc5b24 (commit)
       via  f70399532bd105c5f42ca040846aa537a8fa27bc (commit)
       via  385f22a32c3794615d713e519ae290eb09b2c4d2 (commit)
       via  9fc264e33c0fcc77ed18860a47bea824d75daebd (commit)
      from  2d3f4ffebcb451da84ceb8a4be58bbb23946ee6e (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=1edb5cb33d55a4f866c799d41680088b927f7846

commit 1edb5cb33d55a4f866c799d41680088b927f7846
Merge: 2d3f4ff f77c13a
Author: Andrew J. Schorr <address@hidden>
Date:   Mon Jan 19 15:04:21 2015 -0500

    Merge branch 'master' into select

diff --cc ChangeLog
index 0498088,a8079e0..5c539e1
--- a/ChangeLog
+++ b/ChangeLog
@@@ -1,72 -1,49 +1,118 @@@
+ 2015-01-19         Arnold D. Robbins     <address@hidden>
+ 
+       * awkgram.c: Update to bison 3.0.3.
+       * command.c: Ditto.
+       * NEWS: Note same.
+ 
+ 2015-01-16         Stephen Davies        <address@hidden>
+ 
+       * awkgram.y (rule): Set first_rule to false. Catches more cases
+       for gathering comments. Thanks to Hermann Peifer for the test case.
+ 
+ 2015-01-15         Arnold D. Robbins     <address@hidden>
+ 
+       * dfa.h, dfa.c: Sync with grep. Mainly copyright updates.
+       * getopt.c, getopt.h, getopt1.c getopt_int.h: Sync with GLIBC.
+       Mainly copyright updates, one minor code fix.
+ 
+ 2015-01-14         Arnold D. Robbins     <address@hidden>
+ 
+       Remove deferred variables.
+ 
+       * awk.h (register_deferred_variable): Remove declaration.
+       * awkgram.y (is_deferred_variable, process_deferred,
+       symtab_used, extensions_used, deferred_variables,
+       process_deferred): Remove declarations, bodies, and uses.
+       * builtin.c (do_length): Update comment.
+       * main.c (init_vars): Just call load_procinfo() and `load_environ()'.
+ 
 +2015-01-08         Andrew J. Schorr     <address@hidden>
 +
 +      Revert changes to API deferred variable creation -- these variables
 +      should be created when lookup is called, not when update is called.
 +      * awk.h (variable_create): Remove function declaration.
 +      * awkgram.y (variable_create): Remove function.
 +      (variable): Restore variable_create functionality inline.
 +      * gawkapi.c (api_sym_update): Revert to using install_symbol, since the
 +      deferred variable check should be done when lookup is called, not here.
 +
 +2015-01-07         Andrew J. Schorr     <address@hidden>
 +
 +      * gawkapi.c (api_set_array_element): Remove stray call to
 +      make_aname.  I cannot see what purpose this served.  Maybe I am
 +      missing something.
 +
+ 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.
+       * 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.
+ 
 +2015-01-06         Andrew J. Schorr     <address@hidden>
 +
 +      * gawkapi.c (api_sym_update): If copying a subarray, must update
 +      the parent_array pointer.  Also, call the astore hook if non-NULL.
 +      (api_set_array_element): Call the astore hook if non-NULL.
 +
 +2015-01-06         Andrew J. Schorr     <address@hidden>
 +
 +      * awk.h (variable_create): Now takes a 3rd argument to tell caller
 +      whether this is a deferred variable.
 +      * awkgram.y (variable_create): Return indicator of whether this is
 +      a deferred variable in a newly added 3rd arg.
 +      (variable): Pass 3rd arg to variable_create.
 +      * gawkapi.c (api_sym_update): If we triggered the creation of a deferred
 +      variable, we must merge the extension's array elements into the deffered
 +      array, not the other way around.  The ENVIRON array has special funcs
 +      to call setenv and unsetenv.
 +
 +2015-01-06         Andrew J. Schorr     <address@hidden>
 +
 +      * awk.h (variable_create): Declare new function.
 +      * awkgram.y (variable_create): New function to create a variable
 +      taking the deferred variable list into consideration.
 +      (variable): Call new function variable_create if the variable is
 +      not found.
 +      * gawkapi.c (api_sym_update): If an array is being created, then
 +      call new function variable_create instead of install_symbol.  If this
 +      is the first reference to a deferred variable, than the new array
 +      may contain elements that must be merged into the array provided by
 +      the extension.
 +
 +2015-01-05         Andrew J. Schorr     <address@hidden>
 +
 +      * io.c (wait_any): If the `interesting' argument is non-zero, then we
 +      must not return until that child process has exited, since the caller
 +      gawk_pclose depends on our returning its exit status.  So in that case,
 +      do not pass WNOHANG to waitpid.
 +
 +2015-01-04         Andrew J. Schorr     <address@hidden>
 +
 +      * gawkapi.h: Fix another comment typo.
 +
 +2015-01-04         Andrew J. Schorr     <address@hidden>
 +
 +      * gawkapi.h: Fix typo in comment.
 +
 +2015-01-02         Andrew J. Schorr     <address@hidden>
 +
 +      * gawkapi.h (gawk_api): Modify api_get_file to remove the typelen
 +      argument.
 +      (get_file): Remove typelen argument from the macro.
 +      * gawkapi.c (api_get_file): Remove typelen argument.
 +
  2014-12-24         Arnold D. Robbins     <address@hidden>
  
        * profile.c (pprint): Be sure to set ip2 in all paths
diff --cc awkgram.c
index adb31d9,6cc7868..770c96d
--- a/awkgram.c
+++ b/awkgram.c
@@@ -206,7 -201,7 +202,7 @@@ extern double fmod(double x, double y)
  
  #define YYSTYPE INSTRUCTION *
  
- #line 210 "awkgram.c" /* yacc.c:339  */
 -#line 205 "awkgram.c" /* yacc.c:339  */
++#line 206 "awkgram.c" /* yacc.c:339  */
  
  # ifndef YY_NULLPTR
  #  if defined __cplusplus && 201103L <= __cplusplus
@@@ -360,7 -355,7 +356,7 @@@ int yyparse (void)
  
  /* Copy the second part of user declarations.  */
  
- #line 364 "awkgram.c" /* yacc.c:358  */
 -#line 359 "awkgram.c" /* yacc.c:358  */
++#line 360 "awkgram.c" /* yacc.c:358  */
  
  #ifdef short
  # undef short
@@@ -662,25 -657,25 +658,25 @@@ static const yytype_uint8 yytranslate[
    /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
  static const yytype_uint16 yyrline[] =
  {
-        0,   209,   209,   211,   216,   217,   223,   235,   239,   250,
-      256,   261,   269,   277,   279,   284,   292,   294,   300,   308,
-      318,   348,   362,   376,   384,   395,   407,   409,   411,   417,
-      422,   423,   427,   462,   461,   495,   497,   502,   508,   536,
-      541,   542,   546,   548,   550,   557,   647,   689,   731,   844,
-      851,   858,   868,   877,   886,   895,   906,   922,   921,   945,
-      957,   957,  1055,  1055,  1088,  1118,  1124,  1125,  1131,  1132,
-     1139,  1144,  1156,  1170,  1172,  1180,  1185,  1187,  1195,  1197,
-     1206,  1207,  1215,  1220,  1220,  1231,  1235,  1243,  1244,  1247,
-     1249,  1254,  1255,  1264,  1265,  1270,  1275,  1281,  1283,  1285,
-     1292,  1293,  1299,  1300,  1305,  1307,  1312,  1314,  1322,  1327,
-     1336,  1343,  1345,  1347,  1363,  1373,  1380,  1382,  1387,  1389,
-     1391,  1399,  1401,  1406,  1408,  1413,  1415,  1417,  1467,  1469,
-     1471,  1473,  1475,  1477,  1479,  1481,  1495,  1500,  1505,  1530,
-     1536,  1538,  1540,  1542,  1544,  1546,  1551,  1555,  1587,  1589,
-     1595,  1601,  1614,  1615,  1616,  1621,  1626,  1630,  1634,  1649,
-     1662,  1667,  1703,  1721,  1722,  1728,  1729,  1734,  1736,  1743,
-     1760,  1777,  1779,  1786,  1791,  1799,  1809,  1821,  1830,  1834,
-     1838,  1842,  1846,  1850,  1853,  1855,  1859,  1863,  1867
 -       0,   204,   204,   206,   211,   212,   216,   228,   233,   244,
 -     250,   255,   263,   271,   273,   278,   286,   288,   294,   302,
 -     312,   342,   356,   370,   378,   389,   401,   403,   405,   411,
 -     416,   417,   421,   456,   455,   489,   491,   496,   502,   530,
 -     535,   536,   540,   542,   544,   551,   641,   683,   725,   838,
 -     845,   852,   862,   871,   880,   889,   900,   916,   915,   939,
 -     951,   951,  1049,  1049,  1082,  1112,  1118,  1119,  1125,  1126,
 -    1133,  1138,  1150,  1164,  1166,  1174,  1179,  1181,  1189,  1191,
 -    1200,  1201,  1209,  1214,  1214,  1225,  1229,  1237,  1238,  1241,
 -    1243,  1248,  1249,  1258,  1259,  1264,  1269,  1275,  1277,  1279,
 -    1286,  1287,  1293,  1294,  1299,  1301,  1306,  1308,  1316,  1321,
 -    1330,  1337,  1339,  1341,  1357,  1367,  1374,  1376,  1381,  1383,
 -    1385,  1393,  1395,  1400,  1402,  1407,  1409,  1411,  1461,  1463,
 -    1465,  1467,  1469,  1471,  1473,  1475,  1489,  1494,  1499,  1524,
 -    1530,  1532,  1534,  1536,  1538,  1540,  1545,  1549,  1581,  1583,
 -    1589,  1595,  1608,  1609,  1610,  1615,  1620,  1624,  1628,  1643,
 -    1656,  1661,  1697,  1715,  1716,  1722,  1723,  1728,  1730,  1737,
 -    1754,  1771,  1773,  1780,  1785,  1793,  1803,  1815,  1824,  1828,
 -    1832,  1836,  1840,  1844,  1847,  1849,  1853,  1857,  1861
++       0,   205,   205,   207,   212,   213,   217,   229,   234,   245,
++     251,   256,   264,   272,   274,   279,   287,   289,   295,   303,
++     313,   343,   357,   371,   379,   390,   402,   404,   406,   412,
++     417,   418,   422,   457,   456,   490,   492,   497,   503,   531,
++     536,   537,   541,   543,   545,   552,   642,   684,   726,   839,
++     846,   853,   863,   872,   881,   890,   901,   917,   916,   940,
++     952,   952,  1050,  1050,  1083,  1113,  1119,  1120,  1126,  1127,
++    1134,  1139,  1151,  1165,  1167,  1175,  1180,  1182,  1190,  1192,
++    1201,  1202,  1210,  1215,  1215,  1226,  1230,  1238,  1239,  1242,
++    1244,  1249,  1250,  1259,  1260,  1265,  1270,  1276,  1278,  1280,
++    1287,  1288,  1294,  1295,  1300,  1302,  1307,  1309,  1317,  1322,
++    1331,  1338,  1340,  1342,  1358,  1368,  1375,  1377,  1382,  1384,
++    1386,  1394,  1396,  1401,  1403,  1408,  1410,  1412,  1462,  1464,
++    1466,  1468,  1470,  1472,  1474,  1476,  1490,  1495,  1500,  1525,
++    1531,  1533,  1535,  1537,  1539,  1541,  1546,  1550,  1582,  1584,
++    1590,  1596,  1609,  1610,  1611,  1616,  1621,  1625,  1629,  1644,
++    1657,  1662,  1698,  1716,  1717,  1723,  1724,  1729,  1731,  1738,
++    1755,  1772,  1774,  1781,  1786,  1794,  1804,  1816,  1825,  1829,
++    1833,  1837,  1841,  1845,  1848,  1850,  1854,  1858,  1862
  };
  #endif
  
@@@ -1853,26 -1848,24 +1849,24 @@@ yyreduce
    switch (yyn)
      {
          case 3:
- #line 212 "awkgram.y" /* yacc.c:1646  */
 -#line 207 "awkgram.y" /* yacc.c:1646  */
++#line 208 "awkgram.y" /* yacc.c:1646  */
      {
                rule = 0;
                yyerrok;
          }
- #line 1862 "awkgram.c" /* yacc.c:1646  */
 -#line 1857 "awkgram.c" /* yacc.c:1646  */
++#line 1858 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 5:
- #line 218 "awkgram.y" /* yacc.c:1646  */
 -#line 213 "awkgram.y" /* yacc.c:1646  */
++#line 214 "awkgram.y" /* yacc.c:1646  */
      {
                next_sourcefile();
-               if (sourcefile == srcfiles)
-                       process_deferred();
          }
- #line 1872 "awkgram.c" /* yacc.c:1646  */
 -#line 1865 "awkgram.c" /* yacc.c:1646  */
++#line 1866 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 6:
- #line 224 "awkgram.y" /* yacc.c:1646  */
 -#line 217 "awkgram.y" /* yacc.c:1646  */
++#line 218 "awkgram.y" /* yacc.c:1646  */
      {
                rule = 0;
                /*
@@@ -1881,19 -1874,20 +1875,20 @@@
                 */
                /* yyerrok; */
          }
- #line 1885 "awkgram.c" /* yacc.c:1646  */
 -#line 1878 "awkgram.c" /* yacc.c:1646  */
++#line 1879 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 7:
- #line 236 "awkgram.y" /* yacc.c:1646  */
 -#line 229 "awkgram.y" /* yacc.c:1646  */
++#line 230 "awkgram.y" /* yacc.c:1646  */
      {
                (void) append_rule((yyvsp[-1]), (yyvsp[0]));
+               first_rule = false;
          }
- #line 1893 "awkgram.c" /* yacc.c:1646  */
 -#line 1887 "awkgram.c" /* yacc.c:1646  */
++#line 1888 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 8:
- #line 240 "awkgram.y" /* yacc.c:1646  */
 -#line 234 "awkgram.y" /* yacc.c:1646  */
++#line 235 "awkgram.y" /* yacc.c:1646  */
      {
                if (rule != Rule) {
                        msg(_("%s blocks must have an action part"), 
ruletab[rule]);
@@@ -1904,39 -1898,39 +1899,39 @@@
                } else          /* pattern rule with non-empty pattern */
                        (void) append_rule((yyvsp[-1]), NULL);
          }
- #line 1908 "awkgram.c" /* yacc.c:1646  */
 -#line 1902 "awkgram.c" /* yacc.c:1646  */
++#line 1903 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 9:
- #line 251 "awkgram.y" /* yacc.c:1646  */
 -#line 245 "awkgram.y" /* yacc.c:1646  */
++#line 246 "awkgram.y" /* yacc.c:1646  */
      {
                in_function = NULL;
                (void) mk_function((yyvsp[-1]), (yyvsp[0]));
                yyerrok;
          }
- #line 1918 "awkgram.c" /* yacc.c:1646  */
 -#line 1912 "awkgram.c" /* yacc.c:1646  */
++#line 1913 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 10:
- #line 257 "awkgram.y" /* yacc.c:1646  */
 -#line 251 "awkgram.y" /* yacc.c:1646  */
++#line 252 "awkgram.y" /* yacc.c:1646  */
      {
                want_source = false;
                yyerrok;
          }
- #line 1927 "awkgram.c" /* yacc.c:1646  */
 -#line 1921 "awkgram.c" /* yacc.c:1646  */
++#line 1922 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 11:
- #line 262 "awkgram.y" /* yacc.c:1646  */
 -#line 256 "awkgram.y" /* yacc.c:1646  */
++#line 257 "awkgram.y" /* yacc.c:1646  */
      {
                want_source = false;
                yyerrok;
          }
- #line 1936 "awkgram.c" /* yacc.c:1646  */
 -#line 1930 "awkgram.c" /* yacc.c:1646  */
++#line 1931 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 12:
- #line 270 "awkgram.y" /* yacc.c:1646  */
 -#line 264 "awkgram.y" /* yacc.c:1646  */
++#line 265 "awkgram.y" /* yacc.c:1646  */
      {
                if (include_source((yyvsp[0])) < 0)
                        YYABORT;
@@@ -1944,23 -1938,23 +1939,23 @@@
                bcfree((yyvsp[0]));
                (yyval) = NULL;
          }
- #line 1948 "awkgram.c" /* yacc.c:1646  */
 -#line 1942 "awkgram.c" /* yacc.c:1646  */
++#line 1943 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 13:
- #line 278 "awkgram.y" /* yacc.c:1646  */
 -#line 272 "awkgram.y" /* yacc.c:1646  */
++#line 273 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 1954 "awkgram.c" /* yacc.c:1646  */
 -#line 1948 "awkgram.c" /* yacc.c:1646  */
++#line 1949 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 14:
- #line 280 "awkgram.y" /* yacc.c:1646  */
 -#line 274 "awkgram.y" /* yacc.c:1646  */
++#line 275 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 1960 "awkgram.c" /* yacc.c:1646  */
 -#line 1954 "awkgram.c" /* yacc.c:1646  */
++#line 1955 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 15:
- #line 285 "awkgram.y" /* yacc.c:1646  */
 -#line 279 "awkgram.y" /* yacc.c:1646  */
++#line 280 "awkgram.y" /* yacc.c:1646  */
      {
                if (load_library((yyvsp[0])) < 0)
                        YYABORT;
@@@ -1968,23 -1962,23 +1963,23 @@@
                bcfree((yyvsp[0]));
                (yyval) = NULL;
          }
- #line 1972 "awkgram.c" /* yacc.c:1646  */
 -#line 1966 "awkgram.c" /* yacc.c:1646  */
++#line 1967 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 16:
- #line 293 "awkgram.y" /* yacc.c:1646  */
 -#line 287 "awkgram.y" /* yacc.c:1646  */
++#line 288 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 1978 "awkgram.c" /* yacc.c:1646  */
 -#line 1972 "awkgram.c" /* yacc.c:1646  */
++#line 1973 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 17:
- #line 295 "awkgram.y" /* yacc.c:1646  */
 -#line 289 "awkgram.y" /* yacc.c:1646  */
++#line 290 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 1984 "awkgram.c" /* yacc.c:1646  */
 -#line 1978 "awkgram.c" /* yacc.c:1646  */
++#line 1979 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 18:
- #line 300 "awkgram.y" /* yacc.c:1646  */
 -#line 294 "awkgram.y" /* yacc.c:1646  */
++#line 295 "awkgram.y" /* yacc.c:1646  */
      {
                rule = Rule;
                if (comment != NULL) {
@@@ -1993,11 -1987,11 +1988,11 @@@
                } else
                        (yyval) = NULL;
          }
- #line 1997 "awkgram.c" /* yacc.c:1646  */
 -#line 1991 "awkgram.c" /* yacc.c:1646  */
++#line 1992 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 19:
- #line 309 "awkgram.y" /* yacc.c:1646  */
 -#line 303 "awkgram.y" /* yacc.c:1646  */
++#line 304 "awkgram.y" /* yacc.c:1646  */
      {
                rule = Rule;
                if (comment != NULL) {
@@@ -2006,11 -2000,11 +2001,11 @@@
                } else
                        (yyval) = (yyvsp[0]);
          }
- #line 2010 "awkgram.c" /* yacc.c:1646  */
 -#line 2004 "awkgram.c" /* yacc.c:1646  */
++#line 2005 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 20:
- #line 319 "awkgram.y" /* yacc.c:1646  */
 -#line 313 "awkgram.y" /* yacc.c:1646  */
++#line 314 "awkgram.y" /* yacc.c:1646  */
      {
                INSTRUCTION *tp;
  
@@@ -2040,11 -2034,11 +2035,11 @@@
                        (yyval) = list_append(list_merge((yyvsp[-3]), 
(yyvsp[0])), tp);
                rule = Rule;
          }
- #line 2044 "awkgram.c" /* yacc.c:1646  */
 -#line 2038 "awkgram.c" /* yacc.c:1646  */
++#line 2039 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 21:
- #line 349 "awkgram.y" /* yacc.c:1646  */
 -#line 343 "awkgram.y" /* yacc.c:1646  */
++#line 344 "awkgram.y" /* yacc.c:1646  */
      {
                static int begin_seen = 0;
  
@@@ -2058,11 -2052,11 +2053,11 @@@
                check_comment();
                (yyval) = (yyvsp[0]);
          }
- #line 2062 "awkgram.c" /* yacc.c:1646  */
 -#line 2056 "awkgram.c" /* yacc.c:1646  */
++#line 2057 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 22:
- #line 363 "awkgram.y" /* yacc.c:1646  */
 -#line 357 "awkgram.y" /* yacc.c:1646  */
++#line 358 "awkgram.y" /* yacc.c:1646  */
      {
                static int end_seen = 0;
  
@@@ -2076,11 -2070,11 +2071,11 @@@
                check_comment();
                (yyval) = (yyvsp[0]);
          }
- #line 2080 "awkgram.c" /* yacc.c:1646  */
 -#line 2074 "awkgram.c" /* yacc.c:1646  */
++#line 2075 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 23:
- #line 377 "awkgram.y" /* yacc.c:1646  */
 -#line 371 "awkgram.y" /* yacc.c:1646  */
++#line 372 "awkgram.y" /* yacc.c:1646  */
      {
                func_first = false;
                (yyvsp[0])->in_rule = rule = BEGINFILE;
@@@ -2088,11 -2082,11 +2083,11 @@@
                check_comment();
                (yyval) = (yyvsp[0]);
          }
- #line 2092 "awkgram.c" /* yacc.c:1646  */
 -#line 2086 "awkgram.c" /* yacc.c:1646  */
++#line 2087 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 24:
- #line 385 "awkgram.y" /* yacc.c:1646  */
 -#line 379 "awkgram.y" /* yacc.c:1646  */
++#line 380 "awkgram.y" /* yacc.c:1646  */
      {
                func_first = false;
                (yyvsp[0])->in_rule = rule = ENDFILE;
@@@ -2100,11 -2094,11 +2095,11 @@@
                check_comment();
                (yyval) = (yyvsp[0]);
          }
- #line 2104 "awkgram.c" /* yacc.c:1646  */
 -#line 2098 "awkgram.c" /* yacc.c:1646  */
++#line 2099 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 25:
- #line 396 "awkgram.y" /* yacc.c:1646  */
 -#line 390 "awkgram.y" /* yacc.c:1646  */
++#line 391 "awkgram.y" /* yacc.c:1646  */
      {
                INSTRUCTION *ip;
                if ((yyvsp[-3]) == NULL)
@@@ -2113,39 -2107,39 +2108,39 @@@
                        ip = (yyvsp[-3]);
                (yyval) = ip;
          }
- #line 2117 "awkgram.c" /* yacc.c:1646  */
 -#line 2111 "awkgram.c" /* yacc.c:1646  */
++#line 2112 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 26:
- #line 408 "awkgram.y" /* yacc.c:1646  */
 -#line 402 "awkgram.y" /* yacc.c:1646  */
++#line 403 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 2123 "awkgram.c" /* yacc.c:1646  */
 -#line 2117 "awkgram.c" /* yacc.c:1646  */
++#line 2118 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 27:
- #line 410 "awkgram.y" /* yacc.c:1646  */
 -#line 404 "awkgram.y" /* yacc.c:1646  */
++#line 405 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 2129 "awkgram.c" /* yacc.c:1646  */
 -#line 2123 "awkgram.c" /* yacc.c:1646  */
++#line 2124 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 28:
- #line 412 "awkgram.y" /* yacc.c:1646  */
 -#line 406 "awkgram.y" /* yacc.c:1646  */
++#line 407 "awkgram.y" /* yacc.c:1646  */
      {
                yyerror(_("`%s' is a built-in function, it cannot be 
redefined"),
                                        tokstart);
                YYABORT;
          }
- #line 2139 "awkgram.c" /* yacc.c:1646  */
 -#line 2133 "awkgram.c" /* yacc.c:1646  */
++#line 2134 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 29:
- #line 418 "awkgram.y" /* yacc.c:1646  */
 -#line 412 "awkgram.y" /* yacc.c:1646  */
++#line 413 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 2145 "awkgram.c" /* yacc.c:1646  */
 -#line 2139 "awkgram.c" /* yacc.c:1646  */
++#line 2140 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 32:
- #line 428 "awkgram.y" /* yacc.c:1646  */
 -#line 422 "awkgram.y" /* yacc.c:1646  */
++#line 423 "awkgram.y" /* yacc.c:1646  */
      {
                /*
                 *  treat any comments between BOF and the first function
@@@ -2172,17 -2166,17 +2167,17 @@@
                /* $4 already free'd in install_function */
                (yyval) = (yyvsp[-5]);
          }
- #line 2176 "awkgram.c" /* yacc.c:1646  */
 -#line 2170 "awkgram.c" /* yacc.c:1646  */
++#line 2171 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 33:
- #line 462 "awkgram.y" /* yacc.c:1646  */
 -#line 456 "awkgram.y" /* yacc.c:1646  */
++#line 457 "awkgram.y" /* yacc.c:1646  */
      { want_regexp = true; }
- #line 2182 "awkgram.c" /* yacc.c:1646  */
 -#line 2176 "awkgram.c" /* yacc.c:1646  */
++#line 2177 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 34:
- #line 464 "awkgram.y" /* yacc.c:1646  */
 -#line 458 "awkgram.y" /* yacc.c:1646  */
++#line 459 "awkgram.y" /* yacc.c:1646  */
      {
                  NODE *n, *exp;
                  char *re;
@@@ -2211,28 -2205,28 +2206,28 @@@
                  (yyval)->opcode = Op_match_rec;
                  (yyval)->memory = n;
                }
- #line 2215 "awkgram.c" /* yacc.c:1646  */
 -#line 2209 "awkgram.c" /* yacc.c:1646  */
++#line 2210 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 35:
- #line 496 "awkgram.y" /* yacc.c:1646  */
 -#line 490 "awkgram.y" /* yacc.c:1646  */
++#line 491 "awkgram.y" /* yacc.c:1646  */
      { bcfree((yyvsp[0])); }
- #line 2221 "awkgram.c" /* yacc.c:1646  */
 -#line 2215 "awkgram.c" /* yacc.c:1646  */
++#line 2216 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 37:
- #line 502 "awkgram.y" /* yacc.c:1646  */
 -#line 496 "awkgram.y" /* yacc.c:1646  */
++#line 497 "awkgram.y" /* yacc.c:1646  */
      {
                if (comment != NULL) {
                        (yyval) = list_create(comment);
                        comment = NULL;
                } else (yyval) = NULL;
          }
- #line 2232 "awkgram.c" /* yacc.c:1646  */
 -#line 2226 "awkgram.c" /* yacc.c:1646  */
++#line 2227 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 38:
- #line 509 "awkgram.y" /* yacc.c:1646  */
 -#line 503 "awkgram.y" /* yacc.c:1646  */
++#line 504 "awkgram.y" /* yacc.c:1646  */
      {
                if ((yyvsp[0]) == NULL) {
                        if (comment == NULL)
@@@ -2260,40 -2254,40 +2255,40 @@@
                }
                yyerrok;
          }
- #line 2264 "awkgram.c" /* yacc.c:1646  */
 -#line 2258 "awkgram.c" /* yacc.c:1646  */
++#line 2259 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 39:
- #line 537 "awkgram.y" /* yacc.c:1646  */
 -#line 531 "awkgram.y" /* yacc.c:1646  */
++#line 532 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 2270 "awkgram.c" /* yacc.c:1646  */
 -#line 2264 "awkgram.c" /* yacc.c:1646  */
++#line 2265 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 42:
- #line 547 "awkgram.y" /* yacc.c:1646  */
 -#line 541 "awkgram.y" /* yacc.c:1646  */
++#line 542 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 2276 "awkgram.c" /* yacc.c:1646  */
 -#line 2270 "awkgram.c" /* yacc.c:1646  */
++#line 2271 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 43:
- #line 549 "awkgram.y" /* yacc.c:1646  */
 -#line 543 "awkgram.y" /* yacc.c:1646  */
++#line 544 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[-1]); }
- #line 2282 "awkgram.c" /* yacc.c:1646  */
 -#line 2276 "awkgram.c" /* yacc.c:1646  */
++#line 2277 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 44:
- #line 551 "awkgram.y" /* yacc.c:1646  */
 -#line 545 "awkgram.y" /* yacc.c:1646  */
++#line 546 "awkgram.y" /* yacc.c:1646  */
      {
                if (do_pretty_print)
                        (yyval) = list_prepend((yyvsp[0]), 
instruction(Op_exec_count));
                else
                        (yyval) = (yyvsp[0]);
          }
- #line 2293 "awkgram.c" /* yacc.c:1646  */
 -#line 2287 "awkgram.c" /* yacc.c:1646  */
++#line 2288 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 45:
- #line 558 "awkgram.y" /* yacc.c:1646  */
 -#line 552 "awkgram.y" /* yacc.c:1646  */
++#line 553 "awkgram.y" /* yacc.c:1646  */
      {
                INSTRUCTION *dflt, *curr = NULL, *cexp, *cstmt;
                INSTRUCTION *ip, *nextc, *tbreak;
@@@ -2383,11 -2377,11 +2378,11 @@@
                break_allowed--;                        
                fix_break_continue(ip, tbreak, NULL);
          }
- #line 2387 "awkgram.c" /* yacc.c:1646  */
 -#line 2381 "awkgram.c" /* yacc.c:1646  */
++#line 2382 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 46:
- #line 648 "awkgram.y" /* yacc.c:1646  */
 -#line 642 "awkgram.y" /* yacc.c:1646  */
++#line 643 "awkgram.y" /* yacc.c:1646  */
      { 
                /*
                 *    -----------------
@@@ -2429,11 -2423,11 +2424,11 @@@
                continue_allowed--;
                fix_break_continue(ip, tbreak, tcont);
          }
- #line 2433 "awkgram.c" /* yacc.c:1646  */
 -#line 2427 "awkgram.c" /* yacc.c:1646  */
++#line 2428 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 47:
- #line 690 "awkgram.y" /* yacc.c:1646  */
 -#line 684 "awkgram.y" /* yacc.c:1646  */
++#line 685 "awkgram.y" /* yacc.c:1646  */
      {
                /*
                 *    -----------------
@@@ -2475,11 -2469,11 +2470,11 @@@
                } /* else
                        $1 and $4 are NULLs */
          }
- #line 2479 "awkgram.c" /* yacc.c:1646  */
 -#line 2473 "awkgram.c" /* yacc.c:1646  */
++#line 2474 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 48:
- #line 732 "awkgram.y" /* yacc.c:1646  */
 -#line 726 "awkgram.y" /* yacc.c:1646  */
++#line 727 "awkgram.y" /* yacc.c:1646  */
      {
                INSTRUCTION *ip;
                char *var_name = (yyvsp[-5])->lextok;
@@@ -2592,44 -2586,44 +2587,44 @@@ regular_loop
                break_allowed--;
                continue_allowed--;
          }
- #line 2596 "awkgram.c" /* yacc.c:1646  */
 -#line 2590 "awkgram.c" /* yacc.c:1646  */
++#line 2591 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 49:
- #line 845 "awkgram.y" /* yacc.c:1646  */
 -#line 839 "awkgram.y" /* yacc.c:1646  */
++#line 840 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = mk_for_loop((yyvsp[-11]), (yyvsp[-9]), (yyvsp[-6]), 
(yyvsp[-3]), (yyvsp[0]));
  
                break_allowed--;
                continue_allowed--;
          }
- #line 2607 "awkgram.c" /* yacc.c:1646  */
 -#line 2601 "awkgram.c" /* yacc.c:1646  */
++#line 2602 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 50:
- #line 852 "awkgram.y" /* yacc.c:1646  */
 -#line 846 "awkgram.y" /* yacc.c:1646  */
++#line 847 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = mk_for_loop((yyvsp[-10]), (yyvsp[-8]), (INSTRUCTION 
*) NULL, (yyvsp[-3]), (yyvsp[0]));
  
                break_allowed--;
                continue_allowed--;
          }
- #line 2618 "awkgram.c" /* yacc.c:1646  */
 -#line 2612 "awkgram.c" /* yacc.c:1646  */
++#line 2613 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 51:
- #line 859 "awkgram.y" /* yacc.c:1646  */
 -#line 853 "awkgram.y" /* yacc.c:1646  */
++#line 854 "awkgram.y" /* yacc.c:1646  */
      {
                if (do_pretty_print)
                        (yyval) = list_prepend((yyvsp[0]), 
instruction(Op_exec_count));
                else
                        (yyval) = (yyvsp[0]);
          }
- #line 2629 "awkgram.c" /* yacc.c:1646  */
 -#line 2623 "awkgram.c" /* yacc.c:1646  */
++#line 2624 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 52:
- #line 869 "awkgram.y" /* yacc.c:1646  */
 -#line 863 "awkgram.y" /* yacc.c:1646  */
++#line 864 "awkgram.y" /* yacc.c:1646  */
      { 
                if (! break_allowed)
                        error_ln((yyvsp[-1])->source_line,
@@@ -2638,11 -2632,11 +2633,11 @@@
                (yyval) = list_create((yyvsp[-1]));
  
          }
- #line 2642 "awkgram.c" /* yacc.c:1646  */
 -#line 2636 "awkgram.c" /* yacc.c:1646  */
++#line 2637 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 53:
- #line 878 "awkgram.y" /* yacc.c:1646  */
 -#line 872 "awkgram.y" /* yacc.c:1646  */
++#line 873 "awkgram.y" /* yacc.c:1646  */
      {
                if (! continue_allowed)
                        error_ln((yyvsp[-1])->source_line,
@@@ -2651,11 -2645,11 +2646,11 @@@
                (yyval) = list_create((yyvsp[-1]));
  
          }
- #line 2655 "awkgram.c" /* yacc.c:1646  */
 -#line 2649 "awkgram.c" /* yacc.c:1646  */
++#line 2650 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 54:
- #line 887 "awkgram.y" /* yacc.c:1646  */
 -#line 881 "awkgram.y" /* yacc.c:1646  */
++#line 882 "awkgram.y" /* yacc.c:1646  */
      {
                /* if inside function (rule = 0), resolve context at run-time */
                if (rule && rule != Rule)
@@@ -2664,11 -2658,11 +2659,11 @@@
                (yyvsp[-1])->target_jmp = ip_rec;
                (yyval) = list_create((yyvsp[-1]));
          }
- #line 2668 "awkgram.c" /* yacc.c:1646  */
 -#line 2662 "awkgram.c" /* yacc.c:1646  */
++#line 2663 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 55:
- #line 896 "awkgram.y" /* yacc.c:1646  */
 -#line 890 "awkgram.y" /* yacc.c:1646  */
++#line 891 "awkgram.y" /* yacc.c:1646  */
      {
                /* if inside function (rule = 0), resolve context at run-time */
                if (rule == BEGIN || rule == END || rule == ENDFILE)
@@@ -2679,11 -2673,11 +2674,11 @@@
                (yyvsp[-1])->target_endfile = ip_endfile;
                (yyval) = list_create((yyvsp[-1]));
          }
- #line 2683 "awkgram.c" /* yacc.c:1646  */
 -#line 2677 "awkgram.c" /* yacc.c:1646  */
++#line 2678 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 56:
- #line 907 "awkgram.y" /* yacc.c:1646  */
 -#line 901 "awkgram.y" /* yacc.c:1646  */
++#line 902 "awkgram.y" /* yacc.c:1646  */
      {
                /* Initialize the two possible jump targets, the actual target
                 * is resolved at run-time. 
@@@ -2698,20 -2692,20 +2693,20 @@@
                } else
                        (yyval) = list_append((yyvsp[-1]), (yyvsp[-2]));
          }
- #line 2702 "awkgram.c" /* yacc.c:1646  */
 -#line 2696 "awkgram.c" /* yacc.c:1646  */
++#line 2697 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 57:
- #line 922 "awkgram.y" /* yacc.c:1646  */
 -#line 916 "awkgram.y" /* yacc.c:1646  */
++#line 917 "awkgram.y" /* yacc.c:1646  */
      {
                if (! in_function)
                        yyerror(_("`return' used outside function context"));
          }
- #line 2711 "awkgram.c" /* yacc.c:1646  */
 -#line 2705 "awkgram.c" /* yacc.c:1646  */
++#line 2706 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 58:
- #line 925 "awkgram.y" /* yacc.c:1646  */
 -#line 919 "awkgram.y" /* yacc.c:1646  */
++#line 920 "awkgram.y" /* yacc.c:1646  */
      {
                if ((yyvsp[-1]) == NULL) {
                        (yyval) = list_create((yyvsp[-3]));
@@@ -2732,17 -2726,17 +2727,17 @@@
                        (yyval) = list_append((yyvsp[-1]), (yyvsp[-3]));
                }
          }
- #line 2736 "awkgram.c" /* yacc.c:1646  */
 -#line 2730 "awkgram.c" /* yacc.c:1646  */
++#line 2731 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 60:
- #line 957 "awkgram.y" /* yacc.c:1646  */
 -#line 951 "awkgram.y" /* yacc.c:1646  */
++#line 952 "awkgram.y" /* yacc.c:1646  */
      { in_print = true; in_parens = 0; }
- #line 2742 "awkgram.c" /* yacc.c:1646  */
 -#line 2736 "awkgram.c" /* yacc.c:1646  */
++#line 2737 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 61:
- #line 958 "awkgram.y" /* yacc.c:1646  */
 -#line 952 "awkgram.y" /* yacc.c:1646  */
++#line 953 "awkgram.y" /* yacc.c:1646  */
      {
                /*
                 * Optimization: plain `print' has no expression list, so $3 is 
null.
@@@ -2839,17 -2833,17 +2834,17 @@@ regular_print
                        }
                }
          }
- #line 2843 "awkgram.c" /* yacc.c:1646  */
 -#line 2837 "awkgram.c" /* yacc.c:1646  */
++#line 2838 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 62:
- #line 1055 "awkgram.y" /* yacc.c:1646  */
 -#line 1049 "awkgram.y" /* yacc.c:1646  */
++#line 1050 "awkgram.y" /* yacc.c:1646  */
      { sub_counter = 0; }
- #line 2849 "awkgram.c" /* yacc.c:1646  */
 -#line 2843 "awkgram.c" /* yacc.c:1646  */
++#line 2844 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 63:
- #line 1056 "awkgram.y" /* yacc.c:1646  */
 -#line 1050 "awkgram.y" /* yacc.c:1646  */
++#line 1051 "awkgram.y" /* yacc.c:1646  */
      {
                char *arr = (yyvsp[-2])->lextok;
  
@@@ -2882,11 -2876,11 +2877,11 @@@
                        (yyval) = list_append(list_append((yyvsp[0]), 
(yyvsp[-2])), (yyvsp[-3]));
                }
          }
- #line 2886 "awkgram.c" /* yacc.c:1646  */
 -#line 2880 "awkgram.c" /* yacc.c:1646  */
++#line 2881 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 64:
- #line 1093 "awkgram.y" /* yacc.c:1646  */
 -#line 1087 "awkgram.y" /* yacc.c:1646  */
++#line 1088 "awkgram.y" /* yacc.c:1646  */
      {
                static bool warned = false;
                char *arr = (yyvsp[-1])->lextok;
@@@ -2912,52 -2906,52 +2907,52 @@@
                                fatal(_("`delete' is not allowed with 
FUNCTAB"));
                }
          }
- #line 2916 "awkgram.c" /* yacc.c:1646  */
 -#line 2910 "awkgram.c" /* yacc.c:1646  */
++#line 2911 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 65:
- #line 1119 "awkgram.y" /* yacc.c:1646  */
 -#line 1113 "awkgram.y" /* yacc.c:1646  */
++#line 1114 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = optimize_assignment((yyvsp[0])); }
- #line 2922 "awkgram.c" /* yacc.c:1646  */
 -#line 2916 "awkgram.c" /* yacc.c:1646  */
++#line 2917 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 66:
- #line 1124 "awkgram.y" /* yacc.c:1646  */
 -#line 1118 "awkgram.y" /* yacc.c:1646  */
++#line 1119 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 2928 "awkgram.c" /* yacc.c:1646  */
 -#line 2922 "awkgram.c" /* yacc.c:1646  */
++#line 2923 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 67:
- #line 1126 "awkgram.y" /* yacc.c:1646  */
 -#line 1120 "awkgram.y" /* yacc.c:1646  */
++#line 1121 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 2934 "awkgram.c" /* yacc.c:1646  */
 -#line 2928 "awkgram.c" /* yacc.c:1646  */
++#line 2929 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 68:
- #line 1131 "awkgram.y" /* yacc.c:1646  */
 -#line 1125 "awkgram.y" /* yacc.c:1646  */
++#line 1126 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 2940 "awkgram.c" /* yacc.c:1646  */
 -#line 2934 "awkgram.c" /* yacc.c:1646  */
++#line 2935 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 69:
- #line 1133 "awkgram.y" /* yacc.c:1646  */
 -#line 1127 "awkgram.y" /* yacc.c:1646  */
++#line 1128 "awkgram.y" /* yacc.c:1646  */
      {
                if ((yyvsp[-1]) == NULL)
                        (yyval) = list_create((yyvsp[0]));
                else
                        (yyval) = list_prepend((yyvsp[-1]), (yyvsp[0]));
          }
- #line 2951 "awkgram.c" /* yacc.c:1646  */
 -#line 2945 "awkgram.c" /* yacc.c:1646  */
++#line 2946 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 70:
- #line 1140 "awkgram.y" /* yacc.c:1646  */
 -#line 1134 "awkgram.y" /* yacc.c:1646  */
++#line 1135 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 2957 "awkgram.c" /* yacc.c:1646  */
 -#line 2951 "awkgram.c" /* yacc.c:1646  */
++#line 2952 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 71:
- #line 1145 "awkgram.y" /* yacc.c:1646  */
 -#line 1139 "awkgram.y" /* yacc.c:1646  */
++#line 1140 "awkgram.y" /* yacc.c:1646  */
      {
                INSTRUCTION *casestmt = (yyvsp[0]);
                if ((yyvsp[0]) == NULL)
@@@ -2969,11 -2963,11 +2964,11 @@@
                bcfree((yyvsp[-2]));
                (yyval) = (yyvsp[-4]);
          }
- #line 2973 "awkgram.c" /* yacc.c:1646  */
 -#line 2967 "awkgram.c" /* yacc.c:1646  */
++#line 2968 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 72:
- #line 1157 "awkgram.y" /* yacc.c:1646  */
 -#line 1151 "awkgram.y" /* yacc.c:1646  */
++#line 1152 "awkgram.y" /* yacc.c:1646  */
      {
                INSTRUCTION *casestmt = (yyvsp[0]);
                if ((yyvsp[0]) == NULL)
@@@ -2984,17 -2978,17 +2979,17 @@@
                (yyvsp[-3])->case_stmt = casestmt;
                (yyval) = (yyvsp[-3]);
          }
- #line 2988 "awkgram.c" /* yacc.c:1646  */
 -#line 2982 "awkgram.c" /* yacc.c:1646  */
++#line 2983 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 73:
- #line 1171 "awkgram.y" /* yacc.c:1646  */
 -#line 1165 "awkgram.y" /* yacc.c:1646  */
++#line 1166 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 2994 "awkgram.c" /* yacc.c:1646  */
 -#line 2988 "awkgram.c" /* yacc.c:1646  */
++#line 2989 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 74:
- #line 1173 "awkgram.y" /* yacc.c:1646  */
 -#line 1167 "awkgram.y" /* yacc.c:1646  */
++#line 1168 "awkgram.y" /* yacc.c:1646  */
      { 
                NODE *n = (yyvsp[0])->memory;
                (void) force_number(n);
@@@ -3002,71 -2996,71 +2997,71 @@@
                bcfree((yyvsp[-1]));
                (yyval) = (yyvsp[0]);
          }
- #line 3006 "awkgram.c" /* yacc.c:1646  */
 -#line 3000 "awkgram.c" /* yacc.c:1646  */
++#line 3001 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 75:
- #line 1181 "awkgram.y" /* yacc.c:1646  */
 -#line 1175 "awkgram.y" /* yacc.c:1646  */
++#line 1176 "awkgram.y" /* yacc.c:1646  */
      {
                bcfree((yyvsp[-1]));
                (yyval) = (yyvsp[0]);
          }
- #line 3015 "awkgram.c" /* yacc.c:1646  */
 -#line 3009 "awkgram.c" /* yacc.c:1646  */
++#line 3010 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 76:
- #line 1186 "awkgram.y" /* yacc.c:1646  */
 -#line 1180 "awkgram.y" /* yacc.c:1646  */
++#line 1181 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3021 "awkgram.c" /* yacc.c:1646  */
 -#line 3015 "awkgram.c" /* yacc.c:1646  */
++#line 3016 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 77:
- #line 1188 "awkgram.y" /* yacc.c:1646  */
 -#line 1182 "awkgram.y" /* yacc.c:1646  */
++#line 1183 "awkgram.y" /* yacc.c:1646  */
      {
                (yyvsp[0])->opcode = Op_push_re;
                (yyval) = (yyvsp[0]);
          }
- #line 3030 "awkgram.c" /* yacc.c:1646  */
 -#line 3024 "awkgram.c" /* yacc.c:1646  */
++#line 3025 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 78:
- #line 1196 "awkgram.y" /* yacc.c:1646  */
 -#line 1190 "awkgram.y" /* yacc.c:1646  */
++#line 1191 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3036 "awkgram.c" /* yacc.c:1646  */
 -#line 3030 "awkgram.c" /* yacc.c:1646  */
++#line 3031 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 79:
- #line 1198 "awkgram.y" /* yacc.c:1646  */
 -#line 1192 "awkgram.y" /* yacc.c:1646  */
++#line 1193 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3042 "awkgram.c" /* yacc.c:1646  */
 -#line 3036 "awkgram.c" /* yacc.c:1646  */
++#line 3037 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 81:
- #line 1208 "awkgram.y" /* yacc.c:1646  */
 -#line 1202 "awkgram.y" /* yacc.c:1646  */
++#line 1203 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = (yyvsp[-1]);
          }
- #line 3050 "awkgram.c" /* yacc.c:1646  */
 -#line 3044 "awkgram.c" /* yacc.c:1646  */
++#line 3045 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 82:
- #line 1215 "awkgram.y" /* yacc.c:1646  */
 -#line 1209 "awkgram.y" /* yacc.c:1646  */
++#line 1210 "awkgram.y" /* yacc.c:1646  */
      {
                in_print = false;
                in_parens = 0;
                (yyval) = NULL;
          }
- #line 3060 "awkgram.c" /* yacc.c:1646  */
 -#line 3054 "awkgram.c" /* yacc.c:1646  */
++#line 3055 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 83:
- #line 1220 "awkgram.y" /* yacc.c:1646  */
 -#line 1214 "awkgram.y" /* yacc.c:1646  */
++#line 1215 "awkgram.y" /* yacc.c:1646  */
      { in_print = false; in_parens = 0; }
- #line 3066 "awkgram.c" /* yacc.c:1646  */
 -#line 3060 "awkgram.c" /* yacc.c:1646  */
++#line 3061 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 84:
- #line 1221 "awkgram.y" /* yacc.c:1646  */
 -#line 1215 "awkgram.y" /* yacc.c:1646  */
++#line 1216 "awkgram.y" /* yacc.c:1646  */
      {
                if ((yyvsp[-2])->redir_type == redirect_twoway
                        && (yyvsp[0])->lasti->opcode == Op_K_getline_redir
@@@ -3074,136 -3068,136 +3069,136 @@@
                        yyerror(_("multistage two-way pipelines don't work"));
                (yyval) = list_prepend((yyvsp[0]), (yyvsp[-2]));
          }
- #line 3078 "awkgram.c" /* yacc.c:1646  */
 -#line 3072 "awkgram.c" /* yacc.c:1646  */
++#line 3073 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 85:
- #line 1232 "awkgram.y" /* yacc.c:1646  */
 -#line 1226 "awkgram.y" /* yacc.c:1646  */
++#line 1227 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = mk_condition((yyvsp[-3]), (yyvsp[-5]), (yyvsp[0]), 
NULL, NULL);
          }
- #line 3086 "awkgram.c" /* yacc.c:1646  */
 -#line 3080 "awkgram.c" /* yacc.c:1646  */
++#line 3081 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 86:
- #line 1237 "awkgram.y" /* yacc.c:1646  */
 -#line 1231 "awkgram.y" /* yacc.c:1646  */
++#line 1232 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = mk_condition((yyvsp[-6]), (yyvsp[-8]), (yyvsp[-3]), 
(yyvsp[-2]), (yyvsp[0]));
          }
- #line 3094 "awkgram.c" /* yacc.c:1646  */
 -#line 3088 "awkgram.c" /* yacc.c:1646  */
++#line 3089 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 91:
- #line 1254 "awkgram.y" /* yacc.c:1646  */
 -#line 1248 "awkgram.y" /* yacc.c:1646  */
++#line 1249 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 3100 "awkgram.c" /* yacc.c:1646  */
 -#line 3094 "awkgram.c" /* yacc.c:1646  */
++#line 3095 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 92:
- #line 1256 "awkgram.y" /* yacc.c:1646  */
 -#line 1250 "awkgram.y" /* yacc.c:1646  */
++#line 1251 "awkgram.y" /* yacc.c:1646  */
      {
                bcfree((yyvsp[-1]));
                (yyval) = (yyvsp[0]);
          }
- #line 3109 "awkgram.c" /* yacc.c:1646  */
 -#line 3103 "awkgram.c" /* yacc.c:1646  */
++#line 3104 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 93:
- #line 1264 "awkgram.y" /* yacc.c:1646  */
 -#line 1258 "awkgram.y" /* yacc.c:1646  */
++#line 1259 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 3115 "awkgram.c" /* yacc.c:1646  */
 -#line 3109 "awkgram.c" /* yacc.c:1646  */
++#line 3110 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 94:
- #line 1266 "awkgram.y" /* yacc.c:1646  */
 -#line 1260 "awkgram.y" /* yacc.c:1646  */
++#line 1261 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3121 "awkgram.c" /* yacc.c:1646  */
 -#line 3115 "awkgram.c" /* yacc.c:1646  */
++#line 3116 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 95:
- #line 1271 "awkgram.y" /* yacc.c:1646  */
 -#line 1265 "awkgram.y" /* yacc.c:1646  */
++#line 1266 "awkgram.y" /* yacc.c:1646  */
      {
                (yyvsp[0])->param_count = 0;
                (yyval) = list_create((yyvsp[0]));
          }
- #line 3130 "awkgram.c" /* yacc.c:1646  */
 -#line 3124 "awkgram.c" /* yacc.c:1646  */
++#line 3125 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 96:
- #line 1276 "awkgram.y" /* yacc.c:1646  */
 -#line 1270 "awkgram.y" /* yacc.c:1646  */
++#line 1271 "awkgram.y" /* yacc.c:1646  */
      {
                (yyvsp[0])->param_count =  (yyvsp[-2])->lasti->param_count + 1;
                (yyval) = list_append((yyvsp[-2]), (yyvsp[0]));
                yyerrok;
          }
- #line 3140 "awkgram.c" /* yacc.c:1646  */
 -#line 3134 "awkgram.c" /* yacc.c:1646  */
++#line 3135 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 97:
- #line 1282 "awkgram.y" /* yacc.c:1646  */
 -#line 1276 "awkgram.y" /* yacc.c:1646  */
++#line 1277 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 3146 "awkgram.c" /* yacc.c:1646  */
 -#line 3140 "awkgram.c" /* yacc.c:1646  */
++#line 3141 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 98:
- #line 1284 "awkgram.y" /* yacc.c:1646  */
 -#line 1278 "awkgram.y" /* yacc.c:1646  */
++#line 1279 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[-1]); }
- #line 3152 "awkgram.c" /* yacc.c:1646  */
 -#line 3146 "awkgram.c" /* yacc.c:1646  */
++#line 3147 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 99:
- #line 1286 "awkgram.y" /* yacc.c:1646  */
 -#line 1280 "awkgram.y" /* yacc.c:1646  */
++#line 1281 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[-2]); }
- #line 3158 "awkgram.c" /* yacc.c:1646  */
 -#line 3152 "awkgram.c" /* yacc.c:1646  */
++#line 3153 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 100:
- #line 1292 "awkgram.y" /* yacc.c:1646  */
 -#line 1286 "awkgram.y" /* yacc.c:1646  */
++#line 1287 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 3164 "awkgram.c" /* yacc.c:1646  */
 -#line 3158 "awkgram.c" /* yacc.c:1646  */
++#line 3159 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 101:
- #line 1294 "awkgram.y" /* yacc.c:1646  */
 -#line 1288 "awkgram.y" /* yacc.c:1646  */
++#line 1289 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3170 "awkgram.c" /* yacc.c:1646  */
 -#line 3164 "awkgram.c" /* yacc.c:1646  */
++#line 3165 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 102:
- #line 1299 "awkgram.y" /* yacc.c:1646  */
 -#line 1293 "awkgram.y" /* yacc.c:1646  */
++#line 1294 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 3176 "awkgram.c" /* yacc.c:1646  */
 -#line 3170 "awkgram.c" /* yacc.c:1646  */
++#line 3171 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 103:
- #line 1301 "awkgram.y" /* yacc.c:1646  */
 -#line 1295 "awkgram.y" /* yacc.c:1646  */
++#line 1296 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3182 "awkgram.c" /* yacc.c:1646  */
 -#line 3176 "awkgram.c" /* yacc.c:1646  */
++#line 3177 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 104:
- #line 1306 "awkgram.y" /* yacc.c:1646  */
 -#line 1300 "awkgram.y" /* yacc.c:1646  */
++#line 1301 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_expression_list(NULL, (yyvsp[0])); }
- #line 3188 "awkgram.c" /* yacc.c:1646  */
 -#line 3182 "awkgram.c" /* yacc.c:1646  */
++#line 3183 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 105:
- #line 1308 "awkgram.y" /* yacc.c:1646  */
 -#line 1302 "awkgram.y" /* yacc.c:1646  */
++#line 1303 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = mk_expression_list((yyvsp[-2]), (yyvsp[0]));
                yyerrok;
          }
- #line 3197 "awkgram.c" /* yacc.c:1646  */
 -#line 3191 "awkgram.c" /* yacc.c:1646  */
++#line 3192 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 106:
- #line 1313 "awkgram.y" /* yacc.c:1646  */
 -#line 1307 "awkgram.y" /* yacc.c:1646  */
++#line 1308 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 3203 "awkgram.c" /* yacc.c:1646  */
 -#line 3197 "awkgram.c" /* yacc.c:1646  */
++#line 3198 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 107:
- #line 1315 "awkgram.y" /* yacc.c:1646  */
 -#line 1309 "awkgram.y" /* yacc.c:1646  */
++#line 1310 "awkgram.y" /* yacc.c:1646  */
      {
                /*
                 * Returning the expression list instead of NULL lets
@@@ -3211,52 -3205,52 +3206,52 @@@
                 */
                (yyval) = (yyvsp[-1]);
          }
- #line 3215 "awkgram.c" /* yacc.c:1646  */
 -#line 3209 "awkgram.c" /* yacc.c:1646  */
++#line 3210 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 108:
- #line 1323 "awkgram.y" /* yacc.c:1646  */
 -#line 1317 "awkgram.y" /* yacc.c:1646  */
++#line 1318 "awkgram.y" /* yacc.c:1646  */
      {
                /* Ditto */
                (yyval) = mk_expression_list((yyvsp[-2]), (yyvsp[0]));
          }
- #line 3224 "awkgram.c" /* yacc.c:1646  */
 -#line 3218 "awkgram.c" /* yacc.c:1646  */
++#line 3219 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 109:
- #line 1328 "awkgram.y" /* yacc.c:1646  */
 -#line 1322 "awkgram.y" /* yacc.c:1646  */
++#line 1323 "awkgram.y" /* yacc.c:1646  */
      {
                /* Ditto */
                (yyval) = (yyvsp[-2]);
          }
- #line 3233 "awkgram.c" /* yacc.c:1646  */
 -#line 3227 "awkgram.c" /* yacc.c:1646  */
++#line 3228 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 110:
- #line 1337 "awkgram.y" /* yacc.c:1646  */
 -#line 1331 "awkgram.y" /* yacc.c:1646  */
++#line 1332 "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 3244 "awkgram.c" /* yacc.c:1646  */
 -#line 3238 "awkgram.c" /* yacc.c:1646  */
++#line 3239 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 111:
- #line 1344 "awkgram.y" /* yacc.c:1646  */
 -#line 1338 "awkgram.y" /* yacc.c:1646  */
++#line 1339 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_boolean((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3250 "awkgram.c" /* yacc.c:1646  */
 -#line 3244 "awkgram.c" /* yacc.c:1646  */
++#line 3245 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 112:
- #line 1346 "awkgram.y" /* yacc.c:1646  */
 -#line 1340 "awkgram.y" /* yacc.c:1646  */
++#line 1341 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_boolean((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3256 "awkgram.c" /* yacc.c:1646  */
 -#line 3250 "awkgram.c" /* yacc.c:1646  */
++#line 3251 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 113:
- #line 1348 "awkgram.y" /* yacc.c:1646  */
 -#line 1342 "awkgram.y" /* yacc.c:1646  */
++#line 1343 "awkgram.y" /* yacc.c:1646  */
      {
                if ((yyvsp[-2])->lasti->opcode == Op_match_rec)
                        warning_ln((yyvsp[-1])->source_line,
@@@ -3272,11 -3266,11 +3267,11 @@@
                        (yyval) = list_append(list_merge((yyvsp[-2]), 
(yyvsp[0])), (yyvsp[-1]));
                }
          }
- #line 3276 "awkgram.c" /* yacc.c:1646  */
 -#line 3270 "awkgram.c" /* yacc.c:1646  */
++#line 3271 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 114:
- #line 1364 "awkgram.y" /* yacc.c:1646  */
 -#line 1358 "awkgram.y" /* yacc.c:1646  */
++#line 1359 "awkgram.y" /* yacc.c:1646  */
      {
                if (do_lint_old)
                        warning_ln((yyvsp[-1])->source_line,
@@@ -3286,91 -3280,91 +3281,91 @@@
                (yyvsp[-1])->expr_count = 1;
                (yyval) = list_append(list_merge((yyvsp[-2]), (yyvsp[0])), 
(yyvsp[-1]));
          }
- #line 3290 "awkgram.c" /* yacc.c:1646  */
 -#line 3284 "awkgram.c" /* yacc.c:1646  */
++#line 3285 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 115:
- #line 1374 "awkgram.y" /* yacc.c:1646  */
 -#line 1368 "awkgram.y" /* yacc.c:1646  */
++#line 1369 "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 3301 "awkgram.c" /* yacc.c:1646  */
 -#line 3295 "awkgram.c" /* yacc.c:1646  */
++#line 3296 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 116:
- #line 1381 "awkgram.y" /* yacc.c:1646  */
 -#line 1375 "awkgram.y" /* yacc.c:1646  */
++#line 1376 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_condition((yyvsp[-4]), (yyvsp[-3]), (yyvsp[-2]), 
(yyvsp[-1]), (yyvsp[0])); }
- #line 3307 "awkgram.c" /* yacc.c:1646  */
 -#line 3301 "awkgram.c" /* yacc.c:1646  */
++#line 3302 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 117:
- #line 1383 "awkgram.y" /* yacc.c:1646  */
 -#line 1377 "awkgram.y" /* yacc.c:1646  */
++#line 1378 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3313 "awkgram.c" /* yacc.c:1646  */
 -#line 3307 "awkgram.c" /* yacc.c:1646  */
++#line 3308 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 118:
- #line 1388 "awkgram.y" /* yacc.c:1646  */
 -#line 1382 "awkgram.y" /* yacc.c:1646  */
++#line 1383 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3319 "awkgram.c" /* yacc.c:1646  */
 -#line 3313 "awkgram.c" /* yacc.c:1646  */
++#line 3314 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 119:
- #line 1390 "awkgram.y" /* yacc.c:1646  */
 -#line 1384 "awkgram.y" /* yacc.c:1646  */
++#line 1385 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3325 "awkgram.c" /* yacc.c:1646  */
 -#line 3319 "awkgram.c" /* yacc.c:1646  */
++#line 3320 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 120:
- #line 1392 "awkgram.y" /* yacc.c:1646  */
 -#line 1386 "awkgram.y" /* yacc.c:1646  */
++#line 1387 "awkgram.y" /* yacc.c:1646  */
      { 
                (yyvsp[0])->opcode = Op_assign_quotient;
                (yyval) = (yyvsp[0]);
          }
- #line 3334 "awkgram.c" /* yacc.c:1646  */
 -#line 3328 "awkgram.c" /* yacc.c:1646  */
++#line 3329 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 121:
- #line 1400 "awkgram.y" /* yacc.c:1646  */
 -#line 1394 "awkgram.y" /* yacc.c:1646  */
++#line 1395 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3340 "awkgram.c" /* yacc.c:1646  */
 -#line 3334 "awkgram.c" /* yacc.c:1646  */
++#line 3335 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 122:
- #line 1402 "awkgram.y" /* yacc.c:1646  */
 -#line 1396 "awkgram.y" /* yacc.c:1646  */
++#line 1397 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3346 "awkgram.c" /* yacc.c:1646  */
 -#line 3340 "awkgram.c" /* yacc.c:1646  */
++#line 3341 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 123:
- #line 1407 "awkgram.y" /* yacc.c:1646  */
 -#line 1401 "awkgram.y" /* yacc.c:1646  */
++#line 1402 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3352 "awkgram.c" /* yacc.c:1646  */
 -#line 3346 "awkgram.c" /* yacc.c:1646  */
++#line 3347 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 124:
- #line 1409 "awkgram.y" /* yacc.c:1646  */
 -#line 1403 "awkgram.y" /* yacc.c:1646  */
++#line 1404 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3358 "awkgram.c" /* yacc.c:1646  */
 -#line 3352 "awkgram.c" /* yacc.c:1646  */
++#line 3353 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 125:
- #line 1414 "awkgram.y" /* yacc.c:1646  */
 -#line 1408 "awkgram.y" /* yacc.c:1646  */
++#line 1409 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3364 "awkgram.c" /* yacc.c:1646  */
 -#line 3358 "awkgram.c" /* yacc.c:1646  */
++#line 3359 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 126:
- #line 1416 "awkgram.y" /* yacc.c:1646  */
 -#line 1410 "awkgram.y" /* yacc.c:1646  */
++#line 1411 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3370 "awkgram.c" /* yacc.c:1646  */
 -#line 3364 "awkgram.c" /* yacc.c:1646  */
++#line 3365 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 127:
- #line 1418 "awkgram.y" /* yacc.c:1646  */
 -#line 1412 "awkgram.y" /* yacc.c:1646  */
++#line 1413 "awkgram.y" /* yacc.c:1646  */
      {
                int count = 2;
                bool is_simple_var = false;
@@@ -3417,47 -3411,47 +3412,47 @@@
                                max_args = count;
                }
          }
- #line 3421 "awkgram.c" /* yacc.c:1646  */
 -#line 3415 "awkgram.c" /* yacc.c:1646  */
++#line 3416 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 129:
- #line 1470 "awkgram.y" /* yacc.c:1646  */
 -#line 1464 "awkgram.y" /* yacc.c:1646  */
++#line 1465 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3427 "awkgram.c" /* yacc.c:1646  */
 -#line 3421 "awkgram.c" /* yacc.c:1646  */
++#line 3422 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 130:
- #line 1472 "awkgram.y" /* yacc.c:1646  */
 -#line 1466 "awkgram.y" /* yacc.c:1646  */
++#line 1467 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3433 "awkgram.c" /* yacc.c:1646  */
 -#line 3427 "awkgram.c" /* yacc.c:1646  */
++#line 3428 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 131:
- #line 1474 "awkgram.y" /* yacc.c:1646  */
 -#line 1468 "awkgram.y" /* yacc.c:1646  */
++#line 1469 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3439 "awkgram.c" /* yacc.c:1646  */
 -#line 3433 "awkgram.c" /* yacc.c:1646  */
++#line 3434 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 132:
- #line 1476 "awkgram.y" /* yacc.c:1646  */
 -#line 1470 "awkgram.y" /* yacc.c:1646  */
++#line 1471 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3445 "awkgram.c" /* yacc.c:1646  */
 -#line 3439 "awkgram.c" /* yacc.c:1646  */
++#line 3440 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 133:
- #line 1478 "awkgram.y" /* yacc.c:1646  */
 -#line 1472 "awkgram.y" /* yacc.c:1646  */
++#line 1473 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3451 "awkgram.c" /* yacc.c:1646  */
 -#line 3445 "awkgram.c" /* yacc.c:1646  */
++#line 3446 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 134:
- #line 1480 "awkgram.y" /* yacc.c:1646  */
 -#line 1474 "awkgram.y" /* yacc.c:1646  */
++#line 1475 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3457 "awkgram.c" /* yacc.c:1646  */
 -#line 3451 "awkgram.c" /* yacc.c:1646  */
++#line 3452 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 135:
- #line 1482 "awkgram.y" /* yacc.c:1646  */
 -#line 1476 "awkgram.y" /* yacc.c:1646  */
++#line 1477 "awkgram.y" /* yacc.c:1646  */
      {
                /*
                 * In BEGINFILE/ENDFILE, allow `getline [var] < file'
@@@ -3471,29 -3465,29 +3466,29 @@@
                                _("non-redirected `getline' undefined inside 
END action"));
                (yyval) = mk_getline((yyvsp[-2]), (yyvsp[-1]), (yyvsp[0]), 
redirect_input);
          }
- #line 3475 "awkgram.c" /* yacc.c:1646  */
 -#line 3469 "awkgram.c" /* yacc.c:1646  */
++#line 3470 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 136:
- #line 1496 "awkgram.y" /* yacc.c:1646  */
 -#line 1490 "awkgram.y" /* yacc.c:1646  */
++#line 1491 "awkgram.y" /* yacc.c:1646  */
      {
                (yyvsp[0])->opcode = Op_postincrement;
                (yyval) = mk_assignment((yyvsp[-1]), NULL, (yyvsp[0]));
          }
- #line 3484 "awkgram.c" /* yacc.c:1646  */
 -#line 3478 "awkgram.c" /* yacc.c:1646  */
++#line 3479 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 137:
- #line 1501 "awkgram.y" /* yacc.c:1646  */
 -#line 1495 "awkgram.y" /* yacc.c:1646  */
++#line 1496 "awkgram.y" /* yacc.c:1646  */
      {
                (yyvsp[0])->opcode = Op_postdecrement;
                (yyval) = mk_assignment((yyvsp[-1]), NULL, (yyvsp[0]));
          }
- #line 3493 "awkgram.c" /* yacc.c:1646  */
 -#line 3487 "awkgram.c" /* yacc.c:1646  */
++#line 3488 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 138:
- #line 1506 "awkgram.y" /* yacc.c:1646  */
 -#line 1500 "awkgram.y" /* yacc.c:1646  */
++#line 1501 "awkgram.y" /* yacc.c:1646  */
      {
                if (do_lint_old) {
                    warning_ln((yyvsp[-1])->source_line,
@@@ -3513,64 -3507,64 +3508,64 @@@
                        (yyval) = list_append(list_merge(t, (yyvsp[0])), 
(yyvsp[-1]));
                }
          }
- #line 3517 "awkgram.c" /* yacc.c:1646  */
 -#line 3511 "awkgram.c" /* yacc.c:1646  */
++#line 3512 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 139:
- #line 1531 "awkgram.y" /* yacc.c:1646  */
 -#line 1525 "awkgram.y" /* yacc.c:1646  */
++#line 1526 "awkgram.y" /* yacc.c:1646  */
      {
                  (yyval) = mk_getline((yyvsp[-1]), (yyvsp[0]), (yyvsp[-3]), 
(yyvsp[-2])->redir_type);
                  bcfree((yyvsp[-2]));
                }
- #line 3526 "awkgram.c" /* yacc.c:1646  */
 -#line 3520 "awkgram.c" /* yacc.c:1646  */
++#line 3521 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 140:
- #line 1537 "awkgram.y" /* yacc.c:1646  */
 -#line 1531 "awkgram.y" /* yacc.c:1646  */
++#line 1532 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3532 "awkgram.c" /* yacc.c:1646  */
 -#line 3526 "awkgram.c" /* yacc.c:1646  */
++#line 3527 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 141:
- #line 1539 "awkgram.y" /* yacc.c:1646  */
 -#line 1533 "awkgram.y" /* yacc.c:1646  */
++#line 1534 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3538 "awkgram.c" /* yacc.c:1646  */
 -#line 3532 "awkgram.c" /* yacc.c:1646  */
++#line 3533 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 142:
- #line 1541 "awkgram.y" /* yacc.c:1646  */
 -#line 1535 "awkgram.y" /* yacc.c:1646  */
++#line 1536 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3544 "awkgram.c" /* yacc.c:1646  */
 -#line 3538 "awkgram.c" /* yacc.c:1646  */
++#line 3539 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 143:
- #line 1543 "awkgram.y" /* yacc.c:1646  */
 -#line 1537 "awkgram.y" /* yacc.c:1646  */
++#line 1538 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3550 "awkgram.c" /* yacc.c:1646  */
 -#line 3544 "awkgram.c" /* yacc.c:1646  */
++#line 3545 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 144:
- #line 1545 "awkgram.y" /* yacc.c:1646  */
 -#line 1539 "awkgram.y" /* yacc.c:1646  */
++#line 1540 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3556 "awkgram.c" /* yacc.c:1646  */
 -#line 3550 "awkgram.c" /* yacc.c:1646  */
++#line 3551 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 145:
- #line 1547 "awkgram.y" /* yacc.c:1646  */
 -#line 1541 "awkgram.y" /* yacc.c:1646  */
++#line 1542 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3562 "awkgram.c" /* yacc.c:1646  */
 -#line 3556 "awkgram.c" /* yacc.c:1646  */
++#line 3557 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 146:
- #line 1552 "awkgram.y" /* yacc.c:1646  */
 -#line 1546 "awkgram.y" /* yacc.c:1646  */
++#line 1547 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = list_create((yyvsp[0]));
          }
- #line 3570 "awkgram.c" /* yacc.c:1646  */
 -#line 3564 "awkgram.c" /* yacc.c:1646  */
++#line 3565 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 147:
- #line 1556 "awkgram.y" /* yacc.c:1646  */
 -#line 1550 "awkgram.y" /* yacc.c:1646  */
++#line 1551 "awkgram.y" /* yacc.c:1646  */
      {
                if ((yyvsp[0])->opcode == Op_match_rec) {
                        (yyvsp[0])->opcode = Op_nomatch;
@@@ -3602,37 -3596,37 +3597,37 @@@
                        }
                }
           }
- #line 3606 "awkgram.c" /* yacc.c:1646  */
 -#line 3600 "awkgram.c" /* yacc.c:1646  */
++#line 3601 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 148:
- #line 1588 "awkgram.y" /* yacc.c:1646  */
 -#line 1582 "awkgram.y" /* yacc.c:1646  */
++#line 1583 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[-1]); }
- #line 3612 "awkgram.c" /* yacc.c:1646  */
 -#line 3606 "awkgram.c" /* yacc.c:1646  */
++#line 3607 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 149:
- #line 1590 "awkgram.y" /* yacc.c:1646  */
 -#line 1584 "awkgram.y" /* yacc.c:1646  */
++#line 1585 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = snode((yyvsp[-1]), (yyvsp[-3]));
                if ((yyval) == NULL)
                        YYABORT;
          }
- #line 3622 "awkgram.c" /* yacc.c:1646  */
 -#line 3616 "awkgram.c" /* yacc.c:1646  */
++#line 3617 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 150:
- #line 1596 "awkgram.y" /* yacc.c:1646  */
 -#line 1590 "awkgram.y" /* yacc.c:1646  */
++#line 1591 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = snode((yyvsp[-1]), (yyvsp[-3]));
                if ((yyval) == NULL)
                        YYABORT;
          }
- #line 3632 "awkgram.c" /* yacc.c:1646  */
 -#line 3626 "awkgram.c" /* yacc.c:1646  */
++#line 3627 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 151:
- #line 1602 "awkgram.y" /* yacc.c:1646  */
 -#line 1596 "awkgram.y" /* yacc.c:1646  */
++#line 1597 "awkgram.y" /* yacc.c:1646  */
      {
                static bool warned = false;
  
@@@ -3645,45 -3639,45 +3640,45 @@@
                if ((yyval) == NULL)
                        YYABORT;
          }
- #line 3649 "awkgram.c" /* yacc.c:1646  */
 -#line 3643 "awkgram.c" /* yacc.c:1646  */
++#line 3644 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 154:
- #line 1617 "awkgram.y" /* yacc.c:1646  */
 -#line 1611 "awkgram.y" /* yacc.c:1646  */
++#line 1612 "awkgram.y" /* yacc.c:1646  */
      {
                (yyvsp[-1])->opcode = Op_preincrement;
                (yyval) = mk_assignment((yyvsp[0]), NULL, (yyvsp[-1]));
          }
- #line 3658 "awkgram.c" /* yacc.c:1646  */
 -#line 3652 "awkgram.c" /* yacc.c:1646  */
++#line 3653 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 155:
- #line 1622 "awkgram.y" /* yacc.c:1646  */
 -#line 1616 "awkgram.y" /* yacc.c:1646  */
++#line 1617 "awkgram.y" /* yacc.c:1646  */
      {
                (yyvsp[-1])->opcode = Op_predecrement;
                (yyval) = mk_assignment((yyvsp[0]), NULL, (yyvsp[-1]));
          }
- #line 3667 "awkgram.c" /* yacc.c:1646  */
 -#line 3661 "awkgram.c" /* yacc.c:1646  */
++#line 3662 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 156:
- #line 1627 "awkgram.y" /* yacc.c:1646  */
 -#line 1621 "awkgram.y" /* yacc.c:1646  */
++#line 1622 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = list_create((yyvsp[0]));
          }
- #line 3675 "awkgram.c" /* yacc.c:1646  */
 -#line 3669 "awkgram.c" /* yacc.c:1646  */
++#line 3670 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 157:
- #line 1631 "awkgram.y" /* yacc.c:1646  */
 -#line 1625 "awkgram.y" /* yacc.c:1646  */
++#line 1626 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = list_create((yyvsp[0]));
          }
- #line 3683 "awkgram.c" /* yacc.c:1646  */
 -#line 3677 "awkgram.c" /* yacc.c:1646  */
++#line 3678 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 158:
- #line 1635 "awkgram.y" /* yacc.c:1646  */
 -#line 1629 "awkgram.y" /* yacc.c:1646  */
++#line 1630 "awkgram.y" /* yacc.c:1646  */
      {
                if ((yyvsp[0])->lasti->opcode == Op_push_i
                        && ((yyvsp[0])->lasti->memory->flags & (STRCUR|STRING)) 
== 0
@@@ -3698,11 -3692,11 +3693,11 @@@
                        (yyval) = list_append((yyvsp[0]), (yyvsp[-1]));
                }
          }
- #line 3702 "awkgram.c" /* yacc.c:1646  */
 -#line 3696 "awkgram.c" /* yacc.c:1646  */
++#line 3697 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 159:
- #line 1650 "awkgram.y" /* yacc.c:1646  */
 -#line 1644 "awkgram.y" /* yacc.c:1646  */
++#line 1645 "awkgram.y" /* yacc.c:1646  */
      {
            /*
             * was: $$ = $2
@@@ -3712,20 -3706,20 +3707,20 @@@
                (yyvsp[-1])->memory = make_number(0.0);
                (yyval) = list_append((yyvsp[0]), (yyvsp[-1]));
          }
- #line 3716 "awkgram.c" /* yacc.c:1646  */
 -#line 3710 "awkgram.c" /* yacc.c:1646  */
++#line 3711 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 160:
- #line 1663 "awkgram.y" /* yacc.c:1646  */
 -#line 1657 "awkgram.y" /* yacc.c:1646  */
++#line 1658 "awkgram.y" /* yacc.c:1646  */
      {
                func_use((yyvsp[0])->lasti->func_name, FUNC_USE);
                (yyval) = (yyvsp[0]);
          }
- #line 3725 "awkgram.c" /* yacc.c:1646  */
 -#line 3719 "awkgram.c" /* yacc.c:1646  */
++#line 3720 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 161:
- #line 1668 "awkgram.y" /* yacc.c:1646  */
 -#line 1662 "awkgram.y" /* yacc.c:1646  */
++#line 1663 "awkgram.y" /* yacc.c:1646  */
      {
                /* indirect function call */
                INSTRUCTION *f, *t;
@@@ -3758,11 -3752,11 +3753,11 @@@
  
                (yyval) = list_prepend((yyvsp[0]), t);
          }
- #line 3762 "awkgram.c" /* yacc.c:1646  */
 -#line 3756 "awkgram.c" /* yacc.c:1646  */
++#line 3757 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 162:
- #line 1704 "awkgram.y" /* yacc.c:1646  */
 -#line 1698 "awkgram.y" /* yacc.c:1646  */
++#line 1699 "awkgram.y" /* yacc.c:1646  */
      {
                param_sanity((yyvsp[-1]));
                (yyvsp[-3])->opcode = Op_func_call;
@@@ -3776,49 -3770,49 +3771,49 @@@
                        (yyval) = list_append(t, (yyvsp[-3]));
                }
          }
- #line 3780 "awkgram.c" /* yacc.c:1646  */
 -#line 3774 "awkgram.c" /* yacc.c:1646  */
++#line 3775 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 163:
- #line 1721 "awkgram.y" /* yacc.c:1646  */
 -#line 1715 "awkgram.y" /* yacc.c:1646  */
++#line 1716 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 3786 "awkgram.c" /* yacc.c:1646  */
 -#line 3780 "awkgram.c" /* yacc.c:1646  */
++#line 3781 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 164:
- #line 1723 "awkgram.y" /* yacc.c:1646  */
 -#line 1717 "awkgram.y" /* yacc.c:1646  */
++#line 1718 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3792 "awkgram.c" /* yacc.c:1646  */
 -#line 3786 "awkgram.c" /* yacc.c:1646  */
++#line 3787 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 165:
- #line 1728 "awkgram.y" /* yacc.c:1646  */
 -#line 1722 "awkgram.y" /* yacc.c:1646  */
++#line 1723 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 3798 "awkgram.c" /* yacc.c:1646  */
 -#line 3792 "awkgram.c" /* yacc.c:1646  */
++#line 3793 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 166:
- #line 1730 "awkgram.y" /* yacc.c:1646  */
 -#line 1724 "awkgram.y" /* yacc.c:1646  */
++#line 1725 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[-1]); }
- #line 3804 "awkgram.c" /* yacc.c:1646  */
 -#line 3798 "awkgram.c" /* yacc.c:1646  */
++#line 3799 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 167:
- #line 1735 "awkgram.y" /* yacc.c:1646  */
 -#line 1729 "awkgram.y" /* yacc.c:1646  */
++#line 1730 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3810 "awkgram.c" /* yacc.c:1646  */
 -#line 3804 "awkgram.c" /* yacc.c:1646  */
++#line 3805 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 168:
- #line 1737 "awkgram.y" /* yacc.c:1646  */
 -#line 1731 "awkgram.y" /* yacc.c:1646  */
++#line 1732 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = list_merge((yyvsp[-1]), (yyvsp[0]));
          }
- #line 3818 "awkgram.c" /* yacc.c:1646  */
 -#line 3812 "awkgram.c" /* yacc.c:1646  */
++#line 3813 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 169:
- #line 1744 "awkgram.y" /* yacc.c:1646  */
 -#line 1738 "awkgram.y" /* yacc.c:1646  */
++#line 1739 "awkgram.y" /* yacc.c:1646  */
      {
                INSTRUCTION *ip = (yyvsp[0])->lasti; 
                int count = ip->sub_count;      /* # of SUBSEP-seperated 
expressions */
@@@ -3832,11 -3826,11 +3827,11 @@@
                sub_counter++;  /* count # of dimensions */
                (yyval) = (yyvsp[0]);
          }
- #line 3836 "awkgram.c" /* yacc.c:1646  */
 -#line 3830 "awkgram.c" /* yacc.c:1646  */
++#line 3831 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 170:
- #line 1761 "awkgram.y" /* yacc.c:1646  */
 -#line 1755 "awkgram.y" /* yacc.c:1646  */
++#line 1756 "awkgram.y" /* yacc.c:1646  */
      {
                INSTRUCTION *t = (yyvsp[-1]);
                if ((yyvsp[-1]) == NULL) {
@@@ -3850,31 -3844,31 +3845,31 @@@
                        (yyvsp[0])->sub_count = count_expressions(&t, false);
                (yyval) = list_append(t, (yyvsp[0]));
          }
- #line 3854 "awkgram.c" /* yacc.c:1646  */
 -#line 3848 "awkgram.c" /* yacc.c:1646  */
++#line 3849 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 171:
- #line 1778 "awkgram.y" /* yacc.c:1646  */
 -#line 1772 "awkgram.y" /* yacc.c:1646  */
++#line 1773 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3860 "awkgram.c" /* yacc.c:1646  */
 -#line 3854 "awkgram.c" /* yacc.c:1646  */
++#line 3855 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 172:
- #line 1780 "awkgram.y" /* yacc.c:1646  */
 -#line 1774 "awkgram.y" /* yacc.c:1646  */
++#line 1775 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = list_merge((yyvsp[-1]), (yyvsp[0]));
          }
- #line 3868 "awkgram.c" /* yacc.c:1646  */
 -#line 3862 "awkgram.c" /* yacc.c:1646  */
++#line 3863 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 173:
- #line 1787 "awkgram.y" /* yacc.c:1646  */
 -#line 1781 "awkgram.y" /* yacc.c:1646  */
++#line 1782 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[-1]); }
- #line 3874 "awkgram.c" /* yacc.c:1646  */
 -#line 3868 "awkgram.c" /* yacc.c:1646  */
++#line 3869 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 174:
- #line 1792 "awkgram.y" /* yacc.c:1646  */
 -#line 1786 "awkgram.y" /* yacc.c:1646  */
++#line 1787 "awkgram.y" /* yacc.c:1646  */
      {
                char *var_name = (yyvsp[0])->lextok;
  
@@@ -3882,22 -3876,22 +3877,22 @@@
                (yyvsp[0])->memory = variable((yyvsp[0])->source_line, 
var_name, Node_var_new);
                (yyval) = list_create((yyvsp[0]));
          }
- #line 3886 "awkgram.c" /* yacc.c:1646  */
 -#line 3880 "awkgram.c" /* yacc.c:1646  */
++#line 3881 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 175:
- #line 1800 "awkgram.y" /* yacc.c:1646  */
 -#line 1794 "awkgram.y" /* yacc.c:1646  */
++#line 1795 "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 3897 "awkgram.c" /* yacc.c:1646  */
 -#line 3891 "awkgram.c" /* yacc.c:1646  */
++#line 3892 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 176:
- #line 1810 "awkgram.y" /* yacc.c:1646  */
 -#line 1804 "awkgram.y" /* yacc.c:1646  */
++#line 1805 "awkgram.y" /* yacc.c:1646  */
      {
                INSTRUCTION *ip = (yyvsp[0])->nexti;
                if (ip->opcode == Op_push
@@@ -3909,73 -3903,73 +3904,73 @@@
                } else
                        (yyval) = (yyvsp[0]);
          }
- #line 3913 "awkgram.c" /* yacc.c:1646  */
 -#line 3907 "awkgram.c" /* yacc.c:1646  */
++#line 3908 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 177:
- #line 1822 "awkgram.y" /* yacc.c:1646  */
 -#line 1816 "awkgram.y" /* yacc.c:1646  */
++#line 1817 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = list_append((yyvsp[-1]), (yyvsp[-2]));
                if ((yyvsp[0]) != NULL)
                        mk_assignment((yyvsp[-1]), NULL, (yyvsp[0]));
          }
- #line 3923 "awkgram.c" /* yacc.c:1646  */
 -#line 3917 "awkgram.c" /* yacc.c:1646  */
++#line 3918 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 178:
- #line 1831 "awkgram.y" /* yacc.c:1646  */
 -#line 1825 "awkgram.y" /* yacc.c:1646  */
++#line 1826 "awkgram.y" /* yacc.c:1646  */
      {
                (yyvsp[0])->opcode = Op_postincrement;
          }
- #line 3931 "awkgram.c" /* yacc.c:1646  */
 -#line 3925 "awkgram.c" /* yacc.c:1646  */
++#line 3926 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 179:
- #line 1835 "awkgram.y" /* yacc.c:1646  */
 -#line 1829 "awkgram.y" /* yacc.c:1646  */
++#line 1830 "awkgram.y" /* yacc.c:1646  */
      {
                (yyvsp[0])->opcode = Op_postdecrement;
          }
- #line 3939 "awkgram.c" /* yacc.c:1646  */
 -#line 3933 "awkgram.c" /* yacc.c:1646  */
++#line 3934 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 180:
- #line 1838 "awkgram.y" /* yacc.c:1646  */
 -#line 1832 "awkgram.y" /* yacc.c:1646  */
++#line 1833 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 3945 "awkgram.c" /* yacc.c:1646  */
 -#line 3939 "awkgram.c" /* yacc.c:1646  */
++#line 3940 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 182:
- #line 1846 "awkgram.y" /* yacc.c:1646  */
 -#line 1840 "awkgram.y" /* yacc.c:1646  */
++#line 1841 "awkgram.y" /* yacc.c:1646  */
      { yyerrok; }
- #line 3951 "awkgram.c" /* yacc.c:1646  */
 -#line 3945 "awkgram.c" /* yacc.c:1646  */
++#line 3946 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 183:
- #line 1850 "awkgram.y" /* yacc.c:1646  */
 -#line 1844 "awkgram.y" /* yacc.c:1646  */
++#line 1845 "awkgram.y" /* yacc.c:1646  */
      { yyerrok; }
- #line 3957 "awkgram.c" /* yacc.c:1646  */
 -#line 3951 "awkgram.c" /* yacc.c:1646  */
++#line 3952 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 186:
- #line 1859 "awkgram.y" /* yacc.c:1646  */
 -#line 1853 "awkgram.y" /* yacc.c:1646  */
++#line 1854 "awkgram.y" /* yacc.c:1646  */
      { yyerrok; }
- #line 3963 "awkgram.c" /* yacc.c:1646  */
 -#line 3957 "awkgram.c" /* yacc.c:1646  */
++#line 3958 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 187:
- #line 1863 "awkgram.y" /* yacc.c:1646  */
 -#line 1857 "awkgram.y" /* yacc.c:1646  */
++#line 1858 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); yyerrok; }
- #line 3969 "awkgram.c" /* yacc.c:1646  */
 -#line 3963 "awkgram.c" /* yacc.c:1646  */
++#line 3964 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 188:
- #line 1867 "awkgram.y" /* yacc.c:1646  */
 -#line 1861 "awkgram.y" /* yacc.c:1646  */
++#line 1862 "awkgram.y" /* yacc.c:1646  */
      { yyerrok; }
- #line 3975 "awkgram.c" /* yacc.c:1646  */
 -#line 3969 "awkgram.c" /* yacc.c:1646  */
++#line 3970 "awkgram.c" /* yacc.c:1646  */
      break;
  
  
- #line 3979 "awkgram.c" /* yacc.c:1646  */
 -#line 3973 "awkgram.c" /* yacc.c:1646  */
++#line 3974 "awkgram.c" /* yacc.c:1646  */
        default: break;
      }
    /* User semantic actions sometimes alter yychar, and that requires
@@@ -4203,7 -4197,7 +4198,7 @@@ yyreturn
  #endif
    return yyresult;
  }
- #line 1869 "awkgram.y" /* yacc.c:1906  */
 -#line 1863 "awkgram.y" /* yacc.c:1906  */
++#line 1864 "awkgram.y" /* yacc.c:1906  */
  
  
  struct token {
diff --cc doc/ChangeLog
index 4a6fa08,e16bf9e..1e2d7af
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@@ -1,22 -1,8 +1,27 @@@
+ 2015-01-19         Arnold D. Robbins     <address@hidden>
+ 
+       * gawkinet.texi: Fix capitalization in document title.
+       * gawktexi.in: Here we again: Starting on more O'Reilly fixes.
+ 
 +2015-01-05         Andrew J. Schorr     <address@hidden>
 +
 +      * gawktexi.in: Improve get_file documentation.
 +
 +2015-01-05         Andrew J. Schorr     <address@hidden>
 +
 +      * gawktexi.in: Replace "Retrying I/O" with "Retrying Input", since this
 +      feature pertains to input, not output.
 +
 +2015-01-04         Andrew J. Schorr     <address@hidden>
 +
 +      * gawktexi.in: Document the get_file API function.
 +
 +2015-01-04         Andrew J. Schorr     <address@hidden>
 +
 +      * gawk.1: Document new features PROCINFO["errno"] and
 +      PROCINFO["input", "RETRY"], and new getline return value of -2.
 +      * gawktexi.in: Ditto.
 +
  2014-12-26         Antonio Giovanni Colombo   <address@hidden>
  
        * gawktexi.in (Glossary): Really sort the items.
diff --cc doc/gawk.info
index f0a9d84,376076d..ba5dbdf
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@@ -34571,562 -34454,560 +34572,562 @@@ Inde
  
  Tag Table:
  Node: Top1204
 -Node: Foreword342225
 -Node: Foreword446669
 -Node: Preface48200
 -Ref: Preface-Footnote-151071
 -Ref: Preface-Footnote-251178
 -Ref: Preface-Footnote-351411
 -Node: History51553
 -Node: Names53904
 -Ref: Names-Footnote-154997
 -Node: This Manual55143
 -Ref: This Manual-Footnote-161648
 -Node: Conventions61748
 -Node: Manual History64086
 -Ref: Manual History-Footnote-167068
 -Ref: Manual History-Footnote-267109
 -Node: How To Contribute67183
 -Node: Acknowledgments68312
 -Node: Getting Started73117
 -Node: Running gawk75550
 -Node: One-shot76740
 -Node: Read Terminal77988
 -Node: Long80015
 -Node: Executable Scripts81531
 -Ref: Executable Scripts-Footnote-184320
 -Node: Comments84423
 -Node: Quoting86905
 -Node: DOS Quoting92429
 -Node: Sample Data Files93104
 -Node: Very Simple95699
 -Node: Two Rules100597
 -Node: More Complex102483
 -Node: Statements/Lines105345
 -Ref: Statements/Lines-Footnote-1109800
 -Node: Other Features110065
 -Node: When110996
 -Ref: When-Footnote-1112750
 -Node: Intro Summary112815
 -Node: Invoking Gawk113698
 -Node: Command Line115212
 -Node: Options116010
 -Ref: Options-Footnote-1131814
 -Ref: Options-Footnote-2132043
 -Node: Other Arguments132068
 -Node: Naming Standard Input135016
 -Node: Environment Variables136109
 -Node: AWKPATH Variable136667
 -Ref: AWKPATH Variable-Footnote-1140080
 -Ref: AWKPATH Variable-Footnote-2140125
 -Node: AWKLIBPATH Variable140385
 -Node: Other Environment Variables141641
 -Node: Exit Status145129
 -Node: Include Files145805
 -Node: Loading Shared Libraries149402
 -Node: Obsolete150829
 -Node: Undocumented151526
 -Node: Invoking Summary151793
 -Node: Regexp153457
 -Node: Regexp Usage154911
 -Node: Escape Sequences156948
 -Node: Regexp Operators163189
 -Ref: Regexp Operators-Footnote-1170615
 -Ref: Regexp Operators-Footnote-2170762
 -Node: Bracket Expressions170860
 -Ref: table-char-classes172875
 -Node: Leftmost Longest175799
 -Node: Computed Regexps177101
 -Node: GNU Regexp Operators180498
 -Node: Case-sensitivity184171
 -Ref: Case-sensitivity-Footnote-1187056
 -Ref: Case-sensitivity-Footnote-2187291
 -Node: Regexp Summary187399
 -Node: Reading Files188866
 -Node: Records190960
 -Node: awk split records191693
 -Node: gawk split records196608
 -Ref: gawk split records-Footnote-1201152
 -Node: Fields201189
 -Ref: Fields-Footnote-1203965
 -Node: Nonconstant Fields204051
 -Ref: Nonconstant Fields-Footnote-1206294
 -Node: Changing Fields206498
 -Node: Field Separators212427
 -Node: Default Field Splitting215132
 -Node: Regexp Field Splitting216249
 -Node: Single Character Fields219599
 -Node: Command Line Field Separator220658
 -Node: Full Line Fields223870
 -Ref: Full Line Fields-Footnote-1225387
 -Ref: Full Line Fields-Footnote-2225433
 -Node: Field Splitting Summary225534
 -Node: Constant Size227608
 -Node: Splitting By Content232197
 -Ref: Splitting By Content-Footnote-1236191
 -Node: Multiple Line236354
 -Ref: Multiple Line-Footnote-1242240
 -Node: Getline242419
 -Node: Plain Getline244631
 -Node: Getline/Variable247271
 -Node: Getline/File248419
 -Node: Getline/Variable/File249803
 -Ref: Getline/Variable/File-Footnote-1251406
 -Node: Getline/Pipe251493
 -Node: Getline/Variable/Pipe254176
 -Node: Getline/Coprocess255307
 -Node: Getline/Variable/Coprocess256559
 -Node: Getline Notes257298
 -Node: Getline Summary260090
 -Ref: table-getline-variants260502
 -Node: Read Timeout261331
 -Ref: Read Timeout-Footnote-1265156
 -Node: Command-line directories265214
 -Node: Input Summary266119
 -Node: Input Exercises269420
 -Node: Printing270148
 -Node: Print271925
 -Node: Print Examples273382
 -Node: Output Separators276161
 -Node: OFMT278179
 -Node: Printf279533
 -Node: Basic Printf280318
 -Node: Control Letters281888
 -Node: Format Modifiers285871
 -Node: Printf Examples291880
 -Node: Redirection294366
 -Node: Special FD301207
 -Ref: Special FD-Footnote-1304367
 -Node: Special Files304441
 -Node: Other Inherited Files305058
 -Node: Special Network306058
 -Node: Special Caveats306920
 -Node: Close Files And Pipes307871
 -Ref: Close Files And Pipes-Footnote-1315053
 -Ref: Close Files And Pipes-Footnote-2315201
 -Node: Output Summary315351
 -Node: Output Exercises316349
 -Node: Expressions317029
 -Node: Values318214
 -Node: Constants318892
 -Node: Scalar Constants319583
 -Ref: Scalar Constants-Footnote-1320442
 -Node: Nondecimal-numbers320692
 -Node: Regexp Constants323710
 -Node: Using Constant Regexps324235
 -Node: Variables327378
 -Node: Using Variables328033
 -Node: Assignment Options329944
 -Node: Conversion331819
 -Node: Strings And Numbers332343
 -Ref: Strings And Numbers-Footnote-1335408
 -Node: Locale influences conversions335517
 -Ref: table-locale-affects338264
 -Node: All Operators338852
 -Node: Arithmetic Ops339482
 -Node: Concatenation341987
 -Ref: Concatenation-Footnote-1344806
 -Node: Assignment Ops344912
 -Ref: table-assign-ops349891
 -Node: Increment Ops351163
 -Node: Truth Values and Conditions354601
 -Node: Truth Values355686
 -Node: Typing and Comparison356735
 -Node: Variable Typing357545
 -Node: Comparison Operators361198
 -Ref: table-relational-ops361608
 -Node: POSIX String Comparison365103
 -Ref: POSIX String Comparison-Footnote-1366175
 -Node: Boolean Ops366313
 -Ref: Boolean Ops-Footnote-1370792
 -Node: Conditional Exp370883
 -Node: Function Calls372610
 -Node: Precedence376490
 -Node: Locales380151
 -Node: Expressions Summary381783
 -Node: Patterns and Actions384343
 -Node: Pattern Overview385463
 -Node: Regexp Patterns387142
 -Node: Expression Patterns387685
 -Node: Ranges391395
 -Node: BEGIN/END394501
 -Node: Using BEGIN/END395262
 -Ref: Using BEGIN/END-Footnote-1397996
 -Node: I/O And BEGIN/END398102
 -Node: BEGINFILE/ENDFILE400416
 -Node: Empty403317
 -Node: Using Shell Variables403634
 -Node: Action Overview405907
 -Node: Statements408233
 -Node: If Statement410081
 -Node: While Statement411576
 -Node: Do Statement413605
 -Node: For Statement414749
 -Node: Switch Statement417906
 -Node: Break Statement420288
 -Node: Continue Statement422329
 -Node: Next Statement424156
 -Node: Nextfile Statement426537
 -Node: Exit Statement429167
 -Node: Built-in Variables431570
 -Node: User-modified432703
 -Ref: User-modified-Footnote-1440384
 -Node: Auto-set440446
 -Ref: Auto-set-Footnote-1454138
 -Ref: Auto-set-Footnote-2454343
 -Node: ARGC and ARGV454399
 -Node: Pattern Action Summary458617
 -Node: Arrays461044
 -Node: Array Basics462373
 -Node: Array Intro463217
 -Ref: figure-array-elements465181
 -Ref: Array Intro-Footnote-1467707
 -Node: Reference to Elements467835
 -Node: Assigning Elements470287
 -Node: Array Example470778
 -Node: Scanning an Array472536
 -Node: Controlling Scanning475552
 -Ref: Controlling Scanning-Footnote-1480748
 -Node: Numeric Array Subscripts481064
 -Node: Uninitialized Subscripts483249
 -Node: Delete484866
 -Ref: Delete-Footnote-1487609
 -Node: Multidimensional487666
 -Node: Multiscanning490763
 -Node: Arrays of Arrays492352
 -Node: Arrays Summary497111
 -Node: Functions499203
 -Node: Built-in500102
 -Node: Calling Built-in501180
 -Node: Numeric Functions503171
 -Ref: Numeric Functions-Footnote-1507990
 -Ref: Numeric Functions-Footnote-2508347
 -Ref: Numeric Functions-Footnote-3508395
 -Node: String Functions508667
 -Ref: String Functions-Footnote-1532142
 -Ref: String Functions-Footnote-2532271
 -Ref: String Functions-Footnote-3532519
 -Node: Gory Details532606
 -Ref: table-sub-escapes534387
 -Ref: table-sub-proposed535907
 -Ref: table-posix-sub537271
 -Ref: table-gensub-escapes538807
 -Ref: Gory Details-Footnote-1539639
 -Node: I/O Functions539790
 -Ref: I/O Functions-Footnote-1547008
 -Node: Time Functions547155
 -Ref: Time Functions-Footnote-1557643
 -Ref: Time Functions-Footnote-2557711
 -Ref: Time Functions-Footnote-3557869
 -Ref: Time Functions-Footnote-4557980
 -Ref: Time Functions-Footnote-5558092
 -Ref: Time Functions-Footnote-6558319
 -Node: Bitwise Functions558585
 -Ref: table-bitwise-ops559147
 -Ref: Bitwise Functions-Footnote-1563456
 -Node: Type Functions563625
 -Node: I18N Functions564776
 -Node: User-defined566421
 -Node: Definition Syntax567226
 -Ref: Definition Syntax-Footnote-1572633
 -Node: Function Example572704
 -Ref: Function Example-Footnote-1575623
 -Node: Function Caveats575645
 -Node: Calling A Function576163
 -Node: Variable Scope577121
 -Node: Pass By Value/Reference580109
 -Node: Return Statement583604
 -Node: Dynamic Typing586585
 -Node: Indirect Calls587514
 -Ref: Indirect Calls-Footnote-1598816
 -Node: Functions Summary598944
 -Node: Library Functions601646
 -Ref: Library Functions-Footnote-1605255
 -Ref: Library Functions-Footnote-2605398
 -Node: Library Names605569
 -Ref: Library Names-Footnote-1609023
 -Ref: Library Names-Footnote-2609246
 -Node: General Functions609332
 -Node: Strtonum Function610435
 -Node: Assert Function613457
 -Node: Round Function616781
 -Node: Cliff Random Function618322
 -Node: Ordinal Functions619338
 -Ref: Ordinal Functions-Footnote-1622401
 -Ref: Ordinal Functions-Footnote-2622653
 -Node: Join Function622864
 -Ref: Join Function-Footnote-1624633
 -Node: Getlocaltime Function624833
 -Node: Readfile Function628577
 -Node: Shell Quoting630547
 -Node: Data File Management631948
 -Node: Filetrans Function632580
 -Node: Rewind Function636636
 -Node: File Checking638023
 -Ref: File Checking-Footnote-1639355
 -Node: Empty Files639556
 -Node: Ignoring Assigns641535
 -Node: Getopt Function643086
 -Ref: Getopt Function-Footnote-1654548
 -Node: Passwd Functions654748
 -Ref: Passwd Functions-Footnote-1663585
 -Node: Group Functions663673
 -Ref: Group Functions-Footnote-1671567
 -Node: Walking Arrays671780
 -Node: Library Functions Summary673383
 -Node: Library Exercises674784
 -Node: Sample Programs676064
 -Node: Running Examples676834
 -Node: Clones677562
 -Node: Cut Program678786
 -Node: Egrep Program688505
 -Ref: Egrep Program-Footnote-1696003
 -Node: Id Program696113
 -Node: Split Program699758
 -Ref: Split Program-Footnote-1703206
 -Node: Tee Program703334
 -Node: Uniq Program706123
 -Node: Wc Program713542
 -Ref: Wc Program-Footnote-1717792
 -Node: Miscellaneous Programs717886
 -Node: Dupword Program719099
 -Node: Alarm Program721130
 -Node: Translate Program725934
 -Ref: Translate Program-Footnote-1730499
 -Node: Labels Program730769
 -Ref: Labels Program-Footnote-1734120
 -Node: Word Sorting734204
 -Node: History Sorting738275
 -Node: Extract Program740111
 -Node: Simple Sed747636
 -Node: Igawk Program750704
 -Ref: Igawk Program-Footnote-1765028
 -Ref: Igawk Program-Footnote-2765229
 -Ref: Igawk Program-Footnote-3765351
 -Node: Anagram Program765466
 -Node: Signature Program768523
 -Node: Programs Summary769770
 -Node: Programs Exercises770963
 -Ref: Programs Exercises-Footnote-1775094
 -Node: Advanced Features775185
 -Node: Nondecimal Data777133
 -Node: Array Sorting778723
 -Node: Controlling Array Traversal779420
 -Ref: Controlling Array Traversal-Footnote-1787753
 -Node: Array Sorting Functions787871
 -Ref: Array Sorting Functions-Footnote-1791760
 -Node: Two-way I/O791956
 -Ref: Two-way I/O-Footnote-1796901
 -Ref: Two-way I/O-Footnote-2797087
 -Node: TCP/IP Networking797169
 -Node: Profiling800042
 -Node: Advanced Features Summary808319
 -Node: Internationalization810252
 -Node: I18N and L10N811732
 -Node: Explaining gettext812418
 -Ref: Explaining gettext-Footnote-1817443
 -Ref: Explaining gettext-Footnote-2817627
 -Node: Programmer i18n817792
 -Ref: Programmer i18n-Footnote-1822658
 -Node: Translator i18n822707
 -Node: String Extraction823501
 -Ref: String Extraction-Footnote-1824632
 -Node: Printf Ordering824718
 -Ref: Printf Ordering-Footnote-1827504
 -Node: I18N Portability827568
 -Ref: I18N Portability-Footnote-1830023
 -Node: I18N Example830086
 -Ref: I18N Example-Footnote-1832889
 -Node: Gawk I18N832961
 -Node: I18N Summary833599
 -Node: Debugger834938
 -Node: Debugging835960
 -Node: Debugging Concepts836401
 -Node: Debugging Terms838254
 -Node: Awk Debugging840826
 -Node: Sample Debugging Session841720
 -Node: Debugger Invocation842240
 -Node: Finding The Bug843624
 -Node: List of Debugger Commands850099
 -Node: Breakpoint Control851432
 -Node: Debugger Execution Control855128
 -Node: Viewing And Changing Data858492
 -Node: Execution Stack861870
 -Node: Debugger Info863507
 -Node: Miscellaneous Debugger Commands867524
 -Node: Readline Support872553
 -Node: Limitations873445
 -Node: Debugging Summary875559
 -Node: Arbitrary Precision Arithmetic876727
 -Node: Computer Arithmetic878143
 -Ref: table-numeric-ranges881741
 -Ref: Computer Arithmetic-Footnote-1882600
 -Node: Math Definitions882657
 -Ref: table-ieee-formats885945
 -Ref: Math Definitions-Footnote-1886549
 -Node: MPFR features886654
 -Node: FP Math Caution888325
 -Ref: FP Math Caution-Footnote-1889375
 -Node: Inexactness of computations889744
 -Node: Inexact representation890703
 -Node: Comparing FP Values892060
 -Node: Errors accumulate893142
 -Node: Getting Accuracy894575
 -Node: Try To Round897237
 -Node: Setting precision898136
 -Ref: table-predefined-precision-strings898820
 -Node: Setting the rounding mode900609
 -Ref: table-gawk-rounding-modes900973
 -Ref: Setting the rounding mode-Footnote-1904428
 -Node: Arbitrary Precision Integers904607
 -Ref: Arbitrary Precision Integers-Footnote-1909506
 -Node: POSIX Floating Point Problems909655
 -Ref: POSIX Floating Point Problems-Footnote-1913528
 -Node: Floating point summary913566
 -Node: Dynamic Extensions915760
 -Node: Extension Intro917312
 -Node: Plugin License918578
 -Node: Extension Mechanism Outline919375
 -Ref: figure-load-extension919803
 -Ref: figure-register-new-function921283
 -Ref: figure-call-new-function922287
 -Node: Extension API Description924273
 -Node: Extension API Functions Introduction925723
 -Node: General Data Types930547
 -Ref: General Data Types-Footnote-1936286
 -Node: Memory Allocation Functions936585
 -Ref: Memory Allocation Functions-Footnote-1939424
 -Node: Constructor Functions939520
 -Node: Registration Functions941254
 -Node: Extension Functions941939
 -Node: Exit Callback Functions944236
 -Node: Extension Version String945484
 -Node: Input Parsers946149
 -Node: Output Wrappers956028
 -Node: Two-way processors960543
 -Node: Printing Messages962747
 -Ref: Printing Messages-Footnote-1963823
 -Node: Updating `ERRNO'963975
 -Node: Requesting Values964715
 -Ref: table-value-types-returned965443
 -Node: Accessing Parameters966400
 -Node: Symbol Table Access967631
 -Node: Symbol table by name968145
 -Node: Symbol table by cookie970126
 -Ref: Symbol table by cookie-Footnote-1974270
 -Node: Cached values974333
 -Ref: Cached values-Footnote-1977832
 -Node: Array Manipulation977923
 -Ref: Array Manipulation-Footnote-1979021
 -Node: Array Data Types979058
 -Ref: Array Data Types-Footnote-1981713
 -Node: Array Functions981805
 -Node: Flattening Arrays985659
 -Node: Creating Arrays992551
 -Node: Extension API Variables997322
 -Node: Extension Versioning997958
 -Node: Extension API Informational Variables999859
 -Node: Extension API Boilerplate1000924
 -Node: Finding Extensions1004733
 -Node: Extension Example1005293
 -Node: Internal File Description1006065
 -Node: Internal File Ops1010132
 -Ref: Internal File Ops-Footnote-11021802
 -Node: Using Internal File Ops1021942
 -Ref: Using Internal File Ops-Footnote-11024325
 -Node: Extension Samples1024598
 -Node: Extension Sample File Functions1026124
 -Node: Extension Sample Fnmatch1033762
 -Node: Extension Sample Fork1035253
 -Node: Extension Sample Inplace1036468
 -Node: Extension Sample Ord1038143
 -Node: Extension Sample Readdir1038979
 -Ref: table-readdir-file-types1039855
 -Node: Extension Sample Revout1040666
 -Node: Extension Sample Rev2way1041256
 -Node: Extension Sample Read write array1041996
 -Node: Extension Sample Readfile1043936
 -Node: Extension Sample Time1045031
 -Node: Extension Sample API Tests1046380
 -Node: gawkextlib1046871
 -Node: Extension summary1049529
 -Node: Extension Exercises1053218
 -Node: Language History1053940
 -Node: V7/SVR3.11055596
 -Node: SVR41057777
 -Node: POSIX1059222
 -Node: BTL1060611
 -Node: POSIX/GNU1061345
 -Node: Feature History1066969
 -Node: Common Extensions1080067
 -Node: Ranges and Locales1081391
 -Ref: Ranges and Locales-Footnote-11086009
 -Ref: Ranges and Locales-Footnote-21086036
 -Ref: Ranges and Locales-Footnote-31086270
 -Node: Contributors1086491
 -Node: History summary1092032
 -Node: Installation1093402
 -Node: Gawk Distribution1094348
 -Node: Getting1094832
 -Node: Extracting1095655
 -Node: Distribution contents1097290
 -Node: Unix Installation1103355
 -Node: Quick Installation1104038
 -Node: Shell Startup Files1106449
 -Node: Additional Configuration Options1107528
 -Node: Configuration Philosophy1109267
 -Node: Non-Unix Installation1111636
 -Node: PC Installation1112094
 -Node: PC Binary Installation1113413
 -Node: PC Compiling1115261
 -Ref: PC Compiling-Footnote-11118282
 -Node: PC Testing1118391
 -Node: PC Using1119567
 -Node: Cygwin1123682
 -Node: MSYS1124505
 -Node: VMS Installation1125005
 -Node: VMS Compilation1125797
 -Ref: VMS Compilation-Footnote-11127019
 -Node: VMS Dynamic Extensions1127077
 -Node: VMS Installation Details1128761
 -Node: VMS Running1131013
 -Node: VMS GNV1133849
 -Node: VMS Old Gawk1134583
 -Node: Bugs1135053
 -Node: Other Versions1138936
 -Node: Installation summary1145364
 -Node: Notes1146420
 -Node: Compatibility Mode1147285
 -Node: Additions1148067
 -Node: Accessing The Source1148992
 -Node: Adding Code1150428
 -Node: New Ports1156593
 -Node: Derived Files1161075
 -Ref: Derived Files-Footnote-11166550
 -Ref: Derived Files-Footnote-21166584
 -Ref: Derived Files-Footnote-31167180
 -Node: Future Extensions1167294
 -Node: Implementation Limitations1167900
 -Node: Extension Design1169148
 -Node: Old Extension Problems1170302
 -Ref: Old Extension Problems-Footnote-11171819
 -Node: Extension New Mechanism Goals1171876
 -Ref: Extension New Mechanism Goals-Footnote-11175236
 -Node: Extension Other Design Decisions1175425
 -Node: Extension Future Growth1177533
 -Node: Old Extension Mechanism1178369
 -Node: Notes summary1180131
 -Node: Basic Concepts1181317
 -Node: Basic High Level1181998
 -Ref: figure-general-flow1182270
 -Ref: figure-process-flow1182869
 -Ref: Basic High Level-Footnote-11186098
 -Node: Basic Data Typing1186283
 -Node: Glossary1189611
 -Node: Copying1214769
 -Node: GNU Free Documentation License1252325
 -Node: Index1277461
 +Node: Foreword342385
- Node: Foreword446827
- Node: Preface48349
- Ref: Preface-Footnote-151220
- Ref: Preface-Footnote-251327
- Ref: Preface-Footnote-351560
- Node: History51702
- Node: Names54048
- Ref: Names-Footnote-155142
- Node: This Manual55288
- Ref: This Manual-Footnote-161775
- Node: Conventions61875
- Node: Manual History64213
- Ref: Manual History-Footnote-167195
- Ref: Manual History-Footnote-267236
- Node: How To Contribute67310
- Node: Acknowledgments68439
- Node: Getting Started73244
- Node: Running gawk75677
- Node: One-shot76867
- Node: Read Terminal78115
- Node: Long80142
- Node: Executable Scripts81658
- Ref: Executable Scripts-Footnote-184447
- Node: Comments84550
- Node: Quoting87032
- Node: DOS Quoting92556
- Node: Sample Data Files93231
- Node: Very Simple95826
- Node: Two Rules100724
- Node: More Complex102610
- Node: Statements/Lines105472
- Ref: Statements/Lines-Footnote-1109927
- Node: Other Features110192
- Node: When111123
- Ref: When-Footnote-1112877
- Node: Intro Summary112942
- Node: Invoking Gawk113825
- Node: Command Line115339
- Node: Options116137
- Ref: Options-Footnote-1131941
- Ref: Options-Footnote-2132170
- Node: Other Arguments132195
- Node: Naming Standard Input135143
- Node: Environment Variables136236
- Node: AWKPATH Variable136794
- Ref: AWKPATH Variable-Footnote-1140207
- Ref: AWKPATH Variable-Footnote-2140252
- Node: AWKLIBPATH Variable140512
- Node: Other Environment Variables141768
- Node: Exit Status145256
- Node: Include Files145932
- Node: Loading Shared Libraries149529
- Node: Obsolete150956
- Node: Undocumented151653
- Node: Invoking Summary151920
- Node: Regexp153584
- Node: Regexp Usage155038
- Node: Escape Sequences157075
- Node: Regexp Operators163316
- Ref: Regexp Operators-Footnote-1170742
- Ref: Regexp Operators-Footnote-2170889
- Node: Bracket Expressions170987
- Ref: table-char-classes173002
- Node: Leftmost Longest175926
- Node: Computed Regexps177228
- Node: GNU Regexp Operators180625
- Node: Case-sensitivity184298
- Ref: Case-sensitivity-Footnote-1187183
- Ref: Case-sensitivity-Footnote-2187418
- Node: Regexp Summary187526
- Node: Reading Files188993
- Node: Records191156
- Node: awk split records191889
- Node: gawk split records196804
- Ref: gawk split records-Footnote-1201348
- Node: Fields201385
- Ref: Fields-Footnote-1204161
- Node: Nonconstant Fields204247
- Ref: Nonconstant Fields-Footnote-1206490
- Node: Changing Fields206694
- Node: Field Separators212623
- Node: Default Field Splitting215328
- Node: Regexp Field Splitting216445
- Node: Single Character Fields219795
- Node: Command Line Field Separator220854
- Node: Full Line Fields224066
- Ref: Full Line Fields-Footnote-1225583
- Ref: Full Line Fields-Footnote-2225629
- Node: Field Splitting Summary225730
- Node: Constant Size227804
- Node: Splitting By Content232393
- Ref: Splitting By Content-Footnote-1236387
- Node: Multiple Line236550
- Ref: Multiple Line-Footnote-1242436
- Node: Getline242615
- Node: Plain Getline245099
- Node: Getline/Variable247739
- Node: Getline/File248887
- Node: Getline/Variable/File250271
- Ref: Getline/Variable/File-Footnote-1251874
- Node: Getline/Pipe251961
- Node: Getline/Variable/Pipe254644
- Node: Getline/Coprocess255775
- Node: Getline/Variable/Coprocess257027
- Node: Getline Notes257766
- Node: Getline Summary260558
- Ref: table-getline-variants260970
- Node: Read Timeout261799
- Ref: Read Timeout-Footnote-1265690
- Node: Retrying Input265748
- Node: Command-line directories266943
- Node: Input Summary267850
- Node: Input Exercises271151
- Node: Printing271879
- Node: Print273656
- Node: Print Examples275113
- Node: Output Separators277892
- Node: OFMT279910
- Node: Printf281264
- Node: Basic Printf282049
- Node: Control Letters283619
- Node: Format Modifiers287602
- Node: Printf Examples293611
- Node: Redirection296097
- Node: Special FD302938
- Ref: Special FD-Footnote-1306098
- Node: Special Files306172
- Node: Other Inherited Files306789
- Node: Special Network307789
- Node: Special Caveats308651
- Node: Close Files And Pipes309602
- Ref: Close Files And Pipes-Footnote-1316784
- Ref: Close Files And Pipes-Footnote-2316932
- Node: Output Summary317082
- Node: Output Exercises318080
- Node: Expressions318760
- Node: Values319945
- Node: Constants320623
- Node: Scalar Constants321314
- Ref: Scalar Constants-Footnote-1322173
- Node: Nondecimal-numbers322423
- Node: Regexp Constants325441
- Node: Using Constant Regexps325966
- Node: Variables329109
- Node: Using Variables329764
- Node: Assignment Options331675
- Node: Conversion333550
- Node: Strings And Numbers334074
- Ref: Strings And Numbers-Footnote-1337139
- Node: Locale influences conversions337248
- Ref: table-locale-affects339995
- Node: All Operators340583
- Node: Arithmetic Ops341213
- Node: Concatenation343718
- Ref: Concatenation-Footnote-1346537
- Node: Assignment Ops346643
- Ref: table-assign-ops351622
- Node: Increment Ops352894
- Node: Truth Values and Conditions356332
- Node: Truth Values357417
- Node: Typing and Comparison358466
- Node: Variable Typing359276
- Node: Comparison Operators362929
- Ref: table-relational-ops363339
- Node: POSIX String Comparison366834
- Ref: POSIX String Comparison-Footnote-1367906
- Node: Boolean Ops368044
- Ref: Boolean Ops-Footnote-1372523
- Node: Conditional Exp372614
- Node: Function Calls374341
- Node: Precedence378221
- Node: Locales381882
- Node: Expressions Summary383514
- Node: Patterns and Actions386074
- Node: Pattern Overview387194
- Node: Regexp Patterns388873
- Node: Expression Patterns389416
- Node: Ranges393126
- Node: BEGIN/END396232
- Node: Using BEGIN/END396993
- Ref: Using BEGIN/END-Footnote-1399727
- Node: I/O And BEGIN/END399833
- Node: BEGINFILE/ENDFILE402147
- Node: Empty405048
- Node: Using Shell Variables405365
- Node: Action Overview407638
- Node: Statements409964
- Node: If Statement411812
- Node: While Statement413307
- Node: Do Statement415336
- Node: For Statement416480
- Node: Switch Statement419637
- Node: Break Statement422019
- Node: Continue Statement424060
- Node: Next Statement425887
- Node: Nextfile Statement428268
- Node: Exit Statement430898
- Node: Built-in Variables433301
- Node: User-modified434434
- Ref: User-modified-Footnote-1442115
- Node: Auto-set442177
- Ref: Auto-set-Footnote-1456393
- Ref: Auto-set-Footnote-2456598
- Node: ARGC and ARGV456654
- Node: Pattern Action Summary460872
- Node: Arrays463299
- Node: Array Basics464628
- Node: Array Intro465472
- Ref: figure-array-elements467436
- Ref: Array Intro-Footnote-1469962
- Node: Reference to Elements470090
- Node: Assigning Elements472542
- Node: Array Example473033
- Node: Scanning an Array474791
- Node: Controlling Scanning477807
- Ref: Controlling Scanning-Footnote-1483003
- Node: Numeric Array Subscripts483319
- Node: Uninitialized Subscripts485504
- Node: Delete487121
- Ref: Delete-Footnote-1489864
- Node: Multidimensional489921
- Node: Multiscanning493018
- Node: Arrays of Arrays494607
- Node: Arrays Summary499366
- Node: Functions501458
- Node: Built-in502357
- Node: Calling Built-in503435
- Node: Numeric Functions505426
- Ref: Numeric Functions-Footnote-1510245
- Ref: Numeric Functions-Footnote-2510602
- Ref: Numeric Functions-Footnote-3510650
- Node: String Functions510922
- Ref: String Functions-Footnote-1534397
- Ref: String Functions-Footnote-2534526
- Ref: String Functions-Footnote-3534774
- Node: Gory Details534861
- Ref: table-sub-escapes536642
- Ref: table-sub-proposed538162
- Ref: table-posix-sub539526
- Ref: table-gensub-escapes541062
- Ref: Gory Details-Footnote-1541894
- Node: I/O Functions542045
- Ref: I/O Functions-Footnote-1549263
- Node: Time Functions549410
- Ref: Time Functions-Footnote-1559898
- Ref: Time Functions-Footnote-2559966
- Ref: Time Functions-Footnote-3560124
- Ref: Time Functions-Footnote-4560235
- Ref: Time Functions-Footnote-5560347
- Ref: Time Functions-Footnote-6560574
- Node: Bitwise Functions560840
- Ref: table-bitwise-ops561402
- Ref: Bitwise Functions-Footnote-1565711
- Node: Type Functions565880
- Node: I18N Functions567031
- Node: User-defined568676
- Node: Definition Syntax569481
- Ref: Definition Syntax-Footnote-1574888
- Node: Function Example574959
- Ref: Function Example-Footnote-1577878
- Node: Function Caveats577900
- Node: Calling A Function578418
- Node: Variable Scope579376
- Node: Pass By Value/Reference582364
- Node: Return Statement585859
- Node: Dynamic Typing588840
- Node: Indirect Calls589769
- Ref: Indirect Calls-Footnote-1601071
- Node: Functions Summary601199
- Node: Library Functions603901
- Ref: Library Functions-Footnote-1607510
- Ref: Library Functions-Footnote-2607653
- Node: Library Names607824
- Ref: Library Names-Footnote-1611278
- Ref: Library Names-Footnote-2611501
- Node: General Functions611587
- Node: Strtonum Function612690
- Node: Assert Function615712
- Node: Round Function619036
- Node: Cliff Random Function620577
- Node: Ordinal Functions621593
- Ref: Ordinal Functions-Footnote-1624656
- Ref: Ordinal Functions-Footnote-2624908
- Node: Join Function625119
- Ref: Join Function-Footnote-1626888
- Node: Getlocaltime Function627088
- Node: Readfile Function630832
- Node: Shell Quoting632802
- Node: Data File Management634203
- Node: Filetrans Function634835
- Node: Rewind Function638891
- Node: File Checking640278
- Ref: File Checking-Footnote-1641610
- Node: Empty Files641811
- Node: Ignoring Assigns643790
- Node: Getopt Function645341
- Ref: Getopt Function-Footnote-1656803
- Node: Passwd Functions657003
- Ref: Passwd Functions-Footnote-1665840
- Node: Group Functions665928
- Ref: Group Functions-Footnote-1673822
- Node: Walking Arrays674035
- Node: Library Functions Summary675638
- Node: Library Exercises677039
- Node: Sample Programs678319
- Node: Running Examples679089
- Node: Clones679817
- Node: Cut Program681041
- Node: Egrep Program690760
- Ref: Egrep Program-Footnote-1698258
- Node: Id Program698368
- Node: Split Program702013
- Ref: Split Program-Footnote-1705461
- Node: Tee Program705589
- Node: Uniq Program708378
- Node: Wc Program715797
- Ref: Wc Program-Footnote-1720047
- Node: Miscellaneous Programs720141
- Node: Dupword Program721354
- Node: Alarm Program723385
- Node: Translate Program728189
- Ref: Translate Program-Footnote-1732754
- Node: Labels Program733024
- Ref: Labels Program-Footnote-1736375
- Node: Word Sorting736459
- Node: History Sorting740530
- Node: Extract Program742366
- Node: Simple Sed749891
- Node: Igawk Program752959
- Ref: Igawk Program-Footnote-1767283
- Ref: Igawk Program-Footnote-2767484
- Ref: Igawk Program-Footnote-3767606
- Node: Anagram Program767721
- Node: Signature Program770778
- Node: Programs Summary772025
- Node: Programs Exercises773218
- Ref: Programs Exercises-Footnote-1777349
- Node: Advanced Features777440
- Node: Nondecimal Data779388
- Node: Array Sorting780978
- Node: Controlling Array Traversal781675
- Ref: Controlling Array Traversal-Footnote-1790008
- Node: Array Sorting Functions790126
- Ref: Array Sorting Functions-Footnote-1794015
- Node: Two-way I/O794211
- Ref: Two-way I/O-Footnote-1799156
- Ref: Two-way I/O-Footnote-2799342
- Node: TCP/IP Networking799424
- Node: Profiling802297
- Node: Advanced Features Summary810574
- Node: Internationalization812507
- Node: I18N and L10N813987
- Node: Explaining gettext814673
- Ref: Explaining gettext-Footnote-1819698
- Ref: Explaining gettext-Footnote-2819882
- Node: Programmer i18n820047
- Ref: Programmer i18n-Footnote-1824913
- Node: Translator i18n824962
- Node: String Extraction825756
- Ref: String Extraction-Footnote-1826887
- Node: Printf Ordering826973
- Ref: Printf Ordering-Footnote-1829759
- Node: I18N Portability829823
- Ref: I18N Portability-Footnote-1832278
- Node: I18N Example832341
- Ref: I18N Example-Footnote-1835144
- Node: Gawk I18N835216
- Node: I18N Summary835854
- Node: Debugger837193
- Node: Debugging838215
- Node: Debugging Concepts838656
- Node: Debugging Terms840509
- Node: Awk Debugging843081
- Node: Sample Debugging Session843975
- Node: Debugger Invocation844495
- Node: Finding The Bug845879
- Node: List of Debugger Commands852354
- Node: Breakpoint Control853687
- Node: Debugger Execution Control857383
- Node: Viewing And Changing Data860747
- Node: Execution Stack864125
- Node: Debugger Info865762
- Node: Miscellaneous Debugger Commands869779
- Node: Readline Support874808
- Node: Limitations875700
- Node: Debugging Summary877814
- Node: Arbitrary Precision Arithmetic878982
- Node: Computer Arithmetic880398
- Ref: table-numeric-ranges883996
- Ref: Computer Arithmetic-Footnote-1884855
- Node: Math Definitions884912
- Ref: table-ieee-formats888200
- Ref: Math Definitions-Footnote-1888804
- Node: MPFR features888909
- Node: FP Math Caution890580
- Ref: FP Math Caution-Footnote-1891630
- Node: Inexactness of computations891999
- Node: Inexact representation892958
- Node: Comparing FP Values894315
- Node: Errors accumulate895397
- Node: Getting Accuracy896830
- Node: Try To Round899492
- Node: Setting precision900391
- Ref: table-predefined-precision-strings901075
- Node: Setting the rounding mode902864
- Ref: table-gawk-rounding-modes903228
- Ref: Setting the rounding mode-Footnote-1906683
- Node: Arbitrary Precision Integers906862
- Ref: Arbitrary Precision Integers-Footnote-1911761
- Node: POSIX Floating Point Problems911910
- Ref: POSIX Floating Point Problems-Footnote-1915783
- Node: Floating point summary915821
- Node: Dynamic Extensions918015
- Node: Extension Intro919567
- Node: Plugin License920833
- Node: Extension Mechanism Outline921630
- Ref: figure-load-extension922058
- Ref: figure-register-new-function923538
- Ref: figure-call-new-function924542
- Node: Extension API Description926528
- Node: Extension API Functions Introduction928062
- Node: General Data Types932934
- Ref: General Data Types-Footnote-1938673
- Node: Memory Allocation Functions938972
- Ref: Memory Allocation Functions-Footnote-1941811
- Node: Constructor Functions941907
- Node: Registration Functions943641
- Node: Extension Functions944326
- Node: Exit Callback Functions946623
- Node: Extension Version String947871
- Node: Input Parsers948536
- Node: Output Wrappers958415
- Node: Two-way processors962930
- Node: Printing Messages965134
- Ref: Printing Messages-Footnote-1966210
- Node: Updating `ERRNO'966362
- Node: Requesting Values967102
- Ref: table-value-types-returned967830
- Node: Accessing Parameters968787
- Node: Symbol Table Access970018
- Node: Symbol table by name970532
- Node: Symbol table by cookie972513
- Ref: Symbol table by cookie-Footnote-1976657
- Node: Cached values976720
- Ref: Cached values-Footnote-1980219
- Node: Array Manipulation980310
- Ref: Array Manipulation-Footnote-1981400
- Node: Array Data Types981437
- Ref: Array Data Types-Footnote-1984092
- Node: Array Functions984184
- Node: Flattening Arrays988038
- Node: Creating Arrays994930
- Node: Redirection API999701
- Node: Extension API Variables1002472
- Node: Extension Versioning1003105
- Node: Extension API Informational Variables1005006
- Node: Extension API Boilerplate1006071
- Node: Finding Extensions1009880
- Node: Extension Example1010440
- Node: Internal File Description1011212
- Node: Internal File Ops1015279
- Ref: Internal File Ops-Footnote-11026949
- Node: Using Internal File Ops1027089
- Ref: Using Internal File Ops-Footnote-11029472
- Node: Extension Samples1029745
- Node: Extension Sample File Functions1031271
- Node: Extension Sample Fnmatch1038909
- Node: Extension Sample Fork1040400
- Node: Extension Sample Inplace1041615
- Node: Extension Sample Ord1043290
- Node: Extension Sample Readdir1044126
- Ref: table-readdir-file-types1045002
- Node: Extension Sample Revout1045813
- Node: Extension Sample Rev2way1046403
- Node: Extension Sample Read write array1047143
- Node: Extension Sample Readfile1049083
- Node: Extension Sample Time1050178
- Node: Extension Sample API Tests1051527
- Node: gawkextlib1052018
- Node: Extension summary1054676
- Node: Extension Exercises1058365
- Node: Language History1059087
- Node: V7/SVR3.11060743
- Node: SVR41062924
- Node: POSIX1064369
- Node: BTL1065758
- Node: POSIX/GNU1066492
- Node: Feature History1072116
- Node: Common Extensions1085214
- Node: Ranges and Locales1086538
- Ref: Ranges and Locales-Footnote-11091156
- Ref: Ranges and Locales-Footnote-21091183
- Ref: Ranges and Locales-Footnote-31091417
- Node: Contributors1091638
- Node: History summary1097179
- Node: Installation1098549
- Node: Gawk Distribution1099495
- Node: Getting1099979
- Node: Extracting1100802
- Node: Distribution contents1102437
- Node: Unix Installation1108502
- Node: Quick Installation1109185
- Node: Shell Startup Files1111596
- Node: Additional Configuration Options1112675
- Node: Configuration Philosophy1114414
- Node: Non-Unix Installation1116783
- Node: PC Installation1117241
- Node: PC Binary Installation1118560
- Node: PC Compiling1120408
- Ref: PC Compiling-Footnote-11123429
- Node: PC Testing1123538
- Node: PC Using1124714
- Node: Cygwin1128829
- Node: MSYS1129652
- Node: VMS Installation1130152
- Node: VMS Compilation1130944
- Ref: VMS Compilation-Footnote-11132166
- Node: VMS Dynamic Extensions1132224
- Node: VMS Installation Details1133908
- Node: VMS Running1136160
- Node: VMS GNV1138996
- Node: VMS Old Gawk1139730
- Node: Bugs1140200
- Node: Other Versions1144083
- Node: Installation summary1150511
- Node: Notes1151567
- Node: Compatibility Mode1152432
- Node: Additions1153214
- Node: Accessing The Source1154139
- Node: Adding Code1155575
- Node: New Ports1161740
- Node: Derived Files1166222
- Ref: Derived Files-Footnote-11171697
- Ref: Derived Files-Footnote-21171731
- Ref: Derived Files-Footnote-31172327
- Node: Future Extensions1172441
- Node: Implementation Limitations1173047
- Node: Extension Design1174295
- Node: Old Extension Problems1175449
- Ref: Old Extension Problems-Footnote-11176966
- Node: Extension New Mechanism Goals1177023
- Ref: Extension New Mechanism Goals-Footnote-11180383
- Node: Extension Other Design Decisions1180572
- Node: Extension Future Growth1182680
- Node: Old Extension Mechanism1183516
- Node: Notes summary1185278
- Node: Basic Concepts1186464
- Node: Basic High Level1187145
- Ref: figure-general-flow1187417
- Ref: figure-process-flow1188016
- Ref: Basic High Level-Footnote-11191245
- Node: Basic Data Typing1191430
- Node: Glossary1194758
- Node: Copying1219916
- Node: GNU Free Documentation License1257472
- Node: Index1282608
++Node: Foreword446829
++Node: Preface48360
++Ref: Preface-Footnote-151231
++Ref: Preface-Footnote-251338
++Ref: Preface-Footnote-351571
++Node: History51713
++Node: Names54064
++Ref: Names-Footnote-155157
++Node: This Manual55303
++Ref: This Manual-Footnote-161808
++Node: Conventions61908
++Node: Manual History64246
++Ref: Manual History-Footnote-167228
++Ref: Manual History-Footnote-267269
++Node: How To Contribute67343
++Node: Acknowledgments68472
++Node: Getting Started73277
++Node: Running gawk75710
++Node: One-shot76900
++Node: Read Terminal78148
++Node: Long80175
++Node: Executable Scripts81691
++Ref: Executable Scripts-Footnote-184480
++Node: Comments84583
++Node: Quoting87065
++Node: DOS Quoting92589
++Node: Sample Data Files93264
++Node: Very Simple95859
++Node: Two Rules100757
++Node: More Complex102643
++Node: Statements/Lines105505
++Ref: Statements/Lines-Footnote-1109960
++Node: Other Features110225
++Node: When111156
++Ref: When-Footnote-1112910
++Node: Intro Summary112975
++Node: Invoking Gawk113858
++Node: Command Line115372
++Node: Options116170
++Ref: Options-Footnote-1131974
++Ref: Options-Footnote-2132203
++Node: Other Arguments132228
++Node: Naming Standard Input135176
++Node: Environment Variables136269
++Node: AWKPATH Variable136827
++Ref: AWKPATH Variable-Footnote-1140240
++Ref: AWKPATH Variable-Footnote-2140285
++Node: AWKLIBPATH Variable140545
++Node: Other Environment Variables141801
++Node: Exit Status145289
++Node: Include Files145965
++Node: Loading Shared Libraries149562
++Node: Obsolete150989
++Node: Undocumented151686
++Node: Invoking Summary151953
++Node: Regexp153617
++Node: Regexp Usage155071
++Node: Escape Sequences157108
++Node: Regexp Operators163349
++Ref: Regexp Operators-Footnote-1170775
++Ref: Regexp Operators-Footnote-2170922
++Node: Bracket Expressions171020
++Ref: table-char-classes173035
++Node: Leftmost Longest175959
++Node: Computed Regexps177261
++Node: GNU Regexp Operators180658
++Node: Case-sensitivity184331
++Ref: Case-sensitivity-Footnote-1187216
++Ref: Case-sensitivity-Footnote-2187451
++Node: Regexp Summary187559
++Node: Reading Files189026
++Node: Records191189
++Node: awk split records191922
++Node: gawk split records196837
++Ref: gawk split records-Footnote-1201381
++Node: Fields201418
++Ref: Fields-Footnote-1204194
++Node: Nonconstant Fields204280
++Ref: Nonconstant Fields-Footnote-1206523
++Node: Changing Fields206727
++Node: Field Separators212656
++Node: Default Field Splitting215361
++Node: Regexp Field Splitting216478
++Node: Single Character Fields219828
++Node: Command Line Field Separator220887
++Node: Full Line Fields224099
++Ref: Full Line Fields-Footnote-1225616
++Ref: Full Line Fields-Footnote-2225662
++Node: Field Splitting Summary225763
++Node: Constant Size227837
++Node: Splitting By Content232426
++Ref: Splitting By Content-Footnote-1236420
++Node: Multiple Line236583
++Ref: Multiple Line-Footnote-1242469
++Node: Getline242648
++Node: Plain Getline245132
++Node: Getline/Variable247772
++Node: Getline/File248920
++Node: Getline/Variable/File250304
++Ref: Getline/Variable/File-Footnote-1251907
++Node: Getline/Pipe251994
++Node: Getline/Variable/Pipe254677
++Node: Getline/Coprocess255808
++Node: Getline/Variable/Coprocess257060
++Node: Getline Notes257799
++Node: Getline Summary260591
++Ref: table-getline-variants261003
++Node: Read Timeout261832
++Ref: Read Timeout-Footnote-1265723
++Node: Retrying Input265781
++Node: Command-line directories266976
++Node: Input Summary267883
++Node: Input Exercises271184
++Node: Printing271912
++Node: Print273689
++Node: Print Examples275146
++Node: Output Separators277925
++Node: OFMT279943
++Node: Printf281297
++Node: Basic Printf282082
++Node: Control Letters283652
++Node: Format Modifiers287635
++Node: Printf Examples293644
++Node: Redirection296130
++Node: Special FD302971
++Ref: Special FD-Footnote-1306131
++Node: Special Files306205
++Node: Other Inherited Files306822
++Node: Special Network307822
++Node: Special Caveats308684
++Node: Close Files And Pipes309635
++Ref: Close Files And Pipes-Footnote-1316817
++Ref: Close Files And Pipes-Footnote-2316965
++Node: Output Summary317115
++Node: Output Exercises318113
++Node: Expressions318793
++Node: Values319978
++Node: Constants320656
++Node: Scalar Constants321347
++Ref: Scalar Constants-Footnote-1322206
++Node: Nondecimal-numbers322456
++Node: Regexp Constants325474
++Node: Using Constant Regexps325999
++Node: Variables329142
++Node: Using Variables329797
++Node: Assignment Options331708
++Node: Conversion333583
++Node: Strings And Numbers334107
++Ref: Strings And Numbers-Footnote-1337172
++Node: Locale influences conversions337281
++Ref: table-locale-affects340028
++Node: All Operators340616
++Node: Arithmetic Ops341246
++Node: Concatenation343751
++Ref: Concatenation-Footnote-1346570
++Node: Assignment Ops346676
++Ref: table-assign-ops351655
++Node: Increment Ops352927
++Node: Truth Values and Conditions356365
++Node: Truth Values357450
++Node: Typing and Comparison358499
++Node: Variable Typing359309
++Node: Comparison Operators362962
++Ref: table-relational-ops363372
++Node: POSIX String Comparison366867
++Ref: POSIX String Comparison-Footnote-1367939
++Node: Boolean Ops368077
++Ref: Boolean Ops-Footnote-1372556
++Node: Conditional Exp372647
++Node: Function Calls374374
++Node: Precedence378254
++Node: Locales381915
++Node: Expressions Summary383547
++Node: Patterns and Actions386107
++Node: Pattern Overview387227
++Node: Regexp Patterns388906
++Node: Expression Patterns389449
++Node: Ranges393159
++Node: BEGIN/END396265
++Node: Using BEGIN/END397026
++Ref: Using BEGIN/END-Footnote-1399760
++Node: I/O And BEGIN/END399866
++Node: BEGINFILE/ENDFILE402180
++Node: Empty405081
++Node: Using Shell Variables405398
++Node: Action Overview407671
++Node: Statements409997
++Node: If Statement411845
++Node: While Statement413340
++Node: Do Statement415369
++Node: For Statement416513
++Node: Switch Statement419670
++Node: Break Statement422052
++Node: Continue Statement424093
++Node: Next Statement425920
++Node: Nextfile Statement428301
++Node: Exit Statement430931
++Node: Built-in Variables433334
++Node: User-modified434467
++Ref: User-modified-Footnote-1442148
++Node: Auto-set442210
++Ref: Auto-set-Footnote-1456426
++Ref: Auto-set-Footnote-2456631
++Node: ARGC and ARGV456687
++Node: Pattern Action Summary460905
++Node: Arrays463332
++Node: Array Basics464661
++Node: Array Intro465505
++Ref: figure-array-elements467469
++Ref: Array Intro-Footnote-1469995
++Node: Reference to Elements470123
++Node: Assigning Elements472575
++Node: Array Example473066
++Node: Scanning an Array474824
++Node: Controlling Scanning477840
++Ref: Controlling Scanning-Footnote-1483036
++Node: Numeric Array Subscripts483352
++Node: Uninitialized Subscripts485537
++Node: Delete487154
++Ref: Delete-Footnote-1489897
++Node: Multidimensional489954
++Node: Multiscanning493051
++Node: Arrays of Arrays494640
++Node: Arrays Summary499399
++Node: Functions501491
++Node: Built-in502390
++Node: Calling Built-in503468
++Node: Numeric Functions505459
++Ref: Numeric Functions-Footnote-1510278
++Ref: Numeric Functions-Footnote-2510635
++Ref: Numeric Functions-Footnote-3510683
++Node: String Functions510955
++Ref: String Functions-Footnote-1534430
++Ref: String Functions-Footnote-2534559
++Ref: String Functions-Footnote-3534807
++Node: Gory Details534894
++Ref: table-sub-escapes536675
++Ref: table-sub-proposed538195
++Ref: table-posix-sub539559
++Ref: table-gensub-escapes541095
++Ref: Gory Details-Footnote-1541927
++Node: I/O Functions542078
++Ref: I/O Functions-Footnote-1549296
++Node: Time Functions549443
++Ref: Time Functions-Footnote-1559931
++Ref: Time Functions-Footnote-2559999
++Ref: Time Functions-Footnote-3560157
++Ref: Time Functions-Footnote-4560268
++Ref: Time Functions-Footnote-5560380
++Ref: Time Functions-Footnote-6560607
++Node: Bitwise Functions560873
++Ref: table-bitwise-ops561435
++Ref: Bitwise Functions-Footnote-1565744
++Node: Type Functions565913
++Node: I18N Functions567064
++Node: User-defined568709
++Node: Definition Syntax569514
++Ref: Definition Syntax-Footnote-1574921
++Node: Function Example574992
++Ref: Function Example-Footnote-1577911
++Node: Function Caveats577933
++Node: Calling A Function578451
++Node: Variable Scope579409
++Node: Pass By Value/Reference582397
++Node: Return Statement585892
++Node: Dynamic Typing588873
++Node: Indirect Calls589802
++Ref: Indirect Calls-Footnote-1601104
++Node: Functions Summary601232
++Node: Library Functions603934
++Ref: Library Functions-Footnote-1607543
++Ref: Library Functions-Footnote-2607686
++Node: Library Names607857
++Ref: Library Names-Footnote-1611311
++Ref: Library Names-Footnote-2611534
++Node: General Functions611620
++Node: Strtonum Function612723
++Node: Assert Function615745
++Node: Round Function619069
++Node: Cliff Random Function620610
++Node: Ordinal Functions621626
++Ref: Ordinal Functions-Footnote-1624689
++Ref: Ordinal Functions-Footnote-2624941
++Node: Join Function625152
++Ref: Join Function-Footnote-1626921
++Node: Getlocaltime Function627121
++Node: Readfile Function630865
++Node: Shell Quoting632835
++Node: Data File Management634236
++Node: Filetrans Function634868
++Node: Rewind Function638924
++Node: File Checking640311
++Ref: File Checking-Footnote-1641643
++Node: Empty Files641844
++Node: Ignoring Assigns643823
++Node: Getopt Function645374
++Ref: Getopt Function-Footnote-1656836
++Node: Passwd Functions657036
++Ref: Passwd Functions-Footnote-1665873
++Node: Group Functions665961
++Ref: Group Functions-Footnote-1673855
++Node: Walking Arrays674068
++Node: Library Functions Summary675671
++Node: Library Exercises677072
++Node: Sample Programs678352
++Node: Running Examples679122
++Node: Clones679850
++Node: Cut Program681074
++Node: Egrep Program690793
++Ref: Egrep Program-Footnote-1698291
++Node: Id Program698401
++Node: Split Program702046
++Ref: Split Program-Footnote-1705494
++Node: Tee Program705622
++Node: Uniq Program708411
++Node: Wc Program715830
++Ref: Wc Program-Footnote-1720080
++Node: Miscellaneous Programs720174
++Node: Dupword Program721387
++Node: Alarm Program723418
++Node: Translate Program728222
++Ref: Translate Program-Footnote-1732787
++Node: Labels Program733057
++Ref: Labels Program-Footnote-1736408
++Node: Word Sorting736492
++Node: History Sorting740563
++Node: Extract Program742399
++Node: Simple Sed749924
++Node: Igawk Program752992
++Ref: Igawk Program-Footnote-1767316
++Ref: Igawk Program-Footnote-2767517
++Ref: Igawk Program-Footnote-3767639
++Node: Anagram Program767754
++Node: Signature Program770811
++Node: Programs Summary772058
++Node: Programs Exercises773251
++Ref: Programs Exercises-Footnote-1777382
++Node: Advanced Features777473
++Node: Nondecimal Data779421
++Node: Array Sorting781011
++Node: Controlling Array Traversal781708
++Ref: Controlling Array Traversal-Footnote-1790041
++Node: Array Sorting Functions790159
++Ref: Array Sorting Functions-Footnote-1794048
++Node: Two-way I/O794244
++Ref: Two-way I/O-Footnote-1799189
++Ref: Two-way I/O-Footnote-2799375
++Node: TCP/IP Networking799457
++Node: Profiling802330
++Node: Advanced Features Summary810607
++Node: Internationalization812540
++Node: I18N and L10N814020
++Node: Explaining gettext814706
++Ref: Explaining gettext-Footnote-1819731
++Ref: Explaining gettext-Footnote-2819915
++Node: Programmer i18n820080
++Ref: Programmer i18n-Footnote-1824946
++Node: Translator i18n824995
++Node: String Extraction825789
++Ref: String Extraction-Footnote-1826920
++Node: Printf Ordering827006
++Ref: Printf Ordering-Footnote-1829792
++Node: I18N Portability829856
++Ref: I18N Portability-Footnote-1832311
++Node: I18N Example832374
++Ref: I18N Example-Footnote-1835177
++Node: Gawk I18N835249
++Node: I18N Summary835887
++Node: Debugger837226
++Node: Debugging838248
++Node: Debugging Concepts838689
++Node: Debugging Terms840542
++Node: Awk Debugging843114
++Node: Sample Debugging Session844008
++Node: Debugger Invocation844528
++Node: Finding The Bug845912
++Node: List of Debugger Commands852387
++Node: Breakpoint Control853720
++Node: Debugger Execution Control857416
++Node: Viewing And Changing Data860780
++Node: Execution Stack864158
++Node: Debugger Info865795
++Node: Miscellaneous Debugger Commands869812
++Node: Readline Support874841
++Node: Limitations875733
++Node: Debugging Summary877847
++Node: Arbitrary Precision Arithmetic879015
++Node: Computer Arithmetic880431
++Ref: table-numeric-ranges884029
++Ref: Computer Arithmetic-Footnote-1884888
++Node: Math Definitions884945
++Ref: table-ieee-formats888233
++Ref: Math Definitions-Footnote-1888837
++Node: MPFR features888942
++Node: FP Math Caution890613
++Ref: FP Math Caution-Footnote-1891663
++Node: Inexactness of computations892032
++Node: Inexact representation892991
++Node: Comparing FP Values894348
++Node: Errors accumulate895430
++Node: Getting Accuracy896863
++Node: Try To Round899525
++Node: Setting precision900424
++Ref: table-predefined-precision-strings901108
++Node: Setting the rounding mode902897
++Ref: table-gawk-rounding-modes903261
++Ref: Setting the rounding mode-Footnote-1906716
++Node: Arbitrary Precision Integers906895
++Ref: Arbitrary Precision Integers-Footnote-1911794
++Node: POSIX Floating Point Problems911943
++Ref: POSIX Floating Point Problems-Footnote-1915816
++Node: Floating point summary915854
++Node: Dynamic Extensions918048
++Node: Extension Intro919600
++Node: Plugin License920866
++Node: Extension Mechanism Outline921663
++Ref: figure-load-extension922091
++Ref: figure-register-new-function923571
++Ref: figure-call-new-function924575
++Node: Extension API Description926561
++Node: Extension API Functions Introduction928095
++Node: General Data Types932967
++Ref: General Data Types-Footnote-1938706
++Node: Memory Allocation Functions939005
++Ref: Memory Allocation Functions-Footnote-1941844
++Node: Constructor Functions941940
++Node: Registration Functions943674
++Node: Extension Functions944359
++Node: Exit Callback Functions946656
++Node: Extension Version String947904
++Node: Input Parsers948569
++Node: Output Wrappers958448
++Node: Two-way processors962963
++Node: Printing Messages965167
++Ref: Printing Messages-Footnote-1966243
++Node: Updating `ERRNO'966395
++Node: Requesting Values967135
++Ref: table-value-types-returned967863
++Node: Accessing Parameters968820
++Node: Symbol Table Access970051
++Node: Symbol table by name970565
++Node: Symbol table by cookie972546
++Ref: Symbol table by cookie-Footnote-1976690
++Node: Cached values976753
++Ref: Cached values-Footnote-1980252
++Node: Array Manipulation980343
++Ref: Array Manipulation-Footnote-1981433
++Node: Array Data Types981470
++Ref: Array Data Types-Footnote-1984125
++Node: Array Functions984217
++Node: Flattening Arrays988071
++Node: Creating Arrays994963
++Node: Redirection API999734
++Node: Extension API Variables1002505
++Node: Extension Versioning1003138
++Node: Extension API Informational Variables1005039
++Node: Extension API Boilerplate1006104
++Node: Finding Extensions1009913
++Node: Extension Example1010473
++Node: Internal File Description1011245
++Node: Internal File Ops1015312
++Ref: Internal File Ops-Footnote-11026982
++Node: Using Internal File Ops1027122
++Ref: Using Internal File Ops-Footnote-11029505
++Node: Extension Samples1029778
++Node: Extension Sample File Functions1031304
++Node: Extension Sample Fnmatch1038942
++Node: Extension Sample Fork1040433
++Node: Extension Sample Inplace1041648
++Node: Extension Sample Ord1043323
++Node: Extension Sample Readdir1044159
++Ref: table-readdir-file-types1045035
++Node: Extension Sample Revout1045846
++Node: Extension Sample Rev2way1046436
++Node: Extension Sample Read write array1047176
++Node: Extension Sample Readfile1049116
++Node: Extension Sample Time1050211
++Node: Extension Sample API Tests1051560
++Node: gawkextlib1052051
++Node: Extension summary1054709
++Node: Extension Exercises1058398
++Node: Language History1059120
++Node: V7/SVR3.11060776
++Node: SVR41062957
++Node: POSIX1064402
++Node: BTL1065791
++Node: POSIX/GNU1066525
++Node: Feature History1072149
++Node: Common Extensions1085247
++Node: Ranges and Locales1086571
++Ref: Ranges and Locales-Footnote-11091189
++Ref: Ranges and Locales-Footnote-21091216
++Ref: Ranges and Locales-Footnote-31091450
++Node: Contributors1091671
++Node: History summary1097212
++Node: Installation1098582
++Node: Gawk Distribution1099528
++Node: Getting1100012
++Node: Extracting1100835
++Node: Distribution contents1102470
++Node: Unix Installation1108535
++Node: Quick Installation1109218
++Node: Shell Startup Files1111629
++Node: Additional Configuration Options1112708
++Node: Configuration Philosophy1114447
++Node: Non-Unix Installation1116816
++Node: PC Installation1117274
++Node: PC Binary Installation1118593
++Node: PC Compiling1120441
++Ref: PC Compiling-Footnote-11123462
++Node: PC Testing1123571
++Node: PC Using1124747
++Node: Cygwin1128862
++Node: MSYS1129685
++Node: VMS Installation1130185
++Node: VMS Compilation1130977
++Ref: VMS Compilation-Footnote-11132199
++Node: VMS Dynamic Extensions1132257
++Node: VMS Installation Details1133941
++Node: VMS Running1136193
++Node: VMS GNV1139029
++Node: VMS Old Gawk1139763
++Node: Bugs1140233
++Node: Other Versions1144116
++Node: Installation summary1150544
++Node: Notes1151600
++Node: Compatibility Mode1152465
++Node: Additions1153247
++Node: Accessing The Source1154172
++Node: Adding Code1155608
++Node: New Ports1161773
++Node: Derived Files1166255
++Ref: Derived Files-Footnote-11171730
++Ref: Derived Files-Footnote-21171764
++Ref: Derived Files-Footnote-31172360
++Node: Future Extensions1172474
++Node: Implementation Limitations1173080
++Node: Extension Design1174328
++Node: Old Extension Problems1175482
++Ref: Old Extension Problems-Footnote-11176999
++Node: Extension New Mechanism Goals1177056
++Ref: Extension New Mechanism Goals-Footnote-11180416
++Node: Extension Other Design Decisions1180605
++Node: Extension Future Growth1182713
++Node: Old Extension Mechanism1183549
++Node: Notes summary1185311
++Node: Basic Concepts1186497
++Node: Basic High Level1187178
++Ref: figure-general-flow1187450
++Ref: figure-process-flow1188049
++Ref: Basic High Level-Footnote-11191278
++Node: Basic Data Typing1191463
++Node: Glossary1194791
++Node: Copying1219949
++Node: GNU Free Documentation License1257505
++Node: Index1282641
  
  End Tag Table
diff --cc extension/ChangeLog
index c8f7704,582a344..8a6dfd9
--- a/extension/ChangeLog
+++ b/extension/ChangeLog
@@@ -1,42 -1,7 +1,46 @@@
+ 2015-01-07         Arnold D. Robbins     <address@hidden>
+ 
+       * testext.c (var_test): Adjust for PROCINFO now being there.
+ 
 +2015-01-06         Andrew J. Schorr     <address@hidden>
 +
 +      * testext.c (test_deferred): New function to help with testing
 +      of deferred variable instantiation.
 +      (do_get_file): Remove unused variable array.
 +      (func_table): Add test_deferred.
 +
 +2015-01-05         Andrew J. Schorr     <address@hidden>
 +
 +      * testext.c (test_get_file): Fix error message.
 +      (do_get_file): Implement new function providing low-level access
 +      to the get_file API.
 +      (func_table): Add "get_file" -> do_get_file.
 +      (init_testext): If TESTEXT_QUIET has been set to a numeric value,
 +      return quietly.
 +
 +2015-01-02         Andrew J. Schorr     <address@hidden>
 +
 +      * testext.c (test_get_file): The get_file hook no longer takes a
 +      typelen argument.
 +
 +2015-01-02         Andrew J. Schorr     <address@hidden>
 +
 +      Remove the select extension, since it will be part of gawkextlib.
 +      * select.c, siglist.h: Deleted.
 +      * Makefile.am (pkgextension_LTLIBRARIES): Remove select.la.
 +      (select_la_SOURCES, select_la_LDFLAGS, select_la_LIBADD): Remove.
 +      (EXTRA_DIST): Remove siglist.h.
 +      * configure.ac (AC_CHECK_HEADERS): Remove signal.h.
 +      (AC_CHECK_FUNCS): Remove fcntl, kill, sigaction, and sigprocmask.
 +
 +2014-12-14         Andrew J. Schorr     <address@hidden>
 +
 +      Remove the errno extension, since it is now part of gawkextlib.
 +      * errno.c, errlist.h: Deleted.
 +      * Makefile.am (pkgextension_LTLIBRARIES): Remove errno.la.
 +      (errno_la_SOURCES, errno_la_LDFLAGS, errno_la_LIBADD): Remove.
 +      (EXTRA_DIST): Remove errlist.h.
 +
  2014-11-23         Arnold D. Robbins     <address@hidden>
  
        * inplace.c (do_inplace_begin): Jump through hoops to silence
diff --cc extension/testext.c
index 7c61bb0,4a1e703..8a906c6
--- a/extension/testext.c
+++ b/extension/testext.c
@@@ -374,75 -373,6 +374,73 @@@ out
        return result;
  }
  
 +static awk_value_t *
 +test_deferred(int nargs, awk_value_t *result)
 +{
 +      awk_value_t arr;
 +      awk_value_t index, value;
 +      const struct nval {
 +              const char *name;
 +              double val;
 +      } seed[] = {
 +              { "fubar", 9.0, },
 +              { "rumpus", -5.0, },
 +      };
 +      struct nval sysval[] = {
 +              { "uid", getuid(), },
 +              { "api_major", GAWK_API_MAJOR_VERSION, },
 +      };
 +      size_t i;
 +
 +      assert(result != NULL);
 +      make_number(0.0, result);
 +
 +      if (nargs != 0) {
 +              printf("test_deferred: nargs not right (%d should be 0)\n", 
nargs);
 +              goto out;
 +      }
-       arr.val_type = AWK_ARRAY;
-       arr.array_cookie = create_array();
++
++      if (! sym_lookup("PROCINFO", AWK_ARRAY, & arr)) {
++              printf("test_deferred: %d: sym_lookup failed\n", __LINE__);
++              goto out;
++      }
 +
 +      for (i = 0; i < sizeof(seed)/sizeof(seed[0]); i++) {
 +              make_const_string(seed[i].name, strlen(seed[i].name), & index);
 +              make_number(seed[i].val, & value);
 +              if (! set_array_element(arr.array_cookie, & index, & value)) {
 +                      printf("test_deferred: %d: set_array_element(%s) 
failed\n", __LINE__, seed[i].name);
 +                      goto out;
 +              }
 +      }
 +
-       if (! sym_update("PROCINFO", & arr)) {
-               printf("test_deferred: %d: sym_update failed\n", __LINE__);
-               goto out;
-       }
- 
 +      /* test that it still contains the values we loaded */
 +      for (i = 0; i < sizeof(seed)/sizeof(seed[0]); i++) {
 +              make_const_string(seed[i].name, strlen(seed[i].name), & index);
 +              make_null_string(& value);
 +              if (! get_array_element(arr.array_cookie, &index, AWK_NUMBER, & 
value)) {
 +                      printf("test_deferred: %d: get_array_element(%s) 
failed\n", __LINE__, seed[i].name);
 +                      goto out;
 +              }
 +              printf("%s = %g\n", seed[i].name, value.num_value);
 +      }
 +
 +      /* check a few automatically-supplied values */
 +      for (i = 0; i < sizeof(sysval)/sizeof(sysval[0]); i++) {
 +              make_const_string(sysval[i].name, strlen(sysval[i].name), & 
index);
 +              make_null_string(& value);
 +              if (! get_array_element(arr.array_cookie, &index, AWK_NUMBER, & 
value)) {
 +                      printf("test_deferred: %d: get_array_element(%s) 
failed\n", __LINE__, sysval[i].name);
 +                      goto out;
 +              }
 +              printf("%s matches %d\n", sysval[i].name, (value.num_value == 
sysval[i].val));
 +      }
 +
 +      make_number(1.0, result);
 +out:
 +      return result;
 +}
 +
  /*
  BEGIN {
        for (i = 1; i <= 10; i++)
diff --cc test/ChangeLog
index 7522f7a,1910502..c859a7b
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@@ -1,31 -1,33 +1,61 @@@
+ 2015-01-19         Arnold D. Robbins     <address@hidden>
+ 
+       * Makefile.am (profile8): Actually add the test and the files.
+       Thanks to Hermann Peifer for the report.
+ 
+ 2015-01-16         Arnold D. Robbins     <address@hidden>
+ 
+       * Makefile.am (profile8): New test.
+       * profile8.awk, profile8.ok: New files.
+ 
+ 2015-01-14         Arnold D. Robbins     <address@hidden>
+ 
+       * Makefile.am (dumpvars): Grep out ENVIRON and PROCINFO since
+       those can be different depending on who runs the test.
+       * dumpvars.ok, id.ok: Updated after code changes.
+ 
+ 2015-01-07         Arnold D. Robbins     <address@hidden>
+ 
+       * 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.
+ 
+       Unrelated:
+ 
+       * testext.ok: Adjust for code changes.
+ 
 +2015-01-06         Andrew J. Schorr     <address@hidden>
 +
 +      * Makefile.am (EXTRA_DIST): Add defvar.awk and defvar.ok.
 +      (SHLIB_TESTS): Add defvar.
 +      (defvar): New test.
 +      * defvar.awk, defvar.ok: New files.
 +
 +2015-01-05         Andrew J. Schorr     <address@hidden>
 +
 +      * Makefile.am (EXTRA_DIST): Add getfile.awk and getfile.ok.
 +      (SHLIB_TESTS): Add getfile.
 +      (getfile): New test.
 +      * getfile.awk, getfile.ok: New files.
 +
 +2015-01-05         Andrew J. Schorr     <address@hidden>
 +
 +      * Makefile.am (EXTRA_DIST): Add timeout.awk and timeout.ok.
 +      (BASIC_TESTS): Remove errno.
 +      (GAWK_EXT_TESTS): Add errno and timeout.
 +      * timeout.awk, timeout.ok: New files.
 +
 +2015-01-05         Andrew J. Schorr     <address@hidden>
 +
 +      * Makefile.am (EXTRA_DIST): Add errno.awk, errno.in, and errno.ok.
 +      (BASIC_TESTS): Add errno.
 +      (errno): New test.
 +      * errno.awk, errno.in, errno.ok: New files.
 +
  2014-12-24         Arnold D. Robbins     <address@hidden>
  
        * Makefile.am (badbuild): New test.

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

Summary of changes:
 ChangeLog                             |   46 ++
 NEWS                                  |    3 +-
 TODO                                  |    4 -
 awk.h                                 |    1 -
 awkgram.c                             |  815 +++++++++++-------------
 awkgram.y                             |   93 +---
 builtin.c                             |   10 +-
 command.c                             |    6 +-
 configure                             |    2 +-
 configure.ac                          |    4 +-
 dfa.c                                 |    2 +-
 dfa.h                                 |    2 +-
 doc/ChangeLog                         |    5 +
 doc/gawk.info                         | 1161 +++++++++++++++++----------------
 doc/gawk.texi                         |   34 +-
 doc/gawkinet.info                     |    6 +-
 doc/gawkinet.texi                     |    2 +-
 doc/gawktexi.in                       |   34 +-
 extension/ChangeLog                   |    4 +
 extension/testext.c                   |   20 +-
 getopt.c                              |    4 +-
 getopt.h                              |    2 +-
 getopt1.c                             |    2 +-
 getopt_int.h                          |    2 +-
 main.c                                |    6 +-
 test/ChangeLog                        |   30 +
 test/Makefile.am                      |   23 +-
 test/Makefile.in                      |   33 +-
 test/Maketests                        |   10 +
 test/id.ok                            |    1 +
 test/printfbad4.awk                   |    5 +
 test/printfbad4.ok                    |    2 +
 test/profile8.awk                     |    9 +
 test/profile8.ok                      |   14 +
 test/regexpbrack.awk                  |    2 +
 test/{arrayprm2.ok => regexpbrack.in} |    0
 test/{arrayprm2.ok => regexpbrack.ok} |    0
 test/testext.ok                       |    2 +-
 38 files changed, 1204 insertions(+), 1197 deletions(-)
 create mode 100644 test/printfbad4.awk
 create mode 100644 test/printfbad4.ok
 create mode 100644 test/profile8.awk
 create mode 100644 test/profile8.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]