gawk-diffs
[Top][All Lists]
Advanced

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

[gawk-diffs] [SCM] gawk branch, feature/namespaces, updated. gawk-4.1.0-


From: Arnold Robbins
Subject: [gawk-diffs] [SCM] gawk branch, feature/namespaces, updated. gawk-4.1.0-3329-g7a129b7
Date: Thu, 2 Aug 2018 13:49:11 -0400 (EDT)

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, feature/namespaces has been updated
       via  7a129b73ddaa52991082e32ac70188a5f5e455bf (commit)
       via  48f02e6672003d218d4c0348a6add7931522603b (commit)
       via  3998ed059bbcfc189cd0d6c5762913fbd4ff4e77 (commit)
       via  23356c2d522bf17b4acb314f7aa6503a62db2765 (commit)
       via  4ad924c4988cfbe68b3a81c3647b0cced9fd2af3 (commit)
       via  c1f670b26671cc8d60d967bbcb42cb8deb3baf2b (commit)
       via  86b063b99d78df97fcd761073f437ce00b018712 (commit)
       via  f856979d85ace61bfeb2d31146485ec668202ad8 (commit)
       via  4703b75c618070d88f9e2eff084ca8119980bd9c (commit)
       via  749475a8a2f335dcc4d837d8c5dba5795d9e891d (commit)
       via  c12c743fe36b77877f59aeb00da65481e50f8efa (commit)
       via  040e06c04dd2eded9861c99b4976ee11a92dd2ec (commit)
       via  43602a27fcac00f4cd9eee62ebce68217c260fd7 (commit)
       via  df468ca85832d555f9b2ed8ee8eae5b80dd137cd (commit)
       via  30e8a37825c9b9e67c0cf440f7617508b7898c2b (commit)
       via  3ddc932b0a808a4f5f55519ccf1d65f6caa41666 (commit)
      from  e426faa34b43ebcb8f725b4aa3b519cafde7df4d (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=7a129b73ddaa52991082e32ac70188a5f5e455bf

commit 7a129b73ddaa52991082e32ac70188a5f5e455bf
Merge: e426faa 48f02e6
Author: Arnold D. Robbins <address@hidden>
Date:   Thu Aug 2 20:49:02 2018 +0300

    Merge branch 'master' into feature/namespaces

diff --cc ChangeLog
index 66d035d,2c1c9ef..80bcb2a
mode 100644,100755..100755
--- a/ChangeLog
+++ b/ChangeLog
diff --cc awkgram.c
index b9d6ba1,85544b8..4dd99ad
--- a/awkgram.c
+++ b/awkgram.c
@@@ -679,27 -670,27 +679,27 @@@ static const yytype_uint8 yytranslate[
    /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
  static const yytype_uint16 yyrline[] =
  {
 -       0,   215,   215,   217,   222,   223,   227,   239,   244,   255,
 -     262,   268,   277,   285,   287,   292,   300,   302,   308,   316,
 -     326,   356,   370,   384,   392,   403,   415,   417,   419,   425,
 -     433,   434,   438,   438,   484,   483,   517,   532,   534,   539,
 -     549,   596,   601,   602,   606,   608,   610,   617,   707,   749,
 -     791,   904,   911,   918,   929,   939,   949,   959,   971,   988,
 -     987,  1001,  1013,  1013,  1112,  1112,  1146,  1177,  1186,  1187,
 -    1193,  1194,  1201,  1206,  1218,  1232,  1234,  1242,  1249,  1251,
 -    1259,  1268,  1270,  1279,  1280,  1288,  1293,  1293,  1306,  1310,
 -    1318,  1319,  1322,  1324,  1329,  1330,  1339,  1340,  1345,  1350,
 -    1359,  1361,  1363,  1370,  1371,  1377,  1378,  1383,  1385,  1390,
 -    1392,  1400,  1405,  1414,  1415,  1420,  1422,  1427,  1429,  1437,
 -    1442,  1450,  1451,  1456,  1463,  1467,  1469,  1471,  1484,  1501,
 -    1511,  1518,  1520,  1525,  1527,  1529,  1537,  1539,  1544,  1546,
 -    1551,  1553,  1555,  1612,  1614,  1616,  1618,  1620,  1622,  1624,
 -    1626,  1640,  1645,  1650,  1675,  1681,  1683,  1685,  1687,  1689,
 -    1691,  1696,  1700,  1732,  1740,  1746,  1752,  1765,  1766,  1767,
 -    1772,  1777,  1781,  1785,  1800,  1821,  1826,  1863,  1892,  1893,
 -    1899,  1900,  1905,  1907,  1914,  1931,  1948,  1950,  1957,  1962,
 -    1970,  1980,  1992,  2001,  2005,  2009,  2013,  2017,  2021,  2024,
 -    2026,  2030,  2034,  2038
 +       0,   221,   221,   223,   228,   229,   233,   245,   250,   261,
 +     268,   274,   280,   293,   301,   303,   308,   316,   318,   323,
 +     325,   327,   333,   341,   351,   381,   395,   409,   417,   428,
 +     440,   442,   444,   450,   458,   459,   463,   463,   509,   508,
 +     542,   557,   559,   564,   574,   621,   626,   627,   631,   633,
 +     635,   642,   732,   774,   816,   929,   936,   943,   954,   964,
 +     974,   984,   996,  1013,  1012,  1026,  1038,  1038,  1137,  1137,
 +    1171,  1202,  1211,  1212,  1218,  1219,  1226,  1231,  1243,  1257,
 +    1259,  1267,  1274,  1276,  1284,  1293,  1295,  1304,  1305,  1313,
-     1318,  1318,  1329,  1333,  1341,  1342,  1345,  1347,  1352,  1353,
-     1362,  1363,  1368,  1373,  1382,  1384,  1386,  1393,  1394,  1400,
-     1401,  1406,  1408,  1413,  1415,  1423,  1428,  1437,  1438,  1443,
-     1445,  1450,  1452,  1460,  1465,  1473,  1474,  1479,  1486,  1490,
-     1492,  1494,  1507,  1524,  1534,  1541,  1543,  1548,  1550,  1552,
-     1560,  1562,  1567,  1569,  1574,  1576,  1578,  1635,  1637,  1639,
-     1641,  1643,  1645,  1647,  1649,  1663,  1668,  1673,  1698,  1704,
-     1706,  1708,  1710,  1712,  1714,  1719,  1723,  1755,  1762,  1768,
-     1774,  1787,  1788,  1789,  1794,  1799,  1803,  1807,  1822,  1843,
-     1848,  1885,  1927,  1928,  1934,  1935,  1940,  1942,  1949,  1966,
-     1983,  1985,  1992,  1997,  2005,  2015,  2027,  2036,  2040,  2044,
-     2048,  2052,  2056,  2059,  2061,  2065,  2069,  2073
++    1318,  1318,  1331,  1335,  1343,  1344,  1347,  1349,  1354,  1355,
++    1364,  1365,  1370,  1375,  1384,  1386,  1388,  1395,  1396,  1402,
++    1403,  1408,  1410,  1415,  1417,  1425,  1430,  1439,  1440,  1445,
++    1447,  1452,  1454,  1462,  1467,  1475,  1476,  1481,  1488,  1492,
++    1494,  1496,  1509,  1526,  1536,  1543,  1545,  1550,  1552,  1554,
++    1562,  1564,  1569,  1571,  1576,  1578,  1580,  1637,  1639,  1641,
++    1643,  1645,  1647,  1649,  1651,  1665,  1670,  1675,  1700,  1706,
++    1708,  1710,  1712,  1714,  1716,  1721,  1725,  1757,  1765,  1771,
++    1777,  1790,  1791,  1792,  1797,  1802,  1806,  1810,  1825,  1846,
++    1851,  1888,  1930,  1931,  1937,  1938,  1943,  1945,  1952,  1969,
++    1986,  1988,  1995,  2000,  2008,  2018,  2030,  2039,  2043,  2047,
++    2051,  2055,  2059,  2062,  2064,  2068,  2072,  2076
  };
  #endif
  
@@@ -3225,65 -3186,67 +3225,67 @@@ regular_print
                        && (yyvsp[0])->lasti->opcode == Op_K_getline_redir
                                && (yyvsp[0])->lasti->redir_type == 
redirect_twoway)
                        yyerror(_("multistage two-way pipelines don't work"));
+               if (do_lint && (yyvsp[-2])->redir_type == redirect_output && 
(yyvsp[0])->lasti->opcode == Op_concat)
+                       lintwarn(_("concatenation as I/O `>' redirection target 
is ambiguous"));
                (yyval) = list_prepend((yyvsp[0]), (yyvsp[-2]));
          }
- #line 3231 "awkgram.c" /* yacc.c:1646  */
 -#line 3194 "awkgram.c" /* yacc.c:1646  */
++#line 3233 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 88:
 -#line 1307 "awkgram.y" /* yacc.c:1646  */
 +  case 92:
- #line 1330 "awkgram.y" /* yacc.c:1646  */
++#line 1332 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = mk_condition((yyvsp[-3]), (yyvsp[-5]), (yyvsp[0]), 
NULL, NULL);
          }
- #line 3239 "awkgram.c" /* yacc.c:1646  */
 -#line 3202 "awkgram.c" /* yacc.c:1646  */
++#line 3241 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 89:
 -#line 1312 "awkgram.y" /* yacc.c:1646  */
 +  case 93:
- #line 1335 "awkgram.y" /* yacc.c:1646  */
++#line 1337 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = mk_condition((yyvsp[-6]), (yyvsp[-8]), (yyvsp[-3]), 
(yyvsp[-2]), (yyvsp[0]));
          }
- #line 3247 "awkgram.c" /* yacc.c:1646  */
 -#line 3210 "awkgram.c" /* yacc.c:1646  */
++#line 3249 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 94:
 -#line 1329 "awkgram.y" /* yacc.c:1646  */
 +  case 98:
- #line 1352 "awkgram.y" /* yacc.c:1646  */
++#line 1354 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 3253 "awkgram.c" /* yacc.c:1646  */
 -#line 3216 "awkgram.c" /* yacc.c:1646  */
++#line 3255 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 95:
 -#line 1331 "awkgram.y" /* yacc.c:1646  */
 +  case 99:
- #line 1354 "awkgram.y" /* yacc.c:1646  */
++#line 1356 "awkgram.y" /* yacc.c:1646  */
      {
                bcfree((yyvsp[-1]));
                (yyval) = (yyvsp[0]);
          }
- #line 3262 "awkgram.c" /* yacc.c:1646  */
 -#line 3225 "awkgram.c" /* yacc.c:1646  */
++#line 3264 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 96:
 -#line 1339 "awkgram.y" /* yacc.c:1646  */
 +  case 100:
- #line 1362 "awkgram.y" /* yacc.c:1646  */
++#line 1364 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 3268 "awkgram.c" /* yacc.c:1646  */
 -#line 3231 "awkgram.c" /* yacc.c:1646  */
++#line 3270 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 97:
 -#line 1341 "awkgram.y" /* yacc.c:1646  */
 +  case 101:
- #line 1364 "awkgram.y" /* yacc.c:1646  */
++#line 1366 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3274 "awkgram.c" /* yacc.c:1646  */
 -#line 3237 "awkgram.c" /* yacc.c:1646  */
++#line 3276 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 98:
 -#line 1346 "awkgram.y" /* yacc.c:1646  */
 +  case 102:
- #line 1369 "awkgram.y" /* yacc.c:1646  */
++#line 1371 "awkgram.y" /* yacc.c:1646  */
      {
                (yyvsp[0])->param_count = 0;
                (yyval) = list_create((yyvsp[0]));
          }
- #line 3283 "awkgram.c" /* yacc.c:1646  */
 -#line 3246 "awkgram.c" /* yacc.c:1646  */
++#line 3285 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 99:
 -#line 1351 "awkgram.y" /* yacc.c:1646  */
 +  case 103:
- #line 1374 "awkgram.y" /* yacc.c:1646  */
++#line 1376 "awkgram.y" /* yacc.c:1646  */
      {
                if ((yyvsp[-2]) != NULL && (yyvsp[0]) != NULL) {
                        (yyvsp[0])->param_count =  
(yyvsp[-2])->lasti->param_count + 1;
@@@ -3292,74 -3255,74 +3294,74 @@@
                } else
                        (yyval) = NULL;
          }
- #line 3296 "awkgram.c" /* yacc.c:1646  */
 -#line 3259 "awkgram.c" /* yacc.c:1646  */
++#line 3298 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 100:
 -#line 1360 "awkgram.y" /* yacc.c:1646  */
 +  case 104:
- #line 1383 "awkgram.y" /* yacc.c:1646  */
++#line 1385 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 3302 "awkgram.c" /* yacc.c:1646  */
 -#line 3265 "awkgram.c" /* yacc.c:1646  */
++#line 3304 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 101:
 -#line 1362 "awkgram.y" /* yacc.c:1646  */
 +  case 105:
- #line 1385 "awkgram.y" /* yacc.c:1646  */
++#line 1387 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[-1]); }
- #line 3308 "awkgram.c" /* yacc.c:1646  */
 -#line 3271 "awkgram.c" /* yacc.c:1646  */
++#line 3310 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 102:
 -#line 1364 "awkgram.y" /* yacc.c:1646  */
 +  case 106:
- #line 1387 "awkgram.y" /* yacc.c:1646  */
++#line 1389 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[-2]); }
- #line 3314 "awkgram.c" /* yacc.c:1646  */
 -#line 3277 "awkgram.c" /* yacc.c:1646  */
++#line 3316 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 103:
 -#line 1370 "awkgram.y" /* yacc.c:1646  */
 +  case 107:
- #line 1393 "awkgram.y" /* yacc.c:1646  */
++#line 1395 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 3320 "awkgram.c" /* yacc.c:1646  */
 -#line 3283 "awkgram.c" /* yacc.c:1646  */
++#line 3322 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 104:
 -#line 1372 "awkgram.y" /* yacc.c:1646  */
 +  case 108:
- #line 1395 "awkgram.y" /* yacc.c:1646  */
++#line 1397 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3326 "awkgram.c" /* yacc.c:1646  */
 -#line 3289 "awkgram.c" /* yacc.c:1646  */
++#line 3328 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 105:
 -#line 1377 "awkgram.y" /* yacc.c:1646  */
 +  case 109:
- #line 1400 "awkgram.y" /* yacc.c:1646  */
++#line 1402 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 3332 "awkgram.c" /* yacc.c:1646  */
 -#line 3295 "awkgram.c" /* yacc.c:1646  */
++#line 3334 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 106:
 -#line 1379 "awkgram.y" /* yacc.c:1646  */
 +  case 110:
- #line 1402 "awkgram.y" /* yacc.c:1646  */
++#line 1404 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3338 "awkgram.c" /* yacc.c:1646  */
 -#line 3301 "awkgram.c" /* yacc.c:1646  */
++#line 3340 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 107:
 -#line 1384 "awkgram.y" /* yacc.c:1646  */
 +  case 111:
- #line 1407 "awkgram.y" /* yacc.c:1646  */
++#line 1409 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_expression_list(NULL, (yyvsp[0])); }
- #line 3344 "awkgram.c" /* yacc.c:1646  */
 -#line 3307 "awkgram.c" /* yacc.c:1646  */
++#line 3346 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 108:
 -#line 1386 "awkgram.y" /* yacc.c:1646  */
 +  case 112:
