gawk-diffs
[Top][All Lists]
Advanced

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

[gawk-diffs] [SCM] gawk branch, master, updated. 07e825ba195cc9778bcdb75


From: Arnold Robbins
Subject: [gawk-diffs] [SCM] gawk branch, master, updated. 07e825ba195cc9778bcdb75a831d11f26f99ef5a
Date: Tue, 25 Sep 2012 10:31:11 +0000

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

The branch, master has been updated
       via  07e825ba195cc9778bcdb75a831d11f26f99ef5a (commit)
       via  cf1aa2d743d3f6d94ed6cbd3fae97889913c5d75 (commit)
      from  b84831d5a75556aa732cfa3552b90b9c804d9991 (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=07e825ba195cc9778bcdb75a831d11f26f99ef5a

commit 07e825ba195cc9778bcdb75a831d11f26f99ef5a
Merge: b84831d cf1aa2d
Author: Arnold D. Robbins <address@hidden>
Date:   Tue Sep 25 12:30:29 2012 +0200

    Update some things that are now POSIX.

diff --cc ChangeLog
index b280ea3,803269d..bee035b
--- a/ChangeLog
+++ b/ChangeLog
@@@ -1,86 -1,18 +1,96 @@@
+ 2012-09-23         Arnold D. Robbins     <address@hidden>
+ 
+       `delete array' and `nextfile' are now in POSIX.
+       Thanks to Nathan Weeks <address@hidden> for the
+       initiative and letting us know about it.
+ 
+       * awkgram.y: Make the right code changes for `delete array'
+       and `nextfile'.
+       (tokentab): Set flags to zero for nextfile.
+ 
 +2012-09-19         Arnold D. Robbins     <address@hidden>
 +
 +      * symbol.c (load_symbols): Zero out the new node. Prevents assertion
 +      failure on PPC Mac OS X.
 +
 +2012-09-14         Arnold D. Robbins     <address@hidden>
 +
 +      Allow read-only access to built-in variables from extensions.
 +
 +      * awk.h (NO_EXT_SET): New flag.
 +      * gawkapi.c (api_sym_lookup, api_sym_update_real): Set flag if off
 +      limits variable instead of failing. Adjust logic.
 +      (api_sym_update_scalar, api_set_array_element, api_del_array_element,
 +      api_release_flattened_array): Adjust logic.
 +      * gawkapi.h: Adjust documentation.
 +
 +      Provide PROCINFO["identifiers"]. Undocumented for now.
 +
 +      * awk.h (load_symbols): Add declaration.
 +      * awkgram.y (variable): Adjust comment formatting.
 +      * main.c (main): Call load_symbols().
 +      * symbol.c (load_symbols): New function.
 +
 +2012-09-13         Arnold D. Robbins     <address@hidden>
 +
 +      * configure.ac: Determination of DYNAMIC adjusted. Hopefully is
 +      smarter for z/OS.
 +
 +2012-09-13         Dave Pitts            <address@hidden>
 +
 +      * awk.h: Add defines for z/OS for newer types.
 +
 +2012-08-31         Arnold D. Robbins     <address@hidden>
 +
 +      * gawkapi.c: Wrap various bits in #ifdef DYNAMIC so that
 +      gawk will compile on systems without dynamic loading.
 +
 +2012-08-24         Arnold D. Robbins     <address@hidden>
 +
 +      Add version facility to API. Thanks to Manuel Collado
 +      for the idea.
 +
 +      * awk.h (print_ext_versions): Declare.
 +      Rearrange includes and decls to make more sense.
 +      * gawkapi.h (register_ext_version): New API.
 +      (dl_load_func): Add code for ext_version.
 +      * gawkapi.c (api_register_ext_version, print_ext_versions):
 +      New functions.
 +      * main.c (do_version): New variable.
 +      (optab): Set it for -v / --version.
 +      (main): Set it in arg parsing switch. Call version() after the
 +      extensions have been loaded.
 +
 +2012-08-22         Arnold D. Robbins     <address@hidden>
 +
 +      Add output wrapper and two-way processor to extension API.
 +
 +      * awk.h (struct redirect): Replace output FILE * with awk_output_buf_t.
 +      (register_output_wrapper, register_two_way_processor): Declare.
 +      * builtin.c (efwrite): Adjust logic to use rp->output data and
 +      functions if rp is not NULL. Remove redundant declaration of function.
 +      (do_fflush, do_printf, do_print, do_print_rec): Same adjustment.
 +      * ext.c (make_builtin): Adjust error messages.
 +      * gawkapi.c (api_register_output_wrapper,
 +      api_register_two_way_processor): New functions.
 +      (sym_update_real): Adjust code formatting.
 +      * gawkapi.h (awk_input_parser_t): Make next pointer awk_const.
 +      (awk_output_buf_t, awk_two_way_processor_t): New structs.
 +      (api_register_output_wrapper, api_register_two_way_processor): New APIs.
 +      (dl_load_func): Allow for empty function table (NULL elements).
 +      * io.c (find_output_wrapper, init_output_wrapper, find_two_processor,
 +      gawk_fwrite, gawk_ferror, gawk_fflush, gawk_fclose): New functions.
 +      (redirect): Call init_output_wrapper, find_output_wrapper as needed.
 +      Adjust use of rp->fp to rp->output.fp and also function calls.
 +      (close_rp, close_redir, flush_io): Same adjustment.
 +      (two_way_open): Same adjustment. Call find_two_way_processor, and
 +      find_output_wrapper, as needed.
 +
  2012-08-17         Arnold D. Robbins     <address@hidden>
  
 -      * Update infrastructure to automake 1.12.3, bison 2.6.3.
 +      * Update infrastructure: Automake 1.12.3 and bison 2.6.2.
  
 -2012-08-12         Arnold D. Robbins     <address@hidden>
 +2012-08-15         Arnold D. Robbins     <address@hidden>
  
        * dfa.c: Sync w/GNU grep.
  
diff --cc awkgram.c
index 2349e9d,0a93d7f..d83aa03
--- a/awkgram.c
+++ b/awkgram.c
@@@ -727,25 -750,25 +727,25 @@@ static const yytype_int16 yyrhs[] 
  /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
  static const yytype_uint16 yyrline[] =
  {
 -       0,   218,   218,   220,   225,   226,   230,   242,   246,   257,
 -     265,   273,   281,   283,   289,   290,   292,   318,   329,   340,
 -     346,   355,   365,   367,   369,   380,   385,   386,   391,   390,
 -     420,   419,   452,   454,   459,   460,   473,   478,   479,   483,
 -     485,   487,   494,   584,   626,   668,   781,   788,   795,   805,
 -     814,   823,   832,   843,   859,   858,   870,   882,   882,   978,
 -     978,  1004,  1027,  1033,  1034,  1040,  1041,  1048,  1053,  1065,
 -    1079,  1081,  1087,  1092,  1094,  1102,  1104,  1113,  1114,  1122,
 -    1127,  1127,  1138,  1142,  1150,  1151,  1154,  1156,  1161,  1162,
 -    1169,  1171,  1175,  1181,  1188,  1190,  1192,  1199,  1200,  1206,
 -    1207,  1212,  1214,  1219,  1221,  1223,  1225,  1231,  1238,  1240,
 -    1242,  1258,  1268,  1275,  1277,  1282,  1284,  1286,  1294,  1296,
 -    1301,  1303,  1308,  1310,  1312,  1365,  1367,  1369,  1371,  1373,
 -    1375,  1377,  1379,  1402,  1407,  1412,  1437,  1443,  1445,  1447,
 -    1449,  1451,  1453,  1458,  1462,  1493,  1495,  1501,  1507,  1520,
 -    1521,  1522,  1527,  1532,  1536,  1540,  1552,  1565,  1570,  1606,
 -    1624,  1625,  1631,  1632,  1637,  1639,  1646,  1663,  1680,  1682,
 -    1689,  1694,  1702,  1716,  1728,  1737,  1741,  1745,  1749,  1753,
 -    1757,  1760,  1762,  1766,  1770,  1774
 +       0,   192,   192,   194,   199,   200,   204,   216,   220,   231,
 +     237,   242,   250,   258,   260,   265,   273,   275,   281,   282,
 +     284,   310,   321,   332,   338,   347,   357,   359,   361,   367,
 +     372,   373,   377,   396,   395,   429,   431,   436,   437,   450,
 +     455,   456,   460,   462,   464,   471,   561,   603,   645,   758,
-      765,   772,   782,   791,   800,   809,   824,   840,   839,   863,
-      875,   875,   973,   973,   998,  1021,  1027,  1028,  1034,  1035,
-     1042,  1047,  1059,  1073,  1075,  1083,  1088,  1090,  1098,  1100,
-     1109,  1110,  1118,  1123,  1123,  1134,  1138,  1146,  1147,  1150,
-     1152,  1157,  1158,  1167,  1168,  1173,  1178,  1184,  1186,  1188,
-     1195,  1196,  1202,  1203,  1208,  1210,  1215,  1217,  1219,  1221,
-     1227,  1234,  1236,  1238,  1254,  1264,  1271,  1273,  1278,  1280,
-     1282,  1290,  1292,  1297,  1299,  1304,  1306,  1308,  1358,  1360,
-     1362,  1364,  1366,  1368,  1370,  1372,  1395,  1400,  1405,  1430,
-     1436,  1438,  1440,  1442,  1444,  1446,  1451,  1455,  1487,  1489,
-     1495,  1501,  1514,  1515,  1516,  1521,  1526,  1530,  1534,  1549,
-     1562,  1567,  1603,  1621,  1622,  1628,  1629,  1634,  1636,  1643,
-     1660,  1677,  1679,  1686,  1691,  1699,  1709,  1721,  1730,  1734,
-     1738,  1742,  1746,  1750,  1753,  1755,  1759,  1763,  1767
++     765,   772,   782,   791,   800,   809,   820,   836,   835,   859,
++     871,   871,   969,   969,   995,  1018,  1024,  1025,  1031,  1032,
++    1039,  1044,  1056,  1070,  1072,  1080,  1085,  1087,  1095,  1097,
++    1106,  1107,  1115,  1120,  1120,  1131,  1135,  1143,  1144,  1147,
++    1149,  1154,  1155,  1164,  1165,  1170,  1175,  1181,  1183,  1185,
++    1192,  1193,  1199,  1200,  1205,  1207,  1212,  1214,  1216,  1218,
++    1224,  1231,  1233,  1235,  1251,  1261,  1268,  1270,  1275,  1277,
++    1279,  1287,  1289,  1294,  1296,  1301,  1303,  1305,  1355,  1357,
++    1359,  1361,  1363,  1365,  1367,  1369,  1392,  1397,  1402,  1427,
++    1433,  1435,  1437,  1439,  1441,  1443,  1448,  1452,  1484,  1486,
++    1492,  1498,  1511,  1512,  1513,  1518,  1523,  1527,  1531,  1546,
++    1559,  1564,  1600,  1618,  1619,  1625,  1626,  1631,  1633,  1640,
++    1657,  1674,  1676,  1683,  1688,  1696,  1706,  1718,  1727,  1731,
++    1735,  1739,  1743,  1747,  1750,  1752,  1756,  1760,  1764
  };
  #endif
  
@@@ -2800,14 -2808,10 +2800,10 @@@ regular_loop
          }
      break;
  
 -  case 52:
 +  case 55:
  /* Line 1787 of yacc.c  */
 -#line 833 "awkgram.y"
 +#line 810 "awkgram.y"
      {
-               if (do_traditional)
-                       error_ln((yyvsp[(1) - (2)])->source_line,
-                               _("`nextfile' is a gawk extension"));
- 
                /* if inside function (rule = 0), resolve context at run-time */
                if (rule == BEGIN || rule == END || rule == ENDFILE)
                        error_ln((yyvsp[(1) - (2)])->source_line,
@@@ -2819,9 -2823,9 +2815,9 @@@
          }
      break;
  
 -  case 53:
 +  case 56:
  /* Line 1787 of yacc.c  */
- #line 825 "awkgram.y"
 -#line 844 "awkgram.y"
++#line 821 "awkgram.y"
      {
                /* Initialize the two possible jump targets, the actual target
                 * is resolved at run-time. 
@@@ -2838,18 -2842,18 +2834,18 @@@
          }
      break;
  
 -  case 54:
 +  case 57:
  /* Line 1787 of yacc.c  */
- #line 840 "awkgram.y"
 -#line 859 "awkgram.y"
++#line 836 "awkgram.y"
      {
 -              if (! can_return)
 +              if (! in_function)
                        yyerror(_("`return' used outside function context"));
          }
      break;
  
 -  case 55:
 +  case 58:
  /* Line 1787 of yacc.c  */
- #line 843 "awkgram.y"
 -#line 862 "awkgram.y"
++#line 839 "awkgram.y"
      {
                if ((yyvsp[(3) - (4)]) == NULL) {
                        (yyval) = list_create((yyvsp[(1) - (4)]));
@@@ -2872,15 -2864,15 +2868,15 @@@
          }
      break;
  
 -  case 57:
 +  case 60:
  /* Line 1787 of yacc.c  */
- #line 875 "awkgram.y"
 -#line 882 "awkgram.y"
 -    { in_print = TRUE; in_parens = 0; }
++#line 871 "awkgram.y"
 +    { in_print = true; in_parens = 0; }
      break;
  
 -  case 58:
 +  case 61:
  /* Line 1787 of yacc.c  */
- #line 876 "awkgram.y"
 -#line 883 "awkgram.y"
++#line 872 "awkgram.y"
      {
                /*
                 * Optimization: plain `print' has no expression list, so $3 is 
null.
@@@ -2979,32 -2969,33 +2975,33 @@@ regular_print
          }
      break;
  
 -  case 59:
 +  case 62:
  /* Line 1787 of yacc.c  */
- #line 973 "awkgram.y"
 -#line 978 "awkgram.y"
++#line 969 "awkgram.y"
      { sub_counter = 0; }
      break;
  
 -  case 60:
 +  case 63:
  /* Line 1787 of yacc.c  */
- #line 974 "awkgram.y"
 -#line 979 "awkgram.y"
++#line 970 "awkgram.y"
      {
                char *arr = (yyvsp[(2) - (4)])->lextok;
  
                (yyvsp[(2) - (4)])->opcode = Op_push_array;
 -              (yyvsp[(2) - (4)])->memory = variable(arr, Node_var_new);
 +              (yyvsp[(2) - (4)])->memory = variable((yyvsp[(2) - 
(4)])->source_line, arr, Node_var_new);
  
                if ((yyvsp[(4) - (4)]) == NULL) {
-                       static bool warned = false;
- 
-                       if (do_lint && ! warned) {
-                               warned = true;
-                               lintwarn_ln((yyvsp[(1) - (4)])->source_line,
-                                       _("`delete array' is a gawk 
extension"));
-                       }
-                       if (do_traditional)
-                               error_ln((yyvsp[(1) - (4)])->source_line,
-                                       _("`delete array' is a gawk 
extension"));
+                       /*
+                        * As of September 2012, POSIX has added support
+                        * for `delete array'. See:
+                        * http://austingroupbugs.net/view.php?id=544
+                        *
+                        * Thanks to Nathan Weeks for the initiative.
+                        *
+                        * Thus we no longer warn or check do_posix.
+                        * Also, since BWK awk supports it, we don't have to
+                        * check do_traditional either.
+                        */
                        (yyvsp[(1) - (4)])->expr_count = 0;
                        (yyval) = list_append(list_create((yyvsp[(2) - (4)])), 
(yyvsp[(1) - (4)]));
                } else {
@@@ -3014,11 -3005,11 +3011,11 @@@
          }
      break;
  
 -  case 61:
 +  case 64:
  /* Line 1787 of yacc.c  */
- #line 1003 "awkgram.y"
 -#line 1009 "awkgram.y"
++#line 1000 "awkgram.y"
      {
 -              static short warned = FALSE;
 +              static bool warned = false;
                char *arr = (yyvsp[(3) - (4)])->lextok;
  
                if (do_lint && ! warned) {
@@@ -3028,42 -3019,42 +3025,42 @@@
                }
                if (do_traditional) {
                        error_ln((yyvsp[(1) - (4)])->source_line,
-                               _("`delete array' is a gawk extension"));
+                               _("`delete(array)' is a non-portable tawk 
extension"));
                }
 -              (yyvsp[(3) - (4)])->memory = variable(arr, Node_var_new);
 +              (yyvsp[(3) - (4)])->memory = variable((yyvsp[(3) - 
(4)])->source_line, arr, Node_var_new);
                (yyvsp[(3) - (4)])->opcode = Op_push_array;
                (yyvsp[(1) - (4)])->expr_count = 0;
                (yyval) = list_append(list_create((yyvsp[(3) - (4)])), 
(yyvsp[(1) - (4)]));
          }
      break;
  
 -  case 62:
 +  case 65:
  /* Line 1787 of yacc.c  */
- #line 1022 "awkgram.y"
 -#line 1028 "awkgram.y"
++#line 1019 "awkgram.y"
      { (yyval) = optimize_assignment((yyvsp[(1) - (1)])); }
      break;
  
 -  case 63:
 +  case 66:
  /* Line 1787 of yacc.c  */
- #line 1027 "awkgram.y"
 -#line 1033 "awkgram.y"
++#line 1024 "awkgram.y"
      { (yyval) = NULL; }
      break;
  
 -  case 64:
 +  case 67:
  /* Line 1787 of yacc.c  */
- #line 1029 "awkgram.y"
 -#line 1035 "awkgram.y"
++#line 1026 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (1)]); }
      break;
  
 -  case 65:
 +  case 68:
  /* Line 1787 of yacc.c  */
- #line 1034 "awkgram.y"
 -#line 1040 "awkgram.y"
++#line 1031 "awkgram.y"
      { (yyval) = NULL; }
      break;
  
 -  case 66:
 +  case 69:
  /* Line 1787 of yacc.c  */
- #line 1036 "awkgram.y"
 -#line 1042 "awkgram.y"
++#line 1033 "awkgram.y"
      {
                if ((yyvsp[(1) - (2)]) == NULL)
                        (yyval) = list_create((yyvsp[(2) - (2)]));
@@@ -3072,15 -3063,15 +3069,15 @@@
          }
      break;
  
 -  case 67:
 +  case 70:
  /* Line 1787 of yacc.c  */
- #line 1043 "awkgram.y"
 -#line 1049 "awkgram.y"
++#line 1040 "awkgram.y"
      { (yyval) = NULL; }
      break;
  
 -  case 68:
 +  case 71:
  /* Line 1787 of yacc.c  */
- #line 1048 "awkgram.y"
 -#line 1054 "awkgram.y"
++#line 1045 "awkgram.y"
      {
                INSTRUCTION *casestmt = (yyvsp[(5) - (5)]);
                if ((yyvsp[(5) - (5)]) == NULL)
@@@ -3094,9 -3085,9 +3091,9 @@@
          }
      break;
  
 -  case 69:
 +  case 72:
  /* Line 1787 of yacc.c  */
- #line 1060 "awkgram.y"
 -#line 1066 "awkgram.y"
++#line 1057 "awkgram.y"
      {
                INSTRUCTION *casestmt = (yyvsp[(4) - (4)]);
                if ((yyvsp[(4) - (4)]) == NULL)
@@@ -3109,87 -3100,85 +3106,87 @@@
          }
      break;
  
 -  case 70:
 +  case 73:
  /* Line 1787 of yacc.c  */
- #line 1074 "awkgram.y"
 -#line 1080 "awkgram.y"
++#line 1071 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (1)]); }
      break;
  
 -  case 71:
 +  case 74:
  /* Line 1787 of yacc.c  */
- #line 1076 "awkgram.y"
 -#line 1082 "awkgram.y"
++#line 1073 "awkgram.y"
      { 
 -              (yyvsp[(2) - (2)])->memory->numbr = -(force_number((yyvsp[(2) - 
(2)])->memory));
 +              NODE *n = (yyvsp[(2) - (2)])->memory;
 +              (void) force_number(n);
 +              negate_num(n);
                bcfree((yyvsp[(1) - (2)]));
                (yyval) = (yyvsp[(2) - (2)]);
          }
      break;
  
 -  case 72:
 +  case 75:
  /* Line 1787 of yacc.c  */
- #line 1084 "awkgram.y"
 -#line 1088 "awkgram.y"
++#line 1081 "awkgram.y"
      {
                bcfree((yyvsp[(1) - (2)]));
                (yyval) = (yyvsp[(2) - (2)]);
          }
      break;
  
 -  case 73:
 +  case 76:
  /* Line 1787 of yacc.c  */
- #line 1089 "awkgram.y"
 -#line 1093 "awkgram.y"
++#line 1086 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (1)]); }
      break;
  
 -  case 74:
 +  case 77:
  /* Line 1787 of yacc.c  */
- #line 1091 "awkgram.y"
 -#line 1095 "awkgram.y"
++#line 1088 "awkgram.y"
      {
                (yyvsp[(1) - (1)])->opcode = Op_push_re;
                (yyval) = (yyvsp[(1) - (1)]);
          }
      break;
  
 -  case 75:
 +  case 78:
  /* Line 1787 of yacc.c  */
- #line 1099 "awkgram.y"
 -#line 1103 "awkgram.y"
++#line 1096 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (1)]); }
      break;
  
 -  case 76:
 +  case 79:
  /* Line 1787 of yacc.c  */
- #line 1101 "awkgram.y"
 -#line 1105 "awkgram.y"
++#line 1098 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (1)]); }
      break;
  
 -  case 78:
 +  case 81:
  /* Line 1787 of yacc.c  */
- #line 1111 "awkgram.y"
 -#line 1115 "awkgram.y"
++#line 1108 "awkgram.y"
      {
                (yyval) = (yyvsp[(2) - (3)]);
          }
      break;
  
 -  case 79:
 +  case 82:
  /* Line 1787 of yacc.c  */
- #line 1118 "awkgram.y"
 -#line 1122 "awkgram.y"
++#line 1115 "awkgram.y"
      {
 -              in_print = FALSE;
 +              in_print = false;
                in_parens = 0;
                (yyval) = NULL;
          }
      break;
  
 -  case 80:
 +  case 83:
  /* Line 1787 of yacc.c  */
- #line 1123 "awkgram.y"
 -#line 1127 "awkgram.y"
 -    { in_print = FALSE; in_parens = 0; }
++#line 1120 "awkgram.y"
 +    { in_print = false; in_parens = 0; }
      break;
  
 -  case 81:
 +  case 84:
  /* Line 1787 of yacc.c  */
- #line 1124 "awkgram.y"
 -#line 1128 "awkgram.y"
++#line 1121 "awkgram.y"
      {
                if ((yyvsp[(1) - (3)])->redir_type == redirect_twoway
                        && (yyvsp[(3) - (3)])->lasti->opcode == 
Op_K_getline_redir
@@@ -3199,152 -3188,142 +3196,152 @@@
          }
      break;
  
 -  case 82:
 +  case 85:
  /* Line 1787 of yacc.c  */
- #line 1135 "awkgram.y"
 -#line 1139 "awkgram.y"
++#line 1132 "awkgram.y"
      {
                (yyval) = mk_condition((yyvsp[(3) - (6)]), (yyvsp[(1) - (6)]), 
(yyvsp[(6) - (6)]), NULL, NULL);
          }
      break;
  
 -  case 83:
 +  case 86:
  /* Line 1787 of yacc.c  */
- #line 1140 "awkgram.y"
 -#line 1144 "awkgram.y"
++#line 1137 "awkgram.y"
      {
                (yyval) = mk_condition((yyvsp[(3) - (9)]), (yyvsp[(1) - (9)]), 
(yyvsp[(6) - (9)]), (yyvsp[(7) - (9)]), (yyvsp[(9) - (9)]));
          }
      break;
  
 -  case 88:
 +  case 91:
  /* Line 1787 of yacc.c  */
- #line 1157 "awkgram.y"
 -#line 1161 "awkgram.y"
++#line 1154 "awkgram.y"
      { (yyval) = NULL; }
      break;
  
 -  case 89:
 +  case 92:
  /* Line 1787 of yacc.c  */
- #line 1159 "awkgram.y"
 -#line 1163 "awkgram.y"
++#line 1156 "awkgram.y"
      {
                bcfree((yyvsp[(1) - (2)]));
                (yyval) = (yyvsp[(2) - (2)]);
          }
      break;
  
 -  case 92:
 -/* Line 1787 of yacc.c  */
 -#line 1176 "awkgram.y"
 -    {
 -              append_param((yyvsp[(1) - (1)])->lextok);
 -              (yyvsp[(1) - (1)])->lextok = NULL;
 -              bcfree((yyvsp[(1) - (1)]));
 -        }
 -    break;
 -
    case 93:
  /* Line 1787 of yacc.c  */
- #line 1167 "awkgram.y"
 -#line 1182 "awkgram.y"
 -    {
 -              append_param((yyvsp[(3) - (3)])->lextok);
 -              (yyvsp[(3) - (3)])->lextok = NULL;
 -              bcfree((yyvsp[(3) - (3)]));
 -              yyerrok;
 -        }
++#line 1164 "awkgram.y"
 +    { (yyval) = NULL; }
      break;
  
    case 94:
  /* Line 1787 of yacc.c  */
- #line 1169 "awkgram.y"
 -#line 1189 "awkgram.y"
 -    { /* func_params = NULL; */ }
++#line 1166 "awkgram.y"
 +    { (yyval) = (yyvsp[(1) - (1)]) ; }
      break;
  
    case 95:
  /* Line 1787 of yacc.c  */
- #line 1174 "awkgram.y"
 -#line 1191 "awkgram.y"
 -    { /* func_params = NULL; */ }
++#line 1171 "awkgram.y"
 +    {
 +              (yyvsp[(1) - (1)])->param_count = 0;
 +              (yyval) = list_create((yyvsp[(1) - (1)]));
 +        }
      break;
  
    case 96:
  /* Line 1787 of yacc.c  */
- #line 1179 "awkgram.y"
 -#line 1193 "awkgram.y"
 -    { /* func_params = NULL; */ }
++#line 1176 "awkgram.y"
 +    {
 +              (yyvsp[(3) - (3)])->param_count =  (yyvsp[(1) - 
(3)])->lasti->param_count + 1;
 +              (yyval) = list_append((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]));
 +              yyerrok;
 +        }
      break;
  
    case 97:
  /* Line 1787 of yacc.c  */
- #line 1185 "awkgram.y"
 -#line 1199 "awkgram.y"
++#line 1182 "awkgram.y"
      { (yyval) = NULL; }
      break;
  
    case 98:
  /* Line 1787 of yacc.c  */
- #line 1187 "awkgram.y"
 -#line 1201 "awkgram.y"
 -    { (yyval) = (yyvsp[(1) - (1)]); }
++#line 1184 "awkgram.y"
 +    { (yyval) = (yyvsp[(1) - (2)]); }
      break;
  
    case 99:
  /* Line 1787 of yacc.c  */
- #line 1189 "awkgram.y"
 -#line 1206 "awkgram.y"
 -    { (yyval) = NULL; }
++#line 1186 "awkgram.y"
 +    { (yyval) = (yyvsp[(1) - (3)]); }
      break;
  
    case 100:
  /* Line 1787 of yacc.c  */
- #line 1195 "awkgram.y"
 -#line 1208 "awkgram.y"
 -    { (yyval) = (yyvsp[(1) - (1)]); }
++#line 1192 "awkgram.y"
 +    { (yyval) = NULL; }
      break;
  
    case 101:
  /* Line 1787 of yacc.c  */
- #line 1197 "awkgram.y"
 -#line 1213 "awkgram.y"
 -    { (yyval) = mk_expression_list(NULL, (yyvsp[(1) - (1)])); }
++#line 1194 "awkgram.y"
 +    { (yyval) = (yyvsp[(1) - (1)]); }
      break;
  
    case 102:
  /* Line 1787 of yacc.c  */
- #line 1202 "awkgram.y"
 -#line 1215 "awkgram.y"
 -    {
 -              (yyval) = mk_expression_list((yyvsp[(1) - (3)]), (yyvsp[(3) - 
(3)]));
 -              yyerrok;
 -        }
++#line 1199 "awkgram.y"
 +    { (yyval) = NULL; }
      break;
  
    case 103:
  /* Line 1787 of yacc.c  */
- #line 1204 "awkgram.y"
 -#line 1220 "awkgram.y"
 -    { (yyval) = NULL; }
++#line 1201 "awkgram.y"
 +    { (yyval) = (yyvsp[(1) - (1)]); }
      break;
  
    case 104:
  /* Line 1787 of yacc.c  */
- #line 1209 "awkgram.y"
 -#line 1222 "awkgram.y"
 -    { (yyval) = NULL; }
++#line 1206 "awkgram.y"
 +    { (yyval) = mk_expression_list(NULL, (yyvsp[(1) - (1)])); }
      break;
  
    case 105:
  /* Line 1787 of yacc.c  */
- #line 1211 "awkgram.y"
 -#line 1224 "awkgram.y"
 -    { (yyval) = NULL; }
++#line 1208 "awkgram.y"
 +    {
 +              (yyval) = mk_expression_list((yyvsp[(1) - (3)]), (yyvsp[(3) - 
(3)]));
 +              yyerrok;
 +        }
      break;
  
    case 106:
  /* Line 1787 of yacc.c  */
- #line 1216 "awkgram.y"
 -#line 1226 "awkgram.y"
++#line 1213 "awkgram.y"
      { (yyval) = NULL; }
      break;
  
    case 107:
  /* Line 1787 of yacc.c  */
- #line 1218 "awkgram.y"
 -#line 1232 "awkgram.y"
++#line 1215 "awkgram.y"
 +    { (yyval) = NULL; }
 +    break;
 +
 +  case 108:
 +/* Line 1787 of yacc.c  */
- #line 1220 "awkgram.y"
++#line 1217 "awkgram.y"
 +    { (yyval) = NULL; }
 +    break;
 +
 +  case 109:
 +/* Line 1787 of yacc.c  */
- #line 1222 "awkgram.y"
++#line 1219 "awkgram.y"
 +    { (yyval) = NULL; }
 +    break;
 +
 +  case 110:
 +/* Line 1787 of yacc.c  */
- #line 1228 "awkgram.y"
++#line 1225 "awkgram.y"
      {
                if (do_lint && (yyvsp[(3) - (3)])->lasti->opcode == 
Op_match_rec)
                        lintwarn_ln((yyvsp[(2) - (3)])->source_line,
@@@ -3353,21 -3332,21 +3350,21 @@@
          }
      break;
  
 -  case 108:
 +  case 111:
  /* Line 1787 of yacc.c  */
- #line 1235 "awkgram.y"
 -#line 1239 "awkgram.y"
++#line 1232 "awkgram.y"
      { (yyval) = mk_boolean((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) 
- (3)])); }
      break;
  
 -  case 109:
 +  case 112:
  /* Line 1787 of yacc.c  */
- #line 1237 "awkgram.y"
 -#line 1241 "awkgram.y"
++#line 1234 "awkgram.y"
      { (yyval) = mk_boolean((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) 
- (3)])); }
      break;
  
 -  case 110:
 +  case 113:
  /* Line 1787 of yacc.c  */
- #line 1239 "awkgram.y"
 -#line 1243 "awkgram.y"
++#line 1236 "awkgram.y"
      {
                if ((yyvsp[(1) - (3)])->lasti->opcode == Op_match_rec)
                        warning_ln((yyvsp[(2) - (3)])->source_line,
@@@ -3385,12 -3364,12 +3382,12 @@@
          }
      break;
  
 -  case 111:
 +  case 114:
  /* Line 1787 of yacc.c  */
- #line 1255 "awkgram.y"
 -#line 1259 "awkgram.y"
++#line 1252 "awkgram.y"
      {
                if (do_lint_old)
 -                warning_ln((yyvsp[(2) - (3)])->source_line,
 +                      warning_ln((yyvsp[(2) - (3)])->source_line,
                                _("old awk does not support the keyword `in' 
except after `for'"));
                (yyvsp[(3) - (3)])->nexti->opcode = Op_push_array;
                (yyvsp[(2) - (3)])->opcode = Op_in_array;
@@@ -3399,9 -3378,9 +3396,9 @@@
          }
      break;
  
 -  case 112:
 +  case 115:
  /* Line 1787 of yacc.c  */
- #line 1265 "awkgram.y"
 -#line 1269 "awkgram.y"
++#line 1262 "awkgram.y"
      {
                if (do_lint && (yyvsp[(3) - (3)])->lasti->opcode == 
Op_match_rec)
                        lintwarn_ln((yyvsp[(2) - (3)])->source_line,
@@@ -3410,81 -3389,81 +3407,81 @@@
          }
      break;
  
 -  case 113:
 +  case 116:
  /* Line 1787 of yacc.c  */
- #line 1272 "awkgram.y"
 -#line 1276 "awkgram.y"
++#line 1269 "awkgram.y"
      { (yyval) = mk_condition((yyvsp[(1) - (5)]), (yyvsp[(2) - (5)]), 
(yyvsp[(3) - (5)]), (yyvsp[(4) - (5)]), (yyvsp[(5) - (5)])); }
      break;
  
 -  case 114:
 +  case 117:
  /* Line 1787 of yacc.c  */
- #line 1274 "awkgram.y"
 -#line 1278 "awkgram.y"
++#line 1271 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (1)]); }
      break;
  
 -  case 115:
 +  case 118:
  /* Line 1787 of yacc.c  */
- #line 1279 "awkgram.y"
 -#line 1283 "awkgram.y"
++#line 1276 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (1)]); }
      break;
  
 -  case 116:
 +  case 119:
  /* Line 1787 of yacc.c  */
- #line 1281 "awkgram.y"
 -#line 1285 "awkgram.y"
++#line 1278 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (1)]); }
      break;
  
 -  case 117:
 +  case 120:
  /* Line 1787 of yacc.c  */
- #line 1283 "awkgram.y"
 -#line 1287 "awkgram.y"
++#line 1280 "awkgram.y"
      { 
                (yyvsp[(2) - (2)])->opcode = Op_assign_quotient;
                (yyval) = (yyvsp[(2) - (2)]);
          }
      break;
  
 -  case 118:
 +  case 121:
  /* Line 1787 of yacc.c  */
- #line 1291 "awkgram.y"
 -#line 1295 "awkgram.y"
++#line 1288 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (1)]); }
      break;
  
 -  case 119:
 +  case 122:
  /* Line 1787 of yacc.c  */
- #line 1293 "awkgram.y"
 -#line 1297 "awkgram.y"
++#line 1290 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (1)]); }
      break;
  
 -  case 120:
 +  case 123:
  /* Line 1787 of yacc.c  */
- #line 1298 "awkgram.y"
 -#line 1302 "awkgram.y"
++#line 1295 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (1)]); }
      break;
  
 -  case 121:
 +  case 124:
  /* Line 1787 of yacc.c  */
- #line 1300 "awkgram.y"
 -#line 1304 "awkgram.y"
++#line 1297 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (1)]); }
      break;
  
 -  case 122:
 +  case 125:
  /* Line 1787 of yacc.c  */
- #line 1305 "awkgram.y"
 -#line 1309 "awkgram.y"
++#line 1302 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (1)]); }
      break;
  
 -  case 123:
 +  case 126:
  /* Line 1787 of yacc.c  */
- #line 1307 "awkgram.y"
 -#line 1311 "awkgram.y"
++#line 1304 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (1)]); }
      break;
  
 -  case 124:
 +  case 127:
  /* Line 1787 of yacc.c  */
- #line 1309 "awkgram.y"
 -#line 1313 "awkgram.y"
++#line 1306 "awkgram.y"
      {
                int count = 2;
 -              int is_simple_var = FALSE;
 +              bool is_simple_var = false;
  
                if ((yyvsp[(1) - (2)])->lasti->opcode == Op_concat) {
                        /* multiple (> 2) adjacent strings optimization */
@@@ -3530,45 -3512,45 +3527,45 @@@
          }
      break;
  
 -  case 126:
 +  case 129:
  /* Line 1787 of yacc.c  */
- #line 1361 "awkgram.y"
 -#line 1368 "awkgram.y"
++#line 1358 "awkgram.y"
      { (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) 
- (3)])); }
      break;
  
 -  case 127:
 +  case 130:
  /* Line 1787 of yacc.c  */
- #line 1363 "awkgram.y"
 -#line 1370 "awkgram.y"
++#line 1360 "awkgram.y"
      { (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) 
- (3)])); }
      break;
  
 -  case 128:
 +  case 131:
  /* Line 1787 of yacc.c  */
- #line 1365 "awkgram.y"
 -#line 1372 "awkgram.y"
++#line 1362 "awkgram.y"
      { (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) 
- (3)])); }
      break;
  
 -  case 129:
 +  case 132:
  /* Line 1787 of yacc.c  */
- #line 1367 "awkgram.y"
 -#line 1374 "awkgram.y"
++#line 1364 "awkgram.y"
      { (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) 
- (3)])); }
      break;
  
 -  case 130:
 +  case 133:
  /* Line 1787 of yacc.c  */
- #line 1369 "awkgram.y"
 -#line 1376 "awkgram.y"
++#line 1366 "awkgram.y"
      { (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) 
- (3)])); }
      break;
  
 -  case 131:
 +  case 134:
  /* Line 1787 of yacc.c  */
- #line 1371 "awkgram.y"
 -#line 1378 "awkgram.y"
++#line 1368 "awkgram.y"
      { (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) 
- (3)])); }
      break;
  
 -  case 132:
 +  case 135:
  /* Line 1787 of yacc.c  */
- #line 1373 "awkgram.y"
 -#line 1380 "awkgram.y"
++#line 1370 "awkgram.y"
      {
                /*
                 * In BEGINFILE/ENDFILE, allow `getline var < file'
@@@ -3593,27 -3575,27 +3590,27 @@@
          }
      break;
  
 -  case 133:
 +  case 136:
  /* Line 1787 of yacc.c  */
- #line 1396 "awkgram.y"
 -#line 1403 "awkgram.y"
++#line 1393 "awkgram.y"
      {
                (yyvsp[(2) - (2)])->opcode = Op_postincrement;
                (yyval) = mk_assignment((yyvsp[(1) - (2)]), NULL, (yyvsp[(2) - 
(2)]));
          }
      break;
  
 -  case 134:
 +  case 137:
  /* Line 1787 of yacc.c  */
- #line 1401 "awkgram.y"
 -#line 1408 "awkgram.y"
++#line 1398 "awkgram.y"
      {
                (yyvsp[(2) - (2)])->opcode = Op_postdecrement;
                (yyval) = mk_assignment((yyvsp[(1) - (2)]), NULL, (yyvsp[(2) - 
(2)]));
          }
      break;
  
 -  case 135:
 +  case 138:
  /* Line 1787 of yacc.c  */
- #line 1406 "awkgram.y"
 -#line 1413 "awkgram.y"
++#line 1403 "awkgram.y"
      {
                if (do_lint_old) {
                    warning_ln((yyvsp[(4) - (5)])->source_line,
@@@ -3635,62 -3617,62 +3632,62 @@@
          }
      break;
  
 -  case 136:
 +  case 139:
  /* Line 1787 of yacc.c  */
- #line 1431 "awkgram.y"
 -#line 1438 "awkgram.y"
++#line 1428 "awkgram.y"
      {
                  (yyval) = mk_getline((yyvsp[(3) - (4)]), (yyvsp[(4) - (4)]), 
(yyvsp[(1) - (4)]), (yyvsp[(2) - (4)])->redir_type);
                  bcfree((yyvsp[(2) - (4)]));
                }
      break;
  
 -  case 137:
 +  case 140:
  /* Line 1787 of yacc.c  */
- #line 1437 "awkgram.y"
 -#line 1444 "awkgram.y"
++#line 1434 "awkgram.y"
      { (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) 
- (3)])); }
      break;
  
 -  case 138:
 +  case 141:
  /* Line 1787 of yacc.c  */
- #line 1439 "awkgram.y"
 -#line 1446 "awkgram.y"
++#line 1436 "awkgram.y"
      { (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) 
- (3)])); }
      break;
  
 -  case 139:
 +  case 142:
  /* Line 1787 of yacc.c  */
- #line 1441 "awkgram.y"
 -#line 1448 "awkgram.y"
++#line 1438 "awkgram.y"
      { (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) 
- (3)])); }
      break;
  
 -  case 140:
 +  case 143:
  /* Line 1787 of yacc.c  */
- #line 1443 "awkgram.y"
 -#line 1450 "awkgram.y"
++#line 1440 "awkgram.y"
      { (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) 
- (3)])); }
      break;
  
 -  case 141:
 +  case 144:
  /* Line 1787 of yacc.c  */
- #line 1445 "awkgram.y"
 -#line 1452 "awkgram.y"
++#line 1442 "awkgram.y"
      { (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) 
- (3)])); }
      break;
  
 -  case 142:
 +  case 145:
  /* Line 1787 of yacc.c  */
- #line 1447 "awkgram.y"
 -#line 1454 "awkgram.y"
++#line 1444 "awkgram.y"
      { (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) 
- (3)])); }
      break;
  
 -  case 143:
 +  case 146:
  /* Line 1787 of yacc.c  */
- #line 1452 "awkgram.y"
 -#line 1459 "awkgram.y"
++#line 1449 "awkgram.y"
      {
                (yyval) = list_create((yyvsp[(1) - (1)]));
          }
      break;
  
 -  case 144:
 +  case 147:
  /* Line 1787 of yacc.c  */
- #line 1456 "awkgram.y"
 -#line 1463 "awkgram.y"
++#line 1453 "awkgram.y"
      {
                if ((yyvsp[(2) - (2)])->opcode == Op_match_rec) {
                        (yyvsp[(2) - (2)])->opcode = Op_nomatch;
@@@ -3724,15 -3705,15 +3721,15 @@@
           }
      break;
  
 -  case 145:
 +  case 148:
  /* Line 1787 of yacc.c  */
- #line 1488 "awkgram.y"
 -#line 1494 "awkgram.y"
++#line 1485 "awkgram.y"
      { (yyval) = (yyvsp[(2) - (3)]); }
      break;
  
 -  case 146:
 +  case 149:
  /* Line 1787 of yacc.c  */
- #line 1490 "awkgram.y"
 -#line 1496 "awkgram.y"
++#line 1487 "awkgram.y"
      {
                (yyval) = snode((yyvsp[(3) - (4)]), (yyvsp[(1) - (4)]));
                if ((yyval) == NULL)
@@@ -3740,9 -3721,9 +3737,9 @@@
          }
      break;
  
 -  case 147:
 +  case 150:
  /* Line 1787 of yacc.c  */
- #line 1496 "awkgram.y"
 -#line 1502 "awkgram.y"
++#line 1493 "awkgram.y"
      {
                (yyval) = snode((yyvsp[(3) - (4)]), (yyvsp[(1) - (4)]));
                if ((yyval) == NULL)
@@@ -3750,14 -3731,14 +3747,14 @@@
          }
      break;
  
 -  case 148:
 +  case 151:
  /* Line 1787 of yacc.c  */
- #line 1502 "awkgram.y"
 -#line 1508 "awkgram.y"
++#line 1499 "awkgram.y"
      {
 -              static short warned1 = FALSE;
 +              static bool warned = false;
  
 -              if (do_lint && ! warned1) {
 -                      warned1 = TRUE;
 +              if (do_lint && ! warned) {
 +                      warned = true;
                        lintwarn_ln((yyvsp[(1) - (1)])->source_line,
                                _("call of `length' without parentheses is not 
portable"));
                }
@@@ -3767,50 -3748,47 +3764,50 @@@
          }
      break;
  
 -  case 151:
 +  case 154:
  /* Line 1787 of yacc.c  */
- #line 1517 "awkgram.y"
 -#line 1523 "awkgram.y"
++#line 1514 "awkgram.y"
      {
                (yyvsp[(1) - (2)])->opcode = Op_preincrement;
                (yyval) = mk_assignment((yyvsp[(2) - (2)]), NULL, (yyvsp[(1) - 
(2)]));
          }
      break;
  
 -  case 152:
 +  case 155:
  /* Line 1787 of yacc.c  */
- #line 1522 "awkgram.y"
 -#line 1528 "awkgram.y"
++#line 1519 "awkgram.y"
      {
                (yyvsp[(1) - (2)])->opcode = Op_predecrement;
                (yyval) = mk_assignment((yyvsp[(2) - (2)]), NULL, (yyvsp[(1) - 
(2)]));
          }
      break;
  
 -  case 153:
 +  case 156:
  /* Line 1787 of yacc.c  */
- #line 1527 "awkgram.y"
 -#line 1533 "awkgram.y"
++#line 1524 "awkgram.y"
      {
                (yyval) = list_create((yyvsp[(1) - (1)]));
          }
      break;
  
 -  case 154:
 +  case 157:
  /* Line 1787 of yacc.c  */
- #line 1531 "awkgram.y"
 -#line 1537 "awkgram.y"
++#line 1528 "awkgram.y"
      {
                (yyval) = list_create((yyvsp[(1) - (1)]));
          }
      break;
  
 -  case 155:
 +  case 158:
  /* Line 1787 of yacc.c  */
- #line 1535 "awkgram.y"
 -#line 1541 "awkgram.y"
++#line 1532 "awkgram.y"
      {
                if ((yyvsp[(2) - (2)])->lasti->opcode == Op_push_i
 -                              && ((yyvsp[(2) - (2)])->lasti->memory->flags & 
(STRCUR|STRING)) == 0) {
 -                      (yyvsp[(2) - (2)])->lasti->memory->numbr = 
-(force_number((yyvsp[(2) - (2)])->lasti->memory));
 +                      && ((yyvsp[(2) - (2)])->lasti->memory->flags & 
(STRCUR|STRING)) == 0
 +              ) {
 +                      NODE *n = (yyvsp[(2) - (2)])->lasti->memory;
 +                      (void) force_number(n);
 +                      negate_num(n);                  
                        (yyval) = (yyvsp[(2) - (2)]);
                        bcfree((yyvsp[(1) - (2)]));
                } else {
@@@ -3820,9 -3798,9 +3817,9 @@@
          }
      break;
  
 -  case 156:
 +  case 159:
  /* Line 1787 of yacc.c  */
- #line 1550 "awkgram.y"
 -#line 1553 "awkgram.y"
++#line 1547 "awkgram.y"
      {
            /*
             * was: $$ = $2
@@@ -3834,18 -3812,18 +3831,18 @@@
          }
      break;
  
 -  case 157:
 +  case 160:
  /* Line 1787 of yacc.c  */
- #line 1563 "awkgram.y"
 -#line 1566 "awkgram.y"
++#line 1560 "awkgram.y"
      {
                func_use((yyvsp[(1) - (1)])->lasti->func_name, FUNC_USE);
                (yyval) = (yyvsp[(1) - (1)]);
          }
      break;
  
 -  case 158:
 +  case 161:
  /* Line 1787 of yacc.c  */
- #line 1568 "awkgram.y"
 -#line 1571 "awkgram.y"
++#line 1565 "awkgram.y"
      {
                /* indirect function call */
                INSTRUCTION *f, *t;
@@@ -3880,9 -3858,9 +3877,9 @@@
          }
      break;
  
 -  case 159:
 +  case 162:
  /* Line 1787 of yacc.c  */
- #line 1604 "awkgram.y"
 -#line 1607 "awkgram.y"
++#line 1601 "awkgram.y"
      {
                param_sanity((yyvsp[(3) - (4)]));
                (yyvsp[(1) - (4)])->opcode = Op_func_call;
@@@ -3898,47 -3876,47 +3895,47 @@@
          }
      break;
  
 -  case 160:
 +  case 163:
  /* Line 1787 of yacc.c  */
- #line 1621 "awkgram.y"
 -#line 1624 "awkgram.y"
++#line 1618 "awkgram.y"
      { (yyval) = NULL; }
      break;
  
 -  case 161:
 +  case 164:
  /* Line 1787 of yacc.c  */
- #line 1623 "awkgram.y"
 -#line 1626 "awkgram.y"
++#line 1620 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (1)]); }
      break;
  
 -  case 162:
 +  case 165:
  /* Line 1787 of yacc.c  */
- #line 1628 "awkgram.y"
 -#line 1631 "awkgram.y"
++#line 1625 "awkgram.y"
      { (yyval) = NULL; }
      break;
  
 -  case 163:
 +  case 166:
  /* Line 1787 of yacc.c  */
- #line 1630 "awkgram.y"
 -#line 1633 "awkgram.y"
++#line 1627 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (2)]); }
      break;
  
 -  case 164:
 +  case 167:
  /* Line 1787 of yacc.c  */
- #line 1635 "awkgram.y"
 -#line 1638 "awkgram.y"
++#line 1632 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (1)]); }
      break;
  
 -  case 165:
 +  case 168:
  /* Line 1787 of yacc.c  */
- #line 1637 "awkgram.y"
 -#line 1640 "awkgram.y"
++#line 1634 "awkgram.y"
      {
                (yyval) = list_merge((yyvsp[(1) - (2)]), (yyvsp[(2) - (2)]));
          }
      break;
  
 -  case 166:
 +  case 169:
  /* Line 1787 of yacc.c  */
- #line 1644 "awkgram.y"
 -#line 1647 "awkgram.y"
++#line 1641 "awkgram.y"
      {
                INSTRUCTION *ip = (yyvsp[(1) - (1)])->lasti; 
                int count = ip->sub_count;      /* # of SUBSEP-seperated 
expressions */
@@@ -3954,9 -3932,9 +3951,9 @@@
          }
      break;
  
 -  case 167:
 +  case 170:
  /* Line 1787 of yacc.c  */
- #line 1661 "awkgram.y"
 -#line 1664 "awkgram.y"
++#line 1658 "awkgram.y"
      {
                INSTRUCTION *t = (yyvsp[(2) - (3)]);
                if ((yyvsp[(2) - (3)]) == NULL) {
@@@ -3972,29 -3950,29 +3969,29 @@@
          }
      break;
  
 -  case 168:
 +  case 171:
  /* Line 1787 of yacc.c  */
- #line 1678 "awkgram.y"
 -#line 1681 "awkgram.y"
++#line 1675 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (1)]); }
      break;
  
 -  case 169:
 +  case 172:
  /* Line 1787 of yacc.c  */
- #line 1680 "awkgram.y"
 -#line 1683 "awkgram.y"
++#line 1677 "awkgram.y"
      {
                (yyval) = list_merge((yyvsp[(1) - (2)]), (yyvsp[(2) - (2)]));
          }
      break;
  
 -  case 170:
 +  case 173:
  /* Line 1787 of yacc.c  */
- #line 1687 "awkgram.y"
 -#line 1690 "awkgram.y"
++#line 1684 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (2)]); }
      break;
  
 -  case 171:
 +  case 174:
  /* Line 1787 of yacc.c  */
- #line 1692 "awkgram.y"
 -#line 1695 "awkgram.y"
++#line 1689 "awkgram.y"
      {
                char *var_name = (yyvsp[(1) - (1)])->lextok;
  
@@@ -4004,20 -3982,24 +4001,20 @@@
          }
      break;
  
 -  case 172:
 +  case 175:
  /* Line 1787 of yacc.c  */
- #line 1700 "awkgram.y"
 -#line 1703 "awkgram.y"
++#line 1697 "awkgram.y"
      {
 -              NODE *n;
 -
                char *arr = (yyvsp[(1) - (2)])->lextok;
 -              if ((n = lookup(arr)) != NULL && ! isarray(n))
 -                      yyerror(_("use of non-array as array"));
 -              (yyvsp[(1) - (2)])->memory = variable(arr, Node_var_new);
 +              (yyvsp[(1) - (2)])->memory = variable((yyvsp[(1) - 
(2)])->source_line, arr, Node_var_new);
                (yyvsp[(1) - (2)])->opcode = Op_push_array;
                (yyval) = list_prepend((yyvsp[(2) - (2)]), (yyvsp[(1) - (2)]));
          }
      break;
  
 -  case 173:
 +  case 176:
  /* Line 1787 of yacc.c  */
- #line 1710 "awkgram.y"
 -#line 1717 "awkgram.y"
++#line 1707 "awkgram.y"
      {
                INSTRUCTION *ip = (yyvsp[(1) - (1)])->nexti;
                if (ip->opcode == Op_push
@@@ -4031,9 -4013,9 +4028,9 @@@
          }
      break;
  
 -  case 174:
 +  case 177:
  /* Line 1787 of yacc.c  */
- #line 1722 "awkgram.y"
 -#line 1729 "awkgram.y"
++#line 1719 "awkgram.y"
      {
                (yyval) = list_append((yyvsp[(2) - (3)]), (yyvsp[(1) - (3)]));
                if ((yyvsp[(3) - (3)]) != NULL)
@@@ -4041,61 -4023,61 +4038,61 @@@
          }
      break;
  
 -  case 175:
 +  case 178:
  /* Line 1787 of yacc.c  */
- #line 1731 "awkgram.y"
 -#line 1738 "awkgram.y"
++#line 1728 "awkgram.y"
      {
                (yyvsp[(1) - (1)])->opcode = Op_postincrement;
          }
      break;
  
 -  case 176:
 +  case 179:
  /* Line 1787 of yacc.c  */
- #line 1735 "awkgram.y"
 -#line 1742 "awkgram.y"
++#line 1732 "awkgram.y"
      {
                (yyvsp[(1) - (1)])->opcode = Op_postdecrement;
          }
      break;
  
 -  case 177:
 +  case 180:
  /* Line 1787 of yacc.c  */
- #line 1738 "awkgram.y"
 -#line 1745 "awkgram.y"
++#line 1735 "awkgram.y"
      { (yyval) = NULL; }
      break;
  
 -  case 179:
 +  case 182:
  /* Line 1787 of yacc.c  */
- #line 1746 "awkgram.y"
 -#line 1753 "awkgram.y"
++#line 1743 "awkgram.y"
      { yyerrok; }
      break;
  
 -  case 180:
 +  case 183:
  /* Line 1787 of yacc.c  */
- #line 1750 "awkgram.y"
 -#line 1757 "awkgram.y"
++#line 1747 "awkgram.y"
      { yyerrok; }
      break;
  
 -  case 183:
 +  case 186:
  /* Line 1787 of yacc.c  */
- #line 1759 "awkgram.y"
 -#line 1766 "awkgram.y"
++#line 1756 "awkgram.y"
      { yyerrok; }
      break;
  
 -  case 184:
 +  case 187:
  /* Line 1787 of yacc.c  */
- #line 1763 "awkgram.y"
 -#line 1770 "awkgram.y"
++#line 1760 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (1)]); yyerrok; }
      break;
  
 -  case 185:
 +  case 188:
  /* Line 1787 of yacc.c  */
- #line 1767 "awkgram.y"
 -#line 1774 "awkgram.y"
++#line 1764 "awkgram.y"
      { yyerrok; }
      break;
  
  
  /* Line 1787 of yacc.c  */
- #line 4111 "awkgram.c"
 -#line 4093 "awkgram.c"
++#line 4108 "awkgram.c"
        default: break;
      }
    /* User semantic actions sometimes alter yychar, and that requires
@@@ -4325,7 -4307,7 +4322,7 @@@ yyreturn
  
  
  /* Line 2048 of yacc.c  */
- #line 1769 "awkgram.y"
 -#line 1776 "awkgram.y"
++#line 1766 "awkgram.y"
  
  
  struct token {
@@@ -4368,87 -4349,81 +4365,87 @@@ tokcompare(const void *l, const void *r
   * Function pointers come from declarations in awk.h.
   */
  
 +#ifdef HAVE_MPFR
 +#define MPF(F) do_mpfr_##F
 +#else
 +#define MPF(F) 0
 +#endif
 +
  static const struct token tokentab[] = {
 -{"BEGIN",     Op_rule,         LEX_BEGIN,     0,              0},
 -{"BEGINFILE", Op_rule,         LEX_BEGINFILE, GAWKX,          0},
 -{"END",               Op_rule,         LEX_END,       0,              0},
 -{"ENDFILE",           Op_rule,         LEX_ENDFILE,   GAWKX,          0},
 +{"BEGIN",     Op_rule,         LEX_BEGIN,     0,              0,      0},
 +{"BEGINFILE", Op_rule,         LEX_BEGINFILE, GAWKX,          0,      0},
 +{"END",               Op_rule,         LEX_END,       0,              0,      
0},
 +{"ENDFILE",           Op_rule,         LEX_ENDFILE,   GAWKX,          0,      
0},
  #ifdef ARRAYDEBUG
 -{"adump",     Op_builtin,    LEX_BUILTIN,     GAWKX|A(1),     do_adump},
 +{"adump",     Op_builtin,    LEX_BUILTIN,     GAWKX|A(1)|A(2),        
do_adump,       0},
  #endif
 -{"and",               Op_builtin,    LEX_BUILTIN,     GAWKX|A(2),     do_and},
 -{"asort",     Op_builtin,      LEX_BUILTIN,   GAWKX|A(1)|A(2)|A(3),   
do_asort},
 -{"asorti",    Op_builtin,      LEX_BUILTIN,   GAWKX|A(1)|A(2)|A(3),   
do_asorti},
 -{"atan2",     Op_builtin,      LEX_BUILTIN,   NOT_OLD|A(2),   do_atan2},
 -{"bindtextdomain",    Op_builtin,      LEX_BUILTIN,   GAWKX|A(1)|A(2),        
do_bindtextdomain},
 -{"break",     Op_K_break,      LEX_BREAK,     0,              0},
 -{"case",      Op_K_case,       LEX_CASE,      GAWKX,          0},
 -{"close",     Op_builtin,      LEX_BUILTIN,   NOT_OLD|A(1)|A(2),      
do_close},
 -{"compl",     Op_builtin,    LEX_BUILTIN,     GAWKX|A(1),     do_compl},
 -{"continue",  Op_K_continue, LEX_CONTINUE,    0,              0},
 -{"cos",               Op_builtin,      LEX_BUILTIN,   NOT_OLD|A(1),   do_cos},
 -{"dcgettext", Op_builtin,      LEX_BUILTIN,   GAWKX|A(1)|A(2)|A(3),   
do_dcgettext},
 -{"dcngettext",        Op_builtin,      LEX_BUILTIN,   
GAWKX|A(1)|A(2)|A(3)|A(4)|A(5), do_dcngettext},
 -{"default",   Op_K_default,    LEX_DEFAULT,   GAWKX,          0},
 -{"delete",    Op_K_delete,     LEX_DELETE,    NOT_OLD,        0},
 -{"do",                Op_K_do,         LEX_DO,        NOT_OLD|BREAK|CONTINUE, 
0},
 -{"else",      Op_K_else,       LEX_ELSE,      0,              0},
 -{"eval",      Op_symbol,       LEX_EVAL,      0,              0},
 -{"exit",      Op_K_exit,       LEX_EXIT,      0,              0},
 -{"exp",               Op_builtin,      LEX_BUILTIN,   A(1),           do_exp},
 -{"extension", Op_builtin,      LEX_BUILTIN,   GAWKX|A(2),     do_ext},
 -{"fflush",    Op_builtin,      LEX_BUILTIN,   RESX|A(0)|A(1), do_fflush},
 -{"for",               Op_K_for,        LEX_FOR,       BREAK|CONTINUE, 0},
 -{"func",      Op_func, LEX_FUNCTION,  NOT_POSIX|NOT_OLD,      0},
 -{"function",Op_func, LEX_FUNCTION,    NOT_OLD,        0},
 -{"gensub",    Op_sub_builtin,  LEX_BUILTIN,   GAWKX|A(3)|A(4), 0},
 -{"getline",   Op_K_getline_redir,      LEX_GETLINE,   NOT_OLD,        0},
 -{"gsub",      Op_sub_builtin,  LEX_BUILTIN,   NOT_OLD|A(2)|A(3), 0},
 -{"if",                Op_K_if,         LEX_IF,        0,              0},
 -{"in",                Op_symbol,       LEX_IN,        0,              0},
 -{"include",  Op_symbol,        LEX_INCLUDE,   GAWKX,  0},
 -{"index",     Op_builtin,      LEX_BUILTIN,   A(2),           do_index},
 -{"int",               Op_builtin,      LEX_BUILTIN,   A(1),           do_int},
 -{"isarray",   Op_builtin,      LEX_BUILTIN,   GAWKX|A(1),     do_isarray},
 -{"length",    Op_builtin,      LEX_LENGTH,    A(0)|A(1),      do_length},
 -{"log",               Op_builtin,      LEX_BUILTIN,   A(1),           do_log},
 -{"lshift",    Op_builtin,    LEX_BUILTIN,     GAWKX|A(2),     do_lshift},
 -{"match",     Op_builtin,      LEX_BUILTIN,   NOT_OLD|A(2)|A(3), do_match},
 -{"mktime",    Op_builtin,      LEX_BUILTIN,   GAWKX|A(1),     do_mktime},
 -{"next",      Op_K_next,       LEX_NEXT,      0,              0},
 -{"nextfile",  Op_K_nextfile, LEX_NEXTFILE,    0,              0},
 -{"or",                Op_builtin,    LEX_BUILTIN,     GAWKX|A(2),     do_or},
 -{"patsplit",  Op_builtin,    LEX_BUILTIN,     GAWKX|A(2)|A(3)|A(4), 
do_patsplit},
 -{"print",     Op_K_print,      LEX_PRINT,     0,              0},
 -{"printf",    Op_K_printf,     LEX_PRINTF,    0,              0},
 -{"rand",      Op_builtin,      LEX_BUILTIN,   NOT_OLD|A(0),   do_rand},
 -{"return",    Op_K_return,     LEX_RETURN,    NOT_OLD,        0},
 -{"rshift",    Op_builtin,    LEX_BUILTIN,     GAWKX|A(2),     do_rshift},
 -{"sin",               Op_builtin,      LEX_BUILTIN,   NOT_OLD|A(1),   do_sin},
 -{"split",     Op_builtin,      LEX_BUILTIN,   A(2)|A(3)|A(4), do_split},
 -{"sprintf",   Op_builtin,      LEX_BUILTIN,   0,              do_sprintf},
 -{"sqrt",      Op_builtin,      LEX_BUILTIN,   A(1),           do_sqrt},
 -{"srand",     Op_builtin,      LEX_BUILTIN,   NOT_OLD|A(0)|A(1), do_srand},
 +{"and",               Op_builtin,    LEX_BUILTIN,     GAWKX,          do_and, 
MPF(and)},
 +{"asort",     Op_builtin,      LEX_BUILTIN,   GAWKX|A(1)|A(2)|A(3),   
do_asort,       0},
 +{"asorti",    Op_builtin,      LEX_BUILTIN,   GAWKX|A(1)|A(2)|A(3),   
do_asorti,      0},
 +{"atan2",     Op_builtin,      LEX_BUILTIN,   NOT_OLD|A(2),   do_atan2,       
MPF(atan2)},
 +{"bindtextdomain",    Op_builtin,      LEX_BUILTIN,   GAWKX|A(1)|A(2),        
do_bindtextdomain,      0},
 +{"break",     Op_K_break,      LEX_BREAK,     0,              0,      0},
 +{"case",      Op_K_case,       LEX_CASE,      GAWKX,          0,      0},
 +{"close",     Op_builtin,      LEX_BUILTIN,   NOT_OLD|A(1)|A(2),      
do_close,       0},
 +{"compl",     Op_builtin,    LEX_BUILTIN,     GAWKX|A(1),     do_compl,       
MPF(compl)},
 +{"continue",  Op_K_continue, LEX_CONTINUE,    0,              0,      0},
 +{"cos",               Op_builtin,      LEX_BUILTIN,   NOT_OLD|A(1),   do_cos, 
MPF(cos)},
 +{"dcgettext", Op_builtin,      LEX_BUILTIN,   GAWKX|A(1)|A(2)|A(3),   
do_dcgettext,   0},
 +{"dcngettext",        Op_builtin,      LEX_BUILTIN,   
GAWKX|A(1)|A(2)|A(3)|A(4)|A(5), do_dcngettext,  0},
 +{"default",   Op_K_default,    LEX_DEFAULT,   GAWKX,          0,      0},
 +{"delete",    Op_K_delete,     LEX_DELETE,    NOT_OLD,        0,      0},
 +{"do",                Op_K_do,         LEX_DO,        NOT_OLD|BREAK|CONTINUE, 
0,      0},
 +{"else",      Op_K_else,       LEX_ELSE,      0,              0,      0},
 +{"eval",      Op_symbol,       LEX_EVAL,      0,              0,      0},
 +{"exit",      Op_K_exit,       LEX_EXIT,      0,              0,      0},
 +{"exp",               Op_builtin,      LEX_BUILTIN,   A(1),           do_exp, 
MPF(exp)},
 +{"fflush",    Op_builtin,      LEX_BUILTIN,   RESX|A(0)|A(1), do_fflush,      
0},
 +{"for",               Op_K_for,        LEX_FOR,       BREAK|CONTINUE, 0,      
0},
 +{"func",      Op_func, LEX_FUNCTION,  NOT_POSIX|NOT_OLD,      0,      0},
 +{"function",Op_func, LEX_FUNCTION,    NOT_OLD,        0,      0},
 +{"gensub",    Op_sub_builtin,  LEX_BUILTIN,   GAWKX|A(3)|A(4), 0,     0},
 +{"getline",   Op_K_getline_redir,      LEX_GETLINE,   NOT_OLD,        0,      
0},
 +{"gsub",      Op_sub_builtin,  LEX_BUILTIN,   NOT_OLD|A(2)|A(3), 0,   0},
 +{"if",                Op_K_if,         LEX_IF,        0,              0,      
0},
 +{"in",                Op_symbol,       LEX_IN,        0,              0,      
0},
 +{"include",  Op_symbol,        LEX_INCLUDE,   GAWKX,  0,      0},
 +{"index",     Op_builtin,      LEX_BUILTIN,   A(2),           do_index,       
0},
 +{"int",               Op_builtin,      LEX_BUILTIN,   A(1),           do_int, 
MPF(int)},
 +{"isarray",   Op_builtin,      LEX_BUILTIN,   GAWKX|A(1),     do_isarray,     
0},
 +{"length",    Op_builtin,      LEX_LENGTH,    A(0)|A(1),      do_length,      
0},
 +{"load",      Op_symbol,       LEX_LOAD,      GAWKX,          0,      0},
 +{"log",               Op_builtin,      LEX_BUILTIN,   A(1),           do_log, 
MPF(log)},
 +{"lshift",    Op_builtin,    LEX_BUILTIN,     GAWKX|A(2),     do_lshift,      
MPF(lshift)},
 +{"match",     Op_builtin,      LEX_BUILTIN,   NOT_OLD|A(2)|A(3), do_match,    
0},
 +{"mktime",    Op_builtin,      LEX_BUILTIN,   GAWKX|A(1),     do_mktime,      
0},
 +{"next",      Op_K_next,       LEX_NEXT,      0,              0,      0},
- {"nextfile",  Op_K_nextfile, LEX_NEXTFILE,    GAWKX,          0,      0},
++{"nextfile",  Op_K_nextfile, LEX_NEXTFILE,    0,              0,      0},
 +{"or",                Op_builtin,    LEX_BUILTIN,     GAWKX,          do_or,  
MPF(or)},
 +{"patsplit",  Op_builtin,    LEX_BUILTIN,     GAWKX|A(2)|A(3)|A(4), 
do_patsplit,      0},
 +{"print",     Op_K_print,      LEX_PRINT,     0,              0,      0},
 +{"printf",    Op_K_printf,     LEX_PRINTF,    0,              0,      0},
 +{"rand",      Op_builtin,      LEX_BUILTIN,   NOT_OLD|A(0),   do_rand,        
MPF(rand)},
 +{"return",    Op_K_return,     LEX_RETURN,    NOT_OLD,        0,      0},
 +{"rshift",    Op_builtin,    LEX_BUILTIN,     GAWKX|A(2),     do_rshift,      
MPF(rhift)},
 +{"sin",               Op_builtin,      LEX_BUILTIN,   NOT_OLD|A(1),   do_sin, 
MPF(sin)},
 +{"split",     Op_builtin,      LEX_BUILTIN,   A(2)|A(3)|A(4), do_split,       
0},
 +{"sprintf",   Op_builtin,      LEX_BUILTIN,   0,              do_sprintf,     
0},
 +{"sqrt",      Op_builtin,      LEX_BUILTIN,   A(1),           do_sqrt,        
MPF(sqrt)},
 +{"srand",     Op_builtin,      LEX_BUILTIN,   NOT_OLD|A(0)|A(1), do_srand,    
MPF(srand)},
  #if defined(GAWKDEBUG) || defined(ARRAYDEBUG) /* || ... */
 -{"stopme",    Op_builtin,    LEX_BUILTIN,     GAWKX|A(0),     stopme},
 +{"stopme",    Op_builtin,     LEX_BUILTIN,    GAWKX|A(0),     stopme,         
0},
  #endif
 -{"strftime",  Op_builtin,      LEX_BUILTIN,   GAWKX|A(0)|A(1)|A(2)|A(3), 
do_strftime},
 -{"strtonum",  Op_builtin,    LEX_BUILTIN,     GAWKX|A(1),     do_strtonum},
 -{"sub",               Op_sub_builtin,  LEX_BUILTIN,   NOT_OLD|A(2)|A(3), 0},
 -{"substr",    Op_builtin,      LEX_BUILTIN,   A(2)|A(3),      do_substr},
 -{"switch",    Op_K_switch,     LEX_SWITCH,    GAWKX|BREAK,    0},
 -{"system",    Op_builtin,      LEX_BUILTIN,   NOT_OLD|A(1),   do_system},
 -{"systime",   Op_builtin,      LEX_BUILTIN,   GAWKX|A(0),     do_systime},
 -{"tolower",   Op_builtin,      LEX_BUILTIN,   NOT_OLD|A(1),   do_tolower},
 -{"toupper",   Op_builtin,      LEX_BUILTIN,   NOT_OLD|A(1),   do_toupper},
 -{"while",     Op_K_while,      LEX_WHILE,     BREAK|CONTINUE, 0},
 -{"xor",               Op_builtin,    LEX_BUILTIN,     GAWKX|A(2),     do_xor},
 +{"strftime",  Op_builtin,      LEX_BUILTIN,   GAWKX|A(0)|A(1)|A(2)|A(3), 
do_strftime, 0},
 +{"strtonum",  Op_builtin,    LEX_BUILTIN,     GAWKX|A(1),     do_strtonum, 
MPF(strtonum)},
 +{"sub",               Op_sub_builtin,  LEX_BUILTIN,   NOT_OLD|A(2)|A(3), 0,   
0},
 +{"substr",    Op_builtin,      LEX_BUILTIN,   A(2)|A(3),      do_substr,      
0},
 +{"switch",    Op_K_switch,     LEX_SWITCH,    GAWKX|BREAK,    0,      0},
 +{"system",    Op_builtin,      LEX_BUILTIN,   NOT_OLD|A(1),   do_system,      
0},
 +{"systime",   Op_builtin,      LEX_BUILTIN,   GAWKX|A(0),     do_systime,     
0},
 +{"tolower",   Op_builtin,      LEX_BUILTIN,   NOT_OLD|A(1),   do_tolower,     
0},
 +{"toupper",   Op_builtin,      LEX_BUILTIN,   NOT_OLD|A(1),   do_toupper,     
0},
 +{"while",     Op_K_while,      LEX_WHILE,     BREAK|CONTINUE, 0,      0},
 +{"xor",               Op_builtin,    LEX_BUILTIN,     GAWKX,          do_xor, 
MPF(xor)},
  };
  
  #if MBS_SUPPORT
diff --cc awkgram.y
index 1d7bf81,a3ee278..f5294e4
--- a/awkgram.y
+++ b/awkgram.y
@@@ -975,19 -980,20 +971,20 @@@ regular_print
                char *arr = $2->lextok;
  
                $2->opcode = Op_push_array;
 -              $2->memory = variable(arr, Node_var_new);
 +              $2->memory = variable($2->source_line, arr, Node_var_new);
  
                if ($4 == NULL) {
-                       static bool warned = false;
- 
-                       if (do_lint && ! warned) {
-                               warned = true;
-                               lintwarn_ln($1->source_line,
-                                       _("`delete array' is a gawk 
extension"));
-                       }
-                       if (do_traditional)
-                               error_ln($1->source_line,
-                                       _("`delete array' is a gawk 
extension"));
+                       /*
+                        * As of September 2012, POSIX has added support
+                        * for `delete array'. See:
+                        * http://austingroupbugs.net/view.php?id=544
+                        *
+                        * Thanks to Nathan Weeks for the initiative.
+                        *
+                        * Thus we no longer warn or check do_posix.
+                        * Also, since BWK awk supports it, we don't have to
+                        * check do_traditional either.
+                        */
                        $1->expr_count = 0;
                        $$ = list_append(list_create($2), $1);
                } else {
@@@ -1011,9 -1017,9 +1008,9 @@@
                }
                if (do_traditional) {
                        error_ln($1->source_line,
-                               _("`delete array' is a gawk extension"));
+                               _("`delete(array)' is a non-portable tawk 
extension"));
                }
 -              $3->memory = variable(arr, Node_var_new);
 +              $3->memory = variable($3->source_line, arr, Node_var_new);
                $3->opcode = Op_push_array;
                $1->expr_count = 0;
                $$ = list_append(list_create($3), $1);
@@@ -1808,87 -1814,81 +1805,87 @@@ tokcompare(const void *l, const void *r
   * Function pointers come from declarations in awk.h.
   */
  
 +#ifdef HAVE_MPFR
 +#define MPF(F) do_mpfr_##F
 +#else
 +#define MPF(F) 0
 +#endif
 +
  static const struct token tokentab[] = {
 -{"BEGIN",     Op_rule,         LEX_BEGIN,     0,              0},
 -{"BEGINFILE", Op_rule,         LEX_BEGINFILE, GAWKX,          0},
 -{"END",               Op_rule,         LEX_END,       0,              0},
 -{"ENDFILE",           Op_rule,         LEX_ENDFILE,   GAWKX,          0},
 +{"BEGIN",     Op_rule,         LEX_BEGIN,     0,              0,      0},
 +{"BEGINFILE", Op_rule,         LEX_BEGINFILE, GAWKX,          0,      0},
 +{"END",               Op_rule,         LEX_END,       0,              0,      
0},
 +{"ENDFILE",           Op_rule,         LEX_ENDFILE,   GAWKX,          0,      
0},
  #ifdef ARRAYDEBUG
 -{"adump",     Op_builtin,    LEX_BUILTIN,     GAWKX|A(1),     do_adump},
 +{"adump",     Op_builtin,    LEX_BUILTIN,     GAWKX|A(1)|A(2),        
do_adump,       0},
  #endif
 -{"and",               Op_builtin,    LEX_BUILTIN,     GAWKX|A(2),     do_and},
 -{"asort",     Op_builtin,      LEX_BUILTIN,   GAWKX|A(1)|A(2)|A(3),   
do_asort},
 -{"asorti",    Op_builtin,      LEX_BUILTIN,   GAWKX|A(1)|A(2)|A(3),   
do_asorti},
 -{"atan2",     Op_builtin,      LEX_BUILTIN,   NOT_OLD|A(2),   do_atan2},
 -{"bindtextdomain",    Op_builtin,      LEX_BUILTIN,   GAWKX|A(1)|A(2),        
do_bindtextdomain},
 -{"break",     Op_K_break,      LEX_BREAK,     0,              0},
 -{"case",      Op_K_case,       LEX_CASE,      GAWKX,          0},
 -{"close",     Op_builtin,      LEX_BUILTIN,   NOT_OLD|A(1)|A(2),      
do_close},
 -{"compl",     Op_builtin,    LEX_BUILTIN,     GAWKX|A(1),     do_compl},
 -{"continue",  Op_K_continue, LEX_CONTINUE,    0,              0},
 -{"cos",               Op_builtin,      LEX_BUILTIN,   NOT_OLD|A(1),   do_cos},
 -{"dcgettext", Op_builtin,      LEX_BUILTIN,   GAWKX|A(1)|A(2)|A(3),   
do_dcgettext},
 -{"dcngettext",        Op_builtin,      LEX_BUILTIN,   
GAWKX|A(1)|A(2)|A(3)|A(4)|A(5), do_dcngettext},
 -{"default",   Op_K_default,    LEX_DEFAULT,   GAWKX,          0},
 -{"delete",    Op_K_delete,     LEX_DELETE,    NOT_OLD,        0},
 -{"do",                Op_K_do,         LEX_DO,        NOT_OLD|BREAK|CONTINUE, 
0},
 -{"else",      Op_K_else,       LEX_ELSE,      0,              0},
 -{"eval",      Op_symbol,       LEX_EVAL,      0,              0},
 -{"exit",      Op_K_exit,       LEX_EXIT,      0,              0},
 -{"exp",               Op_builtin,      LEX_BUILTIN,   A(1),           do_exp},
 -{"extension", Op_builtin,      LEX_BUILTIN,   GAWKX|A(2),     do_ext},
 -{"fflush",    Op_builtin,      LEX_BUILTIN,   RESX|A(0)|A(1), do_fflush},
 -{"for",               Op_K_for,        LEX_FOR,       BREAK|CONTINUE, 0},
 -{"func",      Op_func, LEX_FUNCTION,  NOT_POSIX|NOT_OLD,      0},
 -{"function",Op_func, LEX_FUNCTION,    NOT_OLD,        0},
 -{"gensub",    Op_sub_builtin,  LEX_BUILTIN,   GAWKX|A(3)|A(4), 0},
 -{"getline",   Op_K_getline_redir,      LEX_GETLINE,   NOT_OLD,        0},
 -{"gsub",      Op_sub_builtin,  LEX_BUILTIN,   NOT_OLD|A(2)|A(3), 0},
 -{"if",                Op_K_if,         LEX_IF,        0,              0},
 -{"in",                Op_symbol,       LEX_IN,        0,              0},
 -{"include",  Op_symbol,        LEX_INCLUDE,   GAWKX,  0},
 -{"index",     Op_builtin,      LEX_BUILTIN,   A(2),           do_index},
 -{"int",               Op_builtin,      LEX_BUILTIN,   A(1),           do_int},
 -{"isarray",   Op_builtin,      LEX_BUILTIN,   GAWKX|A(1),     do_isarray},
 -{"length",    Op_builtin,      LEX_LENGTH,    A(0)|A(1),      do_length},
 -{"log",               Op_builtin,      LEX_BUILTIN,   A(1),           do_log},
 -{"lshift",    Op_builtin,    LEX_BUILTIN,     GAWKX|A(2),     do_lshift},
 -{"match",     Op_builtin,      LEX_BUILTIN,   NOT_OLD|A(2)|A(3), do_match},
 -{"mktime",    Op_builtin,      LEX_BUILTIN,   GAWKX|A(1),     do_mktime},
 -{"next",      Op_K_next,       LEX_NEXT,      0,              0},
 -{"nextfile",  Op_K_nextfile, LEX_NEXTFILE,    0,              0},
 -{"or",                Op_builtin,    LEX_BUILTIN,     GAWKX|A(2),     do_or},
 -{"patsplit",  Op_builtin,    LEX_BUILTIN,     GAWKX|A(2)|A(3)|A(4), 
do_patsplit},
 -{"print",     Op_K_print,      LEX_PRINT,     0,              0},
 -{"printf",    Op_K_printf,     LEX_PRINTF,    0,              0},
 -{"rand",      Op_builtin,      LEX_BUILTIN,   NOT_OLD|A(0),   do_rand},
 -{"return",    Op_K_return,     LEX_RETURN,    NOT_OLD,        0},
 -{"rshift",    Op_builtin,    LEX_BUILTIN,     GAWKX|A(2),     do_rshift},
 -{"sin",               Op_builtin,      LEX_BUILTIN,   NOT_OLD|A(1),   do_sin},
 -{"split",     Op_builtin,      LEX_BUILTIN,   A(2)|A(3)|A(4), do_split},
 -{"sprintf",   Op_builtin,      LEX_BUILTIN,   0,              do_sprintf},
 -{"sqrt",      Op_builtin,      LEX_BUILTIN,   A(1),           do_sqrt},
 -{"srand",     Op_builtin,      LEX_BUILTIN,   NOT_OLD|A(0)|A(1), do_srand},
 +{"and",               Op_builtin,    LEX_BUILTIN,     GAWKX,          do_and, 
MPF(and)},
 +{"asort",     Op_builtin,      LEX_BUILTIN,   GAWKX|A(1)|A(2)|A(3),   
do_asort,       0},
 +{"asorti",    Op_builtin,      LEX_BUILTIN,   GAWKX|A(1)|A(2)|A(3),   
do_asorti,      0},
 +{"atan2",     Op_builtin,      LEX_BUILTIN,   NOT_OLD|A(2),   do_atan2,       
MPF(atan2)},
 +{"bindtextdomain",    Op_builtin,      LEX_BUILTIN,   GAWKX|A(1)|A(2),        
do_bindtextdomain,      0},
 +{"break",     Op_K_break,      LEX_BREAK,     0,              0,      0},
 +{"case",      Op_K_case,       LEX_CASE,      GAWKX,          0,      0},
 +{"close",     Op_builtin,      LEX_BUILTIN,   NOT_OLD|A(1)|A(2),      
do_close,       0},
 +{"compl",     Op_builtin,    LEX_BUILTIN,     GAWKX|A(1),     do_compl,       
MPF(compl)},
 +{"continue",  Op_K_continue, LEX_CONTINUE,    0,              0,      0},
 +{"cos",               Op_builtin,      LEX_BUILTIN,   NOT_OLD|A(1),   do_cos, 
MPF(cos)},
 +{"dcgettext", Op_builtin,      LEX_BUILTIN,   GAWKX|A(1)|A(2)|A(3),   
do_dcgettext,   0},
 +{"dcngettext",        Op_builtin,      LEX_BUILTIN,   
GAWKX|A(1)|A(2)|A(3)|A(4)|A(5), do_dcngettext,  0},
 +{"default",   Op_K_default,    LEX_DEFAULT,   GAWKX,          0,      0},
 +{"delete",    Op_K_delete,     LEX_DELETE,    NOT_OLD,        0,      0},
 +{"do",                Op_K_do,         LEX_DO,        NOT_OLD|BREAK|CONTINUE, 
0,      0},
 +{"else",      Op_K_else,       LEX_ELSE,      0,              0,      0},
 +{"eval",      Op_symbol,       LEX_EVAL,      0,              0,      0},
 +{"exit",      Op_K_exit,       LEX_EXIT,      0,              0,      0},
 +{"exp",               Op_builtin,      LEX_BUILTIN,   A(1),           do_exp, 
MPF(exp)},
 +{"fflush",    Op_builtin,      LEX_BUILTIN,   RESX|A(0)|A(1), do_fflush,      
0},
 +{"for",               Op_K_for,        LEX_FOR,       BREAK|CONTINUE, 0,      
0},
 +{"func",      Op_func, LEX_FUNCTION,  NOT_POSIX|NOT_OLD,      0,      0},
 +{"function",Op_func, LEX_FUNCTION,    NOT_OLD,        0,      0},
 +{"gensub",    Op_sub_builtin,  LEX_BUILTIN,   GAWKX|A(3)|A(4), 0,     0},
 +{"getline",   Op_K_getline_redir,      LEX_GETLINE,   NOT_OLD,        0,      
0},
 +{"gsub",      Op_sub_builtin,  LEX_BUILTIN,   NOT_OLD|A(2)|A(3), 0,   0},
 +{"if",                Op_K_if,         LEX_IF,        0,              0,      
0},
 +{"in",                Op_symbol,       LEX_IN,        0,              0,      
0},
 +{"include",  Op_symbol,        LEX_INCLUDE,   GAWKX,  0,      0},
 +{"index",     Op_builtin,      LEX_BUILTIN,   A(2),           do_index,       
0},
 +{"int",               Op_builtin,      LEX_BUILTIN,   A(1),           do_int, 
MPF(int)},
 +{"isarray",   Op_builtin,      LEX_BUILTIN,   GAWKX|A(1),     do_isarray,     
0},
 +{"length",    Op_builtin,      LEX_LENGTH,    A(0)|A(1),      do_length,      
0},
 +{"load",      Op_symbol,       LEX_LOAD,      GAWKX,          0,      0},
 +{"log",               Op_builtin,      LEX_BUILTIN,   A(1),           do_log, 
MPF(log)},
 +{"lshift",    Op_builtin,    LEX_BUILTIN,     GAWKX|A(2),     do_lshift,      
MPF(lshift)},
 +{"match",     Op_builtin,      LEX_BUILTIN,   NOT_OLD|A(2)|A(3), do_match,    
0},
 +{"mktime",    Op_builtin,      LEX_BUILTIN,   GAWKX|A(1),     do_mktime,      
0},
 +{"next",      Op_K_next,       LEX_NEXT,      0,              0,      0},
- {"nextfile",  Op_K_nextfile, LEX_NEXTFILE,    GAWKX,          0,      0},
++{"nextfile",  Op_K_nextfile, LEX_NEXTFILE,    0,              0,      0},
 +{"or",                Op_builtin,    LEX_BUILTIN,     GAWKX,          do_or,  
MPF(or)},
 +{"patsplit",  Op_builtin,    LEX_BUILTIN,     GAWKX|A(2)|A(3)|A(4), 
do_patsplit,      0},
 +{"print",     Op_K_print,      LEX_PRINT,     0,              0,      0},
 +{"printf",    Op_K_printf,     LEX_PRINTF,    0,              0,      0},
 +{"rand",      Op_builtin,      LEX_BUILTIN,   NOT_OLD|A(0),   do_rand,        
MPF(rand)},
 +{"return",    Op_K_return,     LEX_RETURN,    NOT_OLD,        0,      0},
 +{"rshift",    Op_builtin,    LEX_BUILTIN,     GAWKX|A(2),     do_rshift,      
MPF(rhift)},
 +{"sin",               Op_builtin,      LEX_BUILTIN,   NOT_OLD|A(1),   do_sin, 
MPF(sin)},
 +{"split",     Op_builtin,      LEX_BUILTIN,   A(2)|A(3)|A(4), do_split,       
0},
 +{"sprintf",   Op_builtin,      LEX_BUILTIN,   0,              do_sprintf,     
0},
 +{"sqrt",      Op_builtin,      LEX_BUILTIN,   A(1),           do_sqrt,        
MPF(sqrt)},
 +{"srand",     Op_builtin,      LEX_BUILTIN,   NOT_OLD|A(0)|A(1), do_srand,    
MPF(srand)},
  #if defined(GAWKDEBUG) || defined(ARRAYDEBUG) /* || ... */
 -{"stopme",    Op_builtin,    LEX_BUILTIN,     GAWKX|A(0),     stopme},
 +{"stopme",    Op_builtin,     LEX_BUILTIN,    GAWKX|A(0),     stopme,         
0},
  #endif
 -{"strftime",  Op_builtin,      LEX_BUILTIN,   GAWKX|A(0)|A(1)|A(2)|A(3), 
do_strftime},
 -{"strtonum",  Op_builtin,    LEX_BUILTIN,     GAWKX|A(1),     do_strtonum},
 -{"sub",               Op_sub_builtin,  LEX_BUILTIN,   NOT_OLD|A(2)|A(3), 0},
 -{"substr",    Op_builtin,      LEX_BUILTIN,   A(2)|A(3),      do_substr},
 -{"switch",    Op_K_switch,     LEX_SWITCH,    GAWKX|BREAK,    0},
 -{"system",    Op_builtin,      LEX_BUILTIN,   NOT_OLD|A(1),   do_system},
 -{"systime",   Op_builtin,      LEX_BUILTIN,   GAWKX|A(0),     do_systime},
 -{"tolower",   Op_builtin,      LEX_BUILTIN,   NOT_OLD|A(1),   do_tolower},
 -{"toupper",   Op_builtin,      LEX_BUILTIN,   NOT_OLD|A(1),   do_toupper},
 -{"while",     Op_K_while,      LEX_WHILE,     BREAK|CONTINUE, 0},
 -{"xor",               Op_builtin,    LEX_BUILTIN,     GAWKX|A(2),     do_xor},
 +{"strftime",  Op_builtin,      LEX_BUILTIN,   GAWKX|A(0)|A(1)|A(2)|A(3), 
do_strftime, 0},
 +{"strtonum",  Op_builtin,    LEX_BUILTIN,     GAWKX|A(1),     do_strtonum, 
MPF(strtonum)},
 +{"sub",               Op_sub_builtin,  LEX_BUILTIN,   NOT_OLD|A(2)|A(3), 0,   
0},
 +{"substr",    Op_builtin,      LEX_BUILTIN,   A(2)|A(3),      do_substr,      
0},
 +{"switch",    Op_K_switch,     LEX_SWITCH,    GAWKX|BREAK,    0,      0},
 +{"system",    Op_builtin,      LEX_BUILTIN,   NOT_OLD|A(1),   do_system,      
0},
 +{"systime",   Op_builtin,      LEX_BUILTIN,   GAWKX|A(0),     do_systime,     
0},
 +{"tolower",   Op_builtin,      LEX_BUILTIN,   NOT_OLD|A(1),   do_tolower,     
0},
 +{"toupper",   Op_builtin,      LEX_BUILTIN,   NOT_OLD|A(1),   do_toupper,     
0},
 +{"while",     Op_K_while,      LEX_WHILE,     BREAK|CONTINUE, 0,      0},
 +{"xor",               Op_builtin,    LEX_BUILTIN,     GAWKX,          do_xor, 
MPF(xor)},
  };
  
  #if MBS_SUPPORT
diff --cc doc/ChangeLog
index 7582e09,30bae7e..f84622d
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@@ -1,92 -1,10 +1,99 @@@
+ 2012-09-23         Arnold D. Robbins     <address@hidden>
+ 
+       * gawk.texi (Nextfile Statement): Document that it's now part of POSIX
+       and update the title.
+       (Delete): Document that `delete array' is now part of POSIX.
+       * awkcard.in: Adjust coloring for nextfile and delete array.
+ 
 +2012-09-07         Arnold D. Robbins     <address@hidden>
 +
 +      * texinfo.tex: Updated to version 2012-09-05.06.
 +
 +2012-08-27         Arnold D. Robbins     <address@hidden>
 +
 +      * gawk.texi: Minor edits, fix some spelling mistakes.
 +
 +2012-08-26         Arnold D. Robbins     <address@hidden>
 +
 +      * gawk.texi: More edits to chapter on arithmetic.
 +      Primarily English changes.
 +
 +2012-08-24         Arnold D. Robbins     <address@hidden>
 +
 +      * gawk.texi: Emphasize more that floating point behavior is
 +      not a language issue. Add a pointer to POSIX bc.
 +      Move arithmetic chapter to later in the book, before chapter
 +      on dynamic extensions.
 +
 +2012-08-17         Arnold D. Robbins     <address@hidden>
 +
 +      * texinfo.tex: Update infrastructure to Automake 1.12.3.
 +
 +2012-08-14         Arnold D. Robbins     <address@hidden>
 +
 +      * gawk.texi: Fixed a math bug in the chapter on multiple
 +      precision floating point. Thanks to John Haque.
 +
 +2012-08-12         Arnold D. Robbins     <address@hidden>
 +
 +      * gawk.texi: Merged discussion of numbers from Appendix C into
 +      the chapter on arbitrary precision arithmetic. Did some surgery
 +      on that chapter to organize it a little better.
 +
 +2012-08-10         Arnold D. Robbins     <address@hidden>
 +
 +      * awkcard.in, gawk.1, gawk.texi: Updated. Mostly for new API stuff
 +      but also some other things.
 +      * gawk.texi (Derived Files): New node.
 +
 +2012-08-01         Arnold D. Robbins     <address@hidden>
 +
 +      * Makefile.am (install-data-hook): Install a dgawk.1 link to the
 +      man page also. Remove it on uninstall.
 +
 +2012-07-29         Andrew J. Schorr     <address@hidden>
 +
 +      * gawk.texi: Document that RT is set by getline.
 +
 +2012-07-04         Arnold D. Robbins     <address@hidden>
 +
 +      * gawk.texi, gawk.1, awkcard.in: Document that and(), or(), and
 +      xor() can all take any number of arguments, with a minimum of two.
 +
 +2012-06-10         Andrew J. Schorr     <address@hidden>
 +
 +      * gawk.texi: Rename gettimeofday function to getlocaltime, since
 +      the new time extension will provide gettimeofday.
 +
 +2012-05-24         Andrew J. Schorr     <address@hidden>
 +
 +      * gawk.texi, gawk.1: Replace references to dlload with dl_load.
 +      But much more work needs to be done on the docs.
 +      
 +2012-05-19         Andrew J. Schorr     <address@hidden>
 +
 +      * gawk.texi, gawk.1: Document new -i option, and describe new default
 +      .awk suffix behavior.
 +
 +2012-04-01         Andrew J. Schorr     <address@hidden>
 +
 +      * gawk.texi: Replace documentation of removed functions update_ERRNO and
 +      update_ERRNO_saved with descriptions new functions update_ERRNO_int,
 +      update_ERRNO_string and unset_ERRNO.  And fix a couple of examples
 +      to use update_ERRNO_int instead of update_ERRNO.
 +
 +2012-03-26         Arnold D. Robbins     <address@hidden>
 +
 +      * gawk.texi: Minor style edits.
 +
 +2012-03-21         Andrew J. Schorr     <address@hidden>
 +
 +      * gawk.texi, gawk.1: Document new @load keyword.
 +
 +2012-03-20         Andrew J. Schorr     <address@hidden>
 +
 +      * gawk.texi, gawk.1: Add AWKLIBPATH.
 +
  2012-08-12         Arnold D. Robbins     <address@hidden>
  
        * gawk.texi (Ranges and Locales): Clarified ranges and
diff --cc doc/gawk.info
index 7f67d45,30ff2c2..2d75333
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@@ -27028,15 -26044,14 +27035,15 @@@ Inde
                                                                (line  71)
  * functions, user-defined:               User-defined.        (line   6)
  * functions, user-defined, calling:      Calling A Function.  (line   6)
 -* functions, user-defined, counts:       Profiling.           (line 132)
 +* functions, user-defined, counts:       Profiling.           (line 129)
  * functions, user-defined, library of:   Library Functions.   (line   6)
  * functions, user-defined, next/nextfile statements and <1>: Nextfile 
Statement.
-                                                               (line  44)
+                                                               (line  47)
  * functions, user-defined, next/nextfile statements and: Next Statement.
                                                                (line  45)
 -* G-d:                                   Acknowledgments.     (line  81)
 +* G-d:                                   Acknowledgments.     (line  83)
  * Garfinkle, Scott:                      Contributors.        (line  35)
 +* gawk program, dynamic profiling:       Profiling.           (line 171)
  * gawk, ARGIND variable in:              Other Arguments.     (line  12)
  * gawk, awk and <1>:                     This Manual.         (line  14)
  * gawk, awk and:                         Preface.             (line  23)
@@@ -27515,20 -26561,22 +27522,20 @@@
  * nextfile statement, BEGINFILE/ENDFILE patterns and: BEGINFILE/ENDFILE.
                                                                (line  26)
  * nextfile statement, user-defined functions and: Nextfile Statement.
-                                                               (line  44)
+                                                               (line  47)
 -* nexti debugger command:                Dgawk Execution Control.
 +* nexti debugger command:                Debugger Execution Control.
                                                                (line  49)
 -* NF variable <1>:                       Auto-set.            (line 107)
 +* NF variable <1>:                       Auto-set.            (line 108)
  * NF variable:                           Fields.              (line  33)
  * NF variable, decrementing:             Changing Fields.     (line 107)
 -* ni debugger command (alias for nexti): Dgawk Execution Control.
 +* ni debugger command (alias for nexti): Debugger Execution Control.
                                                                (line  49)
  * noassign.awk program:                  Ignoring Assigns.    (line  15)
 -* NODE internal type:                    Internals.           (line  23)
 -* nodes, duplicating:                    Internals.           (line  96)
  * not Boolean-logic operator:            Boolean Ops.         (line   6)
 -* NR variable <1>:                       Auto-set.            (line 118)
 +* NR variable <1>:                       Auto-set.            (line 119)
  * NR variable:                           Records.             (line   6)
 -* NR variable, changing:                 Auto-set.            (line 207)
 -* null strings <1>:                      Basic Data Typing.   (line  50)
 +* NR variable, changing:                 Auto-set.            (line 225)
 +* null strings <1>:                      Basic Data Typing.   (line  26)
  * null strings <2>:                      Truth Values.        (line   6)
  * null strings <3>:                      Regexp Field Splitting.
                                                                (line  43)
@@@ -28421,449 -27485,418 +28428,449 @@@
  
  Tag Table:
  Node: Top1352
 -Node: Foreword30282
 -Node: Preface34627
 -Ref: Preface-Footnote-137680
 -Ref: Preface-Footnote-237786
 -Node: History38018
 -Node: Names40409
 -Ref: Names-Footnote-141886
 -Node: This Manual41958
 -Ref: This Manual-Footnote-146905
 -Node: Conventions47005
 -Node: Manual History49139
 -Ref: Manual History-Footnote-152409
 -Ref: Manual History-Footnote-252450
 -Node: How To Contribute52524
 -Node: Acknowledgments53668
 -Node: Getting Started57999
 -Node: Running gawk60378
 -Node: One-shot61564
 -Node: Read Terminal62789
 -Ref: Read Terminal-Footnote-164439
 -Ref: Read Terminal-Footnote-264715
 -Node: Long64886
 -Node: Executable Scripts66262
 -Ref: Executable Scripts-Footnote-168131
 -Ref: Executable Scripts-Footnote-268233
 -Node: Comments68780
 -Node: Quoting71247
 -Node: DOS Quoting75870
 -Node: Sample Data Files76545
 -Node: Very Simple79577
 -Node: Two Rules84176
 -Node: More Complex86323
 -Ref: More Complex-Footnote-189253
 -Node: Statements/Lines89338
 -Ref: Statements/Lines-Footnote-193800
 -Node: Other Features94065
 -Node: When94993
 -Node: Invoking Gawk97140
 -Node: Command Line98525
 -Node: Options99308
 -Ref: Options-Footnote-1112852
 -Node: Other Arguments112877
 -Node: Naming Standard Input115535
 -Node: Environment Variables116629
 -Node: AWKPATH Variable117073
 -Ref: AWKPATH Variable-Footnote-1119670
 -Node: Other Environment Variables119930
 -Node: Exit Status122270
 -Node: Include Files122945
 -Node: Obsolete126430
 -Node: Undocumented127116
 -Node: Regexp127357
 -Node: Regexp Usage128746
 -Node: Escape Sequences130772
 -Node: Regexp Operators136535
 -Ref: Regexp Operators-Footnote-1143915
 -Ref: Regexp Operators-Footnote-2144062
 -Node: Bracket Expressions144160
 -Ref: table-char-classes146050
 -Node: GNU Regexp Operators148573
 -Node: Case-sensitivity152296
 -Ref: Case-sensitivity-Footnote-1155264
 -Ref: Case-sensitivity-Footnote-2155499
 -Node: Leftmost Longest155607
 -Node: Computed Regexps156808
 -Node: Reading Files160218
 -Node: Records162159
 -Ref: Records-Footnote-1171083
 -Node: Fields171120
 -Ref: Fields-Footnote-1174153
 -Node: Nonconstant Fields174239
 -Node: Changing Fields176441
 -Node: Field Separators182422
 -Node: Default Field Splitting185051
 -Node: Regexp Field Splitting186168
 -Node: Single Character Fields189510
 -Node: Command Line Field Separator190569
 -Node: Field Splitting Summary194010
 -Ref: Field Splitting Summary-Footnote-1197202
 -Node: Constant Size197303
 -Node: Splitting By Content201887
 -Ref: Splitting By Content-Footnote-1205613
 -Node: Multiple Line205653
 -Ref: Multiple Line-Footnote-1211500
 -Node: Getline211679
 -Node: Plain Getline213907
 -Node: Getline/Variable215996
 -Node: Getline/File217137
 -Node: Getline/Variable/File218459
 -Ref: Getline/Variable/File-Footnote-1220058
 -Node: Getline/Pipe220145
 -Node: Getline/Variable/Pipe222705
 -Node: Getline/Coprocess223812
 -Node: Getline/Variable/Coprocess225055
 -Node: Getline Notes225769
 -Node: Getline Summary228556
 -Ref: table-getline-variants228899
 -Node: Command line directories229755
 -Node: Printing230380
 -Node: Print232011
 -Node: Print Examples233348
 -Node: Output Separators236132
 -Node: OFMT237892
 -Node: Printf239250
 -Node: Basic Printf240156
 -Node: Control Letters241695
 -Node: Format Modifiers245507
 -Node: Printf Examples251516
 -Node: Redirection254231
 -Node: Special Files261215
 -Node: Special FD261748
 -Ref: Special FD-Footnote-1265373
 -Node: Special Network265447
 -Node: Special Caveats266297
 -Node: Close Files And Pipes267093
 -Ref: Close Files And Pipes-Footnote-1274116
 -Ref: Close Files And Pipes-Footnote-2274264
 -Node: Expressions274414
 -Node: Values275546
 -Node: Constants276222
 -Node: Scalar Constants276902
 -Ref: Scalar Constants-Footnote-1277761
 -Node: Nondecimal-numbers277943
 -Node: Regexp Constants281002
 -Node: Using Constant Regexps281477
 -Node: Variables284532
 -Node: Using Variables285187
 -Node: Assignment Options286911
 -Node: Conversion288783
 -Ref: table-locale-affects294159
 -Ref: Conversion-Footnote-1294783
 -Node: All Operators294892
 -Node: Arithmetic Ops295522
 -Node: Concatenation298027
 -Ref: Concatenation-Footnote-1300820
 -Node: Assignment Ops300940
 -Ref: table-assign-ops305928
 -Node: Increment Ops307336
 -Node: Truth Values and Conditions310806
 -Node: Truth Values311889
 -Node: Typing and Comparison312938
 -Node: Variable Typing313727
 -Ref: Variable Typing-Footnote-1317624
 -Node: Comparison Operators317746
 -Ref: table-relational-ops318156
 -Node: POSIX String Comparison321705
 -Ref: POSIX String Comparison-Footnote-1322661
 -Node: Boolean Ops322799
 -Ref: Boolean Ops-Footnote-1326877
 -Node: Conditional Exp326968
 -Node: Function Calls328700
 -Node: Precedence332294
 -Node: Locales335963
 -Node: Patterns and Actions337052
 -Node: Pattern Overview338106
 -Node: Regexp Patterns339775
 -Node: Expression Patterns340318
 -Node: Ranges344003
 -Node: BEGIN/END346969
 -Node: Using BEGIN/END347731
 -Ref: Using BEGIN/END-Footnote-1350462
 -Node: I/O And BEGIN/END350568
 -Node: BEGINFILE/ENDFILE352850
 -Node: Empty355743
 -Node: Using Shell Variables356059
 -Node: Action Overview358344
 -Node: Statements360701
 -Node: If Statement362555
 -Node: While Statement364054
 -Node: Do Statement366098
 -Node: For Statement367254
 -Node: Switch Statement370406
 -Node: Break Statement372503
 -Node: Continue Statement374493
 -Node: Next Statement376286
 -Node: Nextfile Statement378676
 -Node: Exit Statement381317
 -Node: Built-in Variables383733
 -Node: User-modified384828
 -Ref: User-modified-Footnote-1392854
 -Node: Auto-set392916
 -Ref: Auto-set-Footnote-1402207
 -Node: ARGC and ARGV402412
 -Node: Arrays406263
 -Node: Array Basics407768
 -Node: Array Intro408594
 -Node: Reference to Elements412912
 -Node: Assigning Elements415182
 -Node: Array Example415673
 -Node: Scanning an Array417405
 -Node: Controlling Scanning419719
 -Ref: Controlling Scanning-Footnote-1424652
 -Node: Delete424968
 -Ref: Delete-Footnote-1427733
 -Node: Numeric Array Subscripts427790
 -Node: Uninitialized Subscripts429973
 -Node: Multi-dimensional431601
 -Node: Multi-scanning434695
 -Node: Arrays of Arrays436286
 -Node: Functions440931
 -Node: Built-in441753
 -Node: Calling Built-in442831
 -Node: Numeric Functions444819
 -Ref: Numeric Functions-Footnote-1448651
 -Ref: Numeric Functions-Footnote-2449008
 -Ref: Numeric Functions-Footnote-3449056
 -Node: String Functions449325
 -Ref: String Functions-Footnote-1472822
 -Ref: String Functions-Footnote-2472951
 -Ref: String Functions-Footnote-3473199
 -Node: Gory Details473286
 -Ref: table-sub-escapes474965
 -Ref: table-sub-posix-92476319
 -Ref: table-sub-proposed477662
 -Ref: table-posix-sub479012
 -Ref: table-gensub-escapes480558
 -Ref: Gory Details-Footnote-1481765
 -Ref: Gory Details-Footnote-2481816
 -Node: I/O Functions481967
 -Ref: I/O Functions-Footnote-1488622
 -Node: Time Functions488769
 -Ref: Time Functions-Footnote-1499661
 -Ref: Time Functions-Footnote-2499729
 -Ref: Time Functions-Footnote-3499887
 -Ref: Time Functions-Footnote-4499998
 -Ref: Time Functions-Footnote-5500110
 -Ref: Time Functions-Footnote-6500337
 -Node: Bitwise Functions500603
 -Ref: table-bitwise-ops501161
 -Ref: Bitwise Functions-Footnote-1505321
 -Node: Type Functions505505
 -Node: I18N Functions505975
 -Node: User-defined507602
 -Node: Definition Syntax508406
 -Ref: Definition Syntax-Footnote-1513316
 -Node: Function Example513385
 -Node: Function Caveats515979
 -Node: Calling A Function516400
 -Node: Variable Scope517515
 -Node: Pass By Value/Reference519490
 -Node: Return Statement522930
 -Node: Dynamic Typing525911
 -Node: Indirect Calls526646
 -Node: Internationalization536331
 -Node: I18N and L10N537757
 -Node: Explaining gettext538443
 -Ref: Explaining gettext-Footnote-1543509
 -Ref: Explaining gettext-Footnote-2543693
 -Node: Programmer i18n543858
 -Node: Translator i18n548058
 -Node: String Extraction548851
 -Ref: String Extraction-Footnote-1549812
 -Node: Printf Ordering549898
 -Ref: Printf Ordering-Footnote-1552682
 -Node: I18N Portability552746
 -Ref: I18N Portability-Footnote-1555195
 -Node: I18N Example555258
 -Ref: I18N Example-Footnote-1557893
 -Node: Gawk I18N557965
 -Node: Advanced Features558582
 -Node: Nondecimal Data560095
 -Node: Array Sorting561678
 -Node: Controlling Array Traversal562375
 -Node: Array Sorting Functions570612
 -Ref: Array Sorting Functions-Footnote-1574286
 -Ref: Array Sorting Functions-Footnote-2574379
 -Node: Two-way I/O574573
 -Ref: Two-way I/O-Footnote-1580005
 -Node: TCP/IP Networking580075
 -Node: Profiling582919
 -Node: Library Functions590393
 -Ref: Library Functions-Footnote-1593400
 -Node: Library Names593571
 -Ref: Library Names-Footnote-1597042
 -Ref: Library Names-Footnote-2597262
 -Node: General Functions597348
 -Node: Strtonum Function598301
 -Node: Assert Function601231
 -Node: Round Function604557
 -Node: Cliff Random Function606100
 -Node: Ordinal Functions607116
 -Ref: Ordinal Functions-Footnote-1610186
 -Ref: Ordinal Functions-Footnote-2610438
 -Node: Join Function610647
 -Ref: Join Function-Footnote-1612418
 -Node: Gettimeofday Function612618
 -Node: Data File Management616333
 -Node: Filetrans Function616965
 -Node: Rewind Function621104
 -Node: File Checking622491
 -Node: Empty Files623585
 -Node: Ignoring Assigns625815
 -Node: Getopt Function627368
 -Ref: Getopt Function-Footnote-1638672
 -Node: Passwd Functions638875
 -Ref: Passwd Functions-Footnote-1647850
 -Node: Group Functions647938
 -Node: Walking Arrays656022
 -Node: Sample Programs657591
 -Node: Running Examples658256
 -Node: Clones658984
 -Node: Cut Program660208
 -Node: Egrep Program670053
 -Ref: Egrep Program-Footnote-1677826
 -Node: Id Program677936
 -Node: Split Program681552
 -Ref: Split Program-Footnote-1685071
 -Node: Tee Program685199
 -Node: Uniq Program688002
 -Node: Wc Program695431
 -Ref: Wc Program-Footnote-1699697
 -Ref: Wc Program-Footnote-2699897
 -Node: Miscellaneous Programs699989
 -Node: Dupword Program701177
 -Node: Alarm Program703208
 -Node: Translate Program707957
 -Ref: Translate Program-Footnote-1712344
 -Ref: Translate Program-Footnote-2712572
 -Node: Labels Program712706
 -Ref: Labels Program-Footnote-1716077
 -Node: Word Sorting716161
 -Node: History Sorting720045
 -Node: Extract Program721884
 -Ref: Extract Program-Footnote-1729367
 -Node: Simple Sed729495
 -Node: Igawk Program732557
 -Ref: Igawk Program-Footnote-1747714
 -Ref: Igawk Program-Footnote-2747915
 -Node: Anagram Program748053
 -Node: Signature Program751121
 -Node: Debugger752221
 -Node: Debugging753132
 -Node: Debugging Concepts753545
 -Node: Debugging Terms755401
 -Node: Awk Debugging758024
 -Node: Sample dgawk session758916
 -Node: dgawk invocation759408
 -Node: Finding The Bug760590
 -Node: List of Debugger Commands767076
 -Node: Breakpoint Control768387
 -Node: Dgawk Execution Control772023
 -Node: Viewing And Changing Data775374
 -Node: Dgawk Stack778711
 -Node: Dgawk Info780171
 -Node: Miscellaneous Dgawk Commands784119
 -Node: Readline Support789547
 -Node: Dgawk Limitations790385
 -Node: Language History792574
 -Node: V7/SVR3.1794086
 -Node: SVR4796407
 -Node: POSIX797849
 -Node: BTL798857
 -Node: POSIX/GNU799591
 -Node: Common Extensions804742
 -Node: Ranges and Locales805849
 -Ref: Ranges and Locales-Footnote-1810467
 -Ref: Ranges and Locales-Footnote-2810494
 -Ref: Ranges and Locales-Footnote-3810754
 -Node: Contributors810975
 -Node: Installation815237
 -Node: Gawk Distribution816131
 -Node: Getting816615
 -Node: Extracting817441
 -Node: Distribution contents819133
 -Node: Unix Installation824355
 -Node: Quick Installation824972
 -Node: Additional Configuration Options826934
 -Node: Configuration Philosophy828411
 -Node: Non-Unix Installation830753
 -Node: PC Installation831211
 -Node: PC Binary Installation832510
 -Node: PC Compiling834525
 -Node: PC Testing837469
 -Node: PC Using838645
 -Node: Cygwin842830
 -Node: MSYS843830
 -Node: VMS Installation844344
 -Node: VMS Compilation844947
 -Ref: VMS Compilation-Footnote-1845954
 -Node: VMS Installation Details846012
 -Node: VMS Running847647
 -Node: VMS Old Gawk849254
 -Node: Bugs849728
 -Node: Other Versions853580
 -Node: Notes858861
 -Node: Compatibility Mode859553
 -Node: Additions860336
 -Node: Accessing The Source861148
 -Node: Adding Code862573
 -Node: New Ports868540
 -Node: Dynamic Extensions872653
 -Node: Internals874029
 -Node: Plugin License883132
 -Node: Sample Library883766
 -Node: Internal File Description884452
 -Node: Internal File Ops888167
 -Ref: Internal File Ops-Footnote-1892948
 -Node: Using Internal File Ops893088
 -Node: Future Extensions895465
 -Node: Basic Concepts897969
 -Node: Basic High Level898726
 -Ref: Basic High Level-Footnote-1902761
 -Node: Basic Data Typing902946
 -Node: Floating Point Issues907471
 -Node: String Conversion Precision908554
 -Ref: String Conversion Precision-Footnote-1910254
 -Node: Unexpected Results910363
 -Node: POSIX Floating Point Problems912189
 -Ref: POSIX Floating Point Problems-Footnote-1915894
 -Node: Glossary915932
 -Node: Copying940908
 -Node: GNU Free Documentation License978465
 -Node: Index1003602
 +Node: Foreword31870
 +Node: Preface36215
 +Ref: Preface-Footnote-139268
 +Ref: Preface-Footnote-239374
 +Node: History39606
 +Node: Names41997
 +Ref: Names-Footnote-143474
 +Node: This Manual43546
 +Ref: This Manual-Footnote-148674
 +Node: Conventions48774
 +Node: Manual History50908
 +Ref: Manual History-Footnote-154178
 +Ref: Manual History-Footnote-254219
 +Node: How To Contribute54293
 +Node: Acknowledgments55437
 +Node: Getting Started59933
 +Node: Running gawk62312
 +Node: One-shot63498
 +Node: Read Terminal64723
 +Ref: Read Terminal-Footnote-166373
 +Ref: Read Terminal-Footnote-266649
 +Node: Long66820
 +Node: Executable Scripts68196
 +Ref: Executable Scripts-Footnote-170065
 +Ref: Executable Scripts-Footnote-270167
 +Node: Comments70714
 +Node: Quoting73181
 +Node: DOS Quoting77804
 +Node: Sample Data Files78479
 +Node: Very Simple81511
 +Node: Two Rules86110
 +Node: More Complex88257
 +Ref: More Complex-Footnote-191187
 +Node: Statements/Lines91272
 +Ref: Statements/Lines-Footnote-195734
 +Node: Other Features95999
 +Node: When96927
 +Node: Invoking Gawk99074
 +Node: Command Line100535
 +Node: Options101318
 +Ref: Options-Footnote-1116716
 +Node: Other Arguments116741
 +Node: Naming Standard Input119399
 +Node: Environment Variables120493
 +Node: AWKPATH Variable121051
 +Ref: AWKPATH Variable-Footnote-1123809
 +Node: AWKLIBPATH Variable124069
 +Node: Other Environment Variables124666
 +Node: Exit Status127161
 +Node: Include Files127836
 +Node: Loading Shared Libraries131405
 +Node: Obsolete132630
 +Node: Undocumented133327
 +Node: Regexp133570
 +Node: Regexp Usage134959
 +Node: Escape Sequences136985
 +Node: Regexp Operators142748
 +Ref: Regexp Operators-Footnote-1150128
 +Ref: Regexp Operators-Footnote-2150275
 +Node: Bracket Expressions150373
 +Ref: table-char-classes152263
 +Node: GNU Regexp Operators154786
 +Node: Case-sensitivity158509
 +Ref: Case-sensitivity-Footnote-1161477
 +Ref: Case-sensitivity-Footnote-2161712
 +Node: Leftmost Longest161820
 +Node: Computed Regexps163021
 +Node: Reading Files166431
 +Node: Records168434
 +Ref: Records-Footnote-1177358
 +Node: Fields177395
 +Ref: Fields-Footnote-1180428
 +Node: Nonconstant Fields180514
 +Node: Changing Fields182716
 +Node: Field Separators188697
 +Node: Default Field Splitting191326
 +Node: Regexp Field Splitting192443
 +Node: Single Character Fields195785
 +Node: Command Line Field Separator196844
 +Node: Field Splitting Summary200285
 +Ref: Field Splitting Summary-Footnote-1203477
 +Node: Constant Size203578
 +Node: Splitting By Content208162
 +Ref: Splitting By Content-Footnote-1211888
 +Node: Multiple Line211928
 +Ref: Multiple Line-Footnote-1217775
 +Node: Getline217954
 +Node: Plain Getline220170
 +Node: Getline/Variable222259
 +Node: Getline/File223400
 +Node: Getline/Variable/File224722
 +Ref: Getline/Variable/File-Footnote-1226321
 +Node: Getline/Pipe226408
 +Node: Getline/Variable/Pipe228968
 +Node: Getline/Coprocess230075
 +Node: Getline/Variable/Coprocess231318
 +Node: Getline Notes232032
 +Node: Getline Summary234819
 +Ref: table-getline-variants235227
 +Node: Read Timeout236083
 +Ref: Read Timeout-Footnote-1239828
 +Node: Command line directories239885
 +Node: Printing240515
 +Node: Print242146
 +Node: Print Examples243483
 +Node: Output Separators246267
 +Node: OFMT248027
 +Node: Printf249385
 +Node: Basic Printf250291
 +Node: Control Letters251830
 +Node: Format Modifiers255642
 +Node: Printf Examples261651
 +Node: Redirection264366
 +Node: Special Files271350
 +Node: Special FD271883
 +Ref: Special FD-Footnote-1275508
 +Node: Special Network275582
 +Node: Special Caveats276432
 +Node: Close Files And Pipes277228
 +Ref: Close Files And Pipes-Footnote-1284251
 +Ref: Close Files And Pipes-Footnote-2284399
 +Node: Expressions284549
 +Node: Values285681
 +Node: Constants286357
 +Node: Scalar Constants287037
 +Ref: Scalar Constants-Footnote-1287896
 +Node: Nondecimal-numbers288078
 +Node: Regexp Constants291137
 +Node: Using Constant Regexps291612
 +Node: Variables294667
 +Node: Using Variables295322
 +Node: Assignment Options297046
 +Node: Conversion298918
 +Ref: table-locale-affects304294
 +Ref: Conversion-Footnote-1304918
 +Node: All Operators305027
 +Node: Arithmetic Ops305657
 +Node: Concatenation308162
 +Ref: Concatenation-Footnote-1310955
 +Node: Assignment Ops311075
 +Ref: table-assign-ops316063
 +Node: Increment Ops317471
 +Node: Truth Values and Conditions320941
 +Node: Truth Values322024
 +Node: Typing and Comparison323073
 +Node: Variable Typing323862
 +Ref: Variable Typing-Footnote-1327759
 +Node: Comparison Operators327881
 +Ref: table-relational-ops328291
 +Node: POSIX String Comparison331840
 +Ref: POSIX String Comparison-Footnote-1332796
 +Node: Boolean Ops332934
 +Ref: Boolean Ops-Footnote-1337012
 +Node: Conditional Exp337103
 +Node: Function Calls338835
 +Node: Precedence342429
 +Node: Locales346098
 +Node: Patterns and Actions347187
 +Node: Pattern Overview348241
 +Node: Regexp Patterns349910
 +Node: Expression Patterns350453
 +Node: Ranges354138
 +Node: BEGIN/END357104
 +Node: Using BEGIN/END357866
 +Ref: Using BEGIN/END-Footnote-1360597
 +Node: I/O And BEGIN/END360703
 +Node: BEGINFILE/ENDFILE362985
 +Node: Empty365889
 +Node: Using Shell Variables366205
 +Node: Action Overview368490
 +Node: Statements370847
 +Node: If Statement372701
 +Node: While Statement374200
 +Node: Do Statement376244
 +Node: For Statement377400
 +Node: Switch Statement380552
 +Node: Break Statement382649
 +Node: Continue Statement384639
 +Node: Next Statement386432
 +Node: Nextfile Statement388822
- Node: Exit Statement391367
- Node: Built-in Variables393783
- Node: User-modified394878
- Ref: User-modified-Footnote-1403233
- Node: Auto-set403295
- Ref: Auto-set-Footnote-1413203
- Node: ARGC and ARGV413408
- Node: Arrays417259
- Node: Array Basics418764
- Node: Array Intro419590
- Node: Reference to Elements423908
- Node: Assigning Elements426178
- Node: Array Example426669
- Node: Scanning an Array428401
- Node: Controlling Scanning430715
- Ref: Controlling Scanning-Footnote-1435648
- Node: Delete435964
- Ref: Delete-Footnote-1438399
- Node: Numeric Array Subscripts438456
- Node: Uninitialized Subscripts440639
- Node: Multi-dimensional442267
- Node: Multi-scanning445361
- Node: Arrays of Arrays446952
- Node: Functions451597
- Node: Built-in452419
- Node: Calling Built-in453497
- Node: Numeric Functions455485
- Ref: Numeric Functions-Footnote-1459317
- Ref: Numeric Functions-Footnote-2459674
- Ref: Numeric Functions-Footnote-3459722
- Node: String Functions459991
- Ref: String Functions-Footnote-1483488
- Ref: String Functions-Footnote-2483617
- Ref: String Functions-Footnote-3483865
- Node: Gory Details483952
- Ref: table-sub-escapes485631
- Ref: table-sub-posix-92486985
- Ref: table-sub-proposed488328
- Ref: table-posix-sub489678
- Ref: table-gensub-escapes491224
- Ref: Gory Details-Footnote-1492431
- Ref: Gory Details-Footnote-2492482
- Node: I/O Functions492633
- Ref: I/O Functions-Footnote-1499288
- Node: Time Functions499435
- Ref: Time Functions-Footnote-1510327
- Ref: Time Functions-Footnote-2510395
- Ref: Time Functions-Footnote-3510553
- Ref: Time Functions-Footnote-4510664
- Ref: Time Functions-Footnote-5510776
- Ref: Time Functions-Footnote-6511003
- Node: Bitwise Functions511269
- Ref: table-bitwise-ops511827
- Ref: Bitwise Functions-Footnote-1516048
- Node: Type Functions516232
- Node: I18N Functions516702
- Node: User-defined518329
- Node: Definition Syntax519133
- Ref: Definition Syntax-Footnote-1524043
- Node: Function Example524112
- Node: Function Caveats526706
- Node: Calling A Function527127
- Node: Variable Scope528242
- Node: Pass By Value/Reference530217
- Node: Return Statement533657
- Node: Dynamic Typing536638
- Node: Indirect Calls537373
- Node: Internationalization547058
- Node: I18N and L10N548484
- Node: Explaining gettext549170
- Ref: Explaining gettext-Footnote-1554236
- Ref: Explaining gettext-Footnote-2554420
- Node: Programmer i18n554585
- Node: Translator i18n558785
- Node: String Extraction559578
- Ref: String Extraction-Footnote-1560539
- Node: Printf Ordering560625
- Ref: Printf Ordering-Footnote-1563409
- Node: I18N Portability563473
- Ref: I18N Portability-Footnote-1565922
- Node: I18N Example565985
- Ref: I18N Example-Footnote-1568620
- Node: Gawk I18N568692
- Node: Advanced Features569309
- Node: Nondecimal Data570822
- Node: Array Sorting572405
- Node: Controlling Array Traversal573102
- Node: Array Sorting Functions581340
- Ref: Array Sorting Functions-Footnote-1585014
- Ref: Array Sorting Functions-Footnote-2585107
- Node: Two-way I/O585301
- Ref: Two-way I/O-Footnote-1590733
- Node: TCP/IP Networking590803
- Node: Profiling593647
- Node: Library Functions601101
- Ref: Library Functions-Footnote-1604108
- Node: Library Names604279
- Ref: Library Names-Footnote-1607750
- Ref: Library Names-Footnote-2607970
- Node: General Functions608056
- Node: Strtonum Function609009
- Node: Assert Function611939
- Node: Round Function615265
- Node: Cliff Random Function616808
- Node: Ordinal Functions617824
- Ref: Ordinal Functions-Footnote-1620894
- Ref: Ordinal Functions-Footnote-2621146
- Node: Join Function621355
- Ref: Join Function-Footnote-1623126
- Node: Getlocaltime Function623326
- Node: Data File Management627041
- Node: Filetrans Function627673
- Node: Rewind Function631812
- Node: File Checking633199
- Node: Empty Files634293
- Node: Ignoring Assigns636523
- Node: Getopt Function638076
- Ref: Getopt Function-Footnote-1649380
- Node: Passwd Functions649583
- Ref: Passwd Functions-Footnote-1658558
- Node: Group Functions658646
- Node: Walking Arrays666730
- Node: Sample Programs668299
- Node: Running Examples668964
- Node: Clones669692
- Node: Cut Program670916
- Node: Egrep Program680761
- Ref: Egrep Program-Footnote-1688534
- Node: Id Program688644
- Node: Split Program692260
- Ref: Split Program-Footnote-1695779
- Node: Tee Program695907
- Node: Uniq Program698710
- Node: Wc Program706139
- Ref: Wc Program-Footnote-1710405
- Ref: Wc Program-Footnote-2710605
- Node: Miscellaneous Programs710697
- Node: Dupword Program711885
- Node: Alarm Program713916
- Node: Translate Program718665
- Ref: Translate Program-Footnote-1723052
- Ref: Translate Program-Footnote-2723280
- Node: Labels Program723414
- Ref: Labels Program-Footnote-1726785
- Node: Word Sorting726869
- Node: History Sorting730753
- Node: Extract Program732592
- Ref: Extract Program-Footnote-1740075
- Node: Simple Sed740203
- Node: Igawk Program743265
- Ref: Igawk Program-Footnote-1758422
- Ref: Igawk Program-Footnote-2758623
- Node: Anagram Program758761
- Node: Signature Program761829
- Node: Debugger762929
- Node: Debugging763895
- Node: Debugging Concepts764328
- Node: Debugging Terms766184
- Node: Awk Debugging768781
- Node: Sample Debugging Session769673
- Node: Debugger Invocation770193
- Node: Finding The Bug771522
- Node: List of Debugger Commands778010
- Node: Breakpoint Control779344
- Node: Debugger Execution Control783008
- Node: Viewing And Changing Data786368
- Node: Execution Stack789724
- Node: Debugger Info791191
- Node: Miscellaneous Debugger Commands795172
- Node: Readline Support800617
- Node: Limitations801448
- Node: Arbitrary Precision Arithmetic803700
- Ref: Arbitrary Precision Arithmetic-Footnote-1805342
- Node: General Arithmetic805490
- Node: Floating Point Issues807210
- Node: String Conversion Precision808091
- Ref: String Conversion Precision-Footnote-1809797
- Node: Unexpected Results809906
- Node: POSIX Floating Point Problems812059
- Ref: POSIX Floating Point Problems-Footnote-1815884
- Node: Integer Programming815922
- Node: Floating-point Programming817675
- Ref: Floating-point Programming-Footnote-1823984
- Node: Floating-point Representation824248
- Node: Floating-point Context825413
- Ref: table-ieee-formats826255
- Node: Rounding Mode827639
- Ref: table-rounding-modes828118
- Ref: Rounding Mode-Footnote-1831122
- Node: Gawk and MPFR831303
- Node: Arbitrary Precision Floats832545
- Ref: Arbitrary Precision Floats-Footnote-1834974
- Node: Setting Precision835285
- Node: Setting Rounding Mode838018
- Ref: table-gawk-rounding-modes838422
- Node: Floating-point Constants839602
- Node: Changing Precision841026
- Ref: Changing Precision-Footnote-1842426
- Node: Exact Arithmetic842600
- Node: Arbitrary Precision Integers845708
- Ref: Arbitrary Precision Integers-Footnote-1848708
- Node: Dynamic Extensions848855
- Node: Plugin License849773
- Node: Sample Library850387
- Node: Internal File Description851071
- Node: Internal File Ops854784
- Ref: Internal File Ops-Footnote-1859347
- Node: Using Internal File Ops859487
- Node: Language History861863
- Node: V7/SVR3.1863385
- Node: SVR4865706
- Node: POSIX867148
- Node: BTL868156
- Node: POSIX/GNU868890
- Node: Common Extensions874425
- Node: Ranges and Locales875532
- Ref: Ranges and Locales-Footnote-1880150
- Ref: Ranges and Locales-Footnote-2880177
- Ref: Ranges and Locales-Footnote-3880437
- Node: Contributors880658
- Node: Installation884954
- Node: Gawk Distribution885848
- Node: Getting886332
- Node: Extracting887158
- Node: Distribution contents888850
- Node: Unix Installation894072
- Node: Quick Installation894689
- Node: Additional Configuration Options896651
- Node: Configuration Philosophy898128
- Node: Non-Unix Installation900470
- Node: PC Installation900928
- Node: PC Binary Installation902227
- Node: PC Compiling904075
- Node: PC Testing907019
- Node: PC Using908195
- Node: Cygwin912380
- Node: MSYS913380
- Node: VMS Installation913894
- Node: VMS Compilation914497
- Ref: VMS Compilation-Footnote-1915504
- Node: VMS Installation Details915562
- Node: VMS Running917197
- Node: VMS Old Gawk918804
- Node: Bugs919278
- Node: Other Versions923130
- Node: Notes928445
- Node: Compatibility Mode929032
- Node: Additions929815
- Node: Accessing The Source930742
- Node: Adding Code932168
- Node: New Ports938210
- Node: Derived Files942345
- Ref: Derived Files-Footnote-1947650
- Ref: Derived Files-Footnote-2947684
- Ref: Derived Files-Footnote-3948284
- Node: Future Extensions948382
- Node: Basic Concepts949869
- Node: Basic High Level950550
- Ref: Basic High Level-Footnote-1954585
- Node: Basic Data Typing954770
- Node: Glossary958125
- Node: Copying983101
- Node: GNU Free Documentation License1020658
- Node: Index1045795
++Node: Exit Statement391463
++Node: Built-in Variables393879
++Node: User-modified394974
++Ref: User-modified-Footnote-1403329
++Node: Auto-set403391
++Ref: Auto-set-Footnote-1413299
++Node: ARGC and ARGV413504
++Node: Arrays417355
++Node: Array Basics418860
++Node: Array Intro419686
++Node: Reference to Elements424004
++Node: Assigning Elements426274
++Node: Array Example426765
++Node: Scanning an Array428497
++Node: Controlling Scanning430811
++Ref: Controlling Scanning-Footnote-1435744
++Node: Delete436060
++Ref: Delete-Footnote-1438825
++Node: Numeric Array Subscripts438882
++Node: Uninitialized Subscripts441065
++Node: Multi-dimensional442693
++Node: Multi-scanning445787
++Node: Arrays of Arrays447378
++Node: Functions452023
++Node: Built-in452845
++Node: Calling Built-in453923
++Node: Numeric Functions455911
++Ref: Numeric Functions-Footnote-1459743
++Ref: Numeric Functions-Footnote-2460100
++Ref: Numeric Functions-Footnote-3460148
++Node: String Functions460417
++Ref: String Functions-Footnote-1483914
++Ref: String Functions-Footnote-2484043
++Ref: String Functions-Footnote-3484291
++Node: Gory Details484378
++Ref: table-sub-escapes486057
++Ref: table-sub-posix-92487411
++Ref: table-sub-proposed488754
++Ref: table-posix-sub490104
++Ref: table-gensub-escapes491650
++Ref: Gory Details-Footnote-1492857
++Ref: Gory Details-Footnote-2492908
++Node: I/O Functions493059
++Ref: I/O Functions-Footnote-1499714
++Node: Time Functions499861
++Ref: Time Functions-Footnote-1510753
++Ref: Time Functions-Footnote-2510821
++Ref: Time Functions-Footnote-3510979
++Ref: Time Functions-Footnote-4511090
++Ref: Time Functions-Footnote-5511202
++Ref: Time Functions-Footnote-6511429
++Node: Bitwise Functions511695
++Ref: table-bitwise-ops512253
++Ref: Bitwise Functions-Footnote-1516474
++Node: Type Functions516658
++Node: I18N Functions517128
++Node: User-defined518755
++Node: Definition Syntax519559
++Ref: Definition Syntax-Footnote-1524469
++Node: Function Example524538
++Node: Function Caveats527132
++Node: Calling A Function527553
++Node: Variable Scope528668
++Node: Pass By Value/Reference530643
++Node: Return Statement534083
++Node: Dynamic Typing537064
++Node: Indirect Calls537799
++Node: Internationalization547484
++Node: I18N and L10N548910
++Node: Explaining gettext549596
++Ref: Explaining gettext-Footnote-1554662
++Ref: Explaining gettext-Footnote-2554846
++Node: Programmer i18n555011
++Node: Translator i18n559211
++Node: String Extraction560004
++Ref: String Extraction-Footnote-1560965
++Node: Printf Ordering561051
++Ref: Printf Ordering-Footnote-1563835
++Node: I18N Portability563899
++Ref: I18N Portability-Footnote-1566348
++Node: I18N Example566411
++Ref: I18N Example-Footnote-1569046
++Node: Gawk I18N569118
++Node: Advanced Features569735
++Node: Nondecimal Data571248
++Node: Array Sorting572831
++Node: Controlling Array Traversal573528
++Node: Array Sorting Functions581766
++Ref: Array Sorting Functions-Footnote-1585440
++Ref: Array Sorting Functions-Footnote-2585533
++Node: Two-way I/O585727
++Ref: Two-way I/O-Footnote-1591159
++Node: TCP/IP Networking591229
++Node: Profiling594073
++Node: Library Functions601527
++Ref: Library Functions-Footnote-1604534
++Node: Library Names604705
++Ref: Library Names-Footnote-1608176
++Ref: Library Names-Footnote-2608396
++Node: General Functions608482
++Node: Strtonum Function609435
++Node: Assert Function612365
++Node: Round Function615691
++Node: Cliff Random Function617234
++Node: Ordinal Functions618250
++Ref: Ordinal Functions-Footnote-1621320
++Ref: Ordinal Functions-Footnote-2621572
++Node: Join Function621781
++Ref: Join Function-Footnote-1623552
++Node: Getlocaltime Function623752
++Node: Data File Management627467
++Node: Filetrans Function628099
++Node: Rewind Function632238
++Node: File Checking633625
++Node: Empty Files634719
++Node: Ignoring Assigns636949
++Node: Getopt Function638502
++Ref: Getopt Function-Footnote-1649806
++Node: Passwd Functions650009
++Ref: Passwd Functions-Footnote-1658984
++Node: Group Functions659072
++Node: Walking Arrays667156
++Node: Sample Programs668725
++Node: Running Examples669390
++Node: Clones670118
++Node: Cut Program671342
++Node: Egrep Program681187
++Ref: Egrep Program-Footnote-1688960
++Node: Id Program689070
++Node: Split Program692686
++Ref: Split Program-Footnote-1696205
++Node: Tee Program696333
++Node: Uniq Program699136
++Node: Wc Program706565
++Ref: Wc Program-Footnote-1710831
++Ref: Wc Program-Footnote-2711031
++Node: Miscellaneous Programs711123
++Node: Dupword Program712311
++Node: Alarm Program714342
++Node: Translate Program719091
++Ref: Translate Program-Footnote-1723478
++Ref: Translate Program-Footnote-2723706
++Node: Labels Program723840
++Ref: Labels Program-Footnote-1727211
++Node: Word Sorting727295
++Node: History Sorting731179
++Node: Extract Program733018
++Ref: Extract Program-Footnote-1740501
++Node: Simple Sed740629
++Node: Igawk Program743691
++Ref: Igawk Program-Footnote-1758848
++Ref: Igawk Program-Footnote-2759049
++Node: Anagram Program759187
++Node: Signature Program762255
++Node: Debugger763355
++Node: Debugging764321
++Node: Debugging Concepts764754
++Node: Debugging Terms766610
++Node: Awk Debugging769207
++Node: Sample Debugging Session770099
++Node: Debugger Invocation770619
++Node: Finding The Bug771948
++Node: List of Debugger Commands778436
++Node: Breakpoint Control779770
++Node: Debugger Execution Control783434
++Node: Viewing And Changing Data786794
++Node: Execution Stack790150
++Node: Debugger Info791617
++Node: Miscellaneous Debugger Commands795598
++Node: Readline Support801043
++Node: Limitations801874
++Node: Arbitrary Precision Arithmetic804126
++Ref: Arbitrary Precision Arithmetic-Footnote-1805768
++Node: General Arithmetic805916
++Node: Floating Point Issues807636
++Node: String Conversion Precision808517
++Ref: String Conversion Precision-Footnote-1810223
++Node: Unexpected Results810332
++Node: POSIX Floating Point Problems812485
++Ref: POSIX Floating Point Problems-Footnote-1816310
++Node: Integer Programming816348
++Node: Floating-point Programming818101
++Ref: Floating-point Programming-Footnote-1824410
++Node: Floating-point Representation824674
++Node: Floating-point Context825839
++Ref: table-ieee-formats826681
++Node: Rounding Mode828065
++Ref: table-rounding-modes828544
++Ref: Rounding Mode-Footnote-1831548
++Node: Gawk and MPFR831729
++Node: Arbitrary Precision Floats832971
++Ref: Arbitrary Precision Floats-Footnote-1835400
++Node: Setting Precision835711
++Node: Setting Rounding Mode838444
++Ref: table-gawk-rounding-modes838848
++Node: Floating-point Constants840028
++Node: Changing Precision841452
++Ref: Changing Precision-Footnote-1842852
++Node: Exact Arithmetic843026
++Node: Arbitrary Precision Integers846134
++Ref: Arbitrary Precision Integers-Footnote-1849134
++Node: Dynamic Extensions849281
++Node: Plugin License850199
++Node: Sample Library850813
++Node: Internal File Description851497
++Node: Internal File Ops855210
++Ref: Internal File Ops-Footnote-1859773
++Node: Using Internal File Ops859913
++Node: Language History862289
++Node: V7/SVR3.1863811
++Node: SVR4866132
++Node: POSIX867574
++Node: BTL868582
++Node: POSIX/GNU869316
++Node: Common Extensions874851
++Node: Ranges and Locales875958
++Ref: Ranges and Locales-Footnote-1880576
++Ref: Ranges and Locales-Footnote-2880603
++Ref: Ranges and Locales-Footnote-3880863
++Node: Contributors881084
++Node: Installation885380
++Node: Gawk Distribution886274
++Node: Getting886758
++Node: Extracting887584
++Node: Distribution contents889276
++Node: Unix Installation894498
++Node: Quick Installation895115
++Node: Additional Configuration Options897077
++Node: Configuration Philosophy898554
++Node: Non-Unix Installation900896
++Node: PC Installation901354
++Node: PC Binary Installation902653
++Node: PC Compiling904501
++Node: PC Testing907445
++Node: PC Using908621
++Node: Cygwin912806
++Node: MSYS913806
++Node: VMS Installation914320
++Node: VMS Compilation914923
++Ref: VMS Compilation-Footnote-1915930
++Node: VMS Installation Details915988
++Node: VMS Running917623
++Node: VMS Old Gawk919230
++Node: Bugs919704
++Node: Other Versions923556
++Node: Notes928871
++Node: Compatibility Mode929458
++Node: Additions930241
++Node: Accessing The Source931168
++Node: Adding Code932594
++Node: New Ports938636
++Node: Derived Files942771
++Ref: Derived Files-Footnote-1948076
++Ref: Derived Files-Footnote-2948110
++Ref: Derived Files-Footnote-3948710
++Node: Future Extensions948808
++Node: Basic Concepts950295
++Node: Basic High Level950976
++Ref: Basic High Level-Footnote-1955011
++Node: Basic Data Typing955196
++Node: Glossary958551
++Node: Copying983527
++Node: GNU Free Documentation License1021084
++Node: Index1046221
  
  End Tag Table
diff --cc test/ChangeLog
index 643fe8d,1575d49..b8e5594
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@@ -1,25 -1,7 +1,29 @@@
+ 2012-09-23         Arnold D. Robbins     <address@hidden>
+ 
+       * lintwarn.ok: Updated.
+ 
 +2012-09-14         Arnold D. Robbins     <address@hidden>
 +
 +      * testext.ok: Updated. Twice.
 +
 +2012-09-11         Arnold D. Robbins     <address@hidden>
 +
 +      * Makefile.am (shlib-tests): Check if DYNAMIC is enabled and
 +      only if so run the tests. A bit hacky. Needed at least for
 +      z/OS.
 +
 +2012-09-07         Arnold D. Robbins     <address@hidden>
 +
 +      * readdir.awk: Change argument to readdir_do_ftype().
 +
 +2012-08-28         Andrew J. Schorr     <address@hidden>
 +
 +      * Makefile.am (EXTRA_DIST): Add jarebug.sh.
 +      (readdir): Use standard output filenames readdir.ok and _readdir
 +      instead of readdir.out1 and readdir.out2.  The standard names are
 +      required for the pass-fail and diffout rules to work correctly.
 +      (clean): Remove readdir.ok
 +
  2012-08-26         Arnold D. Robbins     <address@hidden>
  
        * Makefile.am (charasbytes): Revise test to canonicalize

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

Summary of changes:
 ChangeLog        |   10 +
 awkgram.c        |  303 ++++++++++++++--------------
 awkgram.y        |   29 ++--
 doc/ChangeLog    |    7 +
 doc/awkcard.in   |   10 +-
 doc/gawk.info    |  605 +++++++++++++++++++++++++++---------------------------
 doc/gawk.texi    |   62 ++++--
 test/ChangeLog   |    4 +
 test/lintwarn.ok |    2 -
 9 files changed, 534 insertions(+), 498 deletions(-)


hooks/post-receive
-- 
gawk



reply via email to

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