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. 26911e4062be696b2090aa1


From: Arnold Robbins
Subject: [gawk-diffs] [SCM] gawk branch, master, updated. 26911e4062be696b2090aa139f96f8210f012b48
Date: Wed, 09 May 2012 18:04:26 +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  26911e4062be696b2090aa139f96f8210f012b48 (commit)
       via  a59319732d89feda419acab674ea580c95db7d4a (commit)
       via  d71ec1612b2bfebded1854d536d54e3e5af7172e (commit)
       via  c41908d0b02f7746a67ab7aa2e54058e5b66439a (commit)
       via  96d7539b12aa96f85280be1ebbb933e951046cff (commit)
       via  54f5f71fb743e58427e2d72f0caaee12a12a5140 (commit)
       via  7e83cf5fd642b233a8d7af72b092e0c9bab29647 (commit)
       via  b2a499ad0442dc0d8d4ac4b51c31d215fd810bf9 (commit)
       via  876bfa5513ae175535a5e67e90973b712fce8399 (commit)
       via  247e18a50b836bedcaec2575a31f2802e14721c9 (commit)
       via  059a60ca01fbe31d4e6cea8cde7fa086abec90aa (commit)
       via  76fce411492be9713284936f23a4cd90f9454ce0 (commit)
       via  7975e6a2960b95942b6732dd59969aa3abca2502 (commit)
       via  3d2ecabdecfbaf1496984ff333d630c3eacbcb68 (commit)
       via  cebe01dc11a95fac048459ed3439ab65fba38d00 (commit)
       via  7a566d8be209d0f283e3d2afa2e5637cf316dde7 (commit)
       via  e5d13091279241edacfa48773f2b4b113b2addb0 (commit)
       via  266864e87a5f500d0c3b570cb489e040ae69a3b2 (commit)
       via  d6ee0f78f05caa4136cbc713fab64a0308f0da5d (commit)
       via  00e983dfaf983f2e63d74062b7e81716ce2cc0d1 (commit)
       via  bc9ed3fd239984429613095e6cfc142092f036c4 (commit)
       via  caaf36c8363f9280433f37615ec41d606281136e (commit)
       via  aa23de50eb7c81a3e8f94769c5288aecfeb52b4c (commit)
       via  f53d7e7b6afd4fbbc00c89a19d595c29998633c6 (commit)
       via  d6d6a4ac9c6eb33a71595fd596b9a8f2db6444b7 (commit)
       via  bcdea5969e5b16d5c5169488431778a704207a4e (commit)
       via  93ca7b261a2dad770be20328da1d747414d3e6d8 (commit)
       via  920b87dfab2e0504c8a1eb26eb6f130bcb748218 (commit)
       via  3438b2129cd933e430349a6bd66a1933071c92c2 (commit)
       via  ca6df261b71a738b4f0d0719f79cacee008a16c5 (commit)
       via  bf761c687204a51337dad0f539cdaf87c3a3a08f (commit)
       via  4d26f7436c0acf8617c4736f110f06e2f4531bbd (commit)
       via  495620140c3e925d3e9ffd0937d932de4425ed5d (commit)
       via  389a62c56e6a09a5e3348aa46b52288a533c653e (commit)
       via  15635ff21b6f1a0951f0ff5de6ddaf0edab8edd7 (commit)
       via  2981962139f8a726f5568d8ab1004e078214cea3 (commit)
       via  2e14bf32d257e86fb4db379211c1f86af2b23165 (commit)
       via  dbb8f309183eb908cca5178460f61f93afdab0a0 (commit)
       via  74b8a90b739cdfdaf2539f2a4e936cca3f1b2346 (commit)
       via  9f25c096019b378cc0734fce4291ab53a35b391e (commit)
       via  68318433e8e0627c722797cab90f23f30bb42c45 (commit)
       via  bb9e935084b97bc8369856d3e075b7e19182e120 (commit)
       via  b406b0ddbc1c306162ec94b76724347a1bea99f6 (commit)
       via  0bbb717969921d9a8a587ae39cedff283cd898fa (commit)
       via  afb9913ce1218d07cffa1f88e6a10f2de2800dce (commit)
       via  db7a3cd086535605db484590dbac91b2587f8cf5 (commit)
       via  90fd3ce39521c90213d1a7090370bc1aba100451 (commit)
       via  02108925ef6d1c8bae2aea95864a0e22ce0fc55e (commit)
       via  9b594365fa257ae16a479038805840e447b24336 (commit)
       via  857a1007645f45c31ed0f6070e04ca066fc1bce5 (commit)
       via  0d3d874286915d998648922158dabf2ffc38d7f9 (commit)
       via  021b5a16001132e8a11a28471525f28747ffa4b2 (commit)
       via  85a195f6f9901e98abe9306f1e05e25107e61955 (commit)
       via  c30225e9a828bb8d5245e0c648f08ec8bb165321 (commit)
       via  700b6ddbe8f6c0a84cb61abac6fd94a4fe9221ca (commit)
       via  c40211033292efb689bfca1819d9d34fd1e3b8cd (commit)
       via  2dcf0c1084fafc7bb4d8ff5435a228ce90c408f8 (commit)
       via  b51edf37c4271bf5ec5dcad9d35169f55e38efa9 (commit)
       via  8dffe780526d2bd419d17917eacd91bbacbab9ec (commit)
      from  8ff0b4eaa7592280b5a55087c0326c6ef1f88db5 (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=26911e4062be696b2090aa139f96f8210f012b48

commit 26911e4062be696b2090aa139f96f8210f012b48
Merge: a593197 d71ec16
Author: Arnold D. Robbins <address@hidden>
Date:   Wed May 9 21:03:49 2012 +0300

    Merge remote branch 'origin/xgawk-build'

diff --cc Makefile.in
index 79c9a00,537e2ec..e2b2cef
--- a/Makefile.in
+++ b/Makefile.in
@@@ -88,11 -71,15 +88,15 @@@ am__aclocal_m4_deps = $(top_srcdir)/m4/
        $(top_srcdir)/m4/isc-posix.m4 $(top_srcdir)/m4/lcmessage.m4 \
        $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
        $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libsigsegv.m4 \
-       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/mpfr.m4 \
-       $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/noreturn.m4 \
-       $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-       $(top_srcdir)/m4/readline.m4 $(top_srcdir)/m4/socket.m4 \
-       $(top_srcdir)/m4/ulonglong.m4 $(top_srcdir)/configure.ac
+       $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/longlong.m4 \
+       $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+       $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
 -      $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
++      $(top_srcdir)/m4/mpfr.m4 $(top_srcdir)/m4/nls.m4 \
++      $(top_srcdir)/m4/noreturn.m4 $(top_srcdir)/m4/po.m4 \
+       $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/readline.m4 \
+       $(top_srcdir)/m4/socket.m4 $(top_srcdir)/m4/stdint_h.m4 \
+       $(top_srcdir)/m4/uintmax_t.m4 $(top_srcdir)/m4/ulonglong.m4 \
+       $(top_srcdir)/configure.ac
  am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
  am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
@@@ -498,14 -496,11 +525,14 @@@ distclean-hdr
        -rm -f config.h stamp-h1
  install-binPROGRAMS: $(bin_PROGRAMS)
        @$(NORMAL_INSTALL)
 -      test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
        @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
 +      if test -n "$$list"; then \
 +        echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
 +        $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
 +      fi; \
        for p in $$list; do echo "$$p $$p"; done | \
        sed 's/$(EXEEXT)$$//' | \
-       while read p p1; do if test -f $$p; \
+       while read p p1; do if test -f $$p || test -f $$p1; \
          then echo "$$p"; echo "$$p"; else :; fi; \
        done | \
        sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
@@@ -589,15 -589,31 +622,31 @@@ distclean-compile
  @AMDEP_TRUE@@am__fastdepCC_FALSE@     DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
  @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
  
+ .c.lo:
+ @am__fastdepCC_TRUE@  $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o 
$@ $<
+ @am__fastdepCC_TRUE@  $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+ @AMDEP_TRUE@@am__fastdepCC_FALSE@     source='$<' object='$@' libtool=yes 
@AMDEPBACKSLASH@
+ @AMDEP_TRUE@@am__fastdepCC_FALSE@     DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
+ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+ 
  .y.c:
 -      $(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h $*.h y.output 
$*.output -- $(YACCCOMPILE)
 +      $(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h `echo $@ | 
$(am__yacc_c2h)` y.output $*.output -- $(YACCCOMPILE)
  
+ mostlyclean-libtool:
+       -rm -f *.lo
+ 
+ clean-libtool:
+       -rm -rf .libs _libs
+ 
+ distclean-libtool:
+       -rm -f libtool config.lt
+ 
  # This directory's subdirectories are mostly independent; you can cd
 -# into them and run `make' without going through this Makefile.
 -# To change the values of `make' variables: instead of editing Makefiles,
 -# (1) if the variable is set in `config.status', edit `config.status'
 -#     (which will cause the Makefiles to be regenerated when you run `make');
 -# (2) otherwise, pass the desired values on the `make' command line.
 +# into them and run 'make' without going through this Makefile.
 +# To change the values of 'make' variables: instead of editing Makefiles,
 +# (1) if the variable is set in 'config.status', edit 'config.status'
 +#     (which will cause the Makefiles to be regenerated when you run 'make');
 +# (2) otherwise, pass the desired values on the 'make' command line.
  $(RECURSIVE_TARGETS):
        @fail= failcom='exit 1'; \
        for f in x $$MAKEFLAGS; do \
diff --cc NEWS
index 04f2a87,803c1d5..243765a
--- a/NEWS
+++ b/NEWS
@@@ -15,11 -15,6 +15,15 @@@ Changes from 4.0.1 to 4.
        * Use -p to do profiling.
  
  2. The new -l option is used for loading dynamic extensions.
++
++3. Gawk now supports high precision arithmetic with MPFR.
++
++4. A number of facilities from xgawk have been merged in!
 + 
 +Changes from 4.0.1 to 4.0.2
 +---------------------------
 +
 +1. Infrastructure upgrades: Autoconf 2.69, Automake 1.12.
   
  Changes from 4.0.0 to 4.0.1
  ---------------------------
diff --cc TODO
index 0b79c02,ab38248..c37722d
--- a/TODO
+++ b/TODO
@@@ -17,9 -15,9 +17,6 @@@ Merge the chapter and the appendix on f
  
  Code Review:
  awkgram.y
--awkprintf.h
--cmd.h
--command.y
  debug.c
  eval.c
  ext.c
@@@ -27,24 -25,24 +24,26 @@@ field.
  floatcomp.c
  floatmagic.h
  gawkmisc.c
--io.c
  profile.c
  protos.h
  
  DONE:
--awk.h
  array.c
++awk.h
  builtin.c
--node.c
++cmd.h
++command.y
++custom.h
++hard-locale.h
++io.c
++main.c
  mbsupport.h
--xalloc.h
--version.c
++msg.c
++node.c
  re.c
  replace.c
--msg.c
--hard-locale.h
--custom.h
--main.c
++version.c
++xalloc.h
  
  ------
  
diff --cc aclocal.m4
index 1ae4be1,f6623d8..59ce5b2
--- a/aclocal.m4
+++ b/aclocal.m4
@@@ -995,10 -962,13 +995,15 @@@ m4_include([m4/lib-ld.m4]
  m4_include([m4/lib-link.m4])
  m4_include([m4/lib-prefix.m4])
  m4_include([m4/libsigsegv.m4])
+ m4_include([m4/libtool.m4])
  m4_include([m4/longlong.m4])
 +m4_include([m4/mpfr.m4])
+ m4_include([m4/ltoptions.m4])
+ m4_include([m4/ltsugar.m4])
+ m4_include([m4/ltversion.m4])
+ m4_include([m4/lt~obsolete.m4])
  m4_include([m4/nls.m4])
 +m4_include([m4/noreturn.m4])
  m4_include([m4/po.m4])
  m4_include([m4/progtest.m4])
  m4_include([m4/readline.m4])
diff --cc awkgram.c
index 761b839,5a92e8d..f580307
--- a/awkgram.c
+++ b/awkgram.c
@@@ -703,25 -707,25 +707,25 @@@ static const yytype_int16 yyrhs[] 
  /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
  static const yytype_uint16 yyrline[] =
  {
-        0,   192,   192,   194,   199,   200,   204,   216,   220,   231,
-      237,   245,   253,   255,   261,   262,   264,   290,   301,   312,
-      318,   327,   337,   339,   341,   347,   352,   353,   357,   376,
-      375,   409,   411,   416,   417,   430,   435,   436,   440,   442,
-      444,   451,   541,   583,   625,   738,   745,   752,   762,   771,
-      780,   789,   804,   820,   819,   843,   855,   855,   953,   953,
-      978,  1001,  1007,  1008,  1014,  1015,  1022,  1027,  1039,  1053,
-     1055,  1063,  1068,  1070,  1078,  1080,  1089,  1090,  1098,  1103,
-     1103,  1114,  1118,  1126,  1127,  1130,  1132,  1137,  1138,  1147,
-     1148,  1153,  1158,  1164,  1166,  1168,  1175,  1176,  1182,  1183,
-     1188,  1190,  1195,  1197,  1199,  1201,  1207,  1214,  1216,  1218,
-     1234,  1244,  1251,  1253,  1258,  1260,  1262,  1270,  1272,  1277,
-     1279,  1284,  1286,  1288,  1338,  1340,  1342,  1344,  1346,  1348,
-     1350,  1352,  1375,  1380,  1385,  1410,  1416,  1418,  1420,  1422,
-     1424,  1426,  1431,  1435,  1467,  1469,  1475,  1481,  1494,  1495,
-     1496,  1501,  1506,  1510,  1514,  1529,  1542,  1547,  1583,  1601,
-     1602,  1608,  1609,  1614,  1616,  1623,  1640,  1657,  1659,  1666,
-     1671,  1679,  1689,  1701,  1710,  1714,  1718,  1722,  1726,  1730,
-     1733,  1735,  1739,  1743,  1747
+        0,   193,   193,   195,   200,   201,   205,   217,   221,   232,
+      238,   243,   251,   259,   261,   266,   274,   276,   282,   283,
+      285,   311,   322,   333,   339,   348,   358,   360,   362,   368,
+      373,   374,   378,   397,   396,   430,   432,   437,   438,   451,
+      456,   457,   461,   463,   465,   472,   562,   604,   646,   759,
+      766,   773,   783,   792,   801,   810,   825,   841,   840,   864,
 -     876,   876,   970,   970,   995,  1018,  1024,  1025,  1031,  1032,
 -    1039,  1044,  1056,  1070,  1072,  1078,  1083,  1085,  1093,  1095,
 -    1104,  1105,  1113,  1118,  1118,  1129,  1133,  1141,  1142,  1145,
 -    1147,  1152,  1153,  1162,  1163,  1168,  1173,  1179,  1181,  1183,
 -    1190,  1191,  1197,  1198,  1203,  1205,  1210,  1212,  1214,  1216,
 -    1222,  1229,  1231,  1233,  1249,  1259,  1266,  1268,  1273,  1275,
 -    1277,  1285,  1287,  1292,  1294,  1299,  1301,  1303,  1353,  1355,
 -    1357,  1359,  1361,  1363,  1365,  1367,  1390,  1395,  1400,  1425,
 -    1431,  1433,  1435,  1437,  1439,  1441,  1446,  1450,  1481,  1483,
 -    1489,  1495,  1508,  1509,  1510,  1515,  1520,  1524,  1528,  1541,
 -    1554,  1559,  1595,  1613,  1614,  1620,  1621,  1626,  1628,  1635,
 -    1652,  1669,  1671,  1678,  1683,  1691,  1701,  1713,  1722,  1726,
 -    1730,  1734,  1738,  1742,  1745,  1747,  1751,  1755,  1759
++     876,   876,   974,   974,   999,  1022,  1028,  1029,  1035,  1036,
++    1043,  1048,  1060,  1074,  1076,  1084,  1089,  1091,  1099,  1101,
++    1110,  1111,  1119,  1124,  1124,  1135,  1139,  1147,  1148,  1151,
++    1153,  1158,  1159,  1168,  1169,  1174,  1179,  1185,  1187,  1189,
++    1196,  1197,  1203,  1204,  1209,  1211,  1216,  1218,  1220,  1222,
++    1228,  1235,  1237,  1239,  1255,  1265,  1272,  1274,  1279,  1281,
++    1283,  1291,  1293,  1298,  1300,  1305,  1307,  1309,  1359,  1361,
++    1363,  1365,  1367,  1369,  1371,  1373,  1396,  1401,  1406,  1431,
++    1437,  1439,  1441,  1443,  1445,  1447,  1452,  1456,  1488,  1490,
++    1496,  1502,  1515,  1516,  1517,  1522,  1527,  1531,  1535,  1550,
++    1563,  1568,  1604,  1622,  1623,  1629,  1630,  1635,  1637,  1644,
++    1661,  1678,  1680,  1687,  1692,  1700,  1710,  1722,  1731,  1735,
++    1739,  1743,  1747,  1751,  1754,  1756,  1760,  1764,  1768
  };
  #endif
  
@@@ -2978,17 -3018,17 +3022,17 @@@ regular_print
          }
      break;
  
-   case 58:
+   case 62:
  
  /* Line 1806 of yacc.c  */
- #line 953 "awkgram.y"
 -#line 970 "awkgram.y"
++#line 974 "awkgram.y"
      { sub_counter = 0; }
      break;
  
-   case 59:
+   case 63:
  
  /* Line 1806 of yacc.c  */
- #line 954 "awkgram.y"
 -#line 971 "awkgram.y"
++#line 975 "awkgram.y"
      {
                char *arr = (yyvsp[(2) - (4)])->lextok;
  
@@@ -3015,10 -3055,10 +3059,10 @@@
          }
      break;
  
-   case 60:
+   case 64:
  
  /* Line 1806 of yacc.c  */
- #line 983 "awkgram.y"
 -#line 1000 "awkgram.y"
++#line 1004 "awkgram.y"
      {
                static short warned = FALSE;
                char *arr = (yyvsp[(3) - (4)])->lextok;
@@@ -3039,38 -3079,38 +3083,38 @@@
          }
      break;
  
-   case 61:
+   case 65:
  
  /* Line 1806 of yacc.c  */
- #line 1002 "awkgram.y"
 -#line 1019 "awkgram.y"
++#line 1023 "awkgram.y"
      { (yyval) = optimize_assignment((yyvsp[(1) - (1)])); }
      break;
  
-   case 62:
+   case 66:
  
  /* Line 1806 of yacc.c  */
- #line 1007 "awkgram.y"
 -#line 1024 "awkgram.y"
++#line 1028 "awkgram.y"
      { (yyval) = NULL; }
      break;
  
-   case 63:
+   case 67:
  
  /* Line 1806 of yacc.c  */
- #line 1009 "awkgram.y"
 -#line 1026 "awkgram.y"
++#line 1030 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (1)]); }
      break;
  
-   case 64:
+   case 68:
  
  /* Line 1806 of yacc.c  */
- #line 1014 "awkgram.y"
 -#line 1031 "awkgram.y"
++#line 1035 "awkgram.y"
      { (yyval) = NULL; }
      break;
  
-   case 65:
+   case 69:
  
  /* Line 1806 of yacc.c  */
- #line 1016 "awkgram.y"
 -#line 1033 "awkgram.y"
++#line 1037 "awkgram.y"
      {
                if ((yyvsp[(1) - (2)]) == NULL)
                        (yyval) = list_create((yyvsp[(2) - (2)]));
@@@ -3079,17 -3119,17 +3123,17 @@@
          }
      break;
  
-   case 66:
+   case 70:
  
  /* Line 1806 of yacc.c  */
- #line 1023 "awkgram.y"
 -#line 1040 "awkgram.y"
++#line 1044 "awkgram.y"
      { (yyval) = NULL; }
      break;
  
-   case 67:
+   case 71:
  
  /* Line 1806 of yacc.c  */
- #line 1028 "awkgram.y"
 -#line 1045 "awkgram.y"
++#line 1049 "awkgram.y"
      {
                INSTRUCTION *casestmt = (yyvsp[(5) - (5)]);
                if ((yyvsp[(5) - (5)]) == NULL)
@@@ -3103,10 -3143,10 +3147,10 @@@
          }
      break;
  
-   case 68:
+   case 72:
  
  /* Line 1806 of yacc.c  */
- #line 1040 "awkgram.y"
 -#line 1057 "awkgram.y"
++#line 1061 "awkgram.y"
      {
                INSTRUCTION *casestmt = (yyvsp[(4) - (4)]);
                if ((yyvsp[(4) - (4)]) == NULL)
@@@ -3119,80 -3159,78 +3163,80 @@@
          }
      break;
  
-   case 69:
+   case 73:
  
  /* Line 1806 of yacc.c  */
- #line 1054 "awkgram.y"
 -#line 1071 "awkgram.y"
++#line 1075 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (1)]); }
      break;
  
-   case 70:
+   case 74:
  
  /* Line 1806 of yacc.c  */
- #line 1056 "awkgram.y"
 -#line 1073 "awkgram.y"
++#line 1077 "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 71:
+   case 75:
  
  /* Line 1806 of yacc.c  */
- #line 1064 "awkgram.y"
 -#line 1079 "awkgram.y"
++#line 1085 "awkgram.y"
      {
                bcfree((yyvsp[(1) - (2)]));
                (yyval) = (yyvsp[(2) - (2)]);
          }
      break;
  
-   case 72:
+   case 76:
  
  /* Line 1806 of yacc.c  */
- #line 1069 "awkgram.y"
 -#line 1084 "awkgram.y"
++#line 1090 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (1)]); }
      break;
  
-   case 73:
+   case 77:
  
  /* Line 1806 of yacc.c  */
- #line 1071 "awkgram.y"
 -#line 1086 "awkgram.y"
++#line 1092 "awkgram.y"
      {
                (yyvsp[(1) - (1)])->opcode = Op_push_re;
                (yyval) = (yyvsp[(1) - (1)]);
          }
      break;
  
-   case 74:
+   case 78:
  
  /* Line 1806 of yacc.c  */
- #line 1079 "awkgram.y"
 -#line 1094 "awkgram.y"
++#line 1100 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (1)]); }
      break;
  
-   case 75:
+   case 79:
  
  /* Line 1806 of yacc.c  */
- #line 1081 "awkgram.y"
 -#line 1096 "awkgram.y"
++#line 1102 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (1)]); }
      break;
  
-   case 77:
+   case 81:
  
  /* Line 1806 of yacc.c  */
- #line 1091 "awkgram.y"
 -#line 1106 "awkgram.y"
++#line 1112 "awkgram.y"
      {
                (yyval) = (yyvsp[(2) - (3)]);
          }
      break;
  
-   case 78:
+   case 82:
  
  /* Line 1806 of yacc.c  */
- #line 1098 "awkgram.y"
 -#line 1113 "awkgram.y"
++#line 1119 "awkgram.y"
      {
                in_print = FALSE;
                in_parens = 0;
@@@ -3200,17 -3238,17 +3244,17 @@@
          }
      break;
  
-   case 79:
+   case 83:
  
  /* Line 1806 of yacc.c  */
- #line 1103 "awkgram.y"
 -#line 1118 "awkgram.y"
++#line 1124 "awkgram.y"
      { in_print = FALSE; in_parens = 0; }
      break;
  
-   case 80:
+   case 84:
  
  /* Line 1806 of yacc.c  */
- #line 1104 "awkgram.y"
 -#line 1119 "awkgram.y"
++#line 1125 "awkgram.y"
      {
                if ((yyvsp[(1) - (3)])->redir_type == redirect_twoway
                        && (yyvsp[(3) - (3)])->lasti->opcode == 
Op_K_getline_redir
@@@ -3220,69 -3258,69 +3264,69 @@@
          }
      break;
  
-   case 81:
+   case 85:
  
  /* Line 1806 of yacc.c  */
- #line 1115 "awkgram.y"
 -#line 1130 "awkgram.y"
++#line 1136 "awkgram.y"
      {
                (yyval) = mk_condition((yyvsp[(3) - (6)]), (yyvsp[(1) - (6)]), 
(yyvsp[(6) - (6)]), NULL, NULL);
          }
      break;
  
-   case 82:
+   case 86:
  
  /* Line 1806 of yacc.c  */
- #line 1120 "awkgram.y"
 -#line 1135 "awkgram.y"
++#line 1141 "awkgram.y"
      {
                (yyval) = mk_condition((yyvsp[(3) - (9)]), (yyvsp[(1) - (9)]), 
(yyvsp[(6) - (9)]), (yyvsp[(7) - (9)]), (yyvsp[(9) - (9)]));
          }
      break;
  
-   case 87:
+   case 91:
  
  /* Line 1806 of yacc.c  */
- #line 1137 "awkgram.y"
 -#line 1152 "awkgram.y"
++#line 1158 "awkgram.y"
      { (yyval) = NULL; }
      break;
  
-   case 88:
+   case 92:
  
  /* Line 1806 of yacc.c  */
- #line 1139 "awkgram.y"
 -#line 1154 "awkgram.y"
++#line 1160 "awkgram.y"
      {
                bcfree((yyvsp[(1) - (2)]));
                (yyval) = (yyvsp[(2) - (2)]);
          }
      break;
  
-   case 89:
+   case 93:
  
  /* Line 1806 of yacc.c  */
- #line 1147 "awkgram.y"
 -#line 1162 "awkgram.y"
++#line 1168 "awkgram.y"
      { (yyval) = NULL; }
      break;
  
-   case 90:
+   case 94:
  
  /* Line 1806 of yacc.c  */
- #line 1149 "awkgram.y"
 -#line 1164 "awkgram.y"
++#line 1170 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (1)]) ; }
      break;
  
-   case 91:
+   case 95:
  
  /* Line 1806 of yacc.c  */
- #line 1154 "awkgram.y"
 -#line 1169 "awkgram.y"
++#line 1175 "awkgram.y"
      {
                (yyvsp[(1) - (1)])->param_count = 0;
                (yyval) = list_create((yyvsp[(1) - (1)]));
          }
      break;
  
-   case 92:
+   case 96:
  
  /* Line 1806 of yacc.c  */
- #line 1159 "awkgram.y"
 -#line 1174 "awkgram.y"
++#line 1180 "awkgram.y"
      {
                (yyvsp[(3) - (3)])->param_count =  (yyvsp[(1) - 
(3)])->lasti->param_count + 1;
                (yyval) = list_append((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]));
@@@ -3290,104 -3328,104 +3334,104 @@@
          }
      break;
  
-   case 93:
+   case 97:
  
  /* Line 1806 of yacc.c  */
- #line 1165 "awkgram.y"
 -#line 1180 "awkgram.y"
++#line 1186 "awkgram.y"
      { (yyval) = NULL; }
      break;
  
-   case 94:
+   case 98:
  
  /* Line 1806 of yacc.c  */
- #line 1167 "awkgram.y"
 -#line 1182 "awkgram.y"
++#line 1188 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (2)]); }
      break;
  
-   case 95:
+   case 99:
  
  /* Line 1806 of yacc.c  */
- #line 1169 "awkgram.y"
 -#line 1184 "awkgram.y"
++#line 1190 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (3)]); }
      break;
  
-   case 96:
+   case 100:
  
  /* Line 1806 of yacc.c  */
- #line 1175 "awkgram.y"
 -#line 1190 "awkgram.y"
++#line 1196 "awkgram.y"
      { (yyval) = NULL; }
      break;
  
-   case 97:
+   case 101:
  
  /* Line 1806 of yacc.c  */
- #line 1177 "awkgram.y"
 -#line 1192 "awkgram.y"
++#line 1198 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (1)]); }
      break;
  
-   case 98:
+   case 102:
  
  /* Line 1806 of yacc.c  */
- #line 1182 "awkgram.y"
 -#line 1197 "awkgram.y"
++#line 1203 "awkgram.y"
      { (yyval) = NULL; }
      break;
  
-   case 99:
+   case 103:
  
  /* Line 1806 of yacc.c  */
- #line 1184 "awkgram.y"
 -#line 1199 "awkgram.y"
++#line 1205 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (1)]); }
      break;
  
-   case 100:
+   case 104:
  
  /* Line 1806 of yacc.c  */
- #line 1189 "awkgram.y"
 -#line 1204 "awkgram.y"
++#line 1210 "awkgram.y"
      { (yyval) = mk_expression_list(NULL, (yyvsp[(1) - (1)])); }
      break;
  
-   case 101:
+   case 105:
  
  /* Line 1806 of yacc.c  */
- #line 1191 "awkgram.y"
 -#line 1206 "awkgram.y"
++#line 1212 "awkgram.y"
      {
                (yyval) = mk_expression_list((yyvsp[(1) - (3)]), (yyvsp[(3) - 
(3)]));
                yyerrok;
          }
      break;
  
-   case 102:
+   case 106:
  
  /* Line 1806 of yacc.c  */
- #line 1196 "awkgram.y"
 -#line 1211 "awkgram.y"
++#line 1217 "awkgram.y"
      { (yyval) = NULL; }
      break;
  
-   case 103:
+   case 107:
  
  /* Line 1806 of yacc.c  */
- #line 1198 "awkgram.y"
 -#line 1213 "awkgram.y"
++#line 1219 "awkgram.y"
      { (yyval) = NULL; }
      break;
  
-   case 104:
+   case 108:
  
  /* Line 1806 of yacc.c  */
- #line 1200 "awkgram.y"
 -#line 1215 "awkgram.y"
++#line 1221 "awkgram.y"
      { (yyval) = NULL; }
      break;
  
-   case 105:
+   case 109:
  
  /* Line 1806 of yacc.c  */
- #line 1202 "awkgram.y"
 -#line 1217 "awkgram.y"
++#line 1223 "awkgram.y"
      { (yyval) = NULL; }
      break;
  
-   case 106:
+   case 110:
  
  /* Line 1806 of yacc.c  */
- #line 1208 "awkgram.y"
 -#line 1223 "awkgram.y"
++#line 1229 "awkgram.y"
      {
                if (do_lint && (yyvsp[(3) - (3)])->lasti->opcode == 
Op_match_rec)
                        lintwarn_ln((yyvsp[(2) - (3)])->source_line,
@@@ -3396,24 -3434,24 +3440,24 @@@
          }
      break;
  
-   case 107:
+   case 111:
  
  /* Line 1806 of yacc.c  */
- #line 1215 "awkgram.y"
 -#line 1230 "awkgram.y"
++#line 1236 "awkgram.y"
      { (yyval) = mk_boolean((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) 
- (3)])); }
      break;
  
-   case 108:
+   case 112:
  
  /* Line 1806 of yacc.c  */
- #line 1217 "awkgram.y"
 -#line 1232 "awkgram.y"
++#line 1238 "awkgram.y"
      { (yyval) = mk_boolean((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) 
- (3)])); }
      break;
  
-   case 109:
+   case 113:
  
  /* Line 1806 of yacc.c  */
- #line 1219 "awkgram.y"
 -#line 1234 "awkgram.y"
++#line 1240 "awkgram.y"
      {
                if ((yyvsp[(1) - (3)])->lasti->opcode == Op_match_rec)
                        warning_ln((yyvsp[(2) - (3)])->source_line,
@@@ -3431,10 -3469,10 +3475,10 @@@
          }
      break;
  
-   case 110:
+   case 114:
  
  /* Line 1806 of yacc.c  */
- #line 1235 "awkgram.y"
 -#line 1250 "awkgram.y"
++#line 1256 "awkgram.y"
      {
                if (do_lint_old)
                        warning_ln((yyvsp[(2) - (3)])->source_line,
@@@ -3446,10 -3484,10 +3490,10 @@@
          }
      break;
  
-   case 111:
+   case 115:
  
  /* Line 1806 of yacc.c  */
- #line 1245 "awkgram.y"
 -#line 1260 "awkgram.y"
++#line 1266 "awkgram.y"
      {
                if (do_lint && (yyvsp[(3) - (3)])->lasti->opcode == 
Op_match_rec)
                        lintwarn_ln((yyvsp[(2) - (3)])->source_line,
@@@ -3458,90 -3496,90 +3502,90 @@@
          }
      break;
  
-   case 112:
+   case 116:
  
  /* Line 1806 of yacc.c  */
- #line 1252 "awkgram.y"
 -#line 1267 "awkgram.y"
++#line 1273 "awkgram.y"
      { (yyval) = mk_condition((yyvsp[(1) - (5)]), (yyvsp[(2) - (5)]), 
(yyvsp[(3) - (5)]), (yyvsp[(4) - (5)]), (yyvsp[(5) - (5)])); }
      break;
  
-   case 113:
+   case 117:
  
  /* Line 1806 of yacc.c  */
- #line 1254 "awkgram.y"
 -#line 1269 "awkgram.y"
++#line 1275 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (1)]); }
      break;
  
-   case 114:
+   case 118:
  
  /* Line 1806 of yacc.c  */
- #line 1259 "awkgram.y"
 -#line 1274 "awkgram.y"
++#line 1280 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (1)]); }
      break;
  
-   case 115:
+   case 119:
  
  /* Line 1806 of yacc.c  */
- #line 1261 "awkgram.y"
 -#line 1276 "awkgram.y"
++#line 1282 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (1)]); }
      break;
  
-   case 116:
+   case 120:
  
  /* Line 1806 of yacc.c  */
- #line 1263 "awkgram.y"
 -#line 1278 "awkgram.y"
++#line 1284 "awkgram.y"
      { 
                (yyvsp[(2) - (2)])->opcode = Op_assign_quotient;
                (yyval) = (yyvsp[(2) - (2)]);
          }
      break;
  
-   case 117:
+   case 121:
  
  /* Line 1806 of yacc.c  */
- #line 1271 "awkgram.y"
 -#line 1286 "awkgram.y"
++#line 1292 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (1)]); }
      break;
  
-   case 118:
+   case 122:
  
  /* Line 1806 of yacc.c  */
- #line 1273 "awkgram.y"
 -#line 1288 "awkgram.y"
++#line 1294 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (1)]); }
      break;
  
-   case 119:
+   case 123:
  
  /* Line 1806 of yacc.c  */
- #line 1278 "awkgram.y"
 -#line 1293 "awkgram.y"
++#line 1299 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (1)]); }
      break;
  
-   case 120:
+   case 124:
  
  /* Line 1806 of yacc.c  */
- #line 1280 "awkgram.y"
 -#line 1295 "awkgram.y"
++#line 1301 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (1)]); }
      break;
  
-   case 121:
+   case 125:
  
  /* Line 1806 of yacc.c  */
- #line 1285 "awkgram.y"
 -#line 1300 "awkgram.y"
++#line 1306 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (1)]); }
      break;
  
-   case 122:
+   case 126:
  
  /* Line 1806 of yacc.c  */
- #line 1287 "awkgram.y"
 -#line 1302 "awkgram.y"
++#line 1308 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (1)]); }
      break;
  
-   case 123:
+   case 127:
  
  /* Line 1806 of yacc.c  */
- #line 1289 "awkgram.y"
 -#line 1304 "awkgram.y"
++#line 1310 "awkgram.y"
      {
                int count = 2;
                int is_simple_var = FALSE;
@@@ -3590,52 -3628,52 +3634,52 @@@
          }
      break;
  
-   case 125:
+   case 129:
  
  /* Line 1806 of yacc.c  */
- #line 1341 "awkgram.y"
 -#line 1356 "awkgram.y"
++#line 1362 "awkgram.y"
      { (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) 
- (3)])); }
      break;
  
-   case 126:
+   case 130:
  
  /* Line 1806 of yacc.c  */
- #line 1343 "awkgram.y"
 -#line 1358 "awkgram.y"
++#line 1364 "awkgram.y"
      { (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) 
- (3)])); }
      break;
  
-   case 127:
+   case 131:
  
  /* Line 1806 of yacc.c  */
- #line 1345 "awkgram.y"
 -#line 1360 "awkgram.y"
++#line 1366 "awkgram.y"
      { (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) 
- (3)])); }
      break;
  
-   case 128:
+   case 132:
  
  /* Line 1806 of yacc.c  */
- #line 1347 "awkgram.y"
 -#line 1362 "awkgram.y"
++#line 1368 "awkgram.y"
      { (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) 
- (3)])); }
      break;
  
-   case 129:
+   case 133:
  
  /* Line 1806 of yacc.c  */
- #line 1349 "awkgram.y"
 -#line 1364 "awkgram.y"
++#line 1370 "awkgram.y"
      { (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) 
- (3)])); }
      break;
  
-   case 130:
+   case 134:
  
  /* Line 1806 of yacc.c  */
- #line 1351 "awkgram.y"
 -#line 1366 "awkgram.y"
++#line 1372 "awkgram.y"
      { (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) 
- (3)])); }
      break;
  
-   case 131:
+   case 135:
  
  /* Line 1806 of yacc.c  */
- #line 1353 "awkgram.y"
 -#line 1368 "awkgram.y"
++#line 1374 "awkgram.y"
      {
                /*
                 * In BEGINFILE/ENDFILE, allow `getline var < file'
@@@ -3660,30 -3698,30 +3704,30 @@@
          }
      break;
  
-   case 132:
+   case 136:
  
  /* Line 1806 of yacc.c  */
- #line 1376 "awkgram.y"
 -#line 1391 "awkgram.y"
++#line 1397 "awkgram.y"
      {
                (yyvsp[(2) - (2)])->opcode = Op_postincrement;
                (yyval) = mk_assignment((yyvsp[(1) - (2)]), NULL, (yyvsp[(2) - 
(2)]));
          }
      break;
  
-   case 133:
+   case 137:
  
  /* Line 1806 of yacc.c  */
- #line 1381 "awkgram.y"
 -#line 1396 "awkgram.y"
++#line 1402 "awkgram.y"
      {
                (yyvsp[(2) - (2)])->opcode = Op_postdecrement;
                (yyval) = mk_assignment((yyvsp[(1) - (2)]), NULL, (yyvsp[(2) - 
(2)]));
          }
      break;
  
-   case 134:
+   case 138:
  
  /* Line 1806 of yacc.c  */
- #line 1386 "awkgram.y"
 -#line 1401 "awkgram.y"
++#line 1407 "awkgram.y"
      {
                if (do_lint_old) {
                    warning_ln((yyvsp[(4) - (5)])->source_line,
@@@ -3705,71 -3743,71 +3749,71 @@@
          }
      break;
  
-   case 135:
+   case 139:
  
  /* Line 1806 of yacc.c  */
- #line 1411 "awkgram.y"
 -#line 1426 "awkgram.y"
++#line 1432 "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 136:
+   case 140:
  
  /* Line 1806 of yacc.c  */
- #line 1417 "awkgram.y"
 -#line 1432 "awkgram.y"
++#line 1438 "awkgram.y"
      { (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) 
- (3)])); }
      break;
  
-   case 137:
+   case 141:
  
  /* Line 1806 of yacc.c  */
- #line 1419 "awkgram.y"
 -#line 1434 "awkgram.y"
++#line 1440 "awkgram.y"
      { (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) 
- (3)])); }
      break;
  
-   case 138:
+   case 142:
  
  /* Line 1806 of yacc.c  */
- #line 1421 "awkgram.y"
 -#line 1436 "awkgram.y"
++#line 1442 "awkgram.y"
      { (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) 
- (3)])); }
      break;
  
-   case 139:
+   case 143:
  
  /* Line 1806 of yacc.c  */
- #line 1423 "awkgram.y"
 -#line 1438 "awkgram.y"
++#line 1444 "awkgram.y"
      { (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) 
- (3)])); }
      break;
  
-   case 140:
+   case 144:
  
  /* Line 1806 of yacc.c  */
- #line 1425 "awkgram.y"
 -#line 1440 "awkgram.y"
++#line 1446 "awkgram.y"
      { (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) 
- (3)])); }
      break;
  
-   case 141:
+   case 145:
  
  /* Line 1806 of yacc.c  */
- #line 1427 "awkgram.y"
 -#line 1442 "awkgram.y"
++#line 1448 "awkgram.y"
      { (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) 
- (3)])); }
      break;
  
-   case 142:
+   case 146:
  
  /* Line 1806 of yacc.c  */
- #line 1432 "awkgram.y"
 -#line 1447 "awkgram.y"
++#line 1453 "awkgram.y"
      {
                (yyval) = list_create((yyvsp[(1) - (1)]));
          }
      break;
  
-   case 143:
+   case 147:
  
  /* Line 1806 of yacc.c  */
- #line 1436 "awkgram.y"
 -#line 1451 "awkgram.y"
++#line 1457 "awkgram.y"
      {
                if ((yyvsp[(2) - (2)])->opcode == Op_match_rec) {
                        (yyvsp[(2) - (2)])->opcode = Op_nomatch;
@@@ -3803,17 -3840,17 +3847,17 @@@
           }
      break;
  
-   case 144:
+   case 148:
  
  /* Line 1806 of yacc.c  */
- #line 1468 "awkgram.y"
 -#line 1482 "awkgram.y"
++#line 1489 "awkgram.y"
      { (yyval) = (yyvsp[(2) - (3)]); }
      break;
  
-   case 145:
+   case 149:
  
  /* Line 1806 of yacc.c  */
- #line 1470 "awkgram.y"
 -#line 1484 "awkgram.y"
++#line 1491 "awkgram.y"
      {
                (yyval) = snode((yyvsp[(3) - (4)]), (yyvsp[(1) - (4)]));
                if ((yyval) == NULL)
@@@ -3821,10 -3858,10 +3865,10 @@@
          }
      break;
  
-   case 146:
+   case 150:
  
  /* Line 1806 of yacc.c  */
- #line 1476 "awkgram.y"
 -#line 1490 "awkgram.y"
++#line 1497 "awkgram.y"
      {
                (yyval) = snode((yyvsp[(3) - (4)]), (yyvsp[(1) - (4)]));
                if ((yyval) == NULL)
@@@ -3832,10 -3869,10 +3876,10 @@@
          }
      break;
  
-   case 147:
+   case 151:
  
  /* Line 1806 of yacc.c  */
- #line 1482 "awkgram.y"
 -#line 1496 "awkgram.y"
++#line 1503 "awkgram.y"
      {
                static short warned1 = FALSE;
  
@@@ -3850,48 -3887,48 +3894,48 @@@
          }
      break;
  
-   case 150:
+   case 154:
  
  /* Line 1806 of yacc.c  */
- #line 1497 "awkgram.y"
 -#line 1511 "awkgram.y"
++#line 1518 "awkgram.y"
      {
                (yyvsp[(1) - (2)])->opcode = Op_preincrement;
                (yyval) = mk_assignment((yyvsp[(2) - (2)]), NULL, (yyvsp[(1) - 
(2)]));
          }
      break;
  
-   case 151:
+   case 155:
  
  /* Line 1806 of yacc.c  */
- #line 1502 "awkgram.y"
 -#line 1516 "awkgram.y"
++#line 1523 "awkgram.y"
      {
                (yyvsp[(1) - (2)])->opcode = Op_predecrement;
                (yyval) = mk_assignment((yyvsp[(2) - (2)]), NULL, (yyvsp[(1) - 
(2)]));
          }
      break;
  
-   case 152:
+   case 156:
  
  /* Line 1806 of yacc.c  */
- #line 1507 "awkgram.y"
 -#line 1521 "awkgram.y"
++#line 1528 "awkgram.y"
      {
                (yyval) = list_create((yyvsp[(1) - (1)]));
          }
      break;
  
-   case 153:
+   case 157:
  
  /* Line 1806 of yacc.c  */
- #line 1511 "awkgram.y"
 -#line 1525 "awkgram.y"
++#line 1532 "awkgram.y"
      {
                (yyval) = list_create((yyvsp[(1) - (1)]));
          }
      break;
  
-   case 154:
+   case 158:
  
  /* Line 1806 of yacc.c  */
- #line 1515 "awkgram.y"
 -#line 1529 "awkgram.y"
++#line 1536 "awkgram.y"
      {
                if ((yyvsp[(2) - (2)])->lasti->opcode == Op_push_i
                        && ((yyvsp[(2) - (2)])->lasti->memory->flags & 
(STRCUR|STRING)) == 0
@@@ -3908,10 -3943,10 +3952,10 @@@
          }
      break;
  
-   case 155:
+   case 159:
  
  /* Line 1806 of yacc.c  */
- #line 1530 "awkgram.y"
 -#line 1542 "awkgram.y"
++#line 1551 "awkgram.y"
      {
            /*
             * was: $$ = $2
@@@ -3923,20 -3958,20 +3967,20 @@@
          }
      break;
  
-   case 156:
+   case 160:
  
  /* Line 1806 of yacc.c  */
- #line 1543 "awkgram.y"
 -#line 1555 "awkgram.y"
++#line 1564 "awkgram.y"
      {
                func_use((yyvsp[(1) - (1)])->lasti->func_name, FUNC_USE);
                (yyval) = (yyvsp[(1) - (1)]);
          }
      break;
  
-   case 157:
+   case 161:
  
  /* Line 1806 of yacc.c  */
- #line 1548 "awkgram.y"
 -#line 1560 "awkgram.y"
++#line 1569 "awkgram.y"
      {
                /* indirect function call */
                INSTRUCTION *f, *t;
@@@ -3971,10 -4006,10 +4015,10 @@@
          }
      break;
  
-   case 158:
+   case 162:
  
  /* Line 1806 of yacc.c  */
- #line 1584 "awkgram.y"
 -#line 1596 "awkgram.y"
++#line 1605 "awkgram.y"
      {
                param_sanity((yyvsp[(3) - (4)]));
                (yyvsp[(1) - (4)])->opcode = Op_func_call;
@@@ -3990,54 -4025,54 +4034,54 @@@
          }
      break;
  
-   case 159:
+   case 163:
  
  /* Line 1806 of yacc.c  */
- #line 1601 "awkgram.y"
 -#line 1613 "awkgram.y"
++#line 1622 "awkgram.y"
      { (yyval) = NULL; }
      break;
  
-   case 160:
+   case 164:
  
  /* Line 1806 of yacc.c  */
- #line 1603 "awkgram.y"
 -#line 1615 "awkgram.y"
++#line 1624 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (1)]); }
      break;
  
-   case 161:
+   case 165:
  
  /* Line 1806 of yacc.c  */
- #line 1608 "awkgram.y"
 -#line 1620 "awkgram.y"
++#line 1629 "awkgram.y"
      { (yyval) = NULL; }
      break;
  
-   case 162:
+   case 166:
  
  /* Line 1806 of yacc.c  */
- #line 1610 "awkgram.y"
 -#line 1622 "awkgram.y"
++#line 1631 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (2)]); }
      break;
  
-   case 163:
+   case 167:
  
  /* Line 1806 of yacc.c  */
- #line 1615 "awkgram.y"
 -#line 1627 "awkgram.y"
++#line 1636 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (1)]); }
      break;
  
-   case 164:
+   case 168:
  
  /* Line 1806 of yacc.c  */
- #line 1617 "awkgram.y"
 -#line 1629 "awkgram.y"
++#line 1638 "awkgram.y"
      {
                (yyval) = list_merge((yyvsp[(1) - (2)]), (yyvsp[(2) - (2)]));
          }
      break;
  
-   case 165:
+   case 169:
  
  /* Line 1806 of yacc.c  */
- #line 1624 "awkgram.y"
 -#line 1636 "awkgram.y"
++#line 1645 "awkgram.y"
      {
                INSTRUCTION *ip = (yyvsp[(1) - (1)])->lasti; 
                int count = ip->sub_count;      /* # of SUBSEP-seperated 
expressions */
@@@ -4053,10 -4088,10 +4097,10 @@@
          }
      break;
  
-   case 166:
+   case 170:
  
  /* Line 1806 of yacc.c  */
- #line 1641 "awkgram.y"
 -#line 1653 "awkgram.y"
++#line 1662 "awkgram.y"
      {
                INSTRUCTION *t = (yyvsp[(2) - (3)]);
                if ((yyvsp[(2) - (3)]) == NULL) {
@@@ -4072,33 -4107,33 +4116,33 @@@
          }
      break;
  
-   case 167:
+   case 171:
  
  /* Line 1806 of yacc.c  */
- #line 1658 "awkgram.y"
 -#line 1670 "awkgram.y"
++#line 1679 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (1)]); }
      break;
  
-   case 168:
+   case 172:
  
  /* Line 1806 of yacc.c  */
- #line 1660 "awkgram.y"
 -#line 1672 "awkgram.y"
++#line 1681 "awkgram.y"
      {
                (yyval) = list_merge((yyvsp[(1) - (2)]), (yyvsp[(2) - (2)]));
          }
      break;
  
-   case 169:
+   case 173:
  
  /* Line 1806 of yacc.c  */
- #line 1667 "awkgram.y"
 -#line 1679 "awkgram.y"
++#line 1688 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (2)]); }
      break;
  
-   case 170:
+   case 174:
  
  /* Line 1806 of yacc.c  */
- #line 1672 "awkgram.y"
 -#line 1684 "awkgram.y"
++#line 1693 "awkgram.y"
      {
                char *var_name = (yyvsp[(1) - (1)])->lextok;
  
@@@ -4108,10 -4143,10 +4152,10 @@@
          }
      break;
  
-   case 171:
+   case 175:
  
  /* Line 1806 of yacc.c  */
- #line 1680 "awkgram.y"
 -#line 1692 "awkgram.y"
++#line 1701 "awkgram.y"
      {
                char *arr = (yyvsp[(1) - (2)])->lextok;
                (yyvsp[(1) - (2)])->memory = variable((yyvsp[(1) - 
(2)])->source_line, arr, Node_var_new);
@@@ -4120,10 -4155,10 +4164,10 @@@
          }
      break;
  
-   case 172:
+   case 176:
  
  /* Line 1806 of yacc.c  */
- #line 1690 "awkgram.y"
 -#line 1702 "awkgram.y"
++#line 1711 "awkgram.y"
      {
                INSTRUCTION *ip = (yyvsp[(1) - (1)])->nexti;
                if (ip->opcode == Op_push
@@@ -4137,10 -4172,10 +4181,10 @@@
          }
      break;
  
-   case 173:
+   case 177:
  
  /* Line 1806 of yacc.c  */
- #line 1702 "awkgram.y"
 -#line 1714 "awkgram.y"
++#line 1723 "awkgram.y"
      {
                (yyval) = list_append((yyvsp[(2) - (3)]), (yyvsp[(1) - (3)]));
                if ((yyvsp[(3) - (3)]) != NULL)
@@@ -4148,70 -4183,70 +4192,70 @@@
          }
      break;
  
-   case 174:
+   case 178:
  
  /* Line 1806 of yacc.c  */
- #line 1711 "awkgram.y"
 -#line 1723 "awkgram.y"
++#line 1732 "awkgram.y"
      {
                (yyvsp[(1) - (1)])->opcode = Op_postincrement;
          }
      break;
  
-   case 175:
+   case 179:
  
  /* Line 1806 of yacc.c  */
- #line 1715 "awkgram.y"
 -#line 1727 "awkgram.y"
++#line 1736 "awkgram.y"
      {
                (yyvsp[(1) - (1)])->opcode = Op_postdecrement;
          }
      break;
  
-   case 176:
+   case 180:
  
  /* Line 1806 of yacc.c  */
- #line 1718 "awkgram.y"
 -#line 1730 "awkgram.y"
++#line 1739 "awkgram.y"
      { (yyval) = NULL; }
      break;
  
-   case 178:
+   case 182:
  
  /* Line 1806 of yacc.c  */
- #line 1726 "awkgram.y"
 -#line 1738 "awkgram.y"
++#line 1747 "awkgram.y"
      { yyerrok; }
      break;
  
-   case 179:
+   case 183:
  
  /* Line 1806 of yacc.c  */
- #line 1730 "awkgram.y"
 -#line 1742 "awkgram.y"
++#line 1751 "awkgram.y"
      { yyerrok; }
      break;
  
-   case 182:
+   case 186:
  
  /* Line 1806 of yacc.c  */
- #line 1739 "awkgram.y"
 -#line 1751 "awkgram.y"
++#line 1760 "awkgram.y"
      { yyerrok; }
      break;
  
-   case 183:
+   case 187:
  
  /* Line 1806 of yacc.c  */
- #line 1743 "awkgram.y"
 -#line 1755 "awkgram.y"
++#line 1764 "awkgram.y"
      { (yyval) = (yyvsp[(1) - (1)]); yyerrok; }
      break;
  
-   case 184:
+   case 188:
  
  /* Line 1806 of yacc.c  */
- #line 1747 "awkgram.y"
 -#line 1759 "awkgram.y"
++#line 1768 "awkgram.y"
      { yyerrok; }
      break;
  
  
  
  /* Line 1806 of yacc.c  */
- #line 4227 "awkgram.c"
 -#line 4262 "awkgram.c"
++#line 4271 "awkgram.c"
        default: break;
      }
    /* User semantic actions sometimes alter yychar, and that requires
@@@ -4442,7 -4477,7 +4486,7 @@@ yyreturn
  
  
  /* Line 2067 of yacc.c  */
- #line 1749 "awkgram.y"
 -#line 1761 "awkgram.y"
++#line 1770 "awkgram.y"
  
  
  struct token {
@@@ -4485,84 -4519,82 +4529,85 @@@ tokcompare(const void *l, const void *r
   * Function pointers come from declarations in awk.h.
   */
  
 -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},
 -#ifdef ARRAYDEBUG
 -{"adump",     Op_builtin,    LEX_BUILTIN,     GAWKX|A(1)|A(2),        
do_adump},
 +#ifdef HAVE_MPFR
 +#define MPF(F) do_mpfr_##F
 +#else
 +#define MPF(F) 0
  #endif
 -{"and",               Op_builtin,    LEX_BUILTIN,     GAWKX|A(2),     do_and},
 +
 +static const struct token tokentab[] = {
 +{"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
 -{"aoption",   Op_builtin,    LEX_BUILTIN,     GAWKX|A(2),     do_aoption},
 +{"adump",     Op_builtin,    LEX_BUILTIN,     GAWKX|A(1)|A(2),        
do_adump,       0},
  #endif
 -{"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},
 -{"load",      Op_symbol,       LEX_LOAD,      GAWKX,          0},
 -{"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,    GAWKX,          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},
 -{"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},
 +{"and",               Op_builtin,    LEX_BUILTIN,     GAWKX|A(2),     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)},
 +{"extension", Op_builtin,      LEX_BUILTIN,   GAWKX|A(2),     do_ext, 0},
 +{"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},
 +{"or",                Op_builtin,    LEX_BUILTIN,     GAWKX|A(2),     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)},
 +{"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|A(2),     do_xor, 
MPF(xor)},
  };
  
  #if MBS_SUPPORT
diff --cc awkgram.y
index 4145c5f,fb39460..b7a3b37
--- a/awkgram.y
+++ b/awkgram.y
@@@ -1809,84 -1799,82 +1809,85 @@@ tokcompare(const void *l, const void *r
   * Function pointers come from declarations in awk.h.
   */
  
 -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},
 -#ifdef ARRAYDEBUG
 -{"adump",     Op_builtin,    LEX_BUILTIN,     GAWKX|A(1)|A(2),        
do_adump},
 +#ifdef HAVE_MPFR
 +#define MPF(F) do_mpfr_##F
 +#else
 +#define MPF(F) 0
  #endif
 -{"and",               Op_builtin,    LEX_BUILTIN,     GAWKX|A(2),     do_and},
 +
 +static const struct token tokentab[] = {
 +{"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
 -{"aoption",   Op_builtin,    LEX_BUILTIN,     GAWKX|A(2),     do_aoption},
 +{"adump",     Op_builtin,    LEX_BUILTIN,     GAWKX|A(1)|A(2),        
do_adump,       0},
  #endif
 -{"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},
 -{"load",      Op_symbol,       LEX_LOAD,      GAWKX,          0},
 -{"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,    GAWKX,          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},
 -{"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},
 +{"and",               Op_builtin,    LEX_BUILTIN,     GAWKX|A(2),     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)},
 +{"extension", Op_builtin,      LEX_BUILTIN,   GAWKX|A(2),     do_ext, 0},
 +{"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},
 +{"or",                Op_builtin,    LEX_BUILTIN,     GAWKX|A(2),     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)},
 +{"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|A(2),     do_xor, 
MPF(xor)},
  };
  
  #if MBS_SUPPORT
diff --cc awklib/Makefile.in
index 81f90a5,f7147e7..ac4cb82
--- a/awklib/Makefile.in
+++ b/awklib/Makefile.in
@@@ -84,11 -66,15 +84,15 @@@ am__aclocal_m4_deps = $(top_srcdir)/m4/
        $(top_srcdir)/m4/isc-posix.m4 $(top_srcdir)/m4/lcmessage.m4 \
        $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
        $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libsigsegv.m4 \
-       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/mpfr.m4 \
-       $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/noreturn.m4 \
-       $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-       $(top_srcdir)/m4/readline.m4 $(top_srcdir)/m4/socket.m4 \
-       $(top_srcdir)/m4/ulonglong.m4 $(top_srcdir)/configure.ac
+       $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/longlong.m4 \
+       $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+       $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
 -      $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
++      $(top_srcdir)/m4/mpfr.m4 $(top_srcdir)/m4/nls.m4 \
++      $(top_srcdir)/m4/noreturn.m4 $(top_srcdir)/m4/po.m4 \
+       $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/readline.m4 \
+       $(top_srcdir)/m4/socket.m4 $(top_srcdir)/m4/stdint_h.m4 \
+       $(top_srcdir)/m4/uintmax_t.m4 $(top_srcdir)/m4/ulonglong.m4 \
+       $(top_srcdir)/configure.ac
  am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
  mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
@@@ -137,15 -117,15 +141,20 @@@ am__depfiles_maybe = depfile
  am__mv = mv -f
  COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
        $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+ LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+       --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+       $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
  CCLD = $(CC)
- LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+ LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+       --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+       $(LDFLAGS) -o $@
  SOURCES = $(nodist_grcat_SOURCES) $(nodist_pwcat_SOURCES)
  DIST_SOURCES =
 +am__can_run_installinfo = \
 +  case $$AM_UPDATE_INFO_DIR in \
 +    n|no|NO) false;; \
 +    *) (install-info --version) >/dev/null 2>&1;; \
 +  esac
  ETAGS = etags
  CTAGS = ctags
  DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@@ -321,14 -318,11 +348,14 @@@ $(ACLOCAL_M4):  $(am__aclocal_m4_deps
  $(am__aclocal_m4_deps):
  install-pkglibexecPROGRAMS: $(pkglibexec_PROGRAMS)
        @$(NORMAL_INSTALL)
 -      test -z "$(pkglibexecdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibexecdir)"
        @list='$(pkglibexec_PROGRAMS)'; test -n "$(pkglibexecdir)" || list=; \
 +      if test -n "$$list"; then \
 +        echo " $(MKDIR_P) '$(DESTDIR)$(pkglibexecdir)'"; \
 +        $(MKDIR_P) "$(DESTDIR)$(pkglibexecdir)" || exit 1; \
 +      fi; \
        for p in $$list; do echo "$$p $$p"; done | \
        sed 's/$(EXEEXT)$$//' | \
-       while read p p1; do if test -f $$p; \
+       while read p p1; do if test -f $$p || test -f $$p1; \
          then echo "$$p"; echo "$$p"; else :; fi; \
        done | \
        sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
@@@ -358,14 -352,17 +385,20 @@@ uninstall-pkglibexecPROGRAMS
        cd "$(DESTDIR)$(pkglibexecdir)" && rm -f $$files
  
  clean-pkglibexecPROGRAMS:
-       -test -z "$(pkglibexec_PROGRAMS)" || rm -f $(pkglibexec_PROGRAMS)
+       @list='$(pkglibexec_PROGRAMS)'; test -n "$$list" || exit 0; \
+       echo " rm -f" $$list; \
+       rm -f $$list || exit $$?; \
+       test -n "$(EXEEXT)" || exit 0; \
+       list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+       echo " rm -f" $$list; \
+       rm -f $$list
  install-binSCRIPTS: $(bin_SCRIPTS)
        @$(NORMAL_INSTALL)
 -      test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
        @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \
 +      if test -n "$$list"; then \
 +        echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
 +        $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
 +      fi; \
        for p in $$list; do \
          if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
          if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
diff --cc configh.in
index 4a16adf,1d7510a..b26c1d7
--- a/configh.in
+++ b/configh.in
@@@ -318,9 -329,10 +321,14 @@@
  /* systems should define this type here */
  #undef HAVE_WINT_T
  
++
 +/* Define to 1 if the system has the type `_Bool'. */
 +#undef HAVE__BOOL
 +
+ /* Define to the sub-directory in which libtool stores uninstalled libraries.
+    */
+ #undef LT_OBJDIR
+ 
  /* disable lint checks */
  #undef NO_LINT
  
diff --cc doc/Makefile.in
index bf4b45a,6c04681..81aace3
--- a/doc/Makefile.in
+++ b/doc/Makefile.in
@@@ -84,11 -67,15 +84,15 @@@ am__aclocal_m4_deps = $(top_srcdir)/m4/
        $(top_srcdir)/m4/isc-posix.m4 $(top_srcdir)/m4/lcmessage.m4 \
        $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
        $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libsigsegv.m4 \
-       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/mpfr.m4 \
-       $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/noreturn.m4 \
-       $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-       $(top_srcdir)/m4/readline.m4 $(top_srcdir)/m4/socket.m4 \
-       $(top_srcdir)/m4/ulonglong.m4 $(top_srcdir)/configure.ac
+       $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/longlong.m4 \
+       $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+       $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
 -      $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
++      $(top_srcdir)/m4/mpfr.m4 $(top_srcdir)/m4/nls.m4 \
++      $(top_srcdir)/m4/noreturn.m4 $(top_srcdir)/m4/po.m4 \
+       $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/readline.m4 \
+       $(top_srcdir)/m4/socket.m4 $(top_srcdir)/m4/stdint_h.m4 \
+       $(top_srcdir)/m4/uintmax_t.m4 $(top_srcdir)/m4/ulonglong.m4 \
+       $(top_srcdir)/configure.ac
  am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
  mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
diff --cc doc/gawk.info
index daae67b,75e1f48..6846063
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@@ -25674,11 -24942,10 +25737,11 @@@ Inde
  * - (hyphen), filenames beginning with:  Options.             (line  59)
  * - (hyphen), in bracket expressions:    Bracket Expressions. (line  17)
  * --assign option:                       Options.             (line  32)
- * --bignum option:                       Options.             (line 185)
 -* --c option:                            Options.             (line  78)
++* --bignum option:                       Options.             (line 187)
 +* --c option:                            Options.             (line  81)
  * --characters-as-bytes option:          Options.             (line  68)
 -* --copyright option:                    Options.             (line  85)
 -* --debug option:                        Options.             (line 105)
 +* --copyright option:                    Options.             (line  88)
 +* --debug option:                        Options.             (line 108)
  * --disable-lint configuration option:   Additional Configuration Options.
                                                                (line   9)
  * --disable-nls configuration option:    Additional Configuration Options.
@@@ -25689,35 -24956,35 +25752,35 @@@
  * --field-separator option:              Options.             (line  21)
  * --file option:                         Options.             (line  25)
  * --gen-pot option <1>:                  String Extraction.   (line   6)
 -* --gen-pot option:                      Options.             (line 144)
 -* --help option:                         Options.             (line 151)
 -* --L option:                            Options.             (line 265)
 -* --lint option <1>:                     Options.             (line 165)
 +* --gen-pot option:                      Options.             (line 147)
 +* --help option:                         Options.             (line 154)
- * --L option:                            Options.             (line 272)
- * --lint option <1>:                     Options.             (line 166)
++* --L option:                            Options.             (line 274)
++* --lint option <1>:                     Options.             (line 168)
  * --lint option:                         Command Line.        (line  20)
- * --lint-old option:                     Options.             (line 272)
 -* --lint-old option:                     Options.             (line 265)
 -* --load option:                         Options.             (line 156)
++* --lint-old option:                     Options.             (line 274)
 +* --load option:                         Options.             (line 159)
  * --non-decimal-data option <1>:         Nondecimal Data.     (line   6)
- * --non-decimal-data option:             Options.             (line 191)
 -* --non-decimal-data option:             Options.             (line 184)
++* --non-decimal-data option:             Options.             (line 193)
  * --non-decimal-data option, strtonum() function and: Nondecimal Data.
                                                                (line  36)
- * --optimize option:                     Options.             (line 212)
- * --posix option:                        Options.             (line 231)
- * --posix option, --traditional option and: Options.          (line 250)
- * --pretty-print option:                 Options.             (line 204)
 -* --optimize option:                     Options.             (line 205)
 -* --posix option:                        Options.             (line 224)
 -* --posix option, --traditional option and: Options.          (line 243)
 -* --pretty-print option:                 Options.             (line 197)
++* --optimize option:                     Options.             (line 214)
++* --posix option:                        Options.             (line 233)
++* --posix option, --traditional option and: Options.          (line 252)
++* --pretty-print option:                 Options.             (line 206)
  * --profile option <1>:                  Profiling.           (line  12)
- * --profile option:                      Options.             (line 219)
- * --re-interval option:                  Options.             (line 256)
- * --sandbox option:                      Options.             (line 263)
 -* --profile option:                      Options.             (line 212)
 -* --re-interval option:                  Options.             (line 249)
 -* --sandbox option:                      Options.             (line 256)
++* --profile option:                      Options.             (line 221)
++* --re-interval option:                  Options.             (line 258)
++* --sandbox option:                      Options.             (line 265)
  * --sandbox option, disabling system() function: I/O Functions.
                                                                (line  85)
  * --sandbox option, input redirection with getline: Getline.  (line  19)
  * --sandbox option, output redirection with print, printf: Redirection.
                                                                (line   6)
 -* --source option:                       Options.             (line 114)
 -* --traditional option:                  Options.             (line  78)
 -* --traditional option, --posix option and: Options.          (line 243)
 -* --use-lc-numeric option:               Options.             (line 192)
 -* --version option:                      Options.             (line 270)
 +* --source option:                       Options.             (line 117)
 +* --traditional option:                  Options.             (line  81)
- * --traditional option, --posix option and: Options.          (line 250)
- * --use-lc-numeric option:               Options.             (line 199)
- * --version option:                      Options.             (line 277)
++* --traditional option, --posix option and: Options.          (line 252)
++* --use-lc-numeric option:               Options.             (line 201)
++* --version option:                      Options.             (line 279)
  * --with-whiny-user-strftime configuration option: Additional Configuration 
Options.
                                                                (line  29)
  * -b option:                             Options.             (line  68)
@@@ -25731,21 -24998,20 +25794,21 @@@
  * -f option:                             Options.             (line  25)
  * -F option:                             Options.             (line  21)
  * -f option:                             Long.                (line  12)
- * -F option, -Ft sets FS to TAB:         Options.             (line 285)
- * -f option, on command line:            Options.             (line 290)
 -* -F option, -Ft sets FS to TAB:         Options.             (line 278)
 -* -f option, on command line:            Options.             (line 283)
 -* -g option:                             Options.             (line 144)
 -* -h option:                             Options.             (line 151)
 -* -l option:                             Options.             (line 156)
 -* -N option:                             Options.             (line 192)
 -* -n option:                             Options.             (line 184)
 -* -O option:                             Options.             (line 205)
 -* -o option:                             Options.             (line 197)
 -* -P option:                             Options.             (line 224)
 -* -p option:                             Options.             (line 212)
 -* -r option:                             Options.             (line 249)
 -* -S option:                             Options.             (line 256)
 -* -V option:                             Options.             (line 270)
++* -F option, -Ft sets FS to TAB:         Options.             (line 287)
++* -f option, on command line:            Options.             (line 292)
 +* -g option:                             Options.             (line 147)
 +* -h option:                             Options.             (line 154)
 +* -l option:                             Options.             (line 159)
- * -M option:                             Options.             (line 185)
- * -N option:                             Options.             (line 199)
- * -n option:                             Options.             (line 191)
- * -O option:                             Options.             (line 212)
- * -o option:                             Options.             (line 204)
- * -P option:                             Options.             (line 231)
- * -p option:                             Options.             (line 219)
- * -r option:                             Options.             (line 256)
- * -S option:                             Options.             (line 263)
- * -V option:                             Options.             (line 277)
++* -M option:                             Options.             (line 187)
++* -N option:                             Options.             (line 201)
++* -n option:                             Options.             (line 193)
++* -O option:                             Options.             (line 214)
++* -o option:                             Options.             (line 206)
++* -P option:                             Options.             (line 233)
++* -p option:                             Options.             (line 221)
++* -r option:                             Options.             (line 258)
++* -S option:                             Options.             (line 265)
++* -V option:                             Options.             (line 279)
  * -v option:                             Options.             (line  32)
  * -v option, variables, assigning:       Assignment Options.  (line  12)
  * -W option:                             Options.             (line  46)
@@@ -25885,7 -25151,7 +25948,7 @@@
                                                                (line  67)
  * advanced features, data files as single record: Records.    (line 175)
  * advanced features, fixed-width data:   Constant Size.       (line   9)
- * advanced features, FNR/NR variables:   Auto-set.            (line 224)
 -* advanced features, FNR/NR variables:   Auto-set.            (line 208)
++* advanced features, FNR/NR variables:   Auto-set.            (line 225)
  * advanced features, gawk:               Advanced Features.   (line   6)
  * advanced features, gawk, network programming: TCP/IP Networking.
                                                                (line   6)
@@@ -26003,10 -25267,10 +26066,10 @@@
  * asterisk (*), *= operator:             Assignment Ops.      (line 129)
  * atan2() function:                      Numeric Functions.   (line  11)
  * awf (amazingly workable formatter) program: Glossary.       (line  25)
 -* awk debugging, enabling:               Options.             (line 105)
 -* awk enabling:                          Options.             (line 197)
 +* awk debugging, enabling:               Options.             (line 108)
- * awk enabling:                          Options.             (line 204)
++* awk enabling:                          Options.             (line 206)
  * awk language, POSIX version:           Assignment Ops.      (line 136)
- * awk profiling, enabling:               Options.             (line 219)
 -* awk profiling, enabling:               Options.             (line 212)
++* awk profiling, enabling:               Options.             (line 221)
  * awk programs <1>:                      Two Rules.           (line   6)
  * awk programs <2>:                      Executable Scripts.  (line   6)
  * awk programs:                          Getting Started.     (line  12)
@@@ -26362,10 -25623,10 +26426,10 @@@
  * coprocesses, closing:                  Close Files And Pipes.
                                                                (line   6)
  * coprocesses, getline from:             Getline/Coprocess.   (line   6)
 -* cos() function:                        Numeric Functions.   (line  14)
 +* cos() function:                        Numeric Functions.   (line  15)
  * counting:                              Wc Program.          (line   6)
  * csh utility:                           Statements/Lines.    (line  44)
- * csh utility, POSIXLY_CORRECT environment variable: Options. (line 332)
 -* csh utility, POSIXLY_CORRECT environment variable: Options. (line 325)
++* csh utility, POSIXLY_CORRECT environment variable: Options. (line 334)
  * csh utility, |& operator, comparison with: Two-way I/O.     (line  44)
  * ctime() user-defined function:         Function Example.    (line  72)
  * currency symbols, localization:        Explaining gettext.  (line 103)
@@@ -26395,9 -25656,9 +26459,9 @@@
  * dark corner, exit statement:           Exit Statement.      (line  30)
  * dark corner, field separators:         Field Splitting Summary.
                                                                (line  47)
- * dark corner, FILENAME variable <1>:    Auto-set.            (line  92)
+ * dark corner, FILENAME variable <1>:    Auto-set.            (line  93)
  * dark corner, FILENAME variable:        Getline Notes.       (line  19)
- * dark corner, FNR/NR variables:         Auto-set.            (line 224)
 -* dark corner, FNR/NR variables:         Auto-set.            (line 208)
++* dark corner, FNR/NR variables:         Auto-set.            (line 225)
  * dark corner, format-control characters: Control Letters.    (line  18)
  * dark corner, FS as null string:        Single Character Fields.
                                                                (line  20)
@@@ -26534,7 -25795,7 +26598,7 @@@
                                                                (line  67)
  * debugging awk programs:                Debugger.            (line   6)
  * debugging gawk, bug reports:           Bugs.                (line   9)
- * decimal point character, locale specific: Options.          (line 247)
 -* decimal point character, locale specific: Options.          (line 240)
++* decimal point character, locale specific: Options.          (line 249)
  * decrement operators:                   Increment Ops.       (line  35)
  * default keyword:                       Switch Statement.    (line   6)
  * Deifik, Scott <1>:                     Bugs.                (line  70)
@@@ -26596,7 -25859,7 +26662,7 @@@
  * differences in awk and gawk, regular expressions: Case-sensitivity.
                                                                (line  26)
  * differences in awk and gawk, RS/RT variables: Records.      (line 167)
- * differences in awk and gawk, RT variable: Auto-set.         (line 213)
 -* differences in awk and gawk, RT variable: Auto-set.         (line 197)
++* differences in awk and gawk, RT variable: Auto-set.         (line 214)
  * differences in awk and gawk, single-character fields: Single Character 
Fields.
                                                                (line   6)
  * differences in awk and gawk, split() function: String Functions.
@@@ -26877,9 -26139,9 +26944,9 @@@
  * floating-point, numbers <1>:           Unexpected Results.  (line   6)
  * floating-point, numbers:               Basic Data Typing.   (line  21)
  * floating-point, numbers, AWKNUM internal type: Internals.   (line  19)
- * FNR variable <1>:                      Auto-set.            (line 102)
+ * FNR variable <1>:                      Auto-set.            (line 103)
  * FNR variable:                          Records.             (line   6)
- * FNR variable, changing:                Auto-set.            (line 224)
 -* FNR variable, changing:                Auto-set.            (line 208)
++* FNR variable, changing:                Auto-set.            (line 225)
  * for statement:                         For Statement.       (line   6)
  * for statement, in arrays:              Scanning an Array.   (line  20)
  * force_number() internal function:      Internals.           (line  27)
@@@ -26915,7 -26177,7 +26982,7 @@@
  * FS variable, --field-separator option and: Options.         (line  21)
  * FS variable, as null string:           Single Character Fields.
                                                                (line  20)
- * FS variable, as TAB character:         Options.             (line 243)
 -* FS variable, as TAB character:         Options.             (line 236)
++* FS variable, as TAB character:         Options.             (line 245)
  * FS variable, changing value of:        Field Separators.    (line  34)
  * FS variable, running awk programs and: Cut Program.         (line  68)
  * FS variable, setting from command line: Command Line Field Separator.
@@@ -27001,7 -26263,7 +27068,7 @@@
                                                                (line 139)
  * gawk, ERRNO variable in:               Getline.             (line  19)
  * gawk, escape sequences:                Escape Sequences.    (line 125)
- * gawk, extensions, disabling:           Options.             (line 231)
 -* gawk, extensions, disabling:           Options.             (line 224)
++* gawk, extensions, disabling:           Options.             (line 233)
  * gawk, features, adding:                Adding Code.         (line   6)
  * gawk, features, advanced:              Advanced Features.   (line   6)
  * gawk, fflush() function in:            I/O Functions.       (line  44)
@@@ -27053,8 -26315,8 +27120,8 @@@
                                                                (line  26)
  * gawk, regular expressions, operators:  GNU Regexp Operators.
                                                                (line   6)
 -* gawk, regular expressions, precedence: Regexp Operators.    (line 157)
 -* gawk, RT variable in <1>:              Auto-set.            (line 197)
 +* gawk, regular expressions, precedence: Regexp Operators.    (line 161)
- * gawk, RT variable in <1>:              Auto-set.            (line 213)
++* gawk, RT variable in <1>:              Auto-set.            (line 214)
  * gawk, RT variable in <2>:              Getline/Variable/File.
                                                                (line  10)
  * gawk, RT variable in <3>:              Multiple Line.       (line 129)
@@@ -27063,10 -26325,10 +27130,10 @@@
  * gawk, source code, obtaining:          Getting.             (line   6)
  * gawk, splitting fields and:            Constant Size.       (line  87)
  * gawk, string-translation functions:    I18N Functions.      (line   6)
 -* gawk, TEXTDOMAIN variable in:          User-modified.       (line 153)
 +* gawk, TEXTDOMAIN variable in:          User-modified.       (line 162)
  * gawk, timestamps:                      Time Functions.      (line   6)
  * gawk, uses for:                        Preface.             (line  36)
- * gawk, versions of, information about, printing: Options.    (line 277)
 -* gawk, versions of, information about, printing: Options.    (line 270)
++* gawk, versions of, information about, printing: Options.    (line 279)
  * gawk, VMS version of:                  VMS Installation.    (line   6)
  * gawk, word-boundary operator:          GNU Regexp Operators.
                                                                (line  63)
@@@ -27159,7 -26419,7 +27226,7 @@@
  * help debugger command:                 Miscellaneous Debugger Commands.
                                                                (line  68)
  * hexadecimal numbers:                   Nondecimal-numbers.  (line   6)
- * hexadecimal values, enabling interpretation of: Options.    (line 191)
 -* hexadecimal values, enabling interpretation of: Options.    (line 184)
++* hexadecimal values, enabling interpretation of: Options.    (line 193)
  * histsort.awk program:                  History Sorting.     (line  25)
  * Hughes, Phil:                          Acknowledgments.     (line  43)
  * HUP signal:                            Profiling.           (line 203)
@@@ -27388,9 -26640,9 +27456,9 @@@
  * lint checking, array subscripts:       Uninitialized Subscripts.
                                                                (line  43)
  * lint checking, empty programs:         Command Line.        (line  16)
- * lint checking, issuing warnings:       Options.             (line 166)
 -* lint checking, issuing warnings:       Options.             (line 165)
++* lint checking, issuing warnings:       Options.             (line 168)
  * lint checking, POSIXLY_CORRECT environment variable: Options.
-                                                               (line 316)
 -                                                              (line 309)
++                                                              (line 318)
  * lint checking, undefined functions:    Pass By Value/Reference.
                                                                (line  88)
  * LINT variable:                         User-modified.       (line  98)
@@@ -27400,10 -26652,10 +27468,10 @@@
  * list debugger command:                 Miscellaneous Debugger Commands.
                                                                (line  74)
  * loading extension:                     Loading Extensions.  (line   6)
 -* loading, library:                      Options.             (line 156)
 +* loading, library:                      Options.             (line 159)
  * local variables:                       Variable Scope.      (line   6)
  * locale categories:                     Explaining gettext.  (line  80)
- * locale decimal point character:        Options.             (line 247)
 -* locale decimal point character:        Options.             (line 240)
++* locale decimal point character:        Options.             (line 249)
  * locale, definition of:                 Locales.             (line   6)
  * localization:                          I18N and L10N.       (line   6)
  * localization, See internationalization, localization: I18N and L10N.
@@@ -27475,7 -26723,7 +27543,7 @@@
  * networks, programming:                 TCP/IP Networking.   (line   6)
  * networks, support for:                 Special Network.     (line   6)
  * newlines <1>:                          Boolean Ops.         (line  67)
- * newlines <2>:                          Options.             (line 237)
 -* newlines <2>:                          Options.             (line 230)
++* newlines <2>:                          Options.             (line 239)
  * newlines:                              Statements/Lines.    (line   6)
  * newlines, as field separators:         Default Field Splitting.
                                                                (line   6)
@@@ -27512,9 -26760,9 +27580,9 @@@
  * NODE internal type:                    Internals.           (line  23)
  * nodes, duplicating:                    Internals.           (line  87)
  * 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 224)
 -* NR variable, changing:                 Auto-set.            (line 208)
++* NR variable, changing:                 Auto-set.            (line 225)
  * null strings <1>:                      Basic Data Typing.   (line  50)
  * null strings <2>:                      Truth Values.        (line   6)
  * null strings <3>:                      Regexp Field Splitting.
@@@ -27555,7 -26803,7 +27623,7 @@@
  * oawk utility:                          Names.               (line  17)
  * obsolete features:                     Obsolete.            (line   6)
  * octal numbers:                         Nondecimal-numbers.  (line   6)
- * octal values, enabling interpretation of: Options.          (line 191)
 -* octal values, enabling interpretation of: Options.          (line 184)
++* octal values, enabling interpretation of: Options.          (line 193)
  * OFMT variable <1>:                     User-modified.       (line 115)
  * OFMT variable <2>:                     Conversion.          (line  55)
  * OFMT variable:                         OFMT.                (line  15)
@@@ -27700,7 -26948,7 +27768,7 @@@
  * portability, NF variable, decrementing: Changing Fields.    (line 115)
  * portability, operators:                Increment Ops.       (line  61)
  * portability, operators, not in POSIX awk: Precedence.       (line  98)
- * portability, POSIXLY_CORRECT environment variable: Options. (line 337)
 -* portability, POSIXLY_CORRECT environment variable: Options. (line 330)
++* portability, POSIXLY_CORRECT environment variable: Options. (line 339)
  * portability, substr() function:        String Functions.    (line 512)
  * portable object files <1>:             Translator i18n.     (line   6)
  * portable object files:                 Explaining gettext.  (line  36)
@@@ -27747,19 -26995,17 +27815,19 @@@
  * POSIX awk, OFMT variable and:          OFMT.                (line  27)
  * POSIX awk, period (.), using:          Regexp Operators.    (line  50)
  * POSIX awk, printf format strings and:  Format Modifiers.    (line 159)
 -* POSIX awk, regular expressions and:    Regexp Operators.    (line 157)
 +* POSIX awk, regular expressions and:    Regexp Operators.    (line 161)
  * POSIX awk, timestamps and:             Time Functions.      (line   6)
  * POSIX awk, | I/O operator and:         Getline/Pipe.        (line  52)
- * POSIX mode:                            Options.             (line 231)
 -* POSIX mode:                            Options.             (line 224)
++* POSIX mode:                            Options.             (line 233)
  * POSIX, awk and:                        Preface.             (line  23)
  * POSIX, gawk extensions not included in: POSIX/GNU.          (line   6)
  * POSIX, programs, implementing in awk:  Clones.              (line   6)
- * POSIXLY_CORRECT environment variable:  Options.             (line 316)
 -* POSIXLY_CORRECT environment variable:  Options.             (line 309)
++* POSIXLY_CORRECT environment variable:  Options.             (line 318)
 +* PREC variable <1>:                     Setting Precision.   (line   6)
 +* PREC variable:                         User-modified.       (line 134)
  * precedence <1>:                        Precedence.          (line   6)
  * precedence:                            Increment Ops.       (line  61)
 -* precedence, regexp operators:          Regexp Operators.    (line 152)
 +* precedence, regexp operators:          Regexp Operators.    (line 156)
  * print debugger command:                Viewing And Changing Data.
                                                                (line  36)
  * print statement:                       Printing.            (line  16)
@@@ -27913,7 -27159,7 +27981,7 @@@
                                                                (line  59)
  * regular expressions, gawk, command-line options: GNU Regexp Operators.
                                                                (line  70)
- * regular expressions, interval expressions and: Options.     (line 256)
 -* regular expressions, interval expressions and: Options.     (line 249)
++* regular expressions, interval expressions and: Options.     (line 258)
  * regular expressions, leftmost longest match: Leftmost Longest.
                                                                (line   6)
  * regular expressions, operators <1>:    Regexp Operators.    (line   6)
@@@ -27947,7 -27193,7 +28015,7 @@@
  * right angle bracket (>), >> operator (I/O): Redirection.    (line  50)
  * right shift, bitwise:                  Bitwise Functions.   (line  32)
  * Ritchie, Dennis:                       Basic Data Typing.   (line  74)
- * RLENGTH variable:                      Auto-set.            (line 200)
 -* RLENGTH variable:                      Auto-set.            (line 184)
++* RLENGTH variable:                      Auto-set.            (line 201)
  * RLENGTH variable, match() function and: String Functions.   (line 223)
  * Robbins, Arnold <1>:                   Future Extensions.   (line   6)
  * Robbins, Arnold <2>:                   Bugs.                (line  32)
@@@ -27976,9 -27218,9 +28044,9 @@@
  * RS variable:                           Records.             (line  20)
  * RS variable, multiline records and:    Multiple Line.       (line  17)
  * rshift() function (gawk):              Bitwise Functions.   (line  51)
- * RSTART variable:                       Auto-set.            (line 206)
 -* RSTART variable:                       Auto-set.            (line 190)
++* RSTART variable:                       Auto-set.            (line 207)
  * RSTART variable, match() function and: String Functions.    (line 223)
- * RT variable <1>:                       Auto-set.            (line 213)
 -* RT variable <1>:                       Auto-set.            (line 197)
++* RT variable <1>:                       Auto-set.            (line 214)
  * RT variable <2>:                       Getline/Variable/File.
                                                                (line  10)
  * RT variable <3>:                       Multiple Line.       (line 129)
@@@ -27991,7 -27233,7 +28059,7 @@@
  * rvalues/lvalues:                       Assignment Ops.      (line  32)
  * s debugger command (alias for step):   Debugger Execution Control.
                                                                (line  68)
- * sandbox mode:                          Options.             (line 263)
 -* sandbox mode:                          Options.             (line 256)
++* sandbox mode:                          Options.             (line 265)
  * scalar values:                         Basic Data Typing.   (line  13)
  * Schorr, Andrew:                        Acknowledgments.     (line  60)
  * Schreiber, Bert:                       Acknowledgments.     (line  38)
@@@ -28227,7 -27471,7 +28297,7 @@@
  * trace debugger command:                Miscellaneous Debugger Commands.
                                                                (line 110)
  * translate.awk program:                 Translate Program.   (line  55)
- * troubleshooting, --non-decimal-data option: Options.        (line 191)
 -* troubleshooting, --non-decimal-data option: Options.        (line 184)
++* troubleshooting, --non-decimal-data option: Options.        (line 193)
  * troubleshooting, == operator:          Comparison Operators.
                                                                (line  37)
  * troubleshooting, awk uses FS not IFS:  Field Separators.    (line  29)
@@@ -28360,7 -27605,7 +28431,7 @@@
  * Wall, Larry <1>:                       Future Extensions.   (line   6)
  * Wall, Larry:                           Array Intro.         (line   6)
  * Wallin, Anders:                        Acknowledgments.     (line  60)
- * warnings, issuing:                     Options.             (line 166)
 -* warnings, issuing:                     Options.             (line 165)
++* warnings, issuing:                     Options.             (line 168)
  * watch debugger command:                Viewing And Changing Data.
                                                                (line  67)
  * wc utility:                            Wc Program.          (line   6)
@@@ -28372,7 -27617,7 +28443,7 @@@
  * whitespace, as field separators:       Default Field Splitting.
                                                                (line   6)
  * whitespace, functions, calling:        Calling Built-in.    (line  10)
- * whitespace, newlines as:               Options.             (line 237)
 -* whitespace, newlines as:               Options.             (line 230)
++* whitespace, newlines as:               Options.             (line 239)
  * Williams, Kent:                        Contributors.        (line  35)
  * Woehlke, Matthew:                      Contributors.        (line  79)
  * Woods, John:                           Contributors.        (line  28)
@@@ -28427,441 -27672,422 +28498,443 @@@
  
  
  Tag Table:
 -Node: Top1346
 -Node: Foreword30610
 -Node: Preface34955
 -Ref: Preface-Footnote-138008
 -Ref: Preface-Footnote-238114
 -Node: History38346
 -Node: Names40737
 -Ref: Names-Footnote-142214
 -Node: This Manual42286
 -Ref: This Manual-Footnote-147224
 -Node: Conventions47324
 -Node: Manual History49458
 -Ref: Manual History-Footnote-152728
 -Ref: Manual History-Footnote-252769
 -Node: How To Contribute52843
 -Node: Acknowledgments53987
 -Node: Getting Started58318
 -Node: Running gawk60697
 -Node: One-shot61883
 -Node: Read Terminal63108
 -Ref: Read Terminal-Footnote-164758
 -Ref: Read Terminal-Footnote-265034
 -Node: Long65205
 -Node: Executable Scripts66581
 -Ref: Executable Scripts-Footnote-168450
 -Ref: Executable Scripts-Footnote-268552
 -Node: Comments69003
 -Node: Quoting71470
 -Node: DOS Quoting76093
 -Node: Sample Data Files76768
 -Node: Very Simple79800
 -Node: Two Rules84399
 -Node: More Complex86546
 -Ref: More Complex-Footnote-189476
 -Node: Statements/Lines89561
 -Ref: Statements/Lines-Footnote-194023
 -Node: Other Features94288
 -Node: When95216
 -Node: Invoking Gawk97363
 -Node: Command Line98824
 -Node: Options99607
 -Ref: Options-Footnote-1113930
 -Node: Other Arguments113955
 -Node: Naming Standard Input116613
 -Node: Environment Variables117707
 -Node: AWKPATH Variable118265
 -Ref: AWKPATH Variable-Footnote-1120854
 -Node: AWKLIBPATH Variable121114
 -Node: Other Environment Variables121711
 -Node: Exit Status124206
 -Node: Include Files124881
 -Node: Loading Shared Libraries128382
 -Node: Obsolete129607
 -Node: Undocumented130304
 -Node: Regexp130547
 -Node: Regexp Usage131936
 -Node: Escape Sequences133962
 -Node: Regexp Operators139725
 -Ref: Regexp Operators-Footnote-1146922
 -Ref: Regexp Operators-Footnote-2147069
 -Node: Bracket Expressions147167
 -Ref: table-char-classes149057
 -Node: GNU Regexp Operators151583
 -Node: Case-sensitivity155306
 -Ref: Case-sensitivity-Footnote-1158274
 -Ref: Case-sensitivity-Footnote-2158509
 -Node: Leftmost Longest158617
 -Node: Computed Regexps159818
 -Node: Reading Files163228
 -Node: Records165232
 -Ref: Records-Footnote-1173906
 -Node: Fields173943
 -Ref: Fields-Footnote-1176976
 -Node: Nonconstant Fields177062
 -Node: Changing Fields179264
 -Node: Field Separators185245
 -Node: Default Field Splitting187874
 -Node: Regexp Field Splitting188991
 -Node: Single Character Fields192333
 -Node: Command Line Field Separator193392
 -Node: Field Splitting Summary196833
 -Ref: Field Splitting Summary-Footnote-1200025
 -Node: Constant Size200126
 -Node: Splitting By Content204710
 -Ref: Splitting By Content-Footnote-1208436
 -Node: Multiple Line208476
 -Ref: Multiple Line-Footnote-1214323
 -Node: Getline214502
 -Node: Plain Getline216718
 -Node: Getline/Variable218807
 -Node: Getline/File219948
 -Node: Getline/Variable/File221270
 -Ref: Getline/Variable/File-Footnote-1222869
 -Node: Getline/Pipe222956
 -Node: Getline/Variable/Pipe225516
 -Node: Getline/Coprocess226623
 -Node: Getline/Variable/Coprocess227866
 -Node: Getline Notes228580
 -Node: Getline Summary230522
 -Ref: table-getline-variants230865
 -Node: Read Timeout231724
 -Ref: Read Timeout-Footnote-1235469
 -Node: Command line directories235526
 -Node: Printing236156
 -Node: Print237787
 -Node: Print Examples239124
 -Node: Output Separators241908
 -Node: OFMT243668
 -Node: Printf245026
 -Node: Basic Printf245932
 -Node: Control Letters247471
 -Node: Format Modifiers251283
 -Node: Printf Examples257292
 -Node: Redirection260007
 -Node: Special Files266991
 -Node: Special FD267524
 -Ref: Special FD-Footnote-1271149
 -Node: Special Network271223
 -Node: Special Caveats272073
 -Node: Close Files And Pipes272869
 -Ref: Close Files And Pipes-Footnote-1279892
 -Ref: Close Files And Pipes-Footnote-2280040
 -Node: Expressions280190
 -Node: Values281322
 -Node: Constants281998
 -Node: Scalar Constants282678
 -Ref: Scalar Constants-Footnote-1283537
 -Node: Nondecimal-numbers283719
 -Node: Regexp Constants286778
 -Node: Using Constant Regexps287253
 -Node: Variables290308
 -Node: Using Variables290963
 -Node: Assignment Options292687
 -Node: Conversion294559
 -Ref: table-locale-affects299935
 -Ref: Conversion-Footnote-1300562
 -Node: All Operators300671
 -Node: Arithmetic Ops301301
 -Node: Concatenation303806
 -Ref: Concatenation-Footnote-1306599
 -Node: Assignment Ops306719
 -Ref: table-assign-ops311707
 -Node: Increment Ops313118
 -Node: Truth Values and Conditions316588
 -Node: Truth Values317671
 -Node: Typing and Comparison318720
 -Node: Variable Typing319509
 -Ref: Variable Typing-Footnote-1323406
 -Node: Comparison Operators323528
 -Ref: table-relational-ops323938
 -Node: POSIX String Comparison327490
 -Ref: POSIX String Comparison-Footnote-1328446
 -Node: Boolean Ops328584
 -Ref: Boolean Ops-Footnote-1332662
 -Node: Conditional Exp332753
 -Node: Function Calls334485
 -Node: Precedence338079
 -Node: Locales341748
 -Node: Patterns and Actions342837
 -Node: Pattern Overview343891
 -Node: Regexp Patterns345560
 -Node: Expression Patterns346103
 -Node: Ranges349788
 -Node: BEGIN/END352754
 -Node: Using BEGIN/END353516
 -Ref: Using BEGIN/END-Footnote-1356247
 -Node: I/O And BEGIN/END356353
 -Node: BEGINFILE/ENDFILE358635
 -Node: Empty361528
 -Node: Using Shell Variables361844
 -Node: Action Overview364129
 -Node: Statements366486
 -Node: If Statement368340
 -Node: While Statement369839
 -Node: Do Statement371883
 -Node: For Statement373039
 -Node: Switch Statement376191
 -Node: Break Statement378288
 -Node: Continue Statement380278
 -Node: Next Statement382071
 -Node: Nextfile Statement384461
 -Node: Exit Statement387006
 -Node: Built-in Variables389422
 -Node: User-modified390517
 -Ref: User-modified-Footnote-1398543
 -Node: Auto-set398605
 -Ref: Auto-set-Footnote-1407958
 -Node: ARGC and ARGV408163
 -Node: Arrays412014
 -Node: Array Basics413519
 -Node: Array Intro414345
 -Node: Reference to Elements418663
 -Node: Assigning Elements420933
 -Node: Array Example421424
 -Node: Scanning an Array423156
 -Node: Controlling Scanning425470
 -Ref: Controlling Scanning-Footnote-1430403
 -Node: Delete430719
 -Ref: Delete-Footnote-1433154
 -Node: Numeric Array Subscripts433211
 -Node: Uninitialized Subscripts435394
 -Node: Multi-dimensional437022
 -Node: Multi-scanning440116
 -Node: Arrays of Arrays441707
 -Node: Functions446352
 -Node: Built-in447174
 -Node: Calling Built-in448252
 -Node: Numeric Functions450240
 -Ref: Numeric Functions-Footnote-1454005
 -Ref: Numeric Functions-Footnote-2454362
 -Ref: Numeric Functions-Footnote-3454410
 -Node: String Functions454679
 -Ref: String Functions-Footnote-1478176
 -Ref: String Functions-Footnote-2478305
 -Ref: String Functions-Footnote-3478553
 -Node: Gory Details478640
 -Ref: table-sub-escapes480319
 -Ref: table-sub-posix-92481676
 -Ref: table-sub-proposed483022
 -Ref: table-posix-sub484375
 -Ref: table-gensub-escapes485924
 -Ref: Gory Details-Footnote-1487134
 -Ref: Gory Details-Footnote-2487185
 -Node: I/O Functions487336
 -Ref: I/O Functions-Footnote-1493991
 -Node: Time Functions494138
 -Ref: Time Functions-Footnote-1505030
 -Ref: Time Functions-Footnote-2505098
 -Ref: Time Functions-Footnote-3505256
 -Ref: Time Functions-Footnote-4505367
 -Ref: Time Functions-Footnote-5505479
 -Ref: Time Functions-Footnote-6505706
 -Node: Bitwise Functions505972
 -Ref: table-bitwise-ops506530
 -Ref: Bitwise Functions-Footnote-1510693
 -Node: Type Functions510877
 -Node: I18N Functions511347
 -Node: User-defined512974
 -Node: Definition Syntax513778
 -Ref: Definition Syntax-Footnote-1518688
 -Node: Function Example518757
 -Node: Function Caveats521351
 -Node: Calling A Function521772
 -Node: Variable Scope522887
 -Node: Pass By Value/Reference524862
 -Node: Return Statement528302
 -Node: Dynamic Typing531283
 -Node: Indirect Calls532018
 -Node: Internationalization541703
 -Node: I18N and L10N543129
 -Node: Explaining gettext543815
 -Ref: Explaining gettext-Footnote-1548881
 -Ref: Explaining gettext-Footnote-2549065
 -Node: Programmer i18n549230
 -Node: Translator i18n553430
 -Node: String Extraction554223
 -Ref: String Extraction-Footnote-1555184
 -Node: Printf Ordering555270
 -Ref: Printf Ordering-Footnote-1558054
 -Node: I18N Portability558118
 -Ref: I18N Portability-Footnote-1560567
 -Node: I18N Example560630
 -Ref: I18N Example-Footnote-1563265
 -Node: Gawk I18N563337
 -Node: Advanced Features563954
 -Node: Nondecimal Data565467
 -Node: Array Sorting567050
 -Node: Controlling Array Traversal567747
 -Node: Array Sorting Functions575984
 -Ref: Array Sorting Functions-Footnote-1579658
 -Ref: Array Sorting Functions-Footnote-2579751
 -Node: Two-way I/O579945
 -Ref: Two-way I/O-Footnote-1585377
 -Node: TCP/IP Networking585447
 -Node: Profiling588291
 -Node: Library Functions595745
 -Ref: Library Functions-Footnote-1598752
 -Node: Library Names598923
 -Ref: Library Names-Footnote-1602394
 -Ref: Library Names-Footnote-2602614
 -Node: General Functions602700
 -Node: Strtonum Function603653
 -Node: Assert Function606583
 -Node: Round Function609909
 -Node: Cliff Random Function611452
 -Node: Ordinal Functions612468
 -Ref: Ordinal Functions-Footnote-1615538
 -Ref: Ordinal Functions-Footnote-2615790
 -Node: Join Function615999
 -Ref: Join Function-Footnote-1617770
 -Node: Gettimeofday Function617970
 -Node: Data File Management621685
 -Node: Filetrans Function622317
 -Node: Rewind Function626456
 -Node: File Checking627843
 -Node: Empty Files628937
 -Node: Ignoring Assigns631167
 -Node: Getopt Function632720
 -Ref: Getopt Function-Footnote-1644024
 -Node: Passwd Functions644227
 -Ref: Passwd Functions-Footnote-1653202
 -Node: Group Functions653290
 -Node: Walking Arrays661374
 -Node: Sample Programs662943
 -Node: Running Examples663608
 -Node: Clones664336
 -Node: Cut Program665560
 -Node: Egrep Program675405
 -Ref: Egrep Program-Footnote-1683178
 -Node: Id Program683288
 -Node: Split Program686904
 -Ref: Split Program-Footnote-1690423
 -Node: Tee Program690551
 -Node: Uniq Program693354
 -Node: Wc Program700783
 -Ref: Wc Program-Footnote-1705049
 -Ref: Wc Program-Footnote-2705249
 -Node: Miscellaneous Programs705341
 -Node: Dupword Program706529
 -Node: Alarm Program708560
 -Node: Translate Program713309
 -Ref: Translate Program-Footnote-1717696
 -Ref: Translate Program-Footnote-2717924
 -Node: Labels Program718058
 -Ref: Labels Program-Footnote-1721429
 -Node: Word Sorting721513
 -Node: History Sorting725397
 -Node: Extract Program727236
 -Ref: Extract Program-Footnote-1734719
 -Node: Simple Sed734847
 -Node: Igawk Program737909
 -Ref: Igawk Program-Footnote-1753066
 -Ref: Igawk Program-Footnote-2753267
 -Node: Anagram Program753405
 -Node: Signature Program756473
 -Node: Debugger757573
 -Node: Debugging758525
 -Node: Debugging Concepts758958
 -Node: Debugging Terms760814
 -Node: Awk Debugging763411
 -Node: Sample Debugging Session764303
 -Node: Debugger Invocation764823
 -Node: Finding The Bug766152
 -Node: List of Debugger Commands772640
 -Node: Breakpoint Control773974
 -Node: Debugger Execution Control777638
 -Node: Viewing And Changing Data780998
 -Node: Execution Stack784354
 -Node: Debugger Info785821
 -Node: Miscellaneous Debugger Commands789802
 -Node: Readline Support795247
 -Node: Limitations796078
 -Node: Language History798330
 -Node: V7/SVR3.1799842
 -Node: SVR4802163
 -Node: POSIX803605
 -Node: BTL804613
 -Node: POSIX/GNU805347
 -Node: Common Extensions810638
 -Node: Ranges and Locales811745
 -Ref: Ranges and Locales-Footnote-1816349
 -Node: Contributors816570
 -Node: Installation820831
 -Node: Gawk Distribution821725
 -Node: Getting822209
 -Node: Extracting823035
 -Node: Distribution contents824727
 -Node: Unix Installation829949
 -Node: Quick Installation830566
 -Node: Additional Configuration Options832528
 -Node: Configuration Philosophy834005
 -Node: Non-Unix Installation836347
 -Node: PC Installation836805
 -Node: PC Binary Installation838104
 -Node: PC Compiling839952
 -Node: PC Testing842896
 -Node: PC Using844072
 -Node: Cygwin848257
 -Node: MSYS849257
 -Node: VMS Installation849771
 -Node: VMS Compilation850374
 -Ref: VMS Compilation-Footnote-1851381
 -Node: VMS Installation Details851439
 -Node: VMS Running853074
 -Node: VMS Old Gawk854681
 -Node: Bugs855155
 -Node: Other Versions859007
 -Node: Notes864322
 -Node: Compatibility Mode865014
 -Node: Additions865797
 -Node: Accessing The Source866609
 -Node: Adding Code868034
 -Node: New Ports874001
 -Node: Dynamic Extensions878114
 -Node: Internals879554
 -Node: Plugin License888376
 -Node: Loading Extensions889014
 -Node: Sample Library890853
 -Node: Internal File Description891543
 -Node: Internal File Ops895258
 -Ref: Internal File Ops-Footnote-1900000
 -Node: Using Internal File Ops900140
 -Node: Future Extensions902517
 -Node: Basic Concepts905021
 -Node: Basic High Level905778
 -Ref: Basic High Level-Footnote-1909813
 -Node: Basic Data Typing909998
 -Node: Floating Point Issues914523
 -Node: String Conversion Precision915606
 -Ref: String Conversion Precision-Footnote-1917306
 -Node: Unexpected Results917415
 -Node: POSIX Floating Point Problems919241
 -Ref: POSIX Floating Point Problems-Footnote-1922946
 -Node: Glossary922984
 -Node: Copying947960
 -Node: GNU Free Documentation License985517
 -Node: Index1010654
 +Node: Top1352
- Node: Foreword31559
- Node: Preface35904
- Ref: Preface-Footnote-138957
- Ref: Preface-Footnote-239063
- Node: History39295
- Node: Names41686
- Ref: Names-Footnote-143163
- Node: This Manual43235
- Ref: This Manual-Footnote-148173
- Node: Conventions48273
- Node: Manual History50407
- Ref: Manual History-Footnote-153677
- Ref: Manual History-Footnote-253718
- Node: How To Contribute53792
- Node: Acknowledgments54936
- Node: Getting Started59432
- Node: Running gawk61811
- Node: One-shot62997
- Node: Read Terminal64222
- Ref: Read Terminal-Footnote-165872
- Ref: Read Terminal-Footnote-266148
- Node: Long66319
- Node: Executable Scripts67695
- Ref: Executable Scripts-Footnote-169564
- Ref: Executable Scripts-Footnote-269666
- Node: Comments70213
- Node: Quoting72680
- Node: DOS Quoting77303
- Node: Sample Data Files77978
- Node: Very Simple81010
- Node: Two Rules85609
- Node: More Complex87756
- Ref: More Complex-Footnote-190686
- Node: Statements/Lines90771
- Ref: Statements/Lines-Footnote-195233
- Node: Other Features95498
- Node: When96426
- Node: Invoking Gawk98573
- Node: Command Line99958
- Node: Options100741
- Ref: Options-Footnote-1115205
- Node: Other Arguments115230
- Node: Naming Standard Input117888
- Node: Environment Variables118982
- Node: AWKPATH Variable119426
- Ref: AWKPATH Variable-Footnote-1122023
- Node: Other Environment Variables122283
- Node: Exit Status124775
- Node: Include Files125450
- Node: Obsolete128935
- Node: Undocumented129621
- Node: Regexp129862
- Node: Regexp Usage131251
- Node: Escape Sequences133277
- Node: Regexp Operators139040
- Ref: Regexp Operators-Footnote-1146420
- Ref: Regexp Operators-Footnote-2146567
- Node: Bracket Expressions146665
- Ref: table-char-classes148555
- Node: GNU Regexp Operators151078
- Node: Case-sensitivity154801
- Ref: Case-sensitivity-Footnote-1157769
- Ref: Case-sensitivity-Footnote-2158004
- Node: Leftmost Longest158112
- Node: Computed Regexps159313
- Node: Reading Files162723
- Node: Records164727
- Ref: Records-Footnote-1173401
- Node: Fields173438
- Ref: Fields-Footnote-1176471
- Node: Nonconstant Fields176557
- Node: Changing Fields178759
- Node: Field Separators184740
- Node: Default Field Splitting187369
- Node: Regexp Field Splitting188486
- Node: Single Character Fields191828
- Node: Command Line Field Separator192887
- Node: Field Splitting Summary196328
- Ref: Field Splitting Summary-Footnote-1199520
- Node: Constant Size199621
- Node: Splitting By Content204205
- Ref: Splitting By Content-Footnote-1207931
- Node: Multiple Line207971
- Ref: Multiple Line-Footnote-1213818
- Node: Getline213997
- Node: Plain Getline216213
- Node: Getline/Variable218302
- Node: Getline/File219443
- Node: Getline/Variable/File220765
- Ref: Getline/Variable/File-Footnote-1222364
- Node: Getline/Pipe222451
- Node: Getline/Variable/Pipe225011
- Node: Getline/Coprocess226118
- Node: Getline/Variable/Coprocess227361
- Node: Getline Notes228075
- Node: Getline Summary230017
- Ref: table-getline-variants230360
- Node: Read Timeout231216
- Ref: Read Timeout-Footnote-1234961
- Node: Command line directories235018
- Node: Printing235648
- Node: Print237279
- Node: Print Examples238616
- Node: Output Separators241400
- Node: OFMT243160
- Node: Printf244518
- Node: Basic Printf245424
- Node: Control Letters246963
- Node: Format Modifiers250775
- Node: Printf Examples256784
- Node: Redirection259499
- Node: Special Files266483
- Node: Special FD267016
- Ref: Special FD-Footnote-1270641
- Node: Special Network270715
- Node: Special Caveats271565
- Node: Close Files And Pipes272361
- Ref: Close Files And Pipes-Footnote-1279384
- Ref: Close Files And Pipes-Footnote-2279532
- Node: Expressions279682
- Node: Values280814
- Node: Constants281490
- Node: Scalar Constants282170
- Ref: Scalar Constants-Footnote-1283029
- Node: Nondecimal-numbers283211
- Node: Regexp Constants286270
- Node: Using Constant Regexps286745
- Node: Variables289800
- Node: Using Variables290455
- Node: Assignment Options292179
- Node: Conversion294051
- Ref: table-locale-affects299427
- Ref: Conversion-Footnote-1300051
- Node: All Operators300160
- Node: Arithmetic Ops300790
- Node: Concatenation303295
- Ref: Concatenation-Footnote-1306088
- Node: Assignment Ops306208
- Ref: table-assign-ops311196
- Node: Increment Ops312604
- Node: Truth Values and Conditions316074
- Node: Truth Values317157
- Node: Typing and Comparison318206
- Node: Variable Typing318995
- Ref: Variable Typing-Footnote-1322892
- Node: Comparison Operators323014
- Ref: table-relational-ops323424
- Node: POSIX String Comparison326973
- Ref: POSIX String Comparison-Footnote-1327929
- Node: Boolean Ops328067
- Ref: Boolean Ops-Footnote-1332145
- Node: Conditional Exp332236
- Node: Function Calls333968
- Node: Precedence337562
- Node: Locales341231
- Node: Patterns and Actions342320
- Node: Pattern Overview343374
- Node: Regexp Patterns345043
- Node: Expression Patterns345586
- Node: Ranges349271
- Node: BEGIN/END352237
- Node: Using BEGIN/END352999
- Ref: Using BEGIN/END-Footnote-1355730
- Node: I/O And BEGIN/END355836
- Node: BEGINFILE/ENDFILE358118
- Node: Empty361011
- Node: Using Shell Variables361327
- Node: Action Overview363612
- Node: Statements365969
- Node: If Statement367823
- Node: While Statement369322
- Node: Do Statement371366
- Node: For Statement372522
- Node: Switch Statement375674
- Node: Break Statement377771
- Node: Continue Statement379761
- Node: Next Statement381554
- Node: Nextfile Statement383944
- Node: Exit Statement386489
- Node: Built-in Variables388905
- Node: User-modified390000
- Ref: User-modified-Footnote-1398355
- Node: Auto-set398417
- Ref: Auto-set-Footnote-1408263
- Node: ARGC and ARGV408468
- Node: Arrays412319
- Node: Array Basics413824
- Node: Array Intro414650
- Node: Reference to Elements418968
- Node: Assigning Elements421238
- Node: Array Example421729
- Node: Scanning an Array423461
- Node: Controlling Scanning425775
- Ref: Controlling Scanning-Footnote-1430708
- Node: Delete431024
- Ref: Delete-Footnote-1433459
- Node: Numeric Array Subscripts433516
- Node: Uninitialized Subscripts435699
- Node: Multi-dimensional437327
- Node: Multi-scanning440421
- Node: Arrays of Arrays442012
- Node: Functions446657
- Node: Built-in447479
- Node: Calling Built-in448557
- Node: Numeric Functions450545
- Ref: Numeric Functions-Footnote-1454377
- Ref: Numeric Functions-Footnote-2454734
- Ref: Numeric Functions-Footnote-3454782
- Node: String Functions455051
- Ref: String Functions-Footnote-1478548
- Ref: String Functions-Footnote-2478677
- Ref: String Functions-Footnote-3478925
- Node: Gory Details479012
- Ref: table-sub-escapes480691
- Ref: table-sub-posix-92482045
- Ref: table-sub-proposed483388
- Ref: table-posix-sub484738
- Ref: table-gensub-escapes486284
- Ref: Gory Details-Footnote-1487491
- Ref: Gory Details-Footnote-2487542
- Node: I/O Functions487693
- Ref: I/O Functions-Footnote-1494348
- Node: Time Functions494495
- Ref: Time Functions-Footnote-1505387
- Ref: Time Functions-Footnote-2505455
- Ref: Time Functions-Footnote-3505613
- Ref: Time Functions-Footnote-4505724
- Ref: Time Functions-Footnote-5505836
- Ref: Time Functions-Footnote-6506063
- Node: Bitwise Functions506329
- Ref: table-bitwise-ops506887
- Ref: Bitwise Functions-Footnote-1511047
- Node: Type Functions511231
- Node: I18N Functions511701
- Node: User-defined513328
- Node: Definition Syntax514132
- Ref: Definition Syntax-Footnote-1519042
- Node: Function Example519111
- Node: Function Caveats521705
- Node: Calling A Function522126
- Node: Variable Scope523241
- Node: Pass By Value/Reference525216
- Node: Return Statement528656
- Node: Dynamic Typing531637
- Node: Indirect Calls532372
- Node: Internationalization542057
- Node: I18N and L10N543496
- Node: Explaining gettext544182
- Ref: Explaining gettext-Footnote-1549248
- Ref: Explaining gettext-Footnote-2549432
- Node: Programmer i18n549597
- Node: Translator i18n553797
- Node: String Extraction554590
- Ref: String Extraction-Footnote-1555551
- Node: Printf Ordering555637
- Ref: Printf Ordering-Footnote-1558421
- Node: I18N Portability558485
- Ref: I18N Portability-Footnote-1560934
- Node: I18N Example560997
- Ref: I18N Example-Footnote-1563632
- Node: Gawk I18N563704
- Node: Arbitrary Precision Arithmetic564321
- Ref: Arbitrary Precision Arithmetic-Footnote-1567196
- Node: Floating-point Programming567344
- Node: Floating-point Representation572614
- Node: Floating-point Context573718
- Ref: table-ieee-formats574553
- Node: Rounding Mode575923
- Ref: table-rounding-modes576550
- Ref: Rounding Mode-Footnote-1579673
- Node: Arbitrary Precision Floats579854
- Ref: Arbitrary Precision Floats-Footnote-1581895
- Node: Setting Precision582206
- Node: Setting Rounding Mode584964
- Node: Floating-point Constants585881
- Node: Changing Precision587300
- Ref: Changing Precision-Footnote-1588700
- Node: Exact Arithmetic588873
- Node: Integer Programming591886
- Node: Arbitrary Precision Integers593666
- Ref: Arbitrary Precision Integers-Footnote-1596690
- Node: MPFR and GMP Libraries596836
- Node: Advanced Features597221
- Node: Nondecimal Data598744
- Node: Array Sorting600327
- Node: Controlling Array Traversal601024
- Node: Array Sorting Functions609261
- Ref: Array Sorting Functions-Footnote-1612935
- Ref: Array Sorting Functions-Footnote-2613028
- Node: Two-way I/O613222
- Ref: Two-way I/O-Footnote-1618654
- Node: TCP/IP Networking618724
- Node: Profiling621568
- Node: Library Functions629022
- Ref: Library Functions-Footnote-1632029
- Node: Library Names632200
- Ref: Library Names-Footnote-1635671
- Ref: Library Names-Footnote-2635891
- Node: General Functions635977
- Node: Strtonum Function636930
- Node: Assert Function639860
- Node: Round Function643186
- Node: Cliff Random Function644729
- Node: Ordinal Functions645745
- Ref: Ordinal Functions-Footnote-1648815
- Ref: Ordinal Functions-Footnote-2649067
- Node: Join Function649276
- Ref: Join Function-Footnote-1651047
- Node: Gettimeofday Function651247
- Node: Data File Management654962
- Node: Filetrans Function655594
- Node: Rewind Function659733
- Node: File Checking661120
- Node: Empty Files662214
- Node: Ignoring Assigns664444
- Node: Getopt Function665997
- Ref: Getopt Function-Footnote-1677301
- Node: Passwd Functions677504
- Ref: Passwd Functions-Footnote-1686479
- Node: Group Functions686567
- Node: Walking Arrays694651
- Node: Sample Programs696220
- Node: Running Examples696885
- Node: Clones697613
- Node: Cut Program698837
- Node: Egrep Program708682
- Ref: Egrep Program-Footnote-1716455
- Node: Id Program716565
- Node: Split Program720181
- Ref: Split Program-Footnote-1723700
- Node: Tee Program723828
- Node: Uniq Program726631
- Node: Wc Program734060
- Ref: Wc Program-Footnote-1738326
- Ref: Wc Program-Footnote-2738526
- Node: Miscellaneous Programs738618
- Node: Dupword Program739806
- Node: Alarm Program741837
- Node: Translate Program746586
- Ref: Translate Program-Footnote-1750973
- Ref: Translate Program-Footnote-2751201
- Node: Labels Program751335
- Ref: Labels Program-Footnote-1754706
- Node: Word Sorting754790
- Node: History Sorting758674
- Node: Extract Program760513
- Ref: Extract Program-Footnote-1767996
- Node: Simple Sed768124
- Node: Igawk Program771186
- Ref: Igawk Program-Footnote-1786343
- Ref: Igawk Program-Footnote-2786544
- Node: Anagram Program786682
- Node: Signature Program789750
- Node: Debugger790850
- Node: Debugging791802
- Node: Debugging Concepts792235
- Node: Debugging Terms794091
- Node: Awk Debugging796688
- Node: Sample Debugging Session797580
- Node: Debugger Invocation798100
- Node: Finding The Bug799429
- Node: List of Debugger Commands805917
- Node: Breakpoint Control807251
- Node: Debugger Execution Control810915
- Node: Viewing And Changing Data814275
- Node: Execution Stack817631
- Node: Debugger Info819098
- Node: Miscellaneous Debugger Commands823079
- Node: Readline Support828524
- Node: Limitations829355
- Node: Language History831607
- Node: V7/SVR3.1833119
- Node: SVR4835440
- Node: POSIX836882
- Node: BTL837890
- Node: POSIX/GNU838624
- Node: Common Extensions843775
- Node: Ranges and Locales844882
- Ref: Ranges and Locales-Footnote-1849486
- Node: Contributors849707
- Node: Installation853968
- Node: Gawk Distribution854862
- Node: Getting855346
- Node: Extracting856172
- Node: Distribution contents857864
- Node: Unix Installation863086
- Node: Quick Installation863703
- Node: Additional Configuration Options865665
- Node: Configuration Philosophy867142
- Node: Non-Unix Installation869484
- Node: PC Installation869942
- Node: PC Binary Installation871241
- Node: PC Compiling873089
- Node: PC Testing876033
- Node: PC Using877209
- Node: Cygwin881394
- Node: MSYS882394
- Node: VMS Installation882908
- Node: VMS Compilation883511
- Ref: VMS Compilation-Footnote-1884518
- Node: VMS Installation Details884576
- Node: VMS Running886211
- Node: VMS Old Gawk887818
- Node: Bugs888292
- Node: Other Versions892144
- Node: Notes897459
- Node: Compatibility Mode898151
- Node: Additions898934
- Node: Accessing The Source899746
- Node: Adding Code901171
- Node: New Ports907138
- Node: Dynamic Extensions911251
- Node: Internals912691
- Node: Plugin License921210
- Node: Loading Extensions921848
- Node: Sample Library923658
- Node: Internal File Description924348
- Node: Internal File Ops928063
- Ref: Internal File Ops-Footnote-1932787
- Node: Using Internal File Ops932927
- Node: Future Extensions935304
- Node: Basic Concepts937808
- Node: Basic High Level938565
- Ref: Basic High Level-Footnote-1942600
- Node: Basic Data Typing942785
- Node: Floating Point Issues947310
- Node: String Conversion Precision948393
- Ref: String Conversion Precision-Footnote-1950093
- Node: Unexpected Results950202
- Node: POSIX Floating Point Problems952028
- Ref: POSIX Floating Point Problems-Footnote-1955733
- Node: Glossary955771
- Node: Copying980747
- Node: GNU Free Documentation License1018304
- Node: Index1043441
++Node: Foreword31758
++Node: Preface36103
++Ref: Preface-Footnote-139156
++Ref: Preface-Footnote-239262
++Node: History39494
++Node: Names41885
++Ref: Names-Footnote-143362
++Node: This Manual43434
++Ref: This Manual-Footnote-148372
++Node: Conventions48472
++Node: Manual History50606
++Ref: Manual History-Footnote-153876
++Ref: Manual History-Footnote-253917
++Node: How To Contribute53991
++Node: Acknowledgments55135
++Node: Getting Started59631
++Node: Running gawk62010
++Node: One-shot63196
++Node: Read Terminal64421
++Ref: Read Terminal-Footnote-166071
++Ref: Read Terminal-Footnote-266347
++Node: Long66518
++Node: Executable Scripts67894
++Ref: Executable Scripts-Footnote-169763
++Ref: Executable Scripts-Footnote-269865
++Node: Comments70412
++Node: Quoting72879
++Node: DOS Quoting77502
++Node: Sample Data Files78177
++Node: Very Simple81209
++Node: Two Rules85808
++Node: More Complex87955
++Ref: More Complex-Footnote-190885
++Node: Statements/Lines90970
++Ref: Statements/Lines-Footnote-195432
++Node: Other Features95697
++Node: When96625
++Node: Invoking Gawk98772
++Node: Command Line100233
++Node: Options101016
++Ref: Options-Footnote-1115658
++Node: Other Arguments115683
++Node: Naming Standard Input118341
++Node: Environment Variables119435
++Node: AWKPATH Variable119993
++Ref: AWKPATH Variable-Footnote-1122582
++Node: AWKLIBPATH Variable122842
++Node: Other Environment Variables123439
++Node: Exit Status125934
++Node: Include Files126609
++Node: Loading Shared Libraries130110
++Node: Obsolete131335
++Node: Undocumented132032
++Node: Regexp132275
++Node: Regexp Usage133664
++Node: Escape Sequences135690
++Node: Regexp Operators141453
++Ref: Regexp Operators-Footnote-1148833
++Ref: Regexp Operators-Footnote-2148980
++Node: Bracket Expressions149078
++Ref: table-char-classes150968
++Node: GNU Regexp Operators153491
++Node: Case-sensitivity157214
++Ref: Case-sensitivity-Footnote-1160182
++Ref: Case-sensitivity-Footnote-2160417
++Node: Leftmost Longest160525
++Node: Computed Regexps161726
++Node: Reading Files165136
++Node: Records167140
++Ref: Records-Footnote-1175814
++Node: Fields175851
++Ref: Fields-Footnote-1178884
++Node: Nonconstant Fields178970
++Node: Changing Fields181172
++Node: Field Separators187153
++Node: Default Field Splitting189782
++Node: Regexp Field Splitting190899
++Node: Single Character Fields194241
++Node: Command Line Field Separator195300
++Node: Field Splitting Summary198741
++Ref: Field Splitting Summary-Footnote-1201933
++Node: Constant Size202034
++Node: Splitting By Content206618
++Ref: Splitting By Content-Footnote-1210344
++Node: Multiple Line210384
++Ref: Multiple Line-Footnote-1216231
++Node: Getline216410
++Node: Plain Getline218626
++Node: Getline/Variable220715
++Node: Getline/File221856
++Node: Getline/Variable/File223178
++Ref: Getline/Variable/File-Footnote-1224777
++Node: Getline/Pipe224864
++Node: Getline/Variable/Pipe227424
++Node: Getline/Coprocess228531
++Node: Getline/Variable/Coprocess229774
++Node: Getline Notes230488
++Node: Getline Summary232430
++Ref: table-getline-variants232773
++Node: Read Timeout233629
++Ref: Read Timeout-Footnote-1237374
++Node: Command line directories237431
++Node: Printing238061
++Node: Print239692
++Node: Print Examples241029
++Node: Output Separators243813
++Node: OFMT245573
++Node: Printf246931
++Node: Basic Printf247837
++Node: Control Letters249376
++Node: Format Modifiers253188
++Node: Printf Examples259197
++Node: Redirection261912
++Node: Special Files268896
++Node: Special FD269429
++Ref: Special FD-Footnote-1273054
++Node: Special Network273128
++Node: Special Caveats273978
++Node: Close Files And Pipes274774
++Ref: Close Files And Pipes-Footnote-1281797
++Ref: Close Files And Pipes-Footnote-2281945
++Node: Expressions282095
++Node: Values283227
++Node: Constants283903
++Node: Scalar Constants284583
++Ref: Scalar Constants-Footnote-1285442
++Node: Nondecimal-numbers285624
++Node: Regexp Constants288683
++Node: Using Constant Regexps289158
++Node: Variables292213
++Node: Using Variables292868
++Node: Assignment Options294592
++Node: Conversion296464
++Ref: table-locale-affects301840
++Ref: Conversion-Footnote-1302464
++Node: All Operators302573
++Node: Arithmetic Ops303203
++Node: Concatenation305708
++Ref: Concatenation-Footnote-1308501
++Node: Assignment Ops308621
++Ref: table-assign-ops313609
++Node: Increment Ops315017
++Node: Truth Values and Conditions318487
++Node: Truth Values319570
++Node: Typing and Comparison320619
++Node: Variable Typing321408
++Ref: Variable Typing-Footnote-1325305
++Node: Comparison Operators325427
++Ref: table-relational-ops325837
++Node: POSIX String Comparison329386
++Ref: POSIX String Comparison-Footnote-1330342
++Node: Boolean Ops330480
++Ref: Boolean Ops-Footnote-1334558
++Node: Conditional Exp334649
++Node: Function Calls336381
++Node: Precedence339975
++Node: Locales343644
++Node: Patterns and Actions344733
++Node: Pattern Overview345787
++Node: Regexp Patterns347456
++Node: Expression Patterns347999
++Node: Ranges351684
++Node: BEGIN/END354650
++Node: Using BEGIN/END355412
++Ref: Using BEGIN/END-Footnote-1358143
++Node: I/O And BEGIN/END358249
++Node: BEGINFILE/ENDFILE360531
++Node: Empty363424
++Node: Using Shell Variables363740
++Node: Action Overview366025
++Node: Statements368382
++Node: If Statement370236
++Node: While Statement371735
++Node: Do Statement373779
++Node: For Statement374935
++Node: Switch Statement378087
++Node: Break Statement380184
++Node: Continue Statement382174
++Node: Next Statement383967
++Node: Nextfile Statement386357
++Node: Exit Statement388902
++Node: Built-in Variables391318
++Node: User-modified392413
++Ref: User-modified-Footnote-1400768
++Node: Auto-set400830
++Ref: Auto-set-Footnote-1410738
++Node: ARGC and ARGV410943
++Node: Arrays414794
++Node: Array Basics416299
++Node: Array Intro417125
++Node: Reference to Elements421443
++Node: Assigning Elements423713
++Node: Array Example424204
++Node: Scanning an Array425936
++Node: Controlling Scanning428250
++Ref: Controlling Scanning-Footnote-1433183
++Node: Delete433499
++Ref: Delete-Footnote-1435934
++Node: Numeric Array Subscripts435991
++Node: Uninitialized Subscripts438174
++Node: Multi-dimensional439802
++Node: Multi-scanning442896
++Node: Arrays of Arrays444487
++Node: Functions449132
++Node: Built-in449954
++Node: Calling Built-in451032
++Node: Numeric Functions453020
++Ref: Numeric Functions-Footnote-1456852
++Ref: Numeric Functions-Footnote-2457209
++Ref: Numeric Functions-Footnote-3457257
++Node: String Functions457526
++Ref: String Functions-Footnote-1481023
++Ref: String Functions-Footnote-2481152
++Ref: String Functions-Footnote-3481400
++Node: Gory Details481487
++Ref: table-sub-escapes483166
++Ref: table-sub-posix-92484520
++Ref: table-sub-proposed485863
++Ref: table-posix-sub487213
++Ref: table-gensub-escapes488759
++Ref: Gory Details-Footnote-1489966
++Ref: Gory Details-Footnote-2490017
++Node: I/O Functions490168
++Ref: I/O Functions-Footnote-1496823
++Node: Time Functions496970
++Ref: Time Functions-Footnote-1507862
++Ref: Time Functions-Footnote-2507930
++Ref: Time Functions-Footnote-3508088
++Ref: Time Functions-Footnote-4508199
++Ref: Time Functions-Footnote-5508311
++Ref: Time Functions-Footnote-6508538
++Node: Bitwise Functions508804
++Ref: table-bitwise-ops509362
++Ref: Bitwise Functions-Footnote-1513522
++Node: Type Functions513706
++Node: I18N Functions514176
++Node: User-defined515803
++Node: Definition Syntax516607
++Ref: Definition Syntax-Footnote-1521517
++Node: Function Example521586
++Node: Function Caveats524180
++Node: Calling A Function524601
++Node: Variable Scope525716
++Node: Pass By Value/Reference527691
++Node: Return Statement531131
++Node: Dynamic Typing534112
++Node: Indirect Calls534847
++Node: Internationalization544532
++Node: I18N and L10N545971
++Node: Explaining gettext546657
++Ref: Explaining gettext-Footnote-1551723
++Ref: Explaining gettext-Footnote-2551907
++Node: Programmer i18n552072
++Node: Translator i18n556272
++Node: String Extraction557065
++Ref: String Extraction-Footnote-1558026
++Node: Printf Ordering558112
++Ref: Printf Ordering-Footnote-1560896
++Node: I18N Portability560960
++Ref: I18N Portability-Footnote-1563409
++Node: I18N Example563472
++Ref: I18N Example-Footnote-1566107
++Node: Gawk I18N566179
++Node: Arbitrary Precision Arithmetic566796
++Ref: Arbitrary Precision Arithmetic-Footnote-1569671
++Node: Floating-point Programming569819
++Node: Floating-point Representation575089
++Node: Floating-point Context576193
++Ref: table-ieee-formats577028
++Node: Rounding Mode578398
++Ref: table-rounding-modes579025
++Ref: Rounding Mode-Footnote-1582148
++Node: Arbitrary Precision Floats582329
++Ref: Arbitrary Precision Floats-Footnote-1584370
++Node: Setting Precision584681
++Node: Setting Rounding Mode587439
++Node: Floating-point Constants588356
++Node: Changing Precision589775
++Ref: Changing Precision-Footnote-1591175
++Node: Exact Arithmetic591348
++Node: Integer Programming594361
++Node: Arbitrary Precision Integers596141
++Ref: Arbitrary Precision Integers-Footnote-1599165
++Node: MPFR and GMP Libraries599311
++Node: Advanced Features599696
++Node: Nondecimal Data601219
++Node: Array Sorting602802
++Node: Controlling Array Traversal603499
++Node: Array Sorting Functions611736
++Ref: Array Sorting Functions-Footnote-1615410
++Ref: Array Sorting Functions-Footnote-2615503
++Node: Two-way I/O615697
++Ref: Two-way I/O-Footnote-1621129
++Node: TCP/IP Networking621199
++Node: Profiling624043
++Node: Library Functions631497
++Ref: Library Functions-Footnote-1634504
++Node: Library Names634675
++Ref: Library Names-Footnote-1638146
++Ref: Library Names-Footnote-2638366
++Node: General Functions638452
++Node: Strtonum Function639405
++Node: Assert Function642335
++Node: Round Function645661
++Node: Cliff Random Function647204
++Node: Ordinal Functions648220
++Ref: Ordinal Functions-Footnote-1651290
++Ref: Ordinal Functions-Footnote-2651542
++Node: Join Function651751
++Ref: Join Function-Footnote-1653522
++Node: Gettimeofday Function653722
++Node: Data File Management657437
++Node: Filetrans Function658069
++Node: Rewind Function662208
++Node: File Checking663595
++Node: Empty Files664689
++Node: Ignoring Assigns666919
++Node: Getopt Function668472
++Ref: Getopt Function-Footnote-1679776
++Node: Passwd Functions679979
++Ref: Passwd Functions-Footnote-1688954
++Node: Group Functions689042
++Node: Walking Arrays697126
++Node: Sample Programs698695
++Node: Running Examples699360
++Node: Clones700088
++Node: Cut Program701312
++Node: Egrep Program711157
++Ref: Egrep Program-Footnote-1718930
++Node: Id Program719040
++Node: Split Program722656
++Ref: Split Program-Footnote-1726175
++Node: Tee Program726303
++Node: Uniq Program729106
++Node: Wc Program736535
++Ref: Wc Program-Footnote-1740801
++Ref: Wc Program-Footnote-2741001
++Node: Miscellaneous Programs741093
++Node: Dupword Program742281
++Node: Alarm Program744312
++Node: Translate Program749061
++Ref: Translate Program-Footnote-1753448
++Ref: Translate Program-Footnote-2753676
++Node: Labels Program753810
++Ref: Labels Program-Footnote-1757181
++Node: Word Sorting757265
++Node: History Sorting761149
++Node: Extract Program762988
++Ref: Extract Program-Footnote-1770471
++Node: Simple Sed770599
++Node: Igawk Program773661
++Ref: Igawk Program-Footnote-1788818
++Ref: Igawk Program-Footnote-2789019
++Node: Anagram Program789157
++Node: Signature Program792225
++Node: Debugger793325
++Node: Debugging794277
++Node: Debugging Concepts794710
++Node: Debugging Terms796566
++Node: Awk Debugging799163
++Node: Sample Debugging Session800055
++Node: Debugger Invocation800575
++Node: Finding The Bug801904
++Node: List of Debugger Commands808392
++Node: Breakpoint Control809726
++Node: Debugger Execution Control813390
++Node: Viewing And Changing Data816750
++Node: Execution Stack820106
++Node: Debugger Info821573
++Node: Miscellaneous Debugger Commands825554
++Node: Readline Support830999
++Node: Limitations831830
++Node: Language History834082
++Node: V7/SVR3.1835594
++Node: SVR4837915
++Node: POSIX839357
++Node: BTL840365
++Node: POSIX/GNU841099
++Node: Common Extensions846390
++Node: Ranges and Locales847497
++Ref: Ranges and Locales-Footnote-1852101
++Node: Contributors852322
++Node: Installation856583
++Node: Gawk Distribution857477
++Node: Getting857961
++Node: Extracting858787
++Node: Distribution contents860479
++Node: Unix Installation865701
++Node: Quick Installation866318
++Node: Additional Configuration Options868280
++Node: Configuration Philosophy869757
++Node: Non-Unix Installation872099
++Node: PC Installation872557
++Node: PC Binary Installation873856
++Node: PC Compiling875704
++Node: PC Testing878648
++Node: PC Using879824
++Node: Cygwin884009
++Node: MSYS885009
++Node: VMS Installation885523
++Node: VMS Compilation886126
++Ref: VMS Compilation-Footnote-1887133
++Node: VMS Installation Details887191
++Node: VMS Running888826
++Node: VMS Old Gawk890433
++Node: Bugs890907
++Node: Other Versions894759
++Node: Notes900074
++Node: Compatibility Mode900766
++Node: Additions901549
++Node: Accessing The Source902361
++Node: Adding Code903786
++Node: New Ports909753
++Node: Dynamic Extensions913866
++Node: Internals915306
++Node: Plugin License924128
++Node: Loading Extensions924766
++Node: Sample Library926605
++Node: Internal File Description927295
++Node: Internal File Ops931010
++Ref: Internal File Ops-Footnote-1935752
++Node: Using Internal File Ops935892
++Node: Future Extensions938269
++Node: Basic Concepts940773
++Node: Basic High Level941530
++Ref: Basic High Level-Footnote-1945565
++Node: Basic Data Typing945750
++Node: Floating Point Issues950275
++Node: String Conversion Precision951358
++Ref: String Conversion Precision-Footnote-1953058
++Node: Unexpected Results953167
++Node: POSIX Floating Point Problems954993
++Ref: POSIX Floating Point Problems-Footnote-1958698
++Node: Glossary958736
++Node: Copying983712
++Node: GNU Free Documentation License1021269
++Node: Index1046406
  
  End Tag Table
diff --cc extension/fork.c
index 5a6e96d,5a6e96d..7e6bb73
--- a/extension/fork.c
+++ b/extension/fork.c
@@@ -80,7 -80,7 +80,7 @@@ do_waitpid(int nargs
  
        pidnode = get_scalar_argument(0, FALSE);
        if (pidnode != NULL) {
--              pidval = force_number(pidnode);
++              pidval = get_number_d(pidnode);
                pid = (int) pidval;
                options = WNOHANG|WUNTRACED;
                ret = waitpid(pid, NULL, options);
diff --cc extension/ordchr.c
index 8926a94,8926a94..a979607
--- a/extension/ordchr.c
+++ b/extension/ordchr.c
@@@ -72,7 -72,7 +72,7 @@@ do_chr(int nargs
  
        num = get_scalar_argument(0, FALSE);
        if (num != NULL) {
--              val = force_number(num);
++              val = get_number_d(num);
                ret = val;      /* convert to int */
                ret &= 0xff;
                str[0] = ret;
diff --cc io.c
index 9c47bad,b2d2982..6c5d990
--- a/io.c
+++ b/io.c
@@@ -240,12 -229,9 +240,9 @@@ int RS_is_null
  extern NODE *ARGC_node;
  extern NODE *ARGV_node;
  extern NODE *ARGIND_node;
- <<<<<<< HEAD
- =======
  extern NODE **fields_arr;
- >>>>>>> xgawk
  
 +/* init_io --- set up timeout related variables */
  
  void
  init_io()
@@@ -2275,15 -2235,10 +2272,10 @@@ do_getline_redir(int into_variable, enu
                return make_number((AWKNUM) 0.0);
  
        errcode = 0;
 -      cnt = get_a_record(&s, iop, &errcode);
 +      cnt = get_a_record(& s, iop, & errcode);
        if (errcode != 0) {
- <<<<<<< HEAD
-               if (! do_traditional && errcode != -1)
-                       update_ERRNO_saved(errcode);
- =======
                if (! do_traditional && (errcode != -1))
                        update_ERRNO_int(errcode);
- >>>>>>> xgawk
                return make_number((AWKNUM) -1.0);
        }
  
@@@ -2328,17 -2283,11 +2320,11 @@@ do_getline(int into_variable, IOBUF *io
        }
  
        errcode = 0;
 -      cnt = get_a_record(&s, iop, &errcode);
 +      cnt = get_a_record(& s, iop, & errcode);
        if (errcode != 0) {
- <<<<<<< HEAD
-               if (! do_traditional && errcode != -1)
-                       update_ERRNO_saved(errcode);
-               if (into_variable)
- =======
                if (! do_traditional && (errcode != -1))
                        update_ERRNO_int(errcode);
--              if (intovar)
- >>>>>>> xgawk
++              if (into_variable)
                        (void) POP_ADDRESS();
                return make_number((AWKNUM) -1.0); 
        }
diff --cc m4/ChangeLog
index 4e4e7c8,8aaeb41..ff6cc42
--- a/m4/ChangeLog
+++ b/m4/ChangeLog
@@@ -1,26 -1,3 +1,24 @@@
- <<<<<<< HEAD
 +2012-04-01         John Haque      <address@hidden>
 +
 +      * mpfr.m4: New file.
- =======
++
 +2012-04-27         Arnold D. Robbins     <address@hidden>
 +
 +      Update to autoconf 2.69, automake 1.12.
 +
 +      * codeset.m4, glibc2.m4, glibc21.m4, intdiv0.m4, intl.m4, intldir.m4,
 +      intlmacosx.m4, intmax.m4, inttypes-pri.m4, inttypes_h.m4, lcmessage.m4,
 +      lock.m4, longlong.m4, printf-posix.m4, size_max.m4, stdint_h.m4,
 +      uintmax_t.m4, visibility.m4, wchar_t.m4, wint_t.m4, xsize.m4: Updated.
- >>>>>>> gawk-4.0-stable
 +
 +2012-03-30         Arnold D. Robbins     <address@hidden>
 +
 +      * noreturn.m4: New file.
 +
 +2012-03-28         Arnold D. Robbins     <address@hidden>
 +
 +      * 4.0.1: Release tar ball made.
 +
  2011-06-23         Arnold D. Robbins     <address@hidden>
  
        * ChangeLog.0: Rotated ChangeLog into this file.
diff --cc test/ChangeLog
index 45920dc,59f9117..95bd42d
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@@ -1,3 -1,3 +1,8 @@@
++2012-05-09         Arnold D. Robbins     <address@hidden>
++
++      * Makefile.am (jarebug): New test.
++      * jarebug.awk, jarebug.in, jarebug.ok: New files.
++
  2012-04-08         Andrew J. Schorr     <address@hidden>
  
        * Makefile.am (VALGRIND): Set to empty to protect against random
@@@ -31,31 -31,6 +36,26 @@@
  
        * Makefile.am (valgrind-scan): Update to match modern valgrind output.
  
- 2012-05-09         Arnold D. Robbins     <address@hidden>
- 
-       * Makefile.am (jarebug): New test.
-       * jarebug.awk, jarebug.in, jarebug.ok: New files.
- 
 +2012-04-01         John Haque      <address@hidden>
 +
 +      * Makefile.am (mpfr-test): Add target for manual testing of MPFR
 +      and GMP numbers.
 +      * mpfrbigint.awk, mpfrexprange.awk, mpfrieee.awk, mpfrnr.awk,
 +      mpfrrnd.awk, mpfrsort.awk: New tests.
 +      (MPFR_TESTS): Add the new tests.
 +      * mpfrnr.in, mpfrbigint.ok, mpfrexprange.ok, mpfrieee.ok, mpfrnr.ok,
 +      mpfrrnd.ok, mpfrsort.ok: New files.
 +      (AWK): Add AWKFLAGS; useful for testing with 'gawk -M' invocation.
 +
 +2012-02-28         Arnold D. Robbins     <address@hidden>
 +
 +      * fmtspcl-mpfr.ok, fnarydel-mpfr.ok, fnparydl-mpfr.ok,
 +      rand-mpfr.ok: New files.
 +      * Makefile.am (EXTRA_DIST): Add them.
 +      (CHECK_MPFR): New list of files that have MPFR variant .ok file.
 +      * Gentests: Deal with MPFR files by modifying the generated
 +      comparison command.
 +
  2011-12-26         John Haque      <address@hidden>
  
        * badargs.ok: Adjust for new and changed command line options.
diff --cc test/Makefile.am
index 05b19a7,2fe14c4..726c89c
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@@ -906,8 -885,10 +906,10 @@@ VALGRIND 
  #
  # This can also be done in individual tests where we wish to
  # check things specifically not in the C locale.
 +
- AWK = LC_ALL=$${GAWKLOCALE:-C} LANG=$${GAWKLOCALE:-C} $(AWKPROG) $(AWKFLAGS)
+ #
+ # And we set AWKLIBPATH to find the extension libraries we built.
+ AWK = LC_ALL=$${GAWKLOCALE:-C} LANG=$${GAWKLOCALE:-C} 
AWKLIBPATH=../extension/.libs $(VALGRIND) $(AWKPROG)
 -PGAWK = LC_ALL=$${GAWKLOCALE:-C} LANG=$${GAWKLOCALE:-C} 
AWKLIBPATH=../extension/.libs $(VALGRIND) $(PGAWKPROG)
  
  # Message stuff is to make it a little easier to follow.
  # Make the pass-fail last and dependent on others to avoid
diff --cc test/Makefile.in
index 8a290cb,0e9a3ca..fb48935
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@@ -83,11 -66,15 +83,14 @@@ am__aclocal_m4_deps = $(top_srcdir)/m4/
        $(top_srcdir)/m4/isc-posix.m4 $(top_srcdir)/m4/lcmessage.m4 \
        $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
        $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libsigsegv.m4 \
-       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/mpfr.m4 \
-       $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/noreturn.m4 \
-       $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-       $(top_srcdir)/m4/readline.m4 $(top_srcdir)/m4/socket.m4 \
-       $(top_srcdir)/m4/ulonglong.m4 $(top_srcdir)/configure.ac
+       $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/longlong.m4 \
 -      $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
 -      $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
 -      $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
++      $(top_srcdir)/m4/mpfr.m4 $(top_srcdir)/m4/ltoptions.m4 \
++      $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
++      $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
++      $(top_srcdir)/m4/noreturn.m4 $(top_srcdir)/m4/po.m4 \
+       $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/readline.m4 \
 -      $(top_srcdir)/m4/socket.m4 $(top_srcdir)/m4/stdint_h.m4 \
 -      $(top_srcdir)/m4/uintmax_t.m4 $(top_srcdir)/m4/ulonglong.m4 \
++      $(top_srcdir)/m4/socket.m4 $(top_srcdir)/m4/ulonglong.m4 \
+       $(top_srcdir)/configure.ac
  am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
  mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
@@@ -113,7 -96,9 +117,10 @@@ AUTOMAKE = @AUTOMAKE
  #
  # This can also be done in individual tests where we wish to
  # check things specifically not in the C locale.
- AWK = LC_ALL=$${GAWKLOCALE:-C} LANG=$${GAWKLOCALE:-C} $(AWKPROG) $(AWKFLAGS)
++
+ #
+ # And we set AWKLIBPATH to find the extension libraries we built.
+ AWK = LC_ALL=$${GAWKLOCALE:-C} LANG=$${GAWKLOCALE:-C} 
AWKLIBPATH=../extension/.libs $(VALGRIND) $(AWKPROG)
  CC = @CC@
  CCDEPMODE = @CCDEPMODE@
  CFLAGS = @CFLAGS@
@@@ -438,7 -441,10 +466,11 @@@ EXTRA_DIST = 
        fnmisc.ok \
        fnparydl.awk \
        fnparydl.ok \
 +      fnparydl-mpfr.ok \
+       fork.awk \
+       fork.ok \
+       fork2.awk \
+       fork2.ok \
        fpat1.awk \
        fpat1.in \
        fpat1.ok \
@@@ -1090,6 -1081,12 +1126,10 @@@ CHECK_MPFR = 
  GENTESTS_UNUSED = Makefile.in gtlnbufv.awk printfloat.awk
  CMP = cmp
  AWKPROG = ../gawk$(EXEEXT)
 -PGAWKPROG = ../pgawk$(EXEEXT)
+ 
+ # Default for VALGRIND is empty unless overridden by a command-line argument.
+ # This protects against cruft in the environment.
+ VALGRIND = 
 -PGAWK = LC_ALL=$${GAWKLOCALE:-C} LANG=$${GAWKLOCALE:-C} 
AWKLIBPATH=../extension/.libs $(VALGRIND) $(PGAWKPROG)
  all: all-am
  
  .SUFFIXES:
@@@ -1300,8 -1298,8 +1348,10 @@@ inet:  inetmesg $(INET_TESTS
  
  machine-tests: $(MACHINE_TESTS)
  
 +mpfr-tests: $(MPFR_TESTS)
 +
+ shlib-tests: $(SHLIB_TESTS)
+ 
  msg::
        @echo ''
        @echo 'Any output from "cmp" is bad news, although some differences'
@@@ -1847,48 -1849,15 +1903,58 @@@ rri1:
        AWKPATH=$(srcdir) $(AWK) -f address@hidden  < $(srcdir)/address@hidden 
>_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
        @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
  
 +rand:
 +      @echo $@
 +      @AWKPATH=$(srcdir) $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
 +      @-if test -z "$$AWKFLAGS" ; then $(CMP) $(srcdir)/address@hidden _$@ && 
rm -f _$@ ; else \
 +      ($(CMP) $(srcdir)/address@hidden _$@ || $(CMP) $(srcdir)/address@hidden 
_$@) && rm -f _$@ ; \
 +      fi
 +
 +mpfrieee:
 +      @echo $@
 +      @$(AWK) -M -vPREC=double -f $(srcdir)/address@hidden > _$@ 2>&1
 +      @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 +
 +mpfrexprange:
 +      @echo $@
 +      @$(AWK) -M -vPREC=53 -f $(srcdir)/address@hidden > _$@ 2>&1
 +      @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 +
 +mpfrrnd:
 +      @echo $@
 +      @$(AWK) -M -vPREC=53 -f $(srcdir)/address@hidden > _$@ 2>&1
 +      @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 +
 +mpfrnr:
 +      @echo $@
 +      @$(AWK) -M -vPREC=113 -f $(srcdir)/address@hidden 
$(srcdir)/address@hidden > _$@
 +      @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 +
 +mpfrsort:
 +      @echo $@
 +      @$(AWK) -M -vPREC=53 -f $(srcdir)/address@hidden > _$@ 2>&1
 +      @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 +
 +mpfrbigint:
 +      @echo $@
 +      @$(AWK) -M -f $(srcdir)/address@hidden > _$@ 2>&1
 +      @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 +
 +jarebug::
 +      @echo $@
 +      @GAWKLOCALE=ja_JP.EUC-JP ; export GAWKLOCALE ; \
 +      $(AWK) -f $(srcdir)/address@hidden $(srcdir)/address@hidden >_$@ 2>&1 
|| echo EXIT CODE: $$? >> _$@
 +      @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
++
+ ordchr2::
+       @echo $@
+       @$(AWK) -l ordchr 'BEGIN {print chr(ord("z"))}' >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
+ 
+ readfile::
+       @echo $@
+       @$(AWK) -l readfile 'BEGIN {printf "%s", readfile("Makefile")}' >_$@ 
2>&1 || echo EXIT CODE: $$? >>_$@
+       @-$(CMP) Makefile _$@ && rm -f _$@ || cp -p Makefile address@hidden
  Gt-dummy:
  # file Maketests, generated from Makefile.am by the Gentests program
  addcomma:
@@@ -3085,6 -3050,26 +3151,26 @@@ sprintfc
        @AWKPATH=$(srcdir) $(AWK) -f address@hidden  < $(srcdir)/address@hidden 
>_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
        @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
  
+ ordchr:
 -      @echo ordchr
++      @echo $@
+       @AWKPATH=$(srcdir) $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
+ 
+ fork:
 -      @echo fork
++      @echo $@
+       @AWKPATH=$(srcdir) $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
+ 
+ fork2:
 -      @echo fork2
++      @echo $@
+       @AWKPATH=$(srcdir) $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
+ 
+ filefuncs:
 -      @echo filefuncs
++      @echo $@
+       @AWKPATH=$(srcdir) $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
+ 
  # end of file Maketests
  
  # Targets generated for other tests:
diff --cc test/Maketests
index f179ab7,04464ef..e6a985b
--- a/test/Maketests
+++ b/test/Maketests
@@@ -1194,4 -1190,24 +1194,24 @@@ sprintfc
        @AWKPATH=$(srcdir) $(AWK) -f address@hidden  < $(srcdir)/address@hidden 
>_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
        @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
  
+ ordchr:
 -      @echo ordchr
++      @echo $@
+       @AWKPATH=$(srcdir) $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
+ 
+ fork:
 -      @echo fork
++      @echo $@
+       @AWKPATH=$(srcdir) $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
+ 
+ fork2:
 -      @echo fork2
++      @echo $@
+       @AWKPATH=$(srcdir) $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
+ 
+ filefuncs:
 -      @echo filefuncs
++      @echo $@
+       @AWKPATH=$(srcdir) $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
+ 
  # end of file Maketests

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

commit a59319732d89feda419acab674ea580c95db7d4a
Merge: 8ff0b4e c41908d
Author: Arnold D. Robbins <address@hidden>
Date:   Wed May 9 20:31:35 2012 +0300

    Merge branch 'xgawk'

diff --cc ChangeLog
index 6cbada6,0d405ab..7f6c886
--- a/ChangeLog
+++ b/ChangeLog
@@@ -1,282 -1,114 +1,393 @@@
+ 2012-04-09         Andrew J. Schorr     <address@hidden>
+ 
+       * eval.c (unset_ERRNO): Fix memory management bug -- need to use
+       dupnode with Nnull_string.
+ 
+ 2012-04-08         Andrew J. Schorr     <address@hidden>
+ 
+       * Makefile.am (valgrind): Define VALGRIND instead of redefining AWK.
+       This allows test/Makefile.am to set up the command environment as
+       desired.
+       (valgrind-noleak): Ditto, plus set --leak-check=no instead of the
+       default summary setting.
+ 
+ 2012-04-07         Andrew J. Schorr     <address@hidden>
+ 
+       * TODO.xgawk: Update to reflect progress.
+ 
+ 2012-04-01         Andrew J. Schorr     <address@hidden>
+ 
+       * TODO.xgawk: Move valgrind-noleak item into "done" section.
+       * Makefile.am (valgrind-noleak): Add new valgrind rule that omits
+       the "--leak-check=full" option to help spot more serious problems.
+ 
+ 2012-04-01         Andrew J. Schorr     <address@hidden>
+ 
+       * TODO.xgawk: Move ERRNO item into "done" section.
+       * awk.h (update_ERRNO, update_ERRNO_saved): Remove declarations.
+       (update_ERRNO_int, enum errno_translate, update_ERRNO_string,
+       unset_ERRNO): Add new declarations.
+       * eval.c (update_ERRNO_saved): Renamed to update_ERRNO_int.
+       (update_ERRNO_string, unset_ERRNO): New functions.
+       * ext.c (do_ext): Use new update_ERRNO_string function.
+       * io.c (ERRNO_node): Remove redundant extern declaration (in awk.h).
+       (after_beginfile, nextfile): Replace update_ERRNO() with
+       update_ERRNO_int(errno).
+       (inrec): Replace update_ERRNO_saved with update_ERRNO_int.
+       (do_close): Use new function update_ERRNO_string.
+       (close_redir, do_getline_redir, do_getline): Replace update_ERRNO_saved
+       with update_ERRNO_int.
+ 
+ 2012-03-27         Andrew J. Schorr     <address@hidden>
+ 
+       * TODO.xgawk: Update to reflect debate about how to support Cygwin
+       and other platforms that cannot link shared libraries with unresolved
+       references.
+       * awkgram.y (add_srcfile): Minor bug fix: reverse sense of test
+       added by Arnold in last patch.
+       * configure.ac: AC_DISABLE_STATIC must come before AC_PROG_LIBTOOL.
+ 
+ 2012-03-26         Arnold D. Robbins     <address@hidden>
+ 
+       Some cleanups.
+ 
+       * awkgram.y (add_srcfile): Use whole messages, better for
+       translations.
+       * io.c (init_awkpath): Small style tweak.
+       * main.c (path_environ): Straighten out initial comment, fix
+       compiler warning by making `val' const char *.
+ 
+ 2012-03-25         Andrew J. Schorr     <address@hidden>
+ 
+       * configure.ac (AC_DISABLE_STATIC): Add this to avoid building useless
+       static extension libraries.
+ 
+ 2012-03-25         Andrew J. Schorr     <address@hidden>
+ 
+       * TODO.xgawk: New file listing completed and pending xgawk enhancements.
+ 
+ 2012-03-24         Andrew J. Schorr     <address@hidden>
+ 
+       * io.c (path_info): Fix white space.
+       (pi_awkpath, pi_awklibpath): Avoid structure initializers.
+       (do_find_source): Eliminate pointless parentheses.
+       (find_source): Leave a space after "&".
+       * main.c (load_environ): Fix typo in comment.
+ 
+ 2012-03-21         Andrew J. Schorr     <address@hidden>
+ 
+       * awkgram.y (LEX_LOAD): New token to support @load.
+       (grammar): Add rules to support @load.
+       (tokentab): Add "load".
+       (add_srcfile): Improve error message to distinguish between source files
+       and shared libraries.
+       (load_library): New function to load libraries specified with @load.
+       (yylex): Add support for LEX_LOAD (treated the same way as LEX_INCLUDE).
+ 
+ 2012-03-20         Andrew J. Schorr     <address@hidden>
+ 
+       * Makefile.am (EXTRA_DIST): Remove extension.
+       (SUBDIRS): Add extension so libraries will be built.
+       (DEFS): Define DEFLIBPATH and SHLIBEXT so we can find shared libraries.
+       * awk.h (deflibpath): New extern declaration.
+       * configure.ac: Add support for building shared libraries by adding
+       AC_PROG_LIBTOOL and AC_SUBST for acl_shlibext and pkgextensiondir.
+       (AC_CONFIG_FILES): Add extension/Makefile.
+       * io.c (pi_awkpath, pi_awklibpath): New static structures to contain
+       path information.
+       (awkpath, max_pathlen): Remove static variables now inside pi_awkpath.
+       (init_awkpath): Operate on path_info structure to support both
+       AWKPATH and AWKLIBPATH.  No need for max_path to be static, since
+       this should be called only once for each environment variable.
+       (do_find_source): Add a path_info arg to specify which path to search.
+       Check the try_cwd parameter to decide whether to search the current
+       directory (not desirable for AWKLIBPATH).
+       (find_source): Choose appropriate path_info structure based on value
+       of the is_extlib argument.  Set EXTLIB_SUFFIX using SHLIBEXT define
+       instead of hardcoding ".so".
+       * main.c (path_environ): New function to add AWKPATH or AWKLIBPATH
+       to the ENVIRON array.
+       (load_environ): Call path_environ for AWKPATH and AWKLIBPATH.
+ 
 +2012-05-09         Arnold D. Robbins     <address@hidden>
 +
 +      * configure.ac: Added AC_HEADER_STDBOOL
 +      * awk.h, dfa.c, regex.c: Reworked to use results
 +      of test and include missing_d/gawkbool.h.
 +
 +2012-05-07         Arnold D. Robbins     <address@hidden>
 +
 +      * array.c (prnode): Add casts to void* for %p format.
 +      * debug.c (print_instruction): Ditto.
 +      * builtin.c: Fix %lf format to be %f everywhere.
 +
 +      Unrelated:
 +
 +      * replace.c: Don't include "config.h", awk.h gets it for us.
 +
 +2012-05-04         Arnold D. Robbins     <address@hidden>
 +
 +      * getopt.c [DJGPP]: Change to __DJGPP__.
 +      * mbsupport.h [DJGPP]: Change to __DJGPP__.
 +
 +      Unrelated:
 +
 +      * awk.h: Workarounds for _TANDEM_SOURCE.
 +
 +2012-05-01         Arnold D. Robbins     <address@hidden>
 +
 +      * dfa.c: Sync with GNU grep. RRI code now there, needed additional
 +      change for gawk.
 +      * configure.ac: Add check for stdbool.h.
 +      * regex.c: Add check for if not have stdbool.h, then define the
 +      bool stuff.
 +
 +2012-04-27         Arnold D. Robbins     <address@hidden>
 +
 +      * dfa.c: Sync with GNU grep.
 +      * xalloc.h (xmemdup): Added, from grep, for dfa.c. Sigh.
 +
 +2012-04-27         Arnold D. Robbins     <address@hidden>
 +
 +      Update to autoconf 2.69, automake 1.12.
 +
 +      * INSTALL, aclocal.m4, configh.in, depcomp, install-sh, missing,
 +      mkinstalldirs, ylwrap: Updated.
 +      * configure.ac (AC_TYPE_LONG_LONG_INT, AC_TYPE_UNSIGNED_LONG_LONG_INT,
 +      AC_TYPE_INTMAX_T, AC_TYPE_UINTMAX_T): Renamed from gl_* versions.
 +      * configure: Regenerated.
 +
 +2012-04-24         Arnold D. Robbins     <address@hidden>
 +
 +      * cmd.h (dPrompt, commands_Prompt, eval_Prompt, dgawk_Prompt): Changed
 +      to dbg_prompt, commands_prompt, eval_prompt, dgawk_prompt.
 +      * debug.c: Ditto.
 +      * command.y: Ditto.  Some minor whitespace and comments cleanup.
 +
 +2012-04-24         Arnold D. Robbins     <address@hidden>
 +
 +      io.c cleanup and some speedup for RS as regexp parsing.
 +
 +      * awk.h (Regexp): New members has_meta and maybe_long.
 +      (enum redirval): Add redirect_none as value 0.
 +      (remaybelong): Remove function declaration.
 +      * awkgram.y: Use redirect_none instead of 0 for no redirect cases.
 +      * io.c (go_getline_redir): Second arg now of type enum redirval.
 +      Changed intovar into into_variable.
 +      (comments and whitespace): Lots of general cleanup.
 +      (socket_open): readle changed to read_len.
 +      (two_way_open): Add additional calls to os_close_on_exec.
 +      (rsrescan): Simplify code a bit and use RS->maybe_long.
 +      * re.c (make_regexp): Set up new members in Regexp struct.
 +      (remaybelong): Remove function.
 +      (reisstring): Simplified code.
 +
 +2012-04-16  Eli Zaretskii  <address@hidden>
 +
 +      * io.c (read_with_timeout) [__MINGW32__]: Just call the blocking
 +      'read', as 'select' is only available for sockets.
 +      * mpfr.c (set_ROUNDMODE) [!HAVE_MPFR]: Renamed from set_RNDMODE.
 +      * main.c (load_procinfo): Declare name[] also when HAVE_MPFR is
 +      defined even though HAVE_GETGROUPS etc. are not.
 +
 +2012-04-12         John Haque      <address@hidden>
 +
 +      * array.c, awk.h, awkgram.y, builtin.c, command.y, debug.c,
 +      field.c, mpfr.c, profile.c: Change RND_MODE to ROUND_MODE.
 +
 +2012-04-11         John Haque      <address@hidden>
 +
 +      * main.c (varinit): Change RNDMODE to ROUNDMODE.
 +
 +2012-04-11         Arnold D. Robbins     <address@hidden>
 +
 +      * main.c: Change --arbitrary-precision to --bignum.
 +
 +2012-04-02         John Haque      <address@hidden>
 +      
 +      Add support for arbitrary-precision arithmetic.
 +
 +      * mpfr.c: New file.
 +      * awk.h (struct exp_node): Add union to handle different number types.
 +      (MPFN, MPZN): New flag values.
 +      (DO_MPFR, do_mpfr): New defines.
 +      (PREC_node, RNDMODE_node): Add declarations.
 +      (PRECISION, RND_MODE, MNR, MFNR, mpzval, do_ieee_fmt): Add declarations.
 +      (make_number, str2number, format_val, cmp_numbers): Ditto.
 +      (force_number): Change definition.
 +      (Func_pre_exec, Func_post_exec): New typedefs.
 +      (POP_NUMBER, TOP_NUMBER): Change definitions.
 +      (get_number_ui, get_number_si, get_number_d, get_number_uj,
 +      iszero, IEEE_FMT, mpg_float, mpg_integer, mpg_float,
 +      mpg_integer): New defines.
 +      * awkgram.y (tokentab): Add alternate function entries for MPFR/GMP.
 +      (snode): Choose the appropriate function.
 +      (negate_num): New function to negate a number.
 +      (grammar): Use it.
 +      (yylex): Adjust number handling code.
 +      * array.c (value_info, asort_actual, sort_user_func): Adjust for
 +      MPFR/GMP numbers.
 +      (do_adump, indent): Minor changes.
 +      (sort_up_index_number, sort_up_value_number, sort_up_value_type): Use
 +      cmp_numbers() for numeric comparisons.
 +      * builtin.c (mpz2mpfr): New function.
 +      (format_tree): Adjust to handle MPFR and GMP numbers.
 +      * eval.c (register_exec_hook): New function to manage interpreter hooks.
 +      (num_exec_hook, pre_execute, post_execute): New and adjusted 
definitions.
 +      (h_interpret): Renamed from debug_interpret.
 +      (init_interpret): Changed to use the new name.  
 +      (flags2str): New entries for MPFN and MPZN.
 +      (cmp_nodes): Reworked to use seperate routine for numeric comparisons.
 +      (set_IGNORECASE, set_BINMODE, set_LINT, update_NR, update_FNR,
 +      update_NF): Adjust code and some cleanup.
 +      * field.c (rebuild_record): Field copying code reworked to handle
 +      MPFR/GMP numbers.
 +      (set_NF): Minor adjustment.
 +      * io.c (INCREMENT_REC): New macro.
 +      (inrec, do_getline): Use the new macro.
 +      (nextfile, set_NR, set_FNR, get_read_timeout, pty_vs_pipe): Adjust code
 +      to handle MPFR/GMP numbers.
 +      * interpret.h (r_interpret): Adjust TOP_NUMBER/POP_NUMBER usage.
 +      (EXEC_HOOK): New macro and definition.
 +      (DEBUGGING): Removed.
 +      * main.c (DEFAULT_PREC, DEFAULT_RNDMODE): New defines.
 +      (opttab): New entry for option arbitrary-precision.
 +      (main): Handle the new option.
 +      (usage): Add to usage message.
 +      (varinit): Add PREC and RNDMODE.
 +      (load_procinfo): Install MPFR and GMP related items.
 +      (version): Append MPFR and GMP versions to message.
 +      * msg.c (err) : Adjust FNR handling with MPFR/GMP.
 +      * node.c (r_format_val): Renamed from format_val.
 +      (r_force_number): Return NODE * instead of AWKNUM.
 +      (make_number, str2number, format_val, cmp_numpers: Defined and 
initialized.
 +      (r_unref): Free MPFR/MPZ numbers.
 +      (get_numbase): Renamed from isnondecimal and return the base.
 +      (cmp_awknums): New function to compare two AWKNUMs.
 +      * command.y (yylex): Adjust number handling code.
 +      (grammar): Minor adjustments to handle negative numbers.
 +      * debug.c (init_debug): New function.
 +      (do_info, do_set_var, watchpoint_triggered, serialize,
 +      initialize_watch_item, do_watch, print_watch_item): Minor adjustments.
 +      (debug_pre_execute): Adjusted to handle MPFR and GMP numbers.
 +
 +2012-04-09         Arnold D. Robbins     <address@hidden>
 +
 +      * INSTALL, config.guess, config.sub, depcomp, install-sh,
 +      missing, mkinstalldirs, ylwrap: Update to latest from automake 1.11.4.
 +
 +2012-04-08         Arnold D. Robbins     <address@hidden>
 +
 +      * Update various files to automake 1.11.4.
 +
 +2012-03-30         Arnold D. Robbins     <address@hidden>
 +
 +      * configure.ac (GAWK_AC_NORETURN): Do as macro instead of inline.
 +
 +2012-03-29         Arnold D. Robbins     <address@hidden>
 +
 +      * dfa.h, dfa.c: Sync with grep. Major cleanups and some changes
 +      there.
 +      * re.c (research): Pass size_t* to dfaexec to match type change.
 +      * configure.ac (AH_VERBATIM[_Noreturn]): Added from Paul Eggert to
 +      ease compiling.
 +      (AC_INIT): Bump version.
 +      * configure, configh.in, version.c: Regenerated.
 +
 +2012-03-28         Arnold D. Robbins     <address@hidden>
 +
 +      * 4.0.1: Release tar ball made.
 +
 +2012-03-28         Arnold D. Robbins     <address@hidden>
 +
 +      * getopt.c: Add DJGPP to list of platforms where it's ok
 +      to include <stdlib.h>.
 +      * awkgram.y, builtin.c, ext.c, mbsupport.h, re.c: Update
 +      copyright year.
 +
 +2012-03-21         Corinna Vinschen      <address@hidden>
 +
 +      * getopt.c: Add Cygwin to list of platforms where it's ok
 +      to include <stdlib.h>.
 +
 +2012-03-20         Arnold D. Robbins     <address@hidden>
 +
 +      Get new getopt to work on Linux and C90 compilers:
 +
 +      * getopt.c: Undef ELIDE_CODE for gawk.
 +      (_getopt_internal_r): Init first.needs_free to 0. In test for -W
 +      move executable code to after declarations for C90 compilers.
 +      * getopt1.c: Undef ELIDE_CODE for gawk.
 +
 +      Minor bug fix with printf, thanks to John Haque:
 +
 +      * builtin.c (format_tree): Initialize base to zero at the top
 +      of the while loop.
 +
 +      Getting next tar ball ready:
 +
 +      * configure.ac: Remove duplicate check for wcscoll. Thanks
 +      to Stepan Kasal.
 +
 +2012-03-16         Arnold D. Robbins     <address@hidden>
 +
 +      * getopt.c, getopt.h, getopt1.c, getopt_int.h, regcomp.c,
 +      regex.c, regex.h, regex_internal.c, regex_internal.h,
 +      regexec.c: Sync with GLIBC, what the heck.
 +
 +2012-03-14         Eli Zaretskii  <address@hidden>
 +
 +      * mbsupport.h (btowc): Change for non-DJGPP.
 +      * re.c (dfaerror): Add call to exit for DJGPP.
 +
 +2012-03-14         Arnold D. Robbins     <address@hidden>
 +
 +      * regex_internal.c (re_string_skip_chars): Fix calculation of
 +      remain_len with m.b. chars. Thanks to Stanislav Brabec
 +      <address@hidden>.
 +
 +2012-02-28         Arnold D. Robbins     <address@hidden>
 +
 +      * main.c (init_groupset): Make `getgroups' failing a non-fatal
 +      error.  After all, what's the big deal?  Should help on Plan 9.
 +
 +2012-02-27         Arnold D. Robbins     <address@hidden>
 +
 +      * dfa.c (parse_bracket_exp): Revert changes 2012-02-15 to stay
 +      in sync with grep.
 +      * dfa.h (dfarerror): Add __attribute__ from grep.
 +
 +2012-02-15         Arnold D. Robbins     <address@hidden>
 +
 +      Fix warnings from GCC 4.6.2 -Wall option.
 +
 +      * awkgram.y (newline_eof): New function to replace body of
 +      NEWLINE_EOF macro.
 +      (yylex): Replace body of NEWLINE_EOF macro.
 +      * dfa.c (parse_bracket_exp): Init variables to zero.
 +      * ext.c (dummy, junk): Remove.
 +      * regex_internal.c (re_string_reconstruct): Remove buf array. It was
 +      set but not used.
 +
 +2012-02-10         Arnold D. Robbins     <address@hidden>
 +
 +      * dfa.c: Sync with GNU grep.
 +
 +2012-02-07         Arnold D. Robbins     <address@hidden>
 +
 +      * main.c (main): Move init of `output_fp' to before parsing of
 +      program so that error messages from msg.c don't dump core.
 +      Thanks to Michael Haardt <address@hidden>.
 +
 +2012-01-13         Arnold D. Robbins     <address@hidden>
 +
 +      * dfa.c [is_valid_unibtye_character]: Fix from GNU grep to 
 +      bug reported by me from Scott Deifik for DJGPP.
 +
 +2012-01-03         Arnold D. Robbins     <address@hidden>
 +
 +      * dfa.c: Sync with GNU grep.
 +
  2012-01-02         Arnold D. Robbins     <address@hidden>
  
        * io.c (Read_can_timeout, Read_timeout, Read_default_timeout):
diff --cc Makefile.in
index 2d28a59,3083c4c..79c9a00
--- a/Makefile.in
+++ b/Makefile.in
@@@ -209,7 -179,7 +209,7 @@@ CFLAGS = @CFLAGS
  CPP = @CPP@
  CPPFLAGS = @CPPFLAGS@
  CYGPATH_W = @CYGPATH_W@
--DEFS = -DDEFPATH=$(DEFPATH) -DHAVE_CONFIG_H -DGAWK 
-DLOCALEDIR='"$(datadir)/locale"'
++DEFS = -DDEFPATH=$(DEFPATH) -DDEFLIBPATH=$(DEFLIBPATH) -DSHLIBEXT=$(SHLIBEXT) 
-DHAVE_CONFIG_H -DGAWK -DLOCALEDIR='"$(datadir)/locale"'
  DEPDIR = @DEPDIR@
  ECHO_C = @ECHO_C@
  ECHO_N = @ECHO_N@
@@@ -273,6 -242,6 +273,7 @@@ abs_srcdir = @abs_srcdir
  abs_top_builddir = @abs_top_builddir@
  abs_top_srcdir = @abs_top_srcdir@
  ac_ct_CC = @ac_ct_CC@
++acl_shlibext = @acl_shlibext@
  am__include = @am__include@
  am__leading_dot = @am__leading_dot@
  am__quote = @am__quote@
@@@ -307,6 -276,6 +308,7 @@@ mandir = @mandir
  mkdir_p = @mkdir_p@
  oldincludedir = @oldincludedir@
  pdfdir = @pdfdir@
++pkgextensiondir = @pkgextensiondir@
  prefix = @prefix@
  program_transform_name = @program_transform_name@
  psdir = @psdir@
@@@ -344,7 -313,7 +346,6 @@@ EXTRA_DIST = 
        config.rpath  \
        config.sub \
        depcomp \
--      extension \
        m4 \
        missing \
        missing_d \
@@@ -374,6 -343,6 +375,7 @@@ SUBDIRS = 
        awklib \
        doc \
        po \
++      extension \
        test
  
  
@@@ -430,6 -398,6 +432,10 @@@ LDADD = $(LIBSIGSEGV) $(LIBINTL) $(SOCK
  # stuff for compiling gawk/pgawk
  DEFPATH = '".$(PATH_SEPARATOR)$(pkgdatadir)"'
  
++# shared library support:
++SHLIBEXT = "\"$(acl_shlibext)"\"
++DEFLIBPATH = "\"$(pkgextensiondir)\""
++
  # Get rid of core files when cleaning
  CLEANFILES = core core.*
  MAINTAINERCLEANFILES = version.c
@@@ -1132,7 -1059,7 +1138,12 @@@ diffout valgrind-scan
  
  valgrind:
        cd test; rm -f log.[0-9]*; \
--      make check AWK="valgrind --leak-check=full --log-file=log.%p ../gawk"; \
++      make check VALGRIND="valgrind --leak-check=full --log-file=log.%p"; \
++      make valgrind-scan
++
++valgrind-noleak:
++      cd test; rm -f log.[0-9]*; \
++      make check VALGRIND="valgrind --leak-check=no --log-file=log.%p"; \
        make valgrind-scan
  
  # Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --cc README.git
index d7ff15b,490558a..9de8575
--- a/README.git
+++ b/README.git
@@@ -243,48 -259,15 +267,54 @@@ You can inspect the log history file-wi
  
    git gc
  
+ - How can I change settings with an editor (without "git xxx" command) ?
+ 
+ This is useful for inspecting the settings of local and remote branches that 
track each other.
+ 
+   vi .git/config
+ 
 +- I'm a devoted user of Bazaar, and don't want to switch to git.  Is
 +  there any way for me to track Gawk development with bzr?
  
 +Yes, there is.  First, install the latest version of bzr (2.5.0 or
 +later is required).  If it doesn't come with the bzr-git plugin,
 +download and install it from https://launchpad.net/bzr-git.  You will
 +also need dulwich, which is a Python implementation of the git
 +protocol; get it from http://www.samba.org/~jelmer/dulwich/.
  
 -Thanks,
 +(To know whether you have bzr-git, type "bzr plugins".)
  
 -Arnold Robbins
 -Gawk Maintainer
 +Next, clone the Gawk git repository with this command:
 +
 +  bzr git-import git://git.savannah.gnu.org/gawk.git gawk
 +
 +This will create a directory called 'gawk' with meta-data of the
 +repository, but without any working trees.  To checkout the files,
 +chdir to that directory and type:
 +
 +  bzr checkout
 +
 +This will checkout the files for the default branch.  To see the list
 +of branches, type
 +
 +  bzr branches
 +
 +To switch to another branch, type
 +
 +  bzr switch --force BRANCH
 +
 +where BRANCH is the name of the branch, e.g. 'xgawk'.  (The --force
 +option is a workaround for an annoying misfeature in bzr 2.5.0, which
 +will most probably be resolved in the near future.)
 +
 +To sync the current branch with upstream, type
 +
 +  bzr pull
 +
 +If you want to update several branches, "bzr switch" to each one in
 +turn, followed by "bzr pull" to sync the branch.
 +
 +- How do I manage things if I want to undo a commit?
 +
 +It depends upon if you have pushed the commit or not. Lots of good
 +info is at http://stackoverflow.com/questions/927358/git-undo-last-commit .
diff --cc awklib/Makefile.in
index 793e8ee,01511c3..81f90a5
--- a/awklib/Makefile.in
+++ b/awklib/Makefile.in
@@@ -227,6 -198,6 +227,7 @@@ abs_srcdir = @abs_srcdir
  abs_top_builddir = @abs_top_builddir@
  abs_top_srcdir = @abs_top_srcdir@
  ac_ct_CC = @ac_ct_CC@
++acl_shlibext = @acl_shlibext@
  am__include = @am__include@
  am__leading_dot = @am__leading_dot@
  am__quote = @am__quote@
@@@ -261,6 -232,6 +262,7 @@@ mandir = @mandir
  mkdir_p = @mkdir_p@
  oldincludedir = @oldincludedir@
  pdfdir = @pdfdir@
++pkgextensiondir = @pkgextensiondir@
  prefix = @prefix@
  program_transform_name = @program_transform_name@
  psdir = @psdir@
diff --cc doc/ChangeLog
index 240ca75,568d7c7..a04db48
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@@ -1,35 -1,22 +1,54 @@@
+ 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-04-27         Arnold D. Robbins     <address@hidden>
 +
 +      * gawk.texi: Add that -b affects output.
 +
 +2012-04-27         Arnold D. Robbins     <address@hidden>
 +
 +      * texinfo.tex: Update to latest from automake 1.12.
 +
 +2012-04-09         Arnold D. Robbins     <address@hidden>
 +
 +      * texinfo.tex: Update to latest from automake 1.11.4.
 +
 +2012-04-11         John Haque     <address@hidden>
 +
 +      * gawk.texi: Change RNDMODE to ROUNDMODE.
 +      * gawk.1, awkcard.in: Ditto.
 +
 +2012-04-11         Arnold D. Robbins     <address@hidden>
 +
 +      * gawk.texi: Change --arbitrary-precision to --bignum.
 +      * gawk.1: Ditto.
 +      * awkcard.in: Add --bignum, RNDMODE, PREC.
 +
 +2012-04-08         Arnold D. Robbins     <address@hidden>
 +
 +      * gawk.texi: Editing on new chapter on arbitrary precision numbers.
 +
 +2012-03-31         John Haque     <address@hidden>
 +
 +      * gawk.texi, gawk.1: Add text on support for arbitrary precision
 +      numbers.
 +
  2012-02-06         Arnold D. Robbins     <address@hidden>
  
        * gawk.texi, gawk.1: And some minor edits thereunto.
diff --cc doc/Makefile.in
index 70c6abe,2d3dbae..bf4b45a
--- a/doc/Makefile.in
+++ b/doc/Makefile.in
@@@ -222,6 -194,6 +222,7 @@@ abs_srcdir = @abs_srcdir
  abs_top_builddir = @abs_top_builddir@
  abs_top_srcdir = @abs_top_srcdir@
  ac_ct_CC = @ac_ct_CC@
++acl_shlibext = @acl_shlibext@
  am__include = @am__include@
  am__leading_dot = @am__leading_dot@
  am__quote = @am__quote@
@@@ -256,6 -228,6 +257,7 @@@ mandir = @mandir
  mkdir_p = @mkdir_p@
  oldincludedir = @oldincludedir@
  pdfdir = @pdfdir@
++pkgextensiondir = @pkgextensiondir@
  prefix = @prefix@
  program_transform_name = @program_transform_name@
  psdir = @psdir@
diff --cc extension/ChangeLog
index 0b3053e,002cd3a..7c6976d
--- a/extension/ChangeLog
+++ b/extension/ChangeLog
@@@ -1,11 -1,56 +1,61 @@@
+ 2012-04-11         Andrew J. Schorr     <address@hidden>
+ 
+       * filefuncs.c (array_set): New function to set an array element.
+       (do_set): Use new array_set function to reduce code duplication and
+       to make sure the memory management is handled properly.
+ 
+ 2012-04-07         Andrew J. Schorr     <address@hidden>
+ 
+       * filefuncs.c: Remove unnecessary #include <sys/sysmacros.h>.
+       (read_symlink): New function to read symbolic links more robustly.
+       (do_stat): Use read_symlink instead of readlink.
+       * fork.c (do_wait): new function.
+       (dlload): Call make_builtin to add "wait" function.
+ 
+ 2012-04-02         Andrew J. Schorr     <address@hidden>
+ 
+       * fork.c (do_fork): Test whether PROCINFO_node exists before updating
+       the pid values.  And do so properly using make_number.
+       * readfile.c (do_readfile): Function should be static.
+ 
+ 2012-04-01         Andrew J. Schorr     <address@hidden>
+ 
+       * filefuncs.c (do_chdir, do_stat): Replace update_ERRNO() with
+       update_ERRNO_int(errno).
+       * fork.c (do_fork, do_waitpid): Ditto.
+       * readfile.c (do_readfile): Ditto.
+       * rwarray.c (do_writea, do_reada): Ditto.
+ 
+ 2012-03-25         Andrew J. Schorr     <address@hidden>
+ 
+       * Makefile.am: Major cleanup.  Use libtool options -module and
+       -avoid-version to create the modules properly without my local hack
+       to override the default behavior.
+ 
+ 2012-03-25         Andrew J. Schorr     <address@hidden>
+ 
+       * .gitignore: New file to ignore files created by libtool (including
+       binaries and associated metadata).
+ 
+ 2012-03-21         Andrew J. Schorr     <address@hidden>
+ 
+       * Makefile.am (INCLUDES): Remove -I$(top_srcdir)/intl.
+ 
+ 2012-03-20         Andrew J. Schorr     <address@hidden>
+ 
+       * Makefile.am: New file to build and install shared libraries.
+       * arrayparm.c (do_mkarray): Get it to compile by removing 2nd arg
+       to assoc_clear.
+       * filefuncs.c (do_stat): Ditto.
+ 
  2011-08-31         John Haque     <address@hidden>
 -        * arrayparm.c, filefuncs.c, fork.c, ordchr.c, readfile.c,
 -        rwarray.c, testarg.c: Updated.
 +
 +      * arrayparm.c, filefuncs.c, fork.c, ordchr.c, readfile.c,
 +      rwarray.c, testarg.c: Updated.
 +
 +2012-03-28         Arnold D. Robbins     <address@hidden>
 +
 +      * 4.0.1: Release tar ball made.
  
  2011-06-23         Arnold D. Robbins     <address@hidden>
  
diff --cc io.c
index 7e46cd9,b2d2982..9c47bad
--- a/io.c
+++ b/io.c
@@@ -240,8 -229,9 +240,12 @@@ int RS_is_null
  extern NODE *ARGC_node;
  extern NODE *ARGV_node;
  extern NODE *ARGIND_node;
++<<<<<<< HEAD
++=======
+ extern NODE **fields_arr;
++>>>>>>> xgawk
  
 +/* init_io --- set up timeout related variables */
  
  void
  init_io()
@@@ -396,16 -381,13 +400,16 @@@ nextfile(IOBUF **curfile, int skipping
                        fd = devopen(fname, binmode("r"));
                        errcode = errno;
                        if (! do_traditional)
-                               update_ERRNO();
+                               update_ERRNO_int(errno);
  
 -                      /* This is a kludge.  */
                        unref(FILENAME_node->var_value);
                        FILENAME_node->var_value = dupnode(arg);
 +#ifdef HAVE_MPFR
 +                      if (is_mpg_number(FNR_node->var_value))
 +                              mpz_set_ui(MFNR, 0);
 +#endif
                        FNR = 0;
 -                      iop = *curfile = iop_alloc(fd, fname, &mybuf, FALSE);
 +                      iop = *curfile = iop_alloc(fd, fname, & mybuf, FALSE);
                        if (fd == INVALID_HANDLE)
                                iop->errcode = errcode;
                        else
@@@ -493,10 -461,10 +497,10 @@@ inrec(IOBUF *iop, int *errcode
        if (cnt == EOF) {
                retval = 1;
                if (*errcode > 0)
-                       update_ERRNO_saved(*errcode);
+                       update_ERRNO_int(*errcode);
        } else {
 -              NR += 1;
 -              FNR += 1;
 +              INCREMENT_REC(NR);
 +              INCREMENT_REC(FNR);
                set_record(begin, cnt);
        }
  
@@@ -2272,10 -2235,10 +2275,15 @@@ do_getline_redir(int into_variable, enu
                return make_number((AWKNUM) 0.0);
  
        errcode = 0;
 -      cnt = get_a_record(&s, iop, &errcode);
 +      cnt = get_a_record(& s, iop, & errcode);
        if (errcode != 0) {
++<<<<<<< HEAD
 +              if (! do_traditional && errcode != -1)
 +                      update_ERRNO_saved(errcode);
++=======
+               if (! do_traditional && (errcode != -1))
+                       update_ERRNO_int(errcode);
++>>>>>>> xgawk
                return make_number((AWKNUM) -1.0);
        }
  
@@@ -2320,11 -2283,11 +2328,17 @@@ do_getline(int into_variable, IOBUF *io
        }
  
        errcode = 0;
 -      cnt = get_a_record(&s, iop, &errcode);
 +      cnt = get_a_record(& s, iop, & errcode);
        if (errcode != 0) {
++<<<<<<< HEAD
 +              if (! do_traditional && errcode != -1)
 +                      update_ERRNO_saved(errcode);
 +              if (into_variable)
++=======
+               if (! do_traditional && (errcode != -1))
+                       update_ERRNO_int(errcode);
+               if (intovar)
++>>>>>>> xgawk
                        (void) POP_ADDRESS();
                return make_number((AWKNUM) -1.0); 
        }
diff --cc pc/ChangeLog
index 8af4752,a5ce600..1eb5181
--- a/pc/ChangeLog
+++ b/pc/ChangeLog
@@@ -1,99 -1,7 +1,103 @@@
 +2012-05-06         Eli Zaretskii  <address@hidden>
 +
 +      * config.sed: Update DJGPP -> __DJGPP__.
 +
 +2012-04-16  Eli Zaretskii  <address@hidden>
 +
 +      * Makefile.tst (PGAWK): Redefine as "../gawk.exe -p".
 +      (MPFR_TESTS): New variable, a list of MPFR-related tests.
 +      (mpfr-tests): A new target.
 +      (badargs): Reset GREP_OPTIONS to empty, to avoid gratuitous
 +      failures when the user has something like -nH there.
 +      (mpfrieee, mpfrexprange, mpfrrnd, mpfrnr, mpfrsort, mpfrbigint):
 +      New tests.
 +
 +      * Makefile (default): Add descriptions of mingw32-mpfr and
 +      mingw32-libreadline-mpfr targets.
 +      (PRSPFILE, DRSPFILE, PRSP, DRSP, PLDRSP, DLDRSP, DO_PLNK)
 +      (DO_PBIND, DO_DLNK, DO_DBIND, PLDJG, DLDJG, PLMINGW32)
 +      (DLMINGW32, PAWKOBJS1, PAWKOBJS2, DAWKOBJS2, PGAWKOBJS)
 +      (DGAWKOBJS): Remove unused variables.
 +      (djgpp, djgpp-debug, mingw32): Don't use them.
 +      (mingw32): Add -D__USE_MINGW_ANSI_STDIO to compilation flags.
 +      (mingw32-readline, mingw32-mpfr, mingw32-readline-mpfr): New targets.
 +      (CFLAGS, AWKOBJS2): Don't reference obsolete DYN_FLAGS and DYN_OBJ
 +      variables.
 +      (AWKOBJS2): Add symbol$O.
 +      (AWKOBJS3): New variable, lists MPFR-related object files.
 +      (AWKOBJS): Add $(AWKOBJS3).
 +      (all): Remove pgawk.exe and dgawk.exe.
 +      (pgawk.exe, dgawk.exe, $(PRSPFILE) $(DRSPFILE), eval_p$O)
 +      (profile_p$O): Remove targets.
 +      (random$O, debug$O): Don't depend on floatmagic.h
 +      (eval$O): Depend on interpret.h.
 +      (clean): Prepend '-' to command line, to ignore errors due to
 +      non-existent files.
 +
 +      * config.h: Comment out "#undef HAVE_LIBREADLINE" (again).
 +
 +2012-03-29         Arnold D. Robbins     <address@hidden>
 +
 +      * config.h: Add definition for _Noreturn.
 +
+ 2012-03-20         Andrew J. Schorr     <address@hidden>
+ 
+       * gawkmisc.pc (deflibpath): New global variable.
+ 
 +2012-03-28         Arnold D. Robbins     <address@hidden>
 +
 +      * 4.0.1: Release tar ball made.
 +
 +2012-03-20         Arnold D. Robbins     <address@hidden>
 +
 +      * Makefile.tst (printfbad3): New test.
 +
 +2012-03-14         Eli Zaretskii  <address@hidden>
 +
 +      * gawkmisc.pc (btowc): New version for DJGPP.
 +
 +2012-03-01   Scott Deifik  <address@hidden>
 +
 +      * Makefile.tst: Sync with mainline version.
 +
 +2012-03-01         Eli Zaretskii  <address@hidden>
 +
 +      * Makefile: Quiet confusing info messages from the linker when
 +      gawk is linked against readline as a shared library.
 +
 +2012-02-22         Eli Zaretskii  <address@hidden>
 +
 +      * Makefile.tst: Update CMP and CP definitions, add "Expect xxxx to
 +      fail with MinGW" messages as needed.
 +
 +2012-02-15         Arnold D. Robbins     <address@hidden>
 +
 +      * gawkmisc.pc (execvp): Modify signature, return -1
 +      on error.
 +
 +2012-02-11  Eli Zaretskii  <address@hidden>
 +
 +      Fix dependencies in pc/Makefile.
 +      * Makefile ($(ALLOBJS) $(LIBOBJS) eval_p$O profile_p$O): Add eval_d$O,
 +      debug$O, and command$O.
 +
 +      Support MinGW build with the readline library.
 +      * Makefile (default): Add a line for the mingw32-readline target.
 +      (mingw32-readline): New target, passes -DHAVE_LIBREADLINE to the
 +      compiler and adds -lreadline to the linker command line.
 +
 +      * config.sed: Comment out "#undef HAVE_LIBREADLINE", so that it
 +      could be #define'd on the compiler command line.
 +
 +2012-02-10         Arnold D. Robbins     <address@hidden>
 +
 +      * gawkmisc.pc (execvp): New function based on code from Eli
 +      Zaretskii to make dgawk's restarting the debugger work.
 +
 +2012-01-27   Scott Deifik  <address@hidden>
 +
 +      * Makefile.tst: Sync with mainline version.
 +
  2011-12-12   Scott Deifik  <address@hidden>
  
        * Makefile.tst: Sync with mainline version.
diff --cc posix/ChangeLog
index d684afe,e899a6c..425f1c9
--- a/posix/ChangeLog
+++ b/posix/ChangeLog
@@@ -1,7 -1,7 +1,11 @@@
+ 2012-03-20         Andrew J. Schorr     <address@hidden>
+ 
+       * gawkmisc.c (deflibpath): New global variable.
+ 
 +2012-03-28         Arnold D. Robbins     <address@hidden>
 +
 +      * 4.0.1: Release tar ball made.
 +
  2011-06-23         Arnold D. Robbins     <address@hidden>
  
        * ChangeLog.0: Rotated ChangeLog into this file.
diff --cc test/ChangeLog
index e926adf,59f9117..45920dc
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@@ -1,28 -1,36 +1,61 @@@
+ 2012-04-08         Andrew J. Schorr     <address@hidden>
+ 
+       * Makefile.am (VALGRIND): Set to empty to protect against random
+       values in the environment.
+ 
+ 2012-04-08         Andrew J. Schorr     <address@hidden>
+ 
+       * Makefile.am (EXTRA_DIST): Add missing files fork.ok, fork2.ok
+       and ordchr2.ok.
+ 
+ 2012-04-08         Andrew J. Schorr     <address@hidden>
+ 
+       * Makefile.am (AWK, PGAWK): Include new $(VALGRIND) variable in
+       command line (now passed in by top-level Makefile).
+ 
+ 2012-04-07         Andrew J. Schorr     <address@hidden>
+ 
+       * Makefile.am (ordchr2, readfile): Fix so "make diffout" will work
+       properly.
+       * orchr2.ok: New file.
+ 
+ 2012-04-07         Andrew J. Schorr     <address@hidden>
+ 
+       * Makefile.am (check): Add new shlib-tests target.
+       (SHLIB_TESTS): Add tests ordchr, ordchr2, fork, fork2, readfile and
+       filefuncs.
+       * ordchr.awk, ordchr.ok, fork.awk, fork.ok, fork2.awk, fork2.ok,
+       filefuncs.awk, filefuncs.ok: New files.
+ 
+ 2012-04-01         Andrew J. Schorr     <address@hidden>
+ 
+       * Makefile.am (valgrind-scan): Update to match modern valgrind output.
+ 
 +2012-05-09         Arnold D. Robbins     <address@hidden>
 +
 +      * Makefile.am (jarebug): New test.
 +      * jarebug.awk, jarebug.in, jarebug.ok: New files.
 +
 +2012-04-01         John Haque      <address@hidden>
 +
 +      * Makefile.am (mpfr-test): Add target for manual testing of MPFR
 +      and GMP numbers.
 +      * mpfrbigint.awk, mpfrexprange.awk, mpfrieee.awk, mpfrnr.awk,
 +      mpfrrnd.awk, mpfrsort.awk: New tests.
 +      (MPFR_TESTS): Add the new tests.
 +      * mpfrnr.in, mpfrbigint.ok, mpfrexprange.ok, mpfrieee.ok, mpfrnr.ok,
 +      mpfrrnd.ok, mpfrsort.ok: New files.
 +      (AWK): Add AWKFLAGS; useful for testing with 'gawk -M' invocation.
 +
 +2012-02-28         Arnold D. Robbins     <address@hidden>
 +
 +      * fmtspcl-mpfr.ok, fnarydel-mpfr.ok, fnparydl-mpfr.ok,
 +      rand-mpfr.ok: New files.
 +      * Makefile.am (EXTRA_DIST): Add them.
 +      (CHECK_MPFR): New list of files that have MPFR variant .ok file.
 +      * Gentests: Deal with MPFR files by modifying the generated
 +      comparison command.
 +
  2011-12-26         John Haque      <address@hidden>
  
        * badargs.ok: Adjust for new and changed command line options.
diff --cc test/Makefile.am
index 4b0bf81,2fe14c4..05b19a7
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@@ -232,7 -232,10 +234,11 @@@ EXTRA_DIST = 
        fnmisc.ok \
        fnparydl.awk \
        fnparydl.ok \
 +      fnparydl-mpfr.ok \
+       fork.awk \
+       fork.ok \
+       fork2.awk \
+       fork2.ok \
        fpat1.awk \
        fpat1.in \
        fpat1.ok \
@@@ -885,14 -874,21 +896,18 @@@ GENTESTS_UNUSED = Makefile.in gtlnbufv.
  
  CMP = cmp
  AWKPROG = ../gawk$(EXEEXT)
 -PGAWKPROG = ../pgawk$(EXEEXT)
  
+ # Default for VALGRIND is empty unless overridden by a command-line argument.
+ # This protects against cruft in the environment.
+ VALGRIND = 
+ 
  # This business forces the locale to be C for running the tests,
  # unless we override it to something else for testing.
  #
  # This can also be done in individual tests where we wish to
  # check things specifically not in the C locale.
- AWK = LC_ALL=$${GAWKLOCALE:-C} LANG=$${GAWKLOCALE:-C} $(AWKPROG) $(AWKFLAGS)
 -#
 -# And we set AWKLIBPATH to find the extension libraries we built.
 -AWK = LC_ALL=$${GAWKLOCALE:-C} LANG=$${GAWKLOCALE:-C} 
AWKLIBPATH=../extension/.libs $(VALGRIND) $(AWKPROG)
 -PGAWK = LC_ALL=$${GAWKLOCALE:-C} LANG=$${GAWKLOCALE:-C} 
AWKLIBPATH=../extension/.libs $(VALGRIND) $(PGAWKPROG)
 +
++AWK = LC_ALL=$${GAWKLOCALE:-C} LANG=$${GAWKLOCALE:-C} $(AWKPROG) $(AWKFLAGS)
  
  # Message stuff is to make it a little easier to follow.
  # Make the pass-fail last and dependent on others to avoid
@@@ -920,8 -917,8 +936,10 @@@ inet:     inetmesg $(INET_TESTS
  
  machine-tests: $(MACHINE_TESTS)
  
 +mpfr-tests: $(MPFR_TESTS)
 +
+ shlib-tests: $(SHLIB_TESTS)
+ 
  msg::
        @echo ''
        @echo 'Any output from "cmp" is bad news, although some differences'
@@@ -1469,49 -1470,16 +1493,59 @@@ rri1:
        AWKPATH=$(srcdir) $(AWK) -f address@hidden  < $(srcdir)/address@hidden 
>_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
        @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
  
 +rand:
 +      @echo $@
 +      @AWKPATH=$(srcdir) $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
 +      @-if test -z "$$AWKFLAGS" ; then $(CMP) $(srcdir)/address@hidden _$@ && 
rm -f _$@ ; else \
 +      ($(CMP) $(srcdir)/address@hidden _$@ || $(CMP) $(srcdir)/address@hidden 
_$@) && rm -f _$@ ; \
 +      fi
 +
 +mpfrieee:
 +      @echo $@
 +      @$(AWK) -M -vPREC=double -f $(srcdir)/address@hidden > _$@ 2>&1
 +      @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 +
 +mpfrexprange:
 +      @echo $@
 +      @$(AWK) -M -vPREC=53 -f $(srcdir)/address@hidden > _$@ 2>&1
 +      @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 +
 +mpfrrnd:
 +      @echo $@
 +      @$(AWK) -M -vPREC=53 -f $(srcdir)/address@hidden > _$@ 2>&1
 +      @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 +
 +mpfrnr:
 +      @echo $@
 +      @$(AWK) -M -vPREC=113 -f $(srcdir)/address@hidden 
$(srcdir)/address@hidden > _$@
 +      @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 +
 +mpfrsort:
 +      @echo $@
 +      @$(AWK) -M -vPREC=53 -f $(srcdir)/address@hidden > _$@ 2>&1
 +      @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 +
 +mpfrbigint:
 +      @echo $@
 +      @$(AWK) -M -f $(srcdir)/address@hidden > _$@ 2>&1
 +      @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 +
 +jarebug::
 +      @echo $@
 +      @GAWKLOCALE=ja_JP.EUC-JP ; export GAWKLOCALE ; \
 +      $(AWK) -f $(srcdir)/address@hidden $(srcdir)/address@hidden >_$@ 2>&1 
|| echo EXIT CODE: $$? >> _$@
 +      @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 +
+ ordchr2::
+       @echo $@
+       @$(AWK) -l ordchr 'BEGIN {print chr(ord("z"))}' >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
+ 
+ readfile::
+       @echo $@
+       @$(AWK) -l readfile 'BEGIN {printf "%s", readfile("Makefile")}' >_$@ 
2>&1 || echo EXIT CODE: $$? >>_$@
+       @-$(CMP) Makefile _$@ && rm -f _$@ || cp -p Makefile address@hidden
+ 
  # Targets generated for other tests:
  include Maketests
  
diff --cc vms/ChangeLog
index fa1fbd1,90a6e75..9988d34
--- a/vms/ChangeLog
+++ b/vms/ChangeLog
@@@ -1,27 -1,7 +1,31 @@@
 +2012-03-29         Arnold D. Robbins     <address@hidden>
 +
 +      * config.h: Add definition for _Noreturn.
 +
+ 2012-03-20         Andrew J. Schorr     <address@hidden>
+ 
+       * gawkmisc.vms (deflibpath): New global variable.
+ 
 +2012-03-28         Arnold D. Robbins     <address@hidden>
 +
 +      * 4.0.1: Release tar ball made.
 +
 +2012-03-28         Arnold D. Robbins     <address@hidden>
 +
 +      * vms-conf.h: Update copyright year.
 +
 +2012-03-21         Anders Wallin         <address@hidden>
 +
 +      * vmstest.com: Make printfbad3 test work.
 +
 +2012-03-20         Arnold D. Robbins     <address@hidden>
 +
 +      * vmstest.com: Add printfbad3 test.
 +
 +2012-02-10         Arnold D. Robbins     <address@hidden>
 +
 +      * vmsbuild.com, descrip.mms, vms-conf.h: Update patch level.
 +
  2011-12-31         Arnold D. Robbins     <address@hidden>
  
        * vms_misc.c: [STREQ, STREQN]: Change use of macros to call

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

Summary of changes:
 .gitignore                          |    1 +
 ChangeLog                           |  111 +
 Makefile.am                         |   15 +-
 Makefile.in                         |  125 +-
 NEWS                                |    4 +
 README.git                          |   32 +-
 TODO                                |   23 +-
 TODO.xgawk                          |  134 +
 aclocal.m4                          |    5 +
 awk.h                               |    7 +-
 awkgram.c                           | 1763 ++++---
 awkgram.y                           |   70 +-
 awklib/Makefile.in                  |  100 +-
 configh.in                          |    8 +
 configure                           | 8394 +++++++++++++++++++++++++++++-
 configure.ac                        |    8 +
 doc/ChangeLog                       |   19 +
 doc/Makefile.in                     |   71 +-
 doc/gawk.1                          |   29 +-
 doc/gawk.info                       | 1175 +++--
 doc/gawk.texi                       |  114 +-
 doc/gawkinet.info                   |   72 +-
 eval.c                              |   22 +-
 ext.c                               |    3 +-
 extension/.gitignore                |    3 +
 extension/ChangeLog                 |   50 +
 extension/Makefile.am               |   57 +
 {awklib => extension}/Makefile.in   |  421 +-
 extension/arrayparm.c               |    2 +-
 extension/filefuncs.c               |  189 +-
 extension/fork.c                    |   34 +-
 extension/ordchr.c                  |    2 +-
 extension/readfile.c                |   10 +-
 extension/rwarray.c                 |    4 +-
 gawkapi.h                           |  216 +
 io.c                                |  110 +-
 ltmain.sh                           | 9655 +++++++++++++++++++++++++++++++++++
 m4/ChangeLog                        |    4 +-
 m4/libtool.m4                       | 7986 +++++++++++++++++++++++++++++
 m4/ltoptions.m4                     |  384 ++
 m4/ltsugar.m4                       |  123 +
 m4/ltversion.m4                     |   23 +
 m4/lt~obsolete.m4                   |   98 +
 main.c                              |   43 +-
 pc/ChangeLog                        |    4 +
 pc/gawkmisc.pc                      |    2 +
 posix/ChangeLog                     |    4 +
 posix/gawkmisc.c                    |    1 +
 test/ChangeLog                      |   33 +
 test/Makefile.am                    |   44 +-
 test/Makefile.in                    |  126 +-
 test/Maketests                      |   20 +
 test/filefuncs.awk                  |   25 +
 test/{arrayprm2.ok => filefuncs.ok} |    0
 test/fork.awk                       |   33 +
 test/{arrayprm2.ok => fork.ok}      |    0
 test/fork2.awk                      |   35 +
 test/{arrayprm2.ok => fork2.ok}     |    0
 test/ordchr.awk                     |    5 +
 test/ordchr.ok                      |    1 +
 test/ordchr2.ok                     |    1 +
 vms/ChangeLog                       |    4 +
 vms/gawkmisc.vms                    |    1 +
 63 files changed, 29904 insertions(+), 2154 deletions(-)
 create mode 100644 TODO.xgawk
 create mode 100644 extension/.gitignore
 create mode 100644 extension/Makefile.am
 copy {awklib => extension}/Makefile.in (58%)
 create mode 100644 gawkapi.h
 create mode 100644 ltmain.sh
 create mode 100644 m4/libtool.m4
 create mode 100644 m4/ltoptions.m4
 create mode 100644 m4/ltsugar.m4
 create mode 100644 m4/ltversion.m4
 create mode 100644 m4/lt~obsolete.m4
 create mode 100644 test/filefuncs.awk
 copy test/{arrayprm2.ok => filefuncs.ok} (100%)
 create mode 100644 test/fork.awk
 copy test/{arrayprm2.ok => fork.ok} (100%)
 create mode 100644 test/fork2.awk
 copy test/{arrayprm2.ok => fork2.ok} (100%)
 create mode 100644 test/ordchr.awk
 create mode 100644 test/ordchr.ok
 create mode 100644 test/ordchr2.ok


hooks/post-receive
-- 
gawk



reply via email to

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