- #line 1409 "awkgram.y" /* yacc.c:1646  */
++#line 1411 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = mk_expression_list((yyvsp[-2]), (yyvsp[0]));
                yyerrok;
          }
- #line 3353 "awkgram.c" /* yacc.c:1646  */
 -#line 3316 "awkgram.c" /* yacc.c:1646  */
++#line 3355 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 109:
 -#line 1391 "awkgram.y" /* yacc.c:1646  */
 +  case 113:
- #line 1414 "awkgram.y" /* yacc.c:1646  */
++#line 1416 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 3359 "awkgram.c" /* yacc.c:1646  */
 -#line 3322 "awkgram.c" /* yacc.c:1646  */
++#line 3361 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 110:
 -#line 1393 "awkgram.y" /* yacc.c:1646  */
 +  case 114:
- #line 1416 "awkgram.y" /* yacc.c:1646  */
++#line 1418 "awkgram.y" /* yacc.c:1646  */
      {
                /*
                 * Returning the expression list instead of NULL lets
@@@ -3367,62 -3330,62 +3369,62 @@@
                 */
                (yyval) = (yyvsp[-1]);
          }
- #line 3371 "awkgram.c" /* yacc.c:1646  */
 -#line 3334 "awkgram.c" /* yacc.c:1646  */
++#line 3373 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 111:
 -#line 1401 "awkgram.y" /* yacc.c:1646  */
 +  case 115:
- #line 1424 "awkgram.y" /* yacc.c:1646  */
++#line 1426 "awkgram.y" /* yacc.c:1646  */
      {
                /* Ditto */
                (yyval) = mk_expression_list((yyvsp[-2]), (yyvsp[0]));
          }
- #line 3380 "awkgram.c" /* yacc.c:1646  */
 -#line 3343 "awkgram.c" /* yacc.c:1646  */
++#line 3382 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 112:
 -#line 1406 "awkgram.y" /* yacc.c:1646  */
 +  case 116:
- #line 1429 "awkgram.y" /* yacc.c:1646  */
++#line 1431 "awkgram.y" /* yacc.c:1646  */
      {
                /* Ditto */
                (yyval) = (yyvsp[-2]);
          }
- #line 3389 "awkgram.c" /* yacc.c:1646  */
 -#line 3352 "awkgram.c" /* yacc.c:1646  */
++#line 3391 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 113:
 -#line 1414 "awkgram.y" /* yacc.c:1646  */
 +  case 117:
- #line 1437 "awkgram.y" /* yacc.c:1646  */
++#line 1439 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 3395 "awkgram.c" /* yacc.c:1646  */
 -#line 3358 "awkgram.c" /* yacc.c:1646  */
++#line 3397 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 114:
 -#line 1416 "awkgram.y" /* yacc.c:1646  */
 +  case 118:
- #line 1439 "awkgram.y" /* yacc.c:1646  */
++#line 1441 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3401 "awkgram.c" /* yacc.c:1646  */
 -#line 3364 "awkgram.c" /* yacc.c:1646  */
++#line 3403 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 115:
 -#line 1421 "awkgram.y" /* yacc.c:1646  */
 +  case 119:
- #line 1444 "awkgram.y" /* yacc.c:1646  */
++#line 1446 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_expression_list(NULL, (yyvsp[0])); }
- #line 3407 "awkgram.c" /* yacc.c:1646  */
 -#line 3370 "awkgram.c" /* yacc.c:1646  */
++#line 3409 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 116:
 -#line 1423 "awkgram.y" /* yacc.c:1646  */
 +  case 120:
- #line 1446 "awkgram.y" /* yacc.c:1646  */
++#line 1448 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = mk_expression_list((yyvsp[-2]), (yyvsp[0]));
                yyerrok;
          }
- #line 3416 "awkgram.c" /* yacc.c:1646  */
 -#line 3379 "awkgram.c" /* yacc.c:1646  */
++#line 3418 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 117:
 -#line 1428 "awkgram.y" /* yacc.c:1646  */
 +  case 121:
- #line 1451 "awkgram.y" /* yacc.c:1646  */
++#line 1453 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 3422 "awkgram.c" /* yacc.c:1646  */
 -#line 3385 "awkgram.c" /* yacc.c:1646  */
++#line 3424 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 118:
 -#line 1430 "awkgram.y" /* yacc.c:1646  */
 +  case 122:
- #line 1453 "awkgram.y" /* yacc.c:1646  */
++#line 1455 "awkgram.y" /* yacc.c:1646  */
      {
                /*
                 * Returning the expression list instead of NULL lets
@@@ -3430,72 -3393,72 +3432,72 @@@
                 */
                (yyval) = (yyvsp[-1]);
          }
- #line 3434 "awkgram.c" /* yacc.c:1646  */
 -#line 3397 "awkgram.c" /* yacc.c:1646  */
++#line 3436 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 119:
 -#line 1438 "awkgram.y" /* yacc.c:1646  */
 +  case 123:
- #line 1461 "awkgram.y" /* yacc.c:1646  */
++#line 1463 "awkgram.y" /* yacc.c:1646  */
      {
                /* Ditto */
                (yyval) = mk_expression_list((yyvsp[-2]), (yyvsp[0]));
          }
- #line 3443 "awkgram.c" /* yacc.c:1646  */
 -#line 3406 "awkgram.c" /* yacc.c:1646  */
++#line 3445 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 120:
 -#line 1443 "awkgram.y" /* yacc.c:1646  */
 +  case 124:
- #line 1466 "awkgram.y" /* yacc.c:1646  */
++#line 1468 "awkgram.y" /* yacc.c:1646  */
      {
                /* Ditto */
                (yyval) = (yyvsp[-2]);
          }
- #line 3452 "awkgram.c" /* yacc.c:1646  */
 -#line 3415 "awkgram.c" /* yacc.c:1646  */
++#line 3454 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 121:
 -#line 1450 "awkgram.y" /* yacc.c:1646  */
 +  case 125:
- #line 1473 "awkgram.y" /* yacc.c:1646  */
++#line 1475 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3458 "awkgram.c" /* yacc.c:1646  */
 -#line 3421 "awkgram.c" /* yacc.c:1646  */
++#line 3460 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 122:
 -#line 1451 "awkgram.y" /* yacc.c:1646  */
 +  case 126:
- #line 1474 "awkgram.y" /* yacc.c:1646  */
++#line 1476 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = list_create((yyvsp[0])); }
- #line 3464 "awkgram.c" /* yacc.c:1646  */
 -#line 3427 "awkgram.c" /* yacc.c:1646  */
++#line 3466 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 123:
 -#line 1457 "awkgram.y" /* yacc.c:1646  */
 +  case 127:
- #line 1480 "awkgram.y" /* yacc.c:1646  */
++#line 1482 "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 3475 "awkgram.c" /* yacc.c:1646  */
 -#line 3438 "awkgram.c" /* yacc.c:1646  */
++#line 3477 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 124:
 -#line 1464 "awkgram.y" /* yacc.c:1646  */
 +  case 128:
- #line 1487 "awkgram.y" /* yacc.c:1646  */
++#line 1489 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = mk_assignment((yyvsp[-2]), list_create((yyvsp[0])), 
(yyvsp[-1]));
          }
- #line 3483 "awkgram.c" /* yacc.c:1646  */
 -#line 3446 "awkgram.c" /* yacc.c:1646  */
++#line 3485 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 125:
 -#line 1468 "awkgram.y" /* yacc.c:1646  */
 +  case 129:
- #line 1491 "awkgram.y" /* yacc.c:1646  */
++#line 1493 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_boolean((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3489 "awkgram.c" /* yacc.c:1646  */
 -#line 3452 "awkgram.c" /* yacc.c:1646  */
++#line 3491 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 126:
 -#line 1470 "awkgram.y" /* yacc.c:1646  */
 +  case 130:
- #line 1493 "awkgram.y" /* yacc.c:1646  */
++#line 1495 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_boolean((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3495 "awkgram.c" /* yacc.c:1646  */
 -#line 3458 "awkgram.c" /* yacc.c:1646  */
++#line 3497 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 127:
 -#line 1472 "awkgram.y" /* yacc.c:1646  */
 +  case 131:
- #line 1495 "awkgram.y" /* yacc.c:1646  */
++#line 1497 "awkgram.y" /* yacc.c:1646  */
      {
                if ((yyvsp[-2])->lasti->opcode == Op_match_rec)
                        warning_ln((yyvsp[-1])->source_line,
@@@ -3508,11 -3471,11 +3510,11 @@@
                bcfree((yyvsp[0]));
                (yyval) = list_append((yyvsp[-2]), (yyvsp[-1]));
          }
- #line 3512 "awkgram.c" /* yacc.c:1646  */
 -#line 3475 "awkgram.c" /* yacc.c:1646  */
++#line 3514 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 128:
 -#line 1485 "awkgram.y" /* yacc.c:1646  */
 +  case 132:
- #line 1508 "awkgram.y" /* yacc.c:1646  */
++#line 1510 "awkgram.y" /* yacc.c:1646  */
      {
                if ((yyvsp[-2])->lasti->opcode == Op_match_rec)
                        warning_ln((yyvsp[-1])->source_line,
@@@ -3529,11 -3492,11 +3531,11 @@@
                        (yyval) = list_append(list_merge((yyvsp[-2]), 
(yyvsp[0])), (yyvsp[-1]));
                }
          }
- #line 3533 "awkgram.c" /* yacc.c:1646  */
 -#line 3496 "awkgram.c" /* yacc.c:1646  */
++#line 3535 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 129:
 -#line 1502 "awkgram.y" /* yacc.c:1646  */
 +  case 133:
- #line 1525 "awkgram.y" /* yacc.c:1646  */
++#line 1527 "awkgram.y" /* yacc.c:1646  */
      {
                if (do_lint_old)
                        warning_ln((yyvsp[-1])->source_line,
@@@ -3543,91 -3506,91 +3545,91 @@@
                (yyvsp[-1])->expr_count = 1;
                (yyval) = list_append(list_merge((yyvsp[-2]), (yyvsp[0])), 
(yyvsp[-1]));
          }
- #line 3547 "awkgram.c" /* yacc.c:1646  */
 -#line 3510 "awkgram.c" /* yacc.c:1646  */
++#line 3549 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 130:
 -#line 1512 "awkgram.y" /* yacc.c:1646  */
 +  case 134:
- #line 1535 "awkgram.y" /* yacc.c:1646  */
++#line 1537 "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 3558 "awkgram.c" /* yacc.c:1646  */
 -#line 3521 "awkgram.c" /* yacc.c:1646  */
++#line 3560 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 131:
 -#line 1519 "awkgram.y" /* yacc.c:1646  */
 +  case 135:
- #line 1542 "awkgram.y" /* yacc.c:1646  */
++#line 1544 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_condition((yyvsp[-4]), (yyvsp[-3]), (yyvsp[-2]), 
(yyvsp[-1]), (yyvsp[0])); }
- #line 3564 "awkgram.c" /* yacc.c:1646  */
 -#line 3527 "awkgram.c" /* yacc.c:1646  */
++#line 3566 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 132:
 -#line 1521 "awkgram.y" /* yacc.c:1646  */
 +  case 136:
- #line 1544 "awkgram.y" /* yacc.c:1646  */
++#line 1546 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3570 "awkgram.c" /* yacc.c:1646  */
 -#line 3533 "awkgram.c" /* yacc.c:1646  */
++#line 3572 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 133:
 -#line 1526 "awkgram.y" /* yacc.c:1646  */
 +  case 137:
- #line 1549 "awkgram.y" /* yacc.c:1646  */
++#line 1551 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3576 "awkgram.c" /* yacc.c:1646  */
 -#line 3539 "awkgram.c" /* yacc.c:1646  */
++#line 3578 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 134:
 -#line 1528 "awkgram.y" /* yacc.c:1646  */
 +  case 138:
- #line 1551 "awkgram.y" /* yacc.c:1646  */
++#line 1553 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3582 "awkgram.c" /* yacc.c:1646  */
 -#line 3545 "awkgram.c" /* yacc.c:1646  */
++#line 3584 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 135:
 -#line 1530 "awkgram.y" /* yacc.c:1646  */
 +  case 139:
- #line 1553 "awkgram.y" /* yacc.c:1646  */
++#line 1555 "awkgram.y" /* yacc.c:1646  */
      {
                (yyvsp[0])->opcode = Op_assign_quotient;
                (yyval) = (yyvsp[0]);
          }
- #line 3591 "awkgram.c" /* yacc.c:1646  */
 -#line 3554 "awkgram.c" /* yacc.c:1646  */
++#line 3593 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 136:
 -#line 1538 "awkgram.y" /* yacc.c:1646  */
 +  case 140:
- #line 1561 "awkgram.y" /* yacc.c:1646  */
++#line 1563 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3597 "awkgram.c" /* yacc.c:1646  */
 -#line 3560 "awkgram.c" /* yacc.c:1646  */
++#line 3599 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 137:
 -#line 1540 "awkgram.y" /* yacc.c:1646  */
 +  case 141:
- #line 1563 "awkgram.y" /* yacc.c:1646  */
++#line 1565 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3603 "awkgram.c" /* yacc.c:1646  */
 -#line 3566 "awkgram.c" /* yacc.c:1646  */
++#line 3605 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 138:
 -#line 1545 "awkgram.y" /* yacc.c:1646  */
 +  case 142:
- #line 1568 "awkgram.y" /* yacc.c:1646  */
++#line 1570 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3609 "awkgram.c" /* yacc.c:1646  */
 -#line 3572 "awkgram.c" /* yacc.c:1646  */
++#line 3611 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 139:
 -#line 1547 "awkgram.y" /* yacc.c:1646  */
 +  case 143:
- #line 1570 "awkgram.y" /* yacc.c:1646  */
++#line 1572 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3615 "awkgram.c" /* yacc.c:1646  */
 -#line 3578 "awkgram.c" /* yacc.c:1646  */
++#line 3617 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 140:
 -#line 1552 "awkgram.y" /* yacc.c:1646  */
 +  case 144:
- #line 1575 "awkgram.y" /* yacc.c:1646  */
++#line 1577 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3621 "awkgram.c" /* yacc.c:1646  */
 -#line 3584 "awkgram.c" /* yacc.c:1646  */
++#line 3623 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 141:
 -#line 1554 "awkgram.y" /* yacc.c:1646  */
 +  case 145:
- #line 1577 "awkgram.y" /* yacc.c:1646  */
++#line 1579 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3627 "awkgram.c" /* yacc.c:1646  */
 -#line 3590 "awkgram.c" /* yacc.c:1646  */
++#line 3629 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 142:
 -#line 1556 "awkgram.y" /* yacc.c:1646  */
 +  case 146:
- #line 1579 "awkgram.y" /* yacc.c:1646  */
++#line 1581 "awkgram.y" /* yacc.c:1646  */
      {
                int count = 2;
                bool is_simple_var = false;
@@@ -3681,47 -3644,47 +3683,47 @@@
                                max_args = count;
                }
          }
- #line 3685 "awkgram.c" /* yacc.c:1646  */
 -#line 3648 "awkgram.c" /* yacc.c:1646  */
++#line 3687 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 144:
 -#line 1615 "awkgram.y" /* yacc.c:1646  */
 +  case 148:
- #line 1638 "awkgram.y" /* yacc.c:1646  */
++#line 1640 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3691 "awkgram.c" /* yacc.c:1646  */
 -#line 3654 "awkgram.c" /* yacc.c:1646  */
++#line 3693 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 145:
 -#line 1617 "awkgram.y" /* yacc.c:1646  */
 +  case 149:
- #line 1640 "awkgram.y" /* yacc.c:1646  */
++#line 1642 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3697 "awkgram.c" /* yacc.c:1646  */
 -#line 3660 "awkgram.c" /* yacc.c:1646  */
++#line 3699 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 146:
 -#line 1619 "awkgram.y" /* yacc.c:1646  */
 +  case 150:
- #line 1642 "awkgram.y" /* yacc.c:1646  */
++#line 1644 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3703 "awkgram.c" /* yacc.c:1646  */
 -#line 3666 "awkgram.c" /* yacc.c:1646  */
++#line 3705 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 147:
 -#line 1621 "awkgram.y" /* yacc.c:1646  */
 +  case 151:
- #line 1644 "awkgram.y" /* yacc.c:1646  */
++#line 1646 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3709 "awkgram.c" /* yacc.c:1646  */
 -#line 3672 "awkgram.c" /* yacc.c:1646  */
++#line 3711 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 148:
 -#line 1623 "awkgram.y" /* yacc.c:1646  */
 +  case 152:
- #line 1646 "awkgram.y" /* yacc.c:1646  */
++#line 1648 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3715 "awkgram.c" /* yacc.c:1646  */
 -#line 3678 "awkgram.c" /* yacc.c:1646  */
++#line 3717 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 149:
 -#line 1625 "awkgram.y" /* yacc.c:1646  */
 +  case 153:
- #line 1648 "awkgram.y" /* yacc.c:1646  */
++#line 1650 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3721 "awkgram.c" /* yacc.c:1646  */
 -#line 3684 "awkgram.c" /* yacc.c:1646  */
++#line 3723 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 150:
 -#line 1627 "awkgram.y" /* yacc.c:1646  */
 +  case 154:
- #line 1650 "awkgram.y" /* yacc.c:1646  */
++#line 1652 "awkgram.y" /* yacc.c:1646  */
      {
                /*
                 * In BEGINFILE/ENDFILE, allow `getline [var] < file'
@@@ -3735,29 -3698,29 +3737,29 @@@
                                _("non-redirected `getline' undefined inside 
END action"));
                (yyval) = mk_getline((yyvsp[-2]), (yyvsp[-1]), (yyvsp[0]), 
redirect_input);
          }
- #line 3739 "awkgram.c" /* yacc.c:1646  */
 -#line 3702 "awkgram.c" /* yacc.c:1646  */
++#line 3741 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 151:
 -#line 1641 "awkgram.y" /* yacc.c:1646  */
 +  case 155:
- #line 1664 "awkgram.y" /* yacc.c:1646  */
++#line 1666 "awkgram.y" /* yacc.c:1646  */
      {
                (yyvsp[0])->opcode = Op_postincrement;
                (yyval) = mk_assignment((yyvsp[-1]), NULL, (yyvsp[0]));
          }
- #line 3748 "awkgram.c" /* yacc.c:1646  */
 -#line 3711 "awkgram.c" /* yacc.c:1646  */
++#line 3750 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 152:
 -#line 1646 "awkgram.y" /* yacc.c:1646  */
 +  case 156:
- #line 1669 "awkgram.y" /* yacc.c:1646  */
++#line 1671 "awkgram.y" /* yacc.c:1646  */
      {
                (yyvsp[0])->opcode = Op_postdecrement;
                (yyval) = mk_assignment((yyvsp[-1]), NULL, (yyvsp[0]));
          }
- #line 3757 "awkgram.c" /* yacc.c:1646  */
 -#line 3720 "awkgram.c" /* yacc.c:1646  */
++#line 3759 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 153:
 -#line 1651 "awkgram.y" /* yacc.c:1646  */
 +  case 157:
- #line 1674 "awkgram.y" /* yacc.c:1646  */
++#line 1676 "awkgram.y" /* yacc.c:1646  */
      {
                if (do_lint_old) {
                    warning_ln((yyvsp[-1])->source_line,
@@@ -3777,64 -3740,64 +3779,64 @@@
                        (yyval) = list_append(list_merge(t, (yyvsp[0])), 
(yyvsp[-1]));
                }
          }
- #line 3781 "awkgram.c" /* yacc.c:1646  */
 -#line 3744 "awkgram.c" /* yacc.c:1646  */
++#line 3783 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 154:
 -#line 1676 "awkgram.y" /* yacc.c:1646  */
 +  case 158:
- #line 1699 "awkgram.y" /* yacc.c:1646  */
++#line 1701 "awkgram.y" /* yacc.c:1646  */
      {
                  (yyval) = mk_getline((yyvsp[-1]), (yyvsp[0]), (yyvsp[-3]), 
(yyvsp[-2])->redir_type);
                  bcfree((yyvsp[-2]));
                }
- #line 3790 "awkgram.c" /* yacc.c:1646  */
 -#line 3753 "awkgram.c" /* yacc.c:1646  */
++#line 3792 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 155:
 -#line 1682 "awkgram.y" /* yacc.c:1646  */
 +  case 159:
- #line 1705 "awkgram.y" /* yacc.c:1646  */
++#line 1707 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3796 "awkgram.c" /* yacc.c:1646  */
 -#line 3759 "awkgram.c" /* yacc.c:1646  */
++#line 3798 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 156:
 -#line 1684 "awkgram.y" /* yacc.c:1646  */
 +  case 160:
- #line 1707 "awkgram.y" /* yacc.c:1646  */
++#line 1709 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3802 "awkgram.c" /* yacc.c:1646  */
 -#line 3765 "awkgram.c" /* yacc.c:1646  */
++#line 3804 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 157:
 -#line 1686 "awkgram.y" /* yacc.c:1646  */
 +  case 161:
- #line 1709 "awkgram.y" /* yacc.c:1646  */
++#line 1711 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3808 "awkgram.c" /* yacc.c:1646  */
 -#line 3771 "awkgram.c" /* yacc.c:1646  */
++#line 3810 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 158:
 -#line 1688 "awkgram.y" /* yacc.c:1646  */
 +  case 162:
- #line 1711 "awkgram.y" /* yacc.c:1646  */
++#line 1713 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3814 "awkgram.c" /* yacc.c:1646  */
 -#line 3777 "awkgram.c" /* yacc.c:1646  */
++#line 3816 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 159:
 -#line 1690 "awkgram.y" /* yacc.c:1646  */
 +  case 163:
- #line 1713 "awkgram.y" /* yacc.c:1646  */
++#line 1715 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3820 "awkgram.c" /* yacc.c:1646  */
 -#line 3783 "awkgram.c" /* yacc.c:1646  */
++#line 3822 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 160:
 -#line 1692 "awkgram.y" /* yacc.c:1646  */
 +  case 164:
- #line 1715 "awkgram.y" /* yacc.c:1646  */
++#line 1717 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3826 "awkgram.c" /* yacc.c:1646  */
 -#line 3789 "awkgram.c" /* yacc.c:1646  */
++#line 3828 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 161:
 -#line 1697 "awkgram.y" /* yacc.c:1646  */
 +  case 165:
- #line 1720 "awkgram.y" /* yacc.c:1646  */
++#line 1722 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = list_create((yyvsp[0]));
          }
- #line 3834 "awkgram.c" /* yacc.c:1646  */
 -#line 3797 "awkgram.c" /* yacc.c:1646  */
++#line 3836 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 162:
 -#line 1701 "awkgram.y" /* yacc.c:1646  */
 +  case 166:
- #line 1724 "awkgram.y" /* yacc.c:1646  */
++#line 1726 "awkgram.y" /* yacc.c:1646  */
      {
                if ((yyvsp[0])->opcode == Op_match_rec) {
                        (yyvsp[0])->opcode = Op_nomatch;
@@@ -3866,42 -3829,43 +3868,43 @@@
                        }
                }
           }
- #line 3870 "awkgram.c" /* yacc.c:1646  */
 -#line 3833 "awkgram.c" /* yacc.c:1646  */
++#line 3872 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 163:
 -#line 1733 "awkgram.y" /* yacc.c:1646  */
 +  case 167:
- #line 1756 "awkgram.y" /* yacc.c:1646  */
++#line 1758 "awkgram.y" /* yacc.c:1646  */
      {
-               if (do_pretty_print)
-                       (yyval) = list_append((yyvsp[-1]), bcalloc(Op_parens, 
1, sourceline));
-               else
-                       (yyval) = (yyvsp[-1]);
+               // Always include. Allows us to lint warn on
+               // print "foo" > "bar" 1
+               // but not warn on
+               // print "foo" > ("bar" 1)
+               (yyval) = list_append((yyvsp[-1]), bcalloc(Op_parens, 1, 
sourceline));
          }
- #line 3881 "awkgram.c" /* yacc.c:1646  */
 -#line 3845 "awkgram.c" /* yacc.c:1646  */
++#line 3884 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 164:
 -#line 1741 "awkgram.y" /* yacc.c:1646  */
 +  case 168:
- #line 1763 "awkgram.y" /* yacc.c:1646  */
++#line 1766 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = snode((yyvsp[-1]), (yyvsp[-3]));
                if ((yyval) == NULL)
                        YYABORT;
          }
- #line 3891 "awkgram.c" /* yacc.c:1646  */
 -#line 3855 "awkgram.c" /* yacc.c:1646  */
++#line 3894 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 165:
 -#line 1747 "awkgram.y" /* yacc.c:1646  */
 +  case 169:
- #line 1769 "awkgram.y" /* yacc.c:1646  */
++#line 1772 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = snode((yyvsp[-1]), (yyvsp[-3]));
                if ((yyval) == NULL)
                        YYABORT;
          }
- #line 3901 "awkgram.c" /* yacc.c:1646  */
 -#line 3865 "awkgram.c" /* yacc.c:1646  */
++#line 3904 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 166:
 -#line 1753 "awkgram.y" /* yacc.c:1646  */
 +  case 170:
- #line 1775 "awkgram.y" /* yacc.c:1646  */
++#line 1778 "awkgram.y" /* yacc.c:1646  */
      {
                static bool warned = false;
  
@@@ -3914,45 -3878,45 +3917,45 @@@
                if ((yyval) == NULL)
                        YYABORT;
          }
- #line 3918 "awkgram.c" /* yacc.c:1646  */
 -#line 3882 "awkgram.c" /* yacc.c:1646  */
++#line 3921 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 169:
 -#line 1768 "awkgram.y" /* yacc.c:1646  */
 +  case 173:
- #line 1790 "awkgram.y" /* yacc.c:1646  */
++#line 1793 "awkgram.y" /* yacc.c:1646  */
      {
                (yyvsp[-1])->opcode = Op_preincrement;
                (yyval) = mk_assignment((yyvsp[0]), NULL, (yyvsp[-1]));
          }
- #line 3927 "awkgram.c" /* yacc.c:1646  */
 -#line 3891 "awkgram.c" /* yacc.c:1646  */
++#line 3930 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 170:
 -#line 1773 "awkgram.y" /* yacc.c:1646  */
 +  case 174:
- #line 1795 "awkgram.y" /* yacc.c:1646  */
++#line 1798 "awkgram.y" /* yacc.c:1646  */
      {
                (yyvsp[-1])->opcode = Op_predecrement;
                (yyval) = mk_assignment((yyvsp[0]), NULL, (yyvsp[-1]));
          }
- #line 3936 "awkgram.c" /* yacc.c:1646  */
 -#line 3900 "awkgram.c" /* yacc.c:1646  */
++#line 3939 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 171:
 -#line 1778 "awkgram.y" /* yacc.c:1646  */
 +  case 175:
- #line 1800 "awkgram.y" /* yacc.c:1646  */
++#line 1803 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = list_create((yyvsp[0]));
          }
- #line 3944 "awkgram.c" /* yacc.c:1646  */
 -#line 3908 "awkgram.c" /* yacc.c:1646  */
++#line 3947 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 172:
 -#line 1782 "awkgram.y" /* yacc.c:1646  */
 +  case 176:
- #line 1804 "awkgram.y" /* yacc.c:1646  */
++#line 1807 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = list_create((yyvsp[0]));
          }
- #line 3952 "awkgram.c" /* yacc.c:1646  */
 -#line 3916 "awkgram.c" /* yacc.c:1646  */
++#line 3955 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 173:
 -#line 1786 "awkgram.y" /* yacc.c:1646  */
 +  case 177:
- #line 1808 "awkgram.y" /* yacc.c:1646  */
++#line 1811 "awkgram.y" /* yacc.c:1646  */
      {
                if ((yyvsp[0])->lasti->opcode == Op_push_i
                        && ((yyvsp[0])->lasti->memory->flags & STRING) == 0
@@@ -3967,11 -3931,11 +3970,11 @@@
                        (yyval) = list_append((yyvsp[0]), (yyvsp[-1]));
                }
          }
- #line 3971 "awkgram.c" /* yacc.c:1646  */
 -#line 3935 "awkgram.c" /* yacc.c:1646  */
++#line 3974 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 174:
 -#line 1801 "awkgram.y" /* yacc.c:1646  */
 +  case 178:
- #line 1823 "awkgram.y" /* yacc.c:1646  */
++#line 1826 "awkgram.y" /* yacc.c:1646  */
      {
                if ((yyvsp[0])->lasti->opcode == Op_push_i
                        && ((yyvsp[0])->lasti->memory->flags & STRING) == 0
@@@ -3989,20 -3953,20 +3992,20 @@@
                        (yyval) = list_append((yyvsp[0]), (yyvsp[-1]));
                }
          }
- #line 3993 "awkgram.c" /* yacc.c:1646  */
 -#line 3957 "awkgram.c" /* yacc.c:1646  */
++#line 3996 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 175:
 -#line 1822 "awkgram.y" /* yacc.c:1646  */
 +  case 179:
- #line 1844 "awkgram.y" /* yacc.c:1646  */
++#line 1847 "awkgram.y" /* yacc.c:1646  */
      {
                func_use((yyvsp[0])->lasti->func_name, FUNC_USE);
                (yyval) = (yyvsp[0]);
          }
- #line 4002 "awkgram.c" /* yacc.c:1646  */
 -#line 3966 "awkgram.c" /* yacc.c:1646  */
++#line 4005 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 176:
 -#line 1827 "awkgram.y" /* yacc.c:1646  */
 +  case 180:
- #line 1849 "awkgram.y" /* yacc.c:1646  */
++#line 1852 "awkgram.y" /* yacc.c:1646  */
      {
                /* indirect function call */
                INSTRUCTION *f, *t;
@@@ -4036,28 -4000,16 +4039,28 @@@
                (yyval) = list_prepend((yyvsp[0]), t);
                at_seen = false;
          }
- #line 4040 "awkgram.c" /* yacc.c:1646  */
 -#line 4004 "awkgram.c" /* yacc.c:1646  */
++#line 4043 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 177:
 -#line 1864 "awkgram.y" /* yacc.c:1646  */
 +  case 181:
- #line 1886 "awkgram.y" /* yacc.c:1646  */
++#line 1889 "awkgram.y" /* yacc.c:1646  */
      {
                NODE *n;
 +              const char *name = (yyvsp[-3])->func_name;
 +
 +              if (current_namespace != awk_namespace && strchr(name, ':') == 
NULL) {
 +                      size_t len = strlen(current_namespace) + 2 + 
strlen(name) + 1;
 +                      char *buf;
 +
 +                      emalloc(buf, char *, len, "direct_func_call");
 +                      sprintf(buf, "%s::%s", current_namespace, name);
 +
 +                      efree((void *) (yyvsp[-3])->func_name);
 +                      (yyvsp[-3])->func_name = buf;
 +              }
  
                if (! at_seen) {
 -                      n = lookup((yyvsp[-3])->func_name);
 +                      n = lookup((yyvsp[-3])->func_name, true);
                        if (n != NULL && n->type != Node_func
                            && n->type != Node_ext_func) {
                                error_ln((yyvsp[-3])->source_line,
@@@ -4078,49 -4029,49 +4081,49 @@@
                        (yyval) = list_append(t, (yyvsp[-3]));
                }
          }
- #line 4082 "awkgram.c" /* yacc.c:1646  */
 -#line 4033 "awkgram.c" /* yacc.c:1646  */
++#line 4085 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 178:
 -#line 1892 "awkgram.y" /* yacc.c:1646  */
 +  case 182:
- #line 1927 "awkgram.y" /* yacc.c:1646  */
++#line 1930 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 4088 "awkgram.c" /* yacc.c:1646  */
 -#line 4039 "awkgram.c" /* yacc.c:1646  */
++#line 4091 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 179:
 -#line 1894 "awkgram.y" /* yacc.c:1646  */
 +  case 183:
- #line 1929 "awkgram.y" /* yacc.c:1646  */
++#line 1932 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 4094 "awkgram.c" /* yacc.c:1646  */
 -#line 4045 "awkgram.c" /* yacc.c:1646  */
++#line 4097 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 180:
 -#line 1899 "awkgram.y" /* yacc.c:1646  */
 +  case 184:
- #line 1934 "awkgram.y" /* yacc.c:1646  */
++#line 1937 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 4100 "awkgram.c" /* yacc.c:1646  */
 -#line 4051 "awkgram.c" /* yacc.c:1646  */
++#line 4103 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 181:
 -#line 1901 "awkgram.y" /* yacc.c:1646  */
 +  case 185:
- #line 1936 "awkgram.y" /* yacc.c:1646  */
++#line 1939 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[-1]); }
- #line 4106 "awkgram.c" /* yacc.c:1646  */
 -#line 4057 "awkgram.c" /* yacc.c:1646  */
++#line 4109 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 182:
 -#line 1906 "awkgram.y" /* yacc.c:1646  */
 +  case 186:
- #line 1941 "awkgram.y" /* yacc.c:1646  */
++#line 1944 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 4112 "awkgram.c" /* yacc.c:1646  */
 -#line 4063 "awkgram.c" /* yacc.c:1646  */
++#line 4115 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 183:
 -#line 1908 "awkgram.y" /* yacc.c:1646  */
 +  case 187:
- #line 1943 "awkgram.y" /* yacc.c:1646  */
++#line 1946 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = list_merge((yyvsp[-1]), (yyvsp[0]));
          }
- #line 4120 "awkgram.c" /* yacc.c:1646  */
 -#line 4071 "awkgram.c" /* yacc.c:1646  */
++#line 4123 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 184:
 -#line 1915 "awkgram.y" /* yacc.c:1646  */
 +  case 188:
- #line 1950 "awkgram.y" /* yacc.c:1646  */
++#line 1953 "awkgram.y" /* yacc.c:1646  */
      {
                INSTRUCTION *ip = (yyvsp[0])->lasti;
                int count = ip->sub_count;      /* # of SUBSEP-seperated 
expressions */
@@@ -4134,11 -4085,11 +4137,11 @@@
                sub_counter++;  /* count # of dimensions */
                (yyval) = (yyvsp[0]);
          }
- #line 4138 "awkgram.c" /* yacc.c:1646  */
 -#line 4089 "awkgram.c" /* yacc.c:1646  */
++#line 4141 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 185:
 -#line 1932 "awkgram.y" /* yacc.c:1646  */
 +  case 189:
- #line 1967 "awkgram.y" /* yacc.c:1646  */
++#line 1970 "awkgram.y" /* yacc.c:1646  */
      {
                INSTRUCTION *t = (yyvsp[-1]);
                if ((yyvsp[-1]) == NULL) {
@@@ -4152,31 -4103,31 +4155,31 @@@
                        (yyvsp[0])->sub_count = count_expressions(&t, false);
                (yyval) = list_append(t, (yyvsp[0]));
          }
- #line 4156 "awkgram.c" /* yacc.c:1646  */
 -#line 4107 "awkgram.c" /* yacc.c:1646  */
++#line 4159 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 186:
 -#line 1949 "awkgram.y" /* yacc.c:1646  */
 +  case 190:
- #line 1984 "awkgram.y" /* yacc.c:1646  */
++#line 1987 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 4162 "awkgram.c" /* yacc.c:1646  */
 -#line 4113 "awkgram.c" /* yacc.c:1646  */
++#line 4165 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 187:
 -#line 1951 "awkgram.y" /* yacc.c:1646  */
 +  case 191:
- #line 1986 "awkgram.y" /* yacc.c:1646  */
++#line 1989 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = list_merge((yyvsp[-1]), (yyvsp[0]));
          }
- #line 4170 "awkgram.c" /* yacc.c:1646  */
 -#line 4121 "awkgram.c" /* yacc.c:1646  */
++#line 4173 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 188:
 -#line 1958 "awkgram.y" /* yacc.c:1646  */
 +  case 192:
- #line 1993 "awkgram.y" /* yacc.c:1646  */
++#line 1996 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[-1]); }
- #line 4176 "awkgram.c" /* yacc.c:1646  */
 -#line 4127 "awkgram.c" /* yacc.c:1646  */
++#line 4179 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 189:
 -#line 1963 "awkgram.y" /* yacc.c:1646  */
 +  case 193:
- #line 1998 "awkgram.y" /* yacc.c:1646  */
++#line 2001 "awkgram.y" /* yacc.c:1646  */
      {
                char *var_name = (yyvsp[0])->lextok;
  
@@@ -4184,22 -4135,22 +4187,22 @@@
                (yyvsp[0])->memory = variable((yyvsp[0])->source_line, 
var_name, Node_var_new);
                (yyval) = list_create((yyvsp[0]));
          }
- #line 4188 "awkgram.c" /* yacc.c:1646  */
 -#line 4139 "awkgram.c" /* yacc.c:1646  */
++#line 4191 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 190:
 -#line 1971 "awkgram.y" /* yacc.c:1646  */
 +  case 194:
- #line 2006 "awkgram.y" /* yacc.c:1646  */
++#line 2009 "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 4199 "awkgram.c" /* yacc.c:1646  */
 -#line 4150 "awkgram.c" /* yacc.c:1646  */
++#line 4202 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 191:
 -#line 1981 "awkgram.y" /* yacc.c:1646  */
 +  case 195:
- #line 2016 "awkgram.y" /* yacc.c:1646  */
++#line 2019 "awkgram.y" /* yacc.c:1646  */
      {
                INSTRUCTION *ip = (yyvsp[0])->nexti;
                if (ip->opcode == Op_push
@@@ -4211,73 -4162,73 +4214,73 @@@
                } else
                        (yyval) = (yyvsp[0]);
          }
- #line 4215 "awkgram.c" /* yacc.c:1646  */
 -#line 4166 "awkgram.c" /* yacc.c:1646  */
++#line 4218 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 192:
 -#line 1993 "awkgram.y" /* yacc.c:1646  */
 +  case 196:
- #line 2028 "awkgram.y" /* yacc.c:1646  */
++#line 2031 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = list_append((yyvsp[-1]), (yyvsp[-2]));
                if ((yyvsp[0]) != NULL)
                        mk_assignment((yyvsp[-1]), NULL, (yyvsp[0]));
          }
- #line 4225 "awkgram.c" /* yacc.c:1646  */
 -#line 4176 "awkgram.c" /* yacc.c:1646  */
++#line 4228 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 193:
 -#line 2002 "awkgram.y" /* yacc.c:1646  */
 +  case 197:
- #line 2037 "awkgram.y" /* yacc.c:1646  */
++#line 2040 "awkgram.y" /* yacc.c:1646  */
      {
                (yyvsp[0])->opcode = Op_postincrement;
          }
- #line 4233 "awkgram.c" /* yacc.c:1646  */
 -#line 4184 "awkgram.c" /* yacc.c:1646  */
++#line 4236 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 194:
 -#line 2006 "awkgram.y" /* yacc.c:1646  */
 +  case 198:
- #line 2041 "awkgram.y" /* yacc.c:1646  */
++#line 2044 "awkgram.y" /* yacc.c:1646  */
      {
                (yyvsp[0])->opcode = Op_postdecrement;
          }
- #line 4241 "awkgram.c" /* yacc.c:1646  */
 -#line 4192 "awkgram.c" /* yacc.c:1646  */
++#line 4244 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 195:
 -#line 2009 "awkgram.y" /* yacc.c:1646  */
 +  case 199:
- #line 2044 "awkgram.y" /* yacc.c:1646  */
++#line 2047 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 4247 "awkgram.c" /* yacc.c:1646  */
 -#line 4198 "awkgram.c" /* yacc.c:1646  */
++#line 4250 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 197:
 -#line 2017 "awkgram.y" /* yacc.c:1646  */
 +  case 201:
- #line 2052 "awkgram.y" /* yacc.c:1646  */
++#line 2055 "awkgram.y" /* yacc.c:1646  */
      { yyerrok; }
- #line 4253 "awkgram.c" /* yacc.c:1646  */
 -#line 4204 "awkgram.c" /* yacc.c:1646  */
++#line 4256 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 198:
 -#line 2021 "awkgram.y" /* yacc.c:1646  */
 +  case 202:
- #line 2056 "awkgram.y" /* yacc.c:1646  */
++#line 2059 "awkgram.y" /* yacc.c:1646  */
      { yyerrok; }
- #line 4259 "awkgram.c" /* yacc.c:1646  */
 -#line 4210 "awkgram.c" /* yacc.c:1646  */
++#line 4262 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 201:
 -#line 2030 "awkgram.y" /* yacc.c:1646  */
 +  case 205:
- #line 2065 "awkgram.y" /* yacc.c:1646  */
++#line 2068 "awkgram.y" /* yacc.c:1646  */
      { yyerrok; }
- #line 4265 "awkgram.c" /* yacc.c:1646  */
 -#line 4216 "awkgram.c" /* yacc.c:1646  */
++#line 4268 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 202:
 -#line 2034 "awkgram.y" /* yacc.c:1646  */
 +  case 206:
- #line 2069 "awkgram.y" /* yacc.c:1646  */
++#line 2072 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); yyerrok; }
- #line 4271 "awkgram.c" /* yacc.c:1646  */
 -#line 4222 "awkgram.c" /* yacc.c:1646  */
++#line 4274 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 203:
 -#line 2038 "awkgram.y" /* yacc.c:1646  */
 +  case 207:
- #line 2073 "awkgram.y" /* yacc.c:1646  */
++#line 2076 "awkgram.y" /* yacc.c:1646  */
      { yyerrok; }
- #line 4277 "awkgram.c" /* yacc.c:1646  */
 -#line 4228 "awkgram.c" /* yacc.c:1646  */
++#line 4280 "awkgram.c" /* yacc.c:1646  */
      break;
  
  
- #line 4281 "awkgram.c" /* yacc.c:1646  */
 -#line 4232 "awkgram.c" /* yacc.c:1646  */
++#line 4284 "awkgram.c" /* yacc.c:1646  */
        default: break;
      }
    /* User semantic actions sometimes alter yychar, and that requires
@@@ -4505,7 -4456,7 +4508,7 @@@ yyreturn
  #endif
    return yyresult;
  }
- #line 2075 "awkgram.y" /* yacc.c:1906  */
 -#line 2040 "awkgram.y" /* yacc.c:1906  */
++#line 2078 "awkgram.y" /* yacc.c:1906  */
  
  
  struct token {
diff --cc doc/gawk.info
index 4861771,9906573..16270fa
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@@ -36528,593 -36144,582 +36580,593 @@@ Inde
  
  Tag Table:
  Node: Top1200
 -Node: Foreword343399
 -Node: Foreword447841
 -Node: Preface49373
 -Ref: Preface-Footnote-152232
 -Ref: Preface-Footnote-252339
 -Ref: Preface-Footnote-352573
 -Node: History52715
 -Node: Names55067
 -Ref: Names-Footnote-156161
 -Node: This Manual56308
 -Ref: This Manual-Footnote-162793
 -Node: Conventions62893
 -Node: Manual History65248
 -Ref: Manual History-Footnote-168245
 -Ref: Manual History-Footnote-268286
 -Node: How To Contribute68360
 -Node: Acknowledgments69286
 -Node: Getting Started74194
 -Node: Running gawk76633
 -Node: One-shot77823
 -Node: Read Terminal79086
 -Node: Long81079
 -Node: Executable Scripts82592
 -Ref: Executable Scripts-Footnote-185387
 -Node: Comments85490
 -Node: Quoting87974
 -Node: DOS Quoting93491
 -Node: Sample Data Files95547
 -Node: Very Simple98142
 -Node: Two Rules103044
 -Node: More Complex104929
 -Node: Statements/Lines107795
 -Ref: Statements/Lines-Footnote-1112254
 -Node: Other Features112519
 -Node: When113455
 -Ref: When-Footnote-1115209
 -Node: Intro Summary115274
 -Node: Invoking Gawk116158
 -Node: Command Line117672
 -Node: Options118470
 -Ref: Options-Footnote-1135032
 -Ref: Options-Footnote-2135263
 -Node: Other Arguments135288
 -Node: Naming Standard Input138235
 -Node: Environment Variables139328
 -Node: AWKPATH Variable139886
 -Ref: AWKPATH Variable-Footnote-1143298
 -Ref: AWKPATH Variable-Footnote-2143332
 -Node: AWKLIBPATH Variable143593
 -Node: Other Environment Variables145251
 -Node: Exit Status149072
 -Node: Include Files149749
 -Node: Loading Shared Libraries153274
 -Node: Obsolete154702
 -Node: Undocumented155394
 -Node: Invoking Summary155691
 -Node: Regexp157351
 -Node: Regexp Usage158805
 -Node: Escape Sequences160842
 -Node: Regexp Operators167074
 -Ref: Regexp Operators-Footnote-1174490
 -Ref: Regexp Operators-Footnote-2174637
 -Node: Bracket Expressions174735
 -Ref: table-char-classes177211
 -Node: Leftmost Longest180616
 -Node: Computed Regexps181919
 -Node: GNU Regexp Operators185346
 -Node: Case-sensitivity189025
 -Ref: Case-sensitivity-Footnote-1191912
 -Ref: Case-sensitivity-Footnote-2192147
 -Node: Regexp Summary192255
 -Node: Reading Files193721
 -Node: Records195990
 -Node: awk split records197065
 -Node: gawk split records202340
 -Ref: gawk split records-Footnote-1206926
 -Node: Fields206963
 -Node: Nonconstant Fields209704
 -Ref: Nonconstant Fields-Footnote-1211940
 -Node: Changing Fields212144
 -Node: Field Separators218072
 -Node: Default Field Splitting220770
 -Node: Regexp Field Splitting221888
 -Node: Single Character Fields225241
 -Node: Command Line Field Separator226301
 -Node: Full Line Fields229519
 -Ref: Full Line Fields-Footnote-1231041
 -Ref: Full Line Fields-Footnote-2231087
 -Node: Field Splitting Summary231188
 -Node: Constant Size233262
 -Node: Fixed width data233994
 -Node: Skipping intervening237461
 -Node: Allowing trailing data238259
 -Node: Fields with fixed data239296
 -Node: Splitting By Content240814
 -Ref: Splitting By Content-Footnote-1244464
 -Node: Testing field creation244627
 -Node: Multiple Line246252
 -Ref: Multiple Line-Footnote-1252136
 -Node: Getline252315
 -Node: Plain Getline254784
 -Node: Getline/Variable257425
 -Node: Getline/File258576
 -Node: Getline/Variable/File259964
 -Ref: Getline/Variable/File-Footnote-1261569
 -Node: Getline/Pipe261657
 -Node: Getline/Variable/Pipe264364
 -Node: Getline/Coprocess265499
 -Node: Getline/Variable/Coprocess266766
 -Node: Getline Notes267508
 -Node: Getline Summary270305
 -Ref: table-getline-variants270729
 -Node: Read Timeout271477
 -Ref: Read Timeout-Footnote-1275383
 -Node: Retrying Input275441
 -Node: Command-line directories276640
 -Node: Input Summary277546
 -Node: Input Exercises280718
 -Node: Printing281446
 -Node: Print283280
 -Node: Print Examples284737
 -Node: Output Separators287517
 -Node: OFMT289534
 -Node: Printf290890
 -Node: Basic Printf291675
 -Node: Control Letters293249
 -Node: Format Modifiers298376
 -Node: Printf Examples304391
 -Node: Redirection306877
 -Node: Special FD313718
 -Ref: Special FD-Footnote-1316886
 -Node: Special Files316960
 -Node: Other Inherited Files317577
 -Node: Special Network318578
 -Node: Special Caveats319438
 -Node: Close Files And Pipes320387
 -Ref: table-close-pipe-return-values327294
 -Ref: Close Files And Pipes-Footnote-1328107
 -Ref: Close Files And Pipes-Footnote-2328255
 -Node: Nonfatal328407
 -Node: Output Summary330745
 -Node: Output Exercises331967
 -Node: Expressions332646
 -Node: Values333834
 -Node: Constants334512
 -Node: Scalar Constants335203
 -Ref: Scalar Constants-Footnote-1337726
 -Node: Nondecimal-numbers337976
 -Node: Regexp Constants340977
 -Node: Using Constant Regexps341503
 -Node: Standard Regexp Constants342125
 -Node: Strong Regexp Constants345313
 -Node: Variables348271
 -Node: Using Variables348928
 -Node: Assignment Options350838
 -Node: Conversion352711
 -Node: Strings And Numbers353235
 -Ref: Strings And Numbers-Footnote-1356298
 -Node: Locale influences conversions356407
 -Ref: table-locale-affects359165
 -Node: All Operators359783
 -Node: Arithmetic Ops360412
 -Node: Concatenation362918
 -Ref: Concatenation-Footnote-1365765
 -Node: Assignment Ops365872
 -Ref: table-assign-ops370863
 -Node: Increment Ops372176
 -Node: Truth Values and Conditions375636
 -Node: Truth Values376710
 -Node: Typing and Comparison377758
 -Node: Variable Typing378578
 -Ref: Variable Typing-Footnote-1385041
 -Ref: Variable Typing-Footnote-2385113
 -Node: Comparison Operators385190
 -Ref: table-relational-ops385609
 -Node: POSIX String Comparison389104
 -Ref: POSIX String Comparison-Footnote-1390799
 -Ref: POSIX String Comparison-Footnote-2390938
 -Node: Boolean Ops391022
 -Ref: Boolean Ops-Footnote-1395504
 -Node: Conditional Exp395596
 -Node: Function Calls397332
 -Node: Precedence401209
 -Node: Locales404868
 -Node: Expressions Summary406500
 -Node: Patterns and Actions409073
 -Node: Pattern Overview410193
 -Node: Regexp Patterns411870
 -Node: Expression Patterns412412
 -Node: Ranges416193
 -Node: BEGIN/END419301
 -Node: Using BEGIN/END420062
 -Ref: Using BEGIN/END-Footnote-1422798
 -Node: I/O And BEGIN/END422904
 -Node: BEGINFILE/ENDFILE425218
 -Node: Empty428131
 -Node: Using Shell Variables428448
 -Node: Action Overview430722
 -Node: Statements433047
 -Node: If Statement434895
 -Node: While Statement436390
 -Node: Do Statement438418
 -Node: For Statement439566
 -Node: Switch Statement442737
 -Node: Break Statement445123
 -Node: Continue Statement447215
 -Node: Next Statement449042
 -Node: Nextfile Statement451425
 -Node: Exit Statement454077
 -Node: Built-in Variables456480
 -Node: User-modified457613
 -Node: Auto-set465380
 -Ref: Auto-set-Footnote-1481682
 -Ref: Auto-set-Footnote-2481888
 -Node: ARGC and ARGV481944
 -Node: Pattern Action Summary486157
 -Node: Arrays488587
 -Node: Array Basics489916
 -Node: Array Intro490760
 -Ref: figure-array-elements492735
 -Ref: Array Intro-Footnote-1495439
 -Node: Reference to Elements495567
 -Node: Assigning Elements498031
 -Node: Array Example498522
 -Node: Scanning an Array500281
 -Node: Controlling Scanning503303
 -Ref: Controlling Scanning-Footnote-1508702
 -Node: Numeric Array Subscripts509018
 -Node: Uninitialized Subscripts511202
 -Node: Delete512821
 -Ref: Delete-Footnote-1515573
 -Node: Multidimensional515630
 -Node: Multiscanning518725
 -Node: Arrays of Arrays520316
 -Node: Arrays Summary525083
 -Node: Functions527176
 -Node: Built-in528214
 -Node: Calling Built-in529295
 -Node: Numeric Functions531291
 -Ref: Numeric Functions-Footnote-1535319
 -Ref: Numeric Functions-Footnote-2535676
 -Ref: Numeric Functions-Footnote-3535724
 -Node: String Functions535996
 -Ref: String Functions-Footnote-1559705
 -Ref: String Functions-Footnote-2559833
 -Ref: String Functions-Footnote-3560081
 -Node: Gory Details560168
 -Ref: table-sub-escapes561959
 -Ref: table-sub-proposed563478
 -Ref: table-posix-sub564841
 -Ref: table-gensub-escapes566382
 -Ref: Gory Details-Footnote-1567205
 -Node: I/O Functions567359
 -Ref: table-system-return-values573827
 -Ref: I/O Functions-Footnote-1575807
 -Ref: I/O Functions-Footnote-2575955
 -Node: Time Functions576075
 -Ref: Time Functions-Footnote-1586746
 -Ref: Time Functions-Footnote-2586814
 -Ref: Time Functions-Footnote-3586972
 -Ref: Time Functions-Footnote-4587083
 -Ref: Time Functions-Footnote-5587195
 -Ref: Time Functions-Footnote-6587422
 -Node: Bitwise Functions587688
 -Ref: table-bitwise-ops588282
 -Ref: Bitwise Functions-Footnote-1594345
 -Ref: Bitwise Functions-Footnote-2594518
 -Node: Type Functions594709
 -Node: I18N Functions597460
 -Node: User-defined599111
 -Node: Definition Syntax599916
 -Ref: Definition Syntax-Footnote-1605603
 -Node: Function Example605674
 -Ref: Function Example-Footnote-1608596
 -Node: Function Caveats608618
 -Node: Calling A Function609136
 -Node: Variable Scope610094
 -Node: Pass By Value/Reference613088
 -Node: Return Statement616587
 -Node: Dynamic Typing619566
 -Node: Indirect Calls620496
 -Ref: Indirect Calls-Footnote-1630748
 -Node: Functions Summary630876
 -Node: Library Functions633581
 -Ref: Library Functions-Footnote-1637188
 -Ref: Library Functions-Footnote-2637331
 -Node: Library Names637502
 -Ref: Library Names-Footnote-1640962
 -Ref: Library Names-Footnote-2641185
 -Node: General Functions641271
 -Node: Strtonum Function642374
 -Node: Assert Function645396
 -Node: Round Function648722
 -Node: Cliff Random Function650262
 -Node: Ordinal Functions651278
 -Ref: Ordinal Functions-Footnote-1654341
 -Ref: Ordinal Functions-Footnote-2654593
 -Node: Join Function654803
 -Ref: Join Function-Footnote-1656573
 -Node: Getlocaltime Function656773
 -Node: Readfile Function660515
 -Node: Shell Quoting662492
 -Node: Data File Management663893
 -Node: Filetrans Function664525
 -Node: Rewind Function668621
 -Node: File Checking670531
 -Ref: File Checking-Footnote-1671865
 -Node: Empty Files672066
 -Node: Ignoring Assigns674045
 -Node: Getopt Function675595
 -Ref: Getopt Function-Footnote-1687064
 -Node: Passwd Functions687264
 -Ref: Passwd Functions-Footnote-1696103
 -Node: Group Functions696191
 -Ref: Group Functions-Footnote-1704089
 -Node: Walking Arrays704296
 -Node: Library Functions Summary707304
 -Node: Library Exercises708710
 -Node: Sample Programs709175
 -Node: Running Examples709945
 -Node: Clones710673
 -Node: Cut Program711897
 -Node: Egrep Program721826
 -Ref: Egrep Program-Footnote-1729338
 -Node: Id Program729448
 -Node: Split Program733128
 -Ref: Split Program-Footnote-1736586
 -Node: Tee Program736715
 -Node: Uniq Program739505
 -Node: Wc Program746931
 -Ref: Wc Program-Footnote-1751186
 -Node: Miscellaneous Programs751280
 -Node: Dupword Program752493
 -Node: Alarm Program754523
 -Node: Translate Program759378
 -Ref: Translate Program-Footnote-1763943
 -Node: Labels Program764213
 -Ref: Labels Program-Footnote-1767564
 -Node: Word Sorting767648
 -Node: History Sorting771720
 -Node: Extract Program773555
 -Node: Simple Sed781609
 -Node: Igawk Program784683
 -Ref: Igawk Program-Footnote-1799014
 -Ref: Igawk Program-Footnote-2799216
 -Ref: Igawk Program-Footnote-3799338
 -Node: Anagram Program799453
 -Node: Signature Program802515
 -Node: Programs Summary803762
 -Node: Programs Exercises804976
 -Ref: Programs Exercises-Footnote-1809105
 -Node: Advanced Features809196
 -Node: Nondecimal Data811186
 -Node: Array Sorting812777
 -Node: Controlling Array Traversal813477
 -Ref: Controlling Array Traversal-Footnote-1821845
 -Node: Array Sorting Functions821963
 -Ref: Array Sorting Functions-Footnote-1827054
 -Node: Two-way I/O827250
 -Ref: Two-way I/O-Footnote-1834970
 -Ref: Two-way I/O-Footnote-2835157
 -Node: TCP/IP Networking835239
 -Node: Profiling838357
 -Ref: Profiling-Footnote-1847029
 -Node: Advanced Features Summary847352
 -Node: Internationalization849196
 -Node: I18N and L10N850676
 -Node: Explaining gettext851363
 -Ref: Explaining gettext-Footnote-1857255
 -Ref: Explaining gettext-Footnote-2857440
 -Node: Programmer i18n857605
 -Ref: Programmer i18n-Footnote-1862554
 -Node: Translator i18n862603
 -Node: String Extraction863397
 -Ref: String Extraction-Footnote-1864529
 -Node: Printf Ordering864615
 -Ref: Printf Ordering-Footnote-1867401
 -Node: I18N Portability867465
 -Ref: I18N Portability-Footnote-1869921
 -Node: I18N Example869984
 -Ref: I18N Example-Footnote-1872790
 -Node: Gawk I18N872863
 -Node: I18N Summary873508
 -Node: Debugger874849
 -Node: Debugging875872
 -Node: Debugging Concepts876313
 -Node: Debugging Terms878122
 -Node: Awk Debugging880697
 -Node: Sample Debugging Session881603
 -Node: Debugger Invocation882137
 -Node: Finding The Bug883523
 -Node: List of Debugger Commands890001
 -Node: Breakpoint Control891334
 -Node: Debugger Execution Control895028
 -Node: Viewing And Changing Data898390
 -Node: Execution Stack901764
 -Node: Debugger Info903401
 -Node: Miscellaneous Debugger Commands907472
 -Node: Readline Support912534
 -Node: Limitations913430
 -Node: Debugging Summary915539
 -Node: Arbitrary Precision Arithmetic916818
 -Node: Computer Arithmetic918303
 -Ref: table-numeric-ranges922069
 -Ref: table-floating-point-ranges922562
 -Ref: Computer Arithmetic-Footnote-1923220
 -Node: Math Definitions923277
 -Ref: table-ieee-formats926593
 -Ref: Math Definitions-Footnote-1927196
 -Node: MPFR features927301
 -Node: FP Math Caution929019
 -Ref: FP Math Caution-Footnote-1930091
 -Node: Inexactness of computations930460
 -Node: Inexact representation931420
 -Node: Comparing FP Values932780
 -Node: Errors accumulate933862
 -Node: Getting Accuracy935295
 -Node: Try To Round938005
 -Node: Setting precision938904
 -Ref: table-predefined-precision-strings939601
 -Node: Setting the rounding mode941431
 -Ref: table-gawk-rounding-modes941805
 -Ref: Setting the rounding mode-Footnote-1945736
 -Node: Arbitrary Precision Integers945915
 -Ref: Arbitrary Precision Integers-Footnote-1949090
 -Node: Checking for MPFR949239
 -Node: POSIX Floating Point Problems950713
 -Ref: POSIX Floating Point Problems-Footnote-1954998
 -Node: Floating point summary955036
 -Node: Dynamic Extensions957226
 -Node: Extension Intro958779
 -Node: Plugin License960045
 -Node: Extension Mechanism Outline960842
 -Ref: figure-load-extension961281
 -Ref: figure-register-new-function962846
 -Ref: figure-call-new-function963938
 -Node: Extension API Description966000
 -Node: Extension API Functions Introduction967642
 -Node: General Data Types973182
 -Ref: General Data Types-Footnote-1981543
 -Node: Memory Allocation Functions981842
 -Ref: Memory Allocation Functions-Footnote-1986052
 -Node: Constructor Functions986151
 -Node: Registration Functions989737
 -Node: Extension Functions990422
 -Node: Exit Callback Functions995637
 -Node: Extension Version String996887
 -Node: Input Parsers997550
 -Node: Output Wrappers1010271
 -Node: Two-way processors1014783
 -Node: Printing Messages1017048
 -Ref: Printing Messages-Footnote-11018219
 -Node: Updating ERRNO1018372
 -Node: Requesting Values1019111
 -Ref: table-value-types-returned1019848
 -Node: Accessing Parameters1020784
 -Node: Symbol Table Access1022019
 -Node: Symbol table by name1022531
 -Node: Symbol table by cookie1024320
 -Ref: Symbol table by cookie-Footnote-11028505
 -Node: Cached values1028569
 -Ref: Cached values-Footnote-11032105
 -Node: Array Manipulation1032258
 -Ref: Array Manipulation-Footnote-11033349
 -Node: Array Data Types1033386
 -Ref: Array Data Types-Footnote-11036044
 -Node: Array Functions1036136
 -Node: Flattening Arrays1040634
 -Node: Creating Arrays1047610
 -Node: Redirection API1052377
 -Node: Extension API Variables1055210
 -Node: Extension Versioning1055921
 -Ref: gawk-api-version1056350
 -Node: Extension GMP/MPFR Versioning1058081
 -Node: Extension API Informational Variables1059709
 -Node: Extension API Boilerplate1060782
 -Node: Changes from API V11064756
 -Node: Finding Extensions1066328
 -Node: Extension Example1066887
 -Node: Internal File Description1067685
 -Node: Internal File Ops1071765
 -Ref: Internal File Ops-Footnote-11083115
 -Node: Using Internal File Ops1083255
 -Ref: Using Internal File Ops-Footnote-11085638
 -Node: Extension Samples1085912
 -Node: Extension Sample File Functions1087441
 -Node: Extension Sample Fnmatch1095090
 -Node: Extension Sample Fork1096577
 -Node: Extension Sample Inplace1097795
 -Node: Extension Sample Ord1101012
 -Node: Extension Sample Readdir1101848
 -Ref: table-readdir-file-types1102737
 -Node: Extension Sample Revout1103542
 -Node: Extension Sample Rev2way1104131
 -Node: Extension Sample Read write array1104871
 -Node: Extension Sample Readfile1106813
 -Node: Extension Sample Time1107908
 -Node: Extension Sample API Tests1109256
 -Node: gawkextlib1109748
 -Node: Extension summary1112666
 -Node: Extension Exercises1116368
 -Node: Language History1117866
 -Node: V7/SVR3.11119522
 -Node: SVR41121674
 -Node: POSIX1123108
 -Node: BTL1124488
 -Node: POSIX/GNU1125217
 -Node: Feature History1130995
 -Node: Common Extensions1146854
 -Node: Ranges and Locales1148137
 -Ref: Ranges and Locales-Footnote-11152753
 -Ref: Ranges and Locales-Footnote-21152780
 -Ref: Ranges and Locales-Footnote-31153015
 -Node: Contributors1153236
 -Node: History summary1159181
 -Node: Installation1160561
 -Node: Gawk Distribution1161505
 -Node: Getting1161989
 -Node: Extracting1162952
 -Node: Distribution contents1164590
 -Node: Unix Installation1171070
 -Node: Quick Installation1171752
 -Node: Shell Startup Files1174166
 -Node: Additional Configuration Options1175255
 -Node: Configuration Philosophy1177420
 -Node: Non-Unix Installation1179789
 -Node: PC Installation1180249
 -Node: PC Binary Installation1181087
 -Node: PC Compiling1181522
 -Node: PC Using1182639
 -Node: Cygwin1185854
 -Node: MSYS1186953
 -Node: VMS Installation1187454
 -Node: VMS Compilation1188245
 -Ref: VMS Compilation-Footnote-11189474
 -Node: VMS Dynamic Extensions1189532
 -Node: VMS Installation Details1191217
 -Node: VMS Running1193470
 -Node: VMS GNV1197749
 -Node: VMS Old Gawk1198484
 -Node: Bugs1198955
 -Node: Bug address1199618
 -Node: Usenet1202410
 -Node: Maintainers1203187
 -Node: Other Versions1204448
 -Node: Installation summary1211210
 -Node: Notes1212412
 -Node: Compatibility Mode1213277
 -Node: Additions1214059
 -Node: Accessing The Source1214984
 -Node: Adding Code1216421
 -Node: New Ports1222640
 -Node: Derived Files1227128
 -Ref: Derived Files-Footnote-11232774
 -Ref: Derived Files-Footnote-21232809
 -Ref: Derived Files-Footnote-31233407
 -Node: Future Extensions1233521
 -Node: Implementation Limitations1234179
 -Node: Extension Design1235362
 -Node: Old Extension Problems1236516
 -Ref: Old Extension Problems-Footnote-11238034
 -Node: Extension New Mechanism Goals1238091
 -Ref: Extension New Mechanism Goals-Footnote-11241455
 -Node: Extension Other Design Decisions1241644
 -Node: Extension Future Growth1243757
 -Node: Old Extension Mechanism1244593
 -Node: Notes summary1246356
 -Node: Basic Concepts1247538
 -Node: Basic High Level1248219
 -Ref: figure-general-flow1248501
 -Ref: figure-process-flow1249186
 -Ref: Basic High Level-Footnote-11252487
 -Node: Basic Data Typing1252672
 -Node: Glossary1256000
 -Node: Copying1287838
 -Node: GNU Free Documentation License1325381
 -Node: Index1350501
 +Node: Foreword344127
 +Node: Foreword448569
 +Node: Preface50101
 +Ref: Preface-Footnote-152960
 +Ref: Preface-Footnote-253067
 +Ref: Preface-Footnote-353301
 +Node: History53443
 +Node: Names55795
 +Ref: Names-Footnote-156889
 +Node: This Manual57036
 +Ref: This Manual-Footnote-163675
 +Node: Conventions63775
 +Node: Manual History66130
 +Ref: Manual History-Footnote-169127
 +Ref: Manual History-Footnote-269168
 +Node: How To Contribute69242
 +Node: Acknowledgments70168
 +Node: Getting Started75076
 +Node: Running gawk77515
 +Node: One-shot78705
 +Node: Read Terminal79968
 +Node: Long81961
 +Node: Executable Scripts83474
 +Ref: Executable Scripts-Footnote-186269
 +Node: Comments86372
 +Node: Quoting88856
 +Node: DOS Quoting94373
 +Node: Sample Data Files96429
 +Node: Very Simple99024
 +Node: Two Rules103926
 +Node: More Complex105811
 +Node: Statements/Lines108677
 +Ref: Statements/Lines-Footnote-1113136
 +Node: Other Features113401
 +Node: When114337
 +Ref: When-Footnote-1116091
 +Node: Intro Summary116156
 +Node: Invoking Gawk117040
 +Node: Command Line118554
 +Node: Options119352
 +Ref: Options-Footnote-1136391
 +Ref: Options-Footnote-2136622
 +Node: Other Arguments136647
 +Node: Naming Standard Input139594
 +Node: Environment Variables140687
 +Node: AWKPATH Variable141245
 +Ref: AWKPATH Variable-Footnote-1144657
 +Ref: AWKPATH Variable-Footnote-2144691
 +Node: AWKLIBPATH Variable144952
 +Node: Other Environment Variables146610
 +Node: Exit Status150431
 +Node: Include Files151108
 +Node: Loading Shared Libraries154786
 +Node: Obsolete156214
 +Node: Undocumented156906
 +Node: Invoking Summary157203
 +Node: Regexp158863
 +Node: Regexp Usage160317
 +Node: Escape Sequences162354
 +Node: Regexp Operators168586
 +Ref: Regexp Operators-Footnote-1176002
 +Ref: Regexp Operators-Footnote-2176149
 +Node: Bracket Expressions176247
 +Ref: table-char-classes178723
 +Node: Leftmost Longest182128
 +Node: Computed Regexps183431
 +Node: GNU Regexp Operators186858
 +Node: Case-sensitivity190537
 +Ref: Case-sensitivity-Footnote-1193424
 +Ref: Case-sensitivity-Footnote-2193659
 +Node: Regexp Summary193767
 +Node: Reading Files195233
 +Node: Records197502
 +Node: awk split records198577
 +Node: gawk split records203852
 +Ref: gawk split records-Footnote-1208438
 +Node: Fields208475
 +Node: Nonconstant Fields211216
 +Ref: Nonconstant Fields-Footnote-1213452
 +Node: Changing Fields213656
 +Node: Field Separators219584
 +Node: Default Field Splitting222282
 +Node: Regexp Field Splitting223400
 +Node: Single Character Fields226753
 +Node: Command Line Field Separator227813
 +Node: Full Line Fields231031
 +Ref: Full Line Fields-Footnote-1232553
 +Ref: Full Line Fields-Footnote-2232599
 +Node: Field Splitting Summary232700
 +Node: Constant Size234774
 +Node: Fixed width data235506
 +Node: Skipping intervening238973
 +Node: Allowing trailing data239771
 +Node: Fields with fixed data240808
 +Node: Splitting By Content242326
 +Ref: Splitting By Content-Footnote-1245976
 +Node: Testing field creation246139
 +Node: Multiple Line247764
 +Ref: Multiple Line-Footnote-1253648
 +Node: Getline253827
 +Node: Plain Getline256296
 +Node: Getline/Variable258937
 +Node: Getline/File260088
 +Node: Getline/Variable/File261476
 +Ref: Getline/Variable/File-Footnote-1263081
 +Node: Getline/Pipe263169
 +Node: Getline/Variable/Pipe265876
 +Node: Getline/Coprocess267011
 +Node: Getline/Variable/Coprocess268278
 +Node: Getline Notes269020
 +Node: Getline Summary271817
 +Ref: table-getline-variants272241
 +Node: Read Timeout272989
 +Ref: Read Timeout-Footnote-1276895
 +Node: Retrying Input276953
 +Node: Command-line directories278152
 +Node: Input Summary279058
 +Node: Input Exercises282230
 +Node: Printing282958
 +Node: Print284792
 +Node: Print Examples286249
 +Node: Output Separators289029
 +Node: OFMT291046
 +Node: Printf292402
 +Node: Basic Printf293187
 +Node: Control Letters294761
 +Node: Format Modifiers299888
 +Node: Printf Examples305903
 +Node: Redirection308389
 +Node: Special FD315230
 +Ref: Special FD-Footnote-1318398
 +Node: Special Files318472
 +Node: Other Inherited Files319089
 +Node: Special Network320090
 +Node: Special Caveats320950
 +Node: Close Files And Pipes321899
 +Ref: table-close-pipe-return-values328806
 +Ref: Close Files And Pipes-Footnote-1329619
 +Ref: Close Files And Pipes-Footnote-2329767
 +Node: Nonfatal329919
 +Node: Output Summary332257
 +Node: Output Exercises333479
 +Node: Expressions334158
 +Node: Values335346
 +Node: Constants336024
 +Node: Scalar Constants336715
- Ref: Scalar Constants-Footnote-1337579
- Node: Nondecimal-numbers337829
- Node: Regexp Constants340830
- Node: Using Constant Regexps341356
- Node: Standard Regexp Constants341978
- Node: Strong Regexp Constants345166
- Node: Variables348124
- Node: Using Variables348781
- Node: Assignment Options350691
- Node: Conversion352564
- Node: Strings And Numbers353088
- Ref: Strings And Numbers-Footnote-1356151
- Node: Locale influences conversions356260
- Ref: table-locale-affects359018
- Node: All Operators359636
- Node: Arithmetic Ops360265
- Node: Concatenation362771
- Ref: Concatenation-Footnote-1365618
- Node: Assignment Ops365725
- Ref: table-assign-ops370716
- Node: Increment Ops372029
- Node: Truth Values and Conditions375489
- Node: Truth Values376563
- Node: Typing and Comparison377611
- Node: Variable Typing378431
- Ref: Variable Typing-Footnote-1384894
- Ref: Variable Typing-Footnote-2384966
- Node: Comparison Operators385043
- Ref: table-relational-ops385462
- Node: POSIX String Comparison388957
- Ref: POSIX String Comparison-Footnote-1390652
- Ref: POSIX String Comparison-Footnote-2390791
- Node: Boolean Ops390875
- Ref: Boolean Ops-Footnote-1395357
- Node: Conditional Exp395449
- Node: Function Calls397185
- Node: Precedence401062
- Node: Locales404721
- Node: Expressions Summary406353
- Node: Patterns and Actions408926
- Node: Pattern Overview410046
- Node: Regexp Patterns411723
- Node: Expression Patterns412265
- Node: Ranges416046
- Node: BEGIN/END419154
- Node: Using BEGIN/END419915
- Ref: Using BEGIN/END-Footnote-1422651
- Node: I/O And BEGIN/END422757
- Node: BEGINFILE/ENDFILE425071
- Node: Empty427984
- Node: Using Shell Variables428301
- Node: Action Overview430575
- Node: Statements432900
- Node: If Statement434748
- Node: While Statement436243
- Node: Do Statement438271
- Node: For Statement439419
- Node: Switch Statement442590
- Node: Break Statement444976
- Node: Continue Statement447068
- Node: Next Statement448895
- Node: Nextfile Statement451278
- Node: Exit Statement453930
- Node: Built-in Variables456333
- Node: User-modified457466
- Node: Auto-set465233
- Ref: Auto-set-Footnote-1481535
- Ref: Auto-set-Footnote-2481741
- Node: ARGC and ARGV481797
- Node: Pattern Action Summary486010
- Node: Arrays488440
- Node: Array Basics489769
- Node: Array Intro490613
- Ref: figure-array-elements492588
- Ref: Array Intro-Footnote-1495292
- Node: Reference to Elements495420
- Node: Assigning Elements497884
- Node: Array Example498375
- Node: Scanning an Array500134
- Node: Controlling Scanning503156
- Ref: Controlling Scanning-Footnote-1508555
- Node: Numeric Array Subscripts508871
- Node: Uninitialized Subscripts511055
- Node: Delete512674
- Ref: Delete-Footnote-1515426
- Node: Multidimensional515483
- Node: Multiscanning518578
- Node: Arrays of Arrays520169
- Node: Arrays Summary524936
- Node: Functions527029
- Node: Built-in528067
- Node: Calling Built-in529148
- Node: Numeric Functions531144
- Ref: Numeric Functions-Footnote-1535172
- Ref: Numeric Functions-Footnote-2535529
- Ref: Numeric Functions-Footnote-3535577
- Node: String Functions535849
- Ref: String Functions-Footnote-1559558
- Ref: String Functions-Footnote-2559686
- Ref: String Functions-Footnote-3559934
- Node: Gory Details560021
- Ref: table-sub-escapes561812
- Ref: table-sub-proposed563331
- Ref: table-posix-sub564694
- Ref: table-gensub-escapes566235
- Ref: Gory Details-Footnote-1567058
- Node: I/O Functions567212
- Ref: table-system-return-values573680
- Ref: I/O Functions-Footnote-1575660
- Ref: I/O Functions-Footnote-2575808
- Node: Time Functions575928
- Ref: Time Functions-Footnote-1586599
- Ref: Time Functions-Footnote-2586667
- Ref: Time Functions-Footnote-3586825
- Ref: Time Functions-Footnote-4586936
- Ref: Time Functions-Footnote-5587048
- Ref: Time Functions-Footnote-6587275
- Node: Bitwise Functions587541
- Ref: table-bitwise-ops588135
- Ref: Bitwise Functions-Footnote-1594198
- Ref: Bitwise Functions-Footnote-2594371
- Node: Type Functions594562
- Node: I18N Functions597313
- Node: User-defined598964
- Node: Definition Syntax599769
- Ref: Definition Syntax-Footnote-1605456
- Node: Function Example605527
- Ref: Function Example-Footnote-1608449
- Node: Function Caveats608471
- Node: Calling A Function608989
- Node: Variable Scope609947
- Node: Pass By Value/Reference612941
- Node: Return Statement616440
- Node: Dynamic Typing619419
- Node: Indirect Calls620349
- Ref: Indirect Calls-Footnote-1630601
- Node: Functions Summary630729
- Node: Library Functions633434
- Ref: Library Functions-Footnote-1637041
- Ref: Library Functions-Footnote-2637184
- Node: Library Names637355
- Ref: Library Names-Footnote-1641031
- Ref: Library Names-Footnote-2641254
- Node: General Functions641340
- Node: Strtonum Function642443
- Node: Assert Function645465
- Node: Round Function648791
- Node: Cliff Random Function650331
- Node: Ordinal Functions651347
- Ref: Ordinal Functions-Footnote-1654410
- Ref: Ordinal Functions-Footnote-2654662
- Node: Join Function654872
- Ref: Join Function-Footnote-1656642
- Node: Getlocaltime Function656842
- Node: Readfile Function660584
- Node: Shell Quoting662561
- Node: Data File Management663962
- Node: Filetrans Function664594
- Node: Rewind Function668690
- Node: File Checking670600
- Ref: File Checking-Footnote-1671934
- Node: Empty Files672135
- Node: Ignoring Assigns674114
- Node: Getopt Function675664
- Ref: Getopt Function-Footnote-1687133
- Node: Passwd Functions687333
- Ref: Passwd Functions-Footnote-1696172
- Node: Group Functions696260
- Ref: Group Functions-Footnote-1704158
- Node: Walking Arrays704365
- Node: Library Functions Summary707373
- Node: Library Exercises708779
- Node: Sample Programs709244
- Node: Running Examples710014
- Node: Clones710742
- Node: Cut Program711966
- Node: Egrep Program721895
- Ref: Egrep Program-Footnote-1729407
- Node: Id Program729517
- Node: Split Program733197
- Ref: Split Program-Footnote-1736655
- Node: Tee Program736784
- Node: Uniq Program739574
- Node: Wc Program747000
- Ref: Wc Program-Footnote-1751255
- Node: Miscellaneous Programs751349
- Node: Dupword Program752562
- Node: Alarm Program754592
- Node: Translate Program759447
- Ref: Translate Program-Footnote-1764012
- Node: Labels Program764282
- Ref: Labels Program-Footnote-1767633
- Node: Word Sorting767717
- Node: History Sorting771789
- Node: Extract Program773624
- Node: Simple Sed781678
- Node: Igawk Program784752
- Ref: Igawk Program-Footnote-1799083
- Ref: Igawk Program-Footnote-2799285
- Ref: Igawk Program-Footnote-3799407
- Node: Anagram Program799522
- Node: Signature Program802584
- Node: Programs Summary803831
- Node: Programs Exercises805045
- Ref: Programs Exercises-Footnote-1809174
- Node: Advanced Features809265
- Node: Nondecimal Data811255
- Node: Array Sorting812846
- Node: Controlling Array Traversal813546
- Ref: Controlling Array Traversal-Footnote-1821914
- Node: Array Sorting Functions822032
- Ref: Array Sorting Functions-Footnote-1827123
- Node: Two-way I/O827319
- Ref: Two-way I/O-Footnote-1835039
- Ref: Two-way I/O-Footnote-2835226
- Node: TCP/IP Networking835308
- Node: Profiling838426
- Ref: Profiling-Footnote-1847098
- Node: Advanced Features Summary847421
- Node: Internationalization849265
- Node: I18N and L10N850745
- Node: Explaining gettext851432
- Ref: Explaining gettext-Footnote-1857324
- Ref: Explaining gettext-Footnote-2857509
- Node: Programmer i18n857674
- Ref: Programmer i18n-Footnote-1862623
- Node: Translator i18n862672
- Node: String Extraction863466
- Ref: String Extraction-Footnote-1864598
- Node: Printf Ordering864684
- Ref: Printf Ordering-Footnote-1867470
- Node: I18N Portability867534
- Ref: I18N Portability-Footnote-1869990
- Node: I18N Example870053
- Ref: I18N Example-Footnote-1872859
- Node: Gawk I18N872932
- Node: I18N Summary873577
- Node: Debugger874918
- Node: Debugging875921
- Node: Debugging Concepts876362
- Node: Debugging Terms878171
- Node: Awk Debugging880746
- Node: Sample Debugging Session881652
- Node: Debugger Invocation882186
- Node: Finding The Bug883572
- Node: List of Debugger Commands890050
- Node: Breakpoint Control891383
- Node: Debugger Execution Control895077
- Node: Viewing And Changing Data898439
- Node: Execution Stack901813
- Node: Debugger Info903450
- Node: Miscellaneous Debugger Commands907521
- Node: Readline Support912583
- Node: Limitations913479
- Node: Debugging Summary915588
- Node: Namespaces916867
- Node: Global Namespace917685
- Node: Qualified Names919039
- Node: Default Namespace920038
- Node: Changing The Namespace920779
- Node: Naming Rules922390
- Node: Internal Name Management924239
- Node: Namespace Example925281
- Node: Namespace And Features927843
- Node: Namespace Summary929278
- Node: Arbitrary Precision Arithmetic930755
- Node: Computer Arithmetic932242
- Ref: table-numeric-ranges936008
- Ref: table-floating-point-ranges936501
- Ref: Computer Arithmetic-Footnote-1937159
- Node: Math Definitions937216
- Ref: table-ieee-formats940532
- Ref: Math Definitions-Footnote-1941135
- Node: MPFR features941240
- Node: FP Math Caution942958
- Ref: FP Math Caution-Footnote-1944030
- Node: Inexactness of computations944399
- Node: Inexact representation945359
- Node: Comparing FP Values946719
- Node: Errors accumulate947801
- Node: Getting Accuracy949234
- Node: Try To Round951944
- Node: Setting precision952843
- Ref: table-predefined-precision-strings953540
- Node: Setting the rounding mode955370
- Ref: table-gawk-rounding-modes955744
- Ref: Setting the rounding mode-Footnote-1959675
- Node: Arbitrary Precision Integers959854
- Ref: Arbitrary Precision Integers-Footnote-1963029
- Node: Checking for MPFR963178
- Node: POSIX Floating Point Problems964652
- Ref: POSIX Floating Point Problems-Footnote-1968937
- Node: Floating point summary968975
- Node: Dynamic Extensions971165
- Node: Extension Intro972718
- Node: Plugin License973984
- Node: Extension Mechanism Outline974781
- Ref: figure-load-extension975220
- Ref: figure-register-new-function976785
- Ref: figure-call-new-function977877
- Node: Extension API Description979939
- Node: Extension API Functions Introduction981581
- Node: General Data Types987121
- Ref: General Data Types-Footnote-1995482
- Node: Memory Allocation Functions995781
- Ref: Memory Allocation Functions-Footnote-1999991
- Node: Constructor Functions1000090
- Node: Registration Functions1003676
- Node: Extension Functions1004361
- Node: Exit Callback Functions1009576
- Node: Extension Version String1010826
- Node: Input Parsers1011489
- Node: Output Wrappers1024210
- Node: Two-way processors1028722
- Node: Printing Messages1030987
- Ref: Printing Messages-Footnote-11032158
- Node: Updating ERRNO1032311
- Node: Requesting Values1033050
- Ref: table-value-types-returned1033787
- Node: Accessing Parameters1034723
- Node: Symbol Table Access1035958
- Node: Symbol table by name1036470
- Ref: Symbol table by name-Footnote-11039360
- Node: Symbol table by cookie1039488
- Ref: Symbol table by cookie-Footnote-11043673
- Node: Cached values1043737
- Ref: Cached values-Footnote-11047273
- Node: Array Manipulation1047426
- Ref: Array Manipulation-Footnote-11048517
- Node: Array Data Types1048554
- Ref: Array Data Types-Footnote-11051212
- Node: Array Functions1051304
- Node: Flattening Arrays1055802
- Node: Creating Arrays1062778
- Node: Redirection API1067545
- Node: Extension API Variables1070378
- Node: Extension Versioning1071089
- Ref: gawk-api-version1071518
- Node: Extension GMP/MPFR Versioning1073249
- Node: Extension API Informational Variables1074877
- Node: Extension API Boilerplate1075950
- Node: Changes from API V11079924
- Node: Finding Extensions1081496
- Node: Extension Example1082055
- Node: Internal File Description1082853
- Node: Internal File Ops1086933
- Ref: Internal File Ops-Footnote-11098283
- Node: Using Internal File Ops1098423
- Ref: Using Internal File Ops-Footnote-11100806
- Node: Extension Samples1101080
- Node: Extension Sample File Functions1102609
- Node: Extension Sample Fnmatch1110258
- Node: Extension Sample Fork1111745
- Node: Extension Sample Inplace1112963
- Node: Extension Sample Ord1116267
- Node: Extension Sample Readdir1117103
- Ref: table-readdir-file-types1117992
- Node: Extension Sample Revout1118797
- Node: Extension Sample Rev2way1119386
- Node: Extension Sample Read write array1120126
- Node: Extension Sample Readfile1122068
- Node: Extension Sample Time1123163
- Node: Extension Sample API Tests1124511
- Node: gawkextlib1125003
- Node: Extension summary1127921
- Node: Extension Exercises1131623
- Node: Language History1132865
- Node: V7/SVR3.11134521
- Node: SVR41136673
- Node: POSIX1138107
- Node: BTL1139487
- Node: POSIX/GNU1140216
- Node: Feature History1145994
- Node: Common Extensions1161853
- Node: Ranges and Locales1163136
- Ref: Ranges and Locales-Footnote-11167752
- Ref: Ranges and Locales-Footnote-21167779
- Ref: Ranges and Locales-Footnote-31168014
- Node: Contributors1168235
- Node: History summary1174180
- Node: Installation1175560
- Node: Gawk Distribution1176504
- Node: Getting1176988
- Node: Extracting1177951
- Node: Distribution contents1179589
- Node: Unix Installation1186069
- Node: Quick Installation1186751
- Node: Shell Startup Files1189165
- Node: Additional Configuration Options1190254
- Node: Configuration Philosophy1192419
- Node: Non-Unix Installation1194788
- Node: PC Installation1195248
- Node: PC Binary Installation1196086
- Node: PC Compiling1196521
- Node: PC Using1197638
- Node: Cygwin1200853
- Node: MSYS1201952
- Node: VMS Installation1202453
- Node: VMS Compilation1203244
- Ref: VMS Compilation-Footnote-11204473
- Node: VMS Dynamic Extensions1204531
- Node: VMS Installation Details1206216
- Node: VMS Running1208469
- Node: VMS GNV1212748
- Node: VMS Old Gawk1213483
- Node: Bugs1213954
- Node: Bug address1214617
- Node: Usenet1217409
- Node: Maintainers1218186
- Node: Other Versions1219447
- Node: Installation summary1226209
- Node: Notes1227411
- Node: Compatibility Mode1228276
- Node: Additions1229058
- Node: Accessing The Source1229983
- Node: Adding Code1231420
- Node: New Ports1237639
- Node: Derived Files1242127
- Ref: Derived Files-Footnote-11247773
- Ref: Derived Files-Footnote-21247808
- Ref: Derived Files-Footnote-31248406
- Node: Future Extensions1248520
- Node: Implementation Limitations1249178
- Node: Extension Design1250361
- Node: Old Extension Problems1251515
- Ref: Old Extension Problems-Footnote-11253033
- Node: Extension New Mechanism Goals1253090
- Ref: Extension New Mechanism Goals-Footnote-11256454
- Node: Extension Other Design Decisions1256643
- Node: Extension Future Growth1258756
- Node: Old Extension Mechanism1259592
- Node: Notes summary1261355
- Node: Basic Concepts1262537
- Node: Basic High Level1263218
- Ref: figure-general-flow1263500
- Ref: figure-process-flow1264185
- Ref: Basic High Level-Footnote-11267486
- Node: Basic Data Typing1267671
- Node: Glossary1270999
- Node: Copying1302837
- Node: GNU Free Documentation License1340380
- Node: Index1365500
++Ref: Scalar Constants-Footnote-1339238
++Node: Nondecimal-numbers339488
++Node: Regexp Constants342489
++Node: Using Constant Regexps343015
++Node: Standard Regexp Constants343637
++Node: Strong Regexp Constants346825
++Node: Variables349783
++Node: Using Variables350440
++Node: Assignment Options352350
++Node: Conversion354223
++Node: Strings And Numbers354747
++Ref: Strings And Numbers-Footnote-1357810
++Node: Locale influences conversions357919
++Ref: table-locale-affects360677
++Node: All Operators361295
++Node: Arithmetic Ops361924
++Node: Concatenation364430
++Ref: Concatenation-Footnote-1367277
++Node: Assignment Ops367384
++Ref: table-assign-ops372375
++Node: Increment Ops373688
++Node: Truth Values and Conditions377148
++Node: Truth Values378222
++Node: Typing and Comparison379270
++Node: Variable Typing380090
++Ref: Variable Typing-Footnote-1386553
++Ref: Variable Typing-Footnote-2386625
++Node: Comparison Operators386702
++Ref: table-relational-ops387121
++Node: POSIX String Comparison390616
++Ref: POSIX String Comparison-Footnote-1392311
++Ref: POSIX String Comparison-Footnote-2392450
++Node: Boolean Ops392534
++Ref: Boolean Ops-Footnote-1397016
++Node: Conditional Exp397108
++Node: Function Calls398844
++Node: Precedence402721
++Node: Locales406380
++Node: Expressions Summary408012
++Node: Patterns and Actions410585
++Node: Pattern Overview411705
++Node: Regexp Patterns413382
++Node: Expression Patterns413924
++Node: Ranges417705
++Node: BEGIN/END420813
++Node: Using BEGIN/END421574
++Ref: Using BEGIN/END-Footnote-1424310
++Node: I/O And BEGIN/END424416
++Node: BEGINFILE/ENDFILE426730
++Node: Empty429643
++Node: Using Shell Variables429960
++Node: Action Overview432234
++Node: Statements434559
++Node: If Statement436407
++Node: While Statement437902
++Node: Do Statement439930
++Node: For Statement441078
++Node: Switch Statement444249
++Node: Break Statement446635
++Node: Continue Statement448727
++Node: Next Statement450554
++Node: Nextfile Statement452937
++Node: Exit Statement455589
++Node: Built-in Variables457992
++Node: User-modified459125
++Node: Auto-set466892
++Ref: Auto-set-Footnote-1483194
++Ref: Auto-set-Footnote-2483400
++Node: ARGC and ARGV483456
++Node: Pattern Action Summary487669
++Node: Arrays490099
++Node: Array Basics491428
++Node: Array Intro492272
++Ref: figure-array-elements494247
++Ref: Array Intro-Footnote-1496951
++Node: Reference to Elements497079
++Node: Assigning Elements499543
++Node: Array Example500034
++Node: Scanning an Array501793
++Node: Controlling Scanning504815
++Ref: Controlling Scanning-Footnote-1510214
++Node: Numeric Array Subscripts510530
++Node: Uninitialized Subscripts512714
++Node: Delete514333
++Ref: Delete-Footnote-1517085
++Node: Multidimensional517142
++Node: Multiscanning520237
++Node: Arrays of Arrays521828
++Node: Arrays Summary526595
++Node: Functions528688
++Node: Built-in529726
++Node: Calling Built-in530807
++Node: Numeric Functions532803
++Ref: Numeric Functions-Footnote-1536831
++Ref: Numeric Functions-Footnote-2537188
++Ref: Numeric Functions-Footnote-3537236
++Node: String Functions537508
++Ref: String Functions-Footnote-1561217
++Ref: String Functions-Footnote-2561345
++Ref: String Functions-Footnote-3561593
++Node: Gory Details561680
++Ref: table-sub-escapes563471
++Ref: table-sub-proposed564990
++Ref: table-posix-sub566353
++Ref: table-gensub-escapes567894
++Ref: Gory Details-Footnote-1568717
++Node: I/O Functions568871
++Ref: table-system-return-values575339
++Ref: I/O Functions-Footnote-1577319
++Ref: I/O Functions-Footnote-2577467
++Node: Time Functions577587
++Ref: Time Functions-Footnote-1588258
++Ref: Time Functions-Footnote-2588326
++Ref: Time Functions-Footnote-3588484
++Ref: Time Functions-Footnote-4588595
++Ref: Time Functions-Footnote-5588707
++Ref: Time Functions-Footnote-6588934
++Node: Bitwise Functions589200
++Ref: table-bitwise-ops589794
++Ref: Bitwise Functions-Footnote-1595857
++Ref: Bitwise Functions-Footnote-2596030
++Node: Type Functions596221
++Node: I18N Functions598972
++Node: User-defined600623
++Node: Definition Syntax601428
++Ref: Definition Syntax-Footnote-1607115
++Node: Function Example607186
++Ref: Function Example-Footnote-1610108
++Node: Function Caveats610130
++Node: Calling A Function610648
++Node: Variable Scope611606
++Node: Pass By Value/Reference614600
++Node: Return Statement618099
++Node: Dynamic Typing621078
++Node: Indirect Calls622008
++Ref: Indirect Calls-Footnote-1632260
++Node: Functions Summary632388
++Node: Library Functions635093
++Ref: Library Functions-Footnote-1638700
++Ref: Library Functions-Footnote-2638843
++Node: Library Names639014
++Ref: Library Names-Footnote-1642690
++Ref: Library Names-Footnote-2642913
++Node: General Functions642999
++Node: Strtonum Function644102
++Node: Assert Function647124
++Node: Round Function650450
++Node: Cliff Random Function651990
++Node: Ordinal Functions653006
++Ref: Ordinal Functions-Footnote-1656069
++Ref: Ordinal Functions-Footnote-2656321
++Node: Join Function656531
++Ref: Join Function-Footnote-1658301
++Node: Getlocaltime Function658501
++Node: Readfile Function662243
++Node: Shell Quoting664220
++Node: Data File Management665621
++Node: Filetrans Function666253
++Node: Rewind Function670349
++Node: File Checking672259
++Ref: File Checking-Footnote-1673593
++Node: Empty Files673794
++Node: Ignoring Assigns675773
++Node: Getopt Function677323
++Ref: Getopt Function-Footnote-1688792
++Node: Passwd Functions688992
++Ref: Passwd Functions-Footnote-1697831
++Node: Group Functions697919
++Ref: Group Functions-Footnote-1705817
++Node: Walking Arrays706024
++Node: Library Functions Summary709032
++Node: Library Exercises710438
++Node: Sample Programs710903
++Node: Running Examples711673
++Node: Clones712401
++Node: Cut Program713625
++Node: Egrep Program723554
++Ref: Egrep Program-Footnote-1731066
++Node: Id Program731176
++Node: Split Program734856
++Ref: Split Program-Footnote-1738314
++Node: Tee Program738443
++Node: Uniq Program741233
++Node: Wc Program748659
++Ref: Wc Program-Footnote-1752914
++Node: Miscellaneous Programs753008
++Node: Dupword Program754221
++Node: Alarm Program756251
++Node: Translate Program761106
++Ref: Translate Program-Footnote-1765671
++Node: Labels Program765941
++Ref: Labels Program-Footnote-1769292
++Node: Word Sorting769376
++Node: History Sorting773448
++Node: Extract Program775283
++Node: Simple Sed783337
++Node: Igawk Program786411
++Ref: Igawk Program-Footnote-1800742
++Ref: Igawk Program-Footnote-2800944
++Ref: Igawk Program-Footnote-3801066
++Node: Anagram Program801181
++Node: Signature Program804243
++Node: Programs Summary805490
++Node: Programs Exercises806704
++Ref: Programs Exercises-Footnote-1810833
++Node: Advanced Features810924
++Node: Nondecimal Data812914
++Node: Array Sorting814505
++Node: Controlling Array Traversal815205
++Ref: Controlling Array Traversal-Footnote-1823573
++Node: Array Sorting Functions823691
++Ref: Array Sorting Functions-Footnote-1828782
++Node: Two-way I/O828978
++Ref: Two-way I/O-Footnote-1836698
++Ref: Two-way I/O-Footnote-2836885
++Node: TCP/IP Networking836967
++Node: Profiling840085
++Ref: Profiling-Footnote-1848757
++Node: Advanced Features Summary849080
++Node: Internationalization850924
++Node: I18N and L10N852404
++Node: Explaining gettext853091
++Ref: Explaining gettext-Footnote-1858983
++Ref: Explaining gettext-Footnote-2859168
++Node: Programmer i18n859333
++Ref: Programmer i18n-Footnote-1864282
++Node: Translator i18n864331
++Node: String Extraction865125
++Ref: String Extraction-Footnote-1866257
++Node: Printf Ordering866343
++Ref: Printf Ordering-Footnote-1869129
++Node: I18N Portability869193
++Ref: I18N Portability-Footnote-1871649
++Node: I18N Example871712
++Ref: I18N Example-Footnote-1874518
++Node: Gawk I18N874591
++Node: I18N Summary875236
++Node: Debugger876577
++Node: Debugging877580
++Node: Debugging Concepts878021
++Node: Debugging Terms879830
++Node: Awk Debugging882405
++Node: Sample Debugging Session883311
++Node: Debugger Invocation883845
++Node: Finding The Bug885231
++Node: List of Debugger Commands891709
++Node: Breakpoint Control893042
++Node: Debugger Execution Control896736
++Node: Viewing And Changing Data900098
++Node: Execution Stack903472
++Node: Debugger Info905109
++Node: Miscellaneous Debugger Commands909180
++Node: Readline Support914242
++Node: Limitations915138
++Node: Debugging Summary917247
++Node: Namespaces918526
++Node: Global Namespace919344
++Node: Qualified Names920698
++Node: Default Namespace921697
++Node: Changing The Namespace922438
++Node: Naming Rules924049
++Node: Internal Name Management925898
++Node: Namespace Example926940
++Node: Namespace And Features929502
++Node: Namespace Summary930937
++Node: Arbitrary Precision Arithmetic932414
++Node: Computer Arithmetic933901
++Ref: table-numeric-ranges937667
++Ref: table-floating-point-ranges938160
++Ref: Computer Arithmetic-Footnote-1938818
++Node: Math Definitions938875
++Ref: table-ieee-formats942191
++Ref: Math Definitions-Footnote-1942794
++Node: MPFR features942899
++Node: FP Math Caution944617
++Ref: FP Math Caution-Footnote-1945689
++Node: Inexactness of computations946058
++Node: Inexact representation947018
++Node: Comparing FP Values948378
++Node: Errors accumulate949460
++Node: Getting Accuracy950893
++Node: Try To Round953603
++Node: Setting precision954502
++Ref: table-predefined-precision-strings955199
++Node: Setting the rounding mode957029
++Ref: table-gawk-rounding-modes957403
++Ref: Setting the rounding mode-Footnote-1961334
++Node: Arbitrary Precision Integers961513
++Ref: Arbitrary Precision Integers-Footnote-1964688
++Node: Checking for MPFR964837
++Node: POSIX Floating Point Problems966311
++Ref: POSIX Floating Point Problems-Footnote-1970596
++Node: Floating point summary970634
++Node: Dynamic Extensions972824
++Node: Extension Intro974377
++Node: Plugin License975643
++Node: Extension Mechanism Outline976440
++Ref: figure-load-extension976879
++Ref: figure-register-new-function978444
++Ref: figure-call-new-function979536
++Node: Extension API Description981598
++Node: Extension API Functions Introduction983240
++Node: General Data Types988780
++Ref: General Data Types-Footnote-1997141
++Node: Memory Allocation Functions997440
++Ref: Memory Allocation Functions-Footnote-11001650
++Node: Constructor Functions1001749
++Node: Registration Functions1005335
++Node: Extension Functions1006020
++Node: Exit Callback Functions1011235
++Node: Extension Version String1012485
++Node: Input Parsers1013148
++Node: Output Wrappers1025869
++Node: Two-way processors1030381
++Node: Printing Messages1032646
++Ref: Printing Messages-Footnote-11033817
++Node: Updating ERRNO1033970
++Node: Requesting Values1034709
++Ref: table-value-types-returned1035446
++Node: Accessing Parameters1036382
++Node: Symbol Table Access1037617
++Node: Symbol table by name1038129
++Ref: Symbol table by name-Footnote-11041019
++Node: Symbol table by cookie1041147
++Ref: Symbol table by cookie-Footnote-11045332
++Node: Cached values1045396
++Ref: Cached values-Footnote-11048932
++Node: Array Manipulation1049085
++Ref: Array Manipulation-Footnote-11050176
++Node: Array Data Types1050213
++Ref: Array Data Types-Footnote-11052871
++Node: Array Functions1052963
++Node: Flattening Arrays1057461
++Node: Creating Arrays1064437
++Node: Redirection API1069204
++Node: Extension API Variables1072037
++Node: Extension Versioning1072748
++Ref: gawk-api-version1073177
++Node: Extension GMP/MPFR Versioning1074908
++Node: Extension API Informational Variables1076536
++Node: Extension API Boilerplate1077609
++Node: Changes from API V11081583
++Node: Finding Extensions1083155
++Node: Extension Example1083714
++Node: Internal File Description1084512
++Node: Internal File Ops1088592
++Ref: Internal File Ops-Footnote-11099942
++Node: Using Internal File Ops1100082
++Ref: Using Internal File Ops-Footnote-11102465
++Node: Extension Samples1102739
++Node: Extension Sample File Functions1104268
++Node: Extension Sample Fnmatch1111917
++Node: Extension Sample Fork1113404
++Node: Extension Sample Inplace1114622
++Node: Extension Sample Ord1117926
++Node: Extension Sample Readdir1118762
++Ref: table-readdir-file-types1119651
++Node: Extension Sample Revout1120456
++Node: Extension Sample Rev2way1121045
++Node: Extension Sample Read write array1121785
++Node: Extension Sample Readfile1123727
++Node: Extension Sample Time1124822
++Node: Extension Sample API Tests1126170
++Node: gawkextlib1126662
++Node: Extension summary1129580
++Node: Extension Exercises1133282
++Node: Language History1134524
++Node: V7/SVR3.11136180
++Node: SVR41138332
++Node: POSIX1139766
++Node: BTL1141146
++Node: POSIX/GNU1141875
++Node: Feature History1147653
++Node: Common Extensions1163512
++Node: Ranges and Locales1164795
++Ref: Ranges and Locales-Footnote-11169411
++Ref: Ranges and Locales-Footnote-21169438
++Ref: Ranges and Locales-Footnote-31169673
++Node: Contributors1169894
++Node: History summary1175839
++Node: Installation1177219
++Node: Gawk Distribution1178163
++Node: Getting1178647
++Node: Extracting1179610
++Node: Distribution contents1181248
++Node: Unix Installation1187728
++Node: Quick Installation1188410
++Node: Shell Startup Files1190824
++Node: Additional Configuration Options1191913
++Node: Configuration Philosophy1194078
++Node: Non-Unix Installation1196447
++Node: PC Installation1196907
++Node: PC Binary Installation1197745
++Node: PC Compiling1198180
++Node: PC Using1199297
++Node: Cygwin1202512
++Node: MSYS1203611
++Node: VMS Installation1204112
++Node: VMS Compilation1204903
++Ref: VMS Compilation-Footnote-11206132
++Node: VMS Dynamic Extensions1206190
++Node: VMS Installation Details1207875
++Node: VMS Running1210128
++Node: VMS GNV1214407
++Node: VMS Old Gawk1215142
++Node: Bugs1215613
++Node: Bug address1216276
++Node: Usenet1219068
++Node: Maintainers1219845
++Node: Other Versions1221106
++Node: Installation summary1227868
++Node: Notes1229070
++Node: Compatibility Mode1229935
++Node: Additions1230717
++Node: Accessing The Source1231642
++Node: Adding Code1233079
++Node: New Ports1239298
++Node: Derived Files1243786
++Ref: Derived Files-Footnote-11249432
++Ref: Derived Files-Footnote-21249467
++Ref: Derived Files-Footnote-31250065
++Node: Future Extensions1250179
++Node: Implementation Limitations1250837
++Node: Extension Design1252020
++Node: Old Extension Problems1253174
++Ref: Old Extension Problems-Footnote-11254692
++Node: Extension New Mechanism Goals1254749
++Ref: Extension New Mechanism Goals-Footnote-11258113
++Node: Extension Other Design Decisions1258302
++Node: Extension Future Growth1260415
++Node: Old Extension Mechanism1261251
++Node: Notes summary1263014
++Node: Basic Concepts1264196
++Node: Basic High Level1264877
++Ref: figure-general-flow1265159
++Ref: figure-process-flow1265844
++Ref: Basic High Level-Footnote-11269145
++Node: Basic Data Typing1269330
++Node: Glossary1272658
++Node: Copying1304496
++Node: GNU Free Documentation License1342039
++Node: Index1367159
  
  End Tag Table

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

Summary of changes:
 ChangeLog                              |  43 ++
 array.c                                |   9 +-
 awk.h                                  |   2 +
 awkgram.c                              | 469 +++++++++--------
 awkgram.y                              |  15 +-
 custom.h                               |   8 +
 doc/ChangeLog                          |  15 +
 doc/gawk.1                             |   2 +-
 doc/gawk.info                          | 938 +++++++++++++++++----------------
 doc/gawk.texi                          |  69 ++-
 doc/gawktexi.in                        |  69 ++-
 doc/gawkworkflow.texi                  |   8 +-
 interpret.h                            |   1 +
 main.c                                 |   9 +-
 node.c                                 |   4 +-
 re.c                                   |  22 +
 test/ChangeLog                         |  15 +
 test/Makefile.am                       |   9 +-
 test/Makefile.in                       |  19 +-
 test/Maketests                         |  10 +
 test/{aasort.awk => arraysort2.awk}    |   8 +-
 test/arraysort2.ok                     |  26 +
 test/assignnumfield.awk                |   1 +
 test/assignnumfield.in                 |   5 +
 test/{fwtest5.ok => assignnumfield.ok} |   3 +-
 test/back89.ok                         |   1 +
 test/funstack.ok                       |  10 +
 test/gsubtst5.ok                       |   4 +
 test/lintwarn.awk                      |   5 +
 test/lintwarn.ok                       |   1 +
 30 files changed, 1097 insertions(+), 703 deletions(-)
 mode change 100644 => 100755 ChangeLog
 copy test/{aasort.awk => arraysort2.awk} (75%)
 create mode 100644 test/arraysort2.ok
 create mode 100644 test/assignnumfield.awk
 create mode 100644 test/assignnumfield.in
 copy test/{fwtest5.ok => assignnumfield.ok} (60%)


hooks/post-receive
-- 
gawk



reply via email to

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