gawk-diffs
[Top][All Lists]
Advanced

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

[gawk-diffs] [SCM] gawk branch, extgawk, updated. ab670cb99e104c3718c4c6


From: Andrew J. Schorr
Subject: [gawk-diffs] [SCM] gawk branch, extgawk, updated. ab670cb99e104c3718c4c6b343d236898e057634
Date: Sun, 20 May 2012 03:48: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, extgawk has been updated
       via  ab670cb99e104c3718c4c6b343d236898e057634 (commit)
       via  cdf892a07fa67c635997e41ee8fe175aaafb2431 (commit)
      from  860fe8fd4734fb3e9cc5568595ce1ac719d71112 (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=ab670cb99e104c3718c4c6b343d236898e057634

commit ab670cb99e104c3718c4c6b343d236898e057634
Merge: cdf892a 860fe8f
Author: Andrew J. Schorr <address@hidden>
Date:   Sat May 19 23:48:15 2012 -0400

    Merge branch 'extgawk' of ssh://git.sv.gnu.org/srv/git/gawk into extgawk


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

commit cdf892a07fa67c635997e41ee8fe175aaafb2431
Author: Andrew J. Schorr <address@hidden>
Date:   Sat May 19 23:45:07 2012 -0400

    Add -i option, append .awk if initial search fails, and allow -f repeats.

diff --git a/ChangeLog b/ChangeLog
index 2bee6d0..97b2e2d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2012-05-19         Andrew J. Schorr     <address@hidden>
+
+       * TODO.xgawk: Update to reflect progress and new issues.
+       * main.c (main): Add -i (--include) option.
+       (usage): Ditto.
+       * awkgram.y (add_srcfile): Eliminate duplicates only for SRC_INC
+       and SRC_EXTLIB sources (i.e. -f duplicates should not be removed).
+       * io.c (find_source): Set DEFAULT_FILETYPE to ".awk" if not defined
+       elsewhere.
+
 2012-05-15         Arnold D. Robbins     <address@hidden>
 
        * awk.h: Include "gawkapi.h" to get IOBUF.
diff --git a/TODO.xgawk b/TODO.xgawk
index 1917c73..04b82b5 100644
--- a/TODO.xgawk
+++ b/TODO.xgawk
@@ -1,86 +1,37 @@
 To-do list for xgawk enhancements:
 
+- Finish implementing new interface using gawkapi.h
 
-Done:
-
-- Add AWKLIBPATH with default pointing to ${libexecdir}/$PACKAGE/$VERSION
-
-- Change default shared library extension from ".so" to ".$shlibext"
-
-- Patch build infrastructure so that the current code in the
-  extension subdirectory gets built and installed into the default $AWKLIBPATH
-  location.
-
-- Implement @load
-
-- Patch ERRNO handling to create a simple API for use by extensions:
-   extern void update_ERRNO_int(int)
-   enum errno_translate { TRANSLATE, DONT_TRANSLATE };
-   extern void update_ERRNO_string(const char *string, enum errno_translate);
-   extern void unset_ERRNO(void);
-
-- Add valgrind-noleak target.
-
-- Fix minor bug in fork extension, and add wait function.
-
-- Patch filefuncs extension to read symbolic links more robustly.
-
-- Add shared library tests.
-
-- Delete extension/xreadlink.[ch]
-
-
-To do (not necessarily in this order):
-
-- Add a -i (--include) option.
-
-- The -f flag should not eliminate duplicates.
-
-- Enable default ".awk" search in io.c:find_source().  The simple change
-  is to add this code inline in io.c:
-      #ifndef DEFAULT_FILETYPE
-      #define DEFAULT_FILETYPE ".awk"
-      #endif
-
-- Implement new interface using gawkapi.h
+- Consider behavior when -i and -f include the same file.  Currently,
+  -f always loads the code, regardless of whether it has already been loaded
+  using -i or -f.  By contrast, -i will ignore the file if has already been
+  loaded with either -i or -f.  Thus, if you say "gawk -f lib.awk -i lib.awk",
+  it will not be included the second time.  But if you flip the order
+  and say "gawk -i lib.awk -f lib.awk", the file will be loaded twice.
+  Is this the most sensible behavior?
 
 - Add time extension to the gawk distro. This defines sleep and gettimeofday.
-  Rename existing gettimeofday by adding some underscores.
+  Rename existing gettimeofday by adding some underscores.  Awaiting
+  confirmation of copyright assignment from FSF...
 
-- Enhance extension/fork.c waitpid to allow the caller to specify the options.
-  And add an optional array argument to wait and waitpid in which to return
-  exit status information.
+- Running "make install" should install gawkapi.h in /usr/include.
 
-- Maybe add more shared library tests.
+- Decide how to transition from the old extension API to the new one.
+  When will the old approach be abandoned?
 
-- Fix extension/rwarray.c.  It does not currently compile due to changes
-  in the NODE structure relating to array support.  The MPFR changes will
-  also make this more complicated.
-
-- Figure out how to support xgawk on platforms such as Cygwin where a DLL
-  cannot be linked with unresolved references.  There are currently 3
-  possible solutions:
-    1. Restructure gawk as a stub calling into a shared library.
-    2. Move a subset of gawk interfaces into a shared library that can be
-       called by extensions.
-    3. Change the interface between gawk and extensions so that gawk will
-       pass a pointer to a structure into dlload that contains the addresses
-       of all variables and functions to which the extension may need access.
+- Eliminate libtool from the top-level configure.ac.  Create a separate
+  configure.ac in the extensions subdirectory, and hide all the libtool
+  stuff in there.  I think AC_CONFIG_SUBDIRS may do this.  Should building
+  the extensions be optional (e.g. by adding a --without-extensions option
+  to the top-level configure)?  If not, I do not understand what is
+  accomplished by using a separate configure script for the extensions...
 
-- Fix lint complaints about shared library functions being called without
-  having been defined.  For example, try:
-     gawk --lint -lordchr 'BEGIN {print chr(65)}'
-     gawk: warning: function `chr' called but never defined
-     A
-  In ext.c, make_builtin needs to call awkgram.y:func_use.  If done naively,
-  I think this would result in complaints about shared library functions
-  defined but not used.  So there should probably be an enhancement to func_use
-  and ftable to indicate if it's a shared library function.
+- Develop a libgawk shared library for use by extensions.  Should this
+  be hosted in a separate project?
 
-- Develop a libgawk shared library for use by extensions.  In particular,
-  a few existing extensions use a hash API for mapping string handles to
-  structures.  In xgawk, we had this API inside array.c, but it probably
-  belongs in a separate libgawk shared library:
+  A few existing extensions use a hash API for mapping string
+  handles to structures.  In xgawk, we had this API inside array.c, but it
+  probably belongs in a separate libgawk shared library:
 
   typedef struct _strhash strhash;
   extern strhash *strhash_create P((size_t min_table_size));
@@ -96,19 +47,28 @@ To do (not necessarily in this order):
                               strhash_delete_func, void *opaque));
   extern void strhash_destroy P((strhash *, strhash_delete_func, void 
*opaque));
 
-- Running "make install" should install the new libgawk shared library
-  as well as header files needed to build extensions under /usr/include/gawk.
-  The extensions include "awk.h", and that pulls in the following headers
-  (according to gcc -M) :
-      awk.h config.h custom.h gettext.h mbsupport.h protos.h getopt.h \
-      regex.h dfa.h
-  Most likely, most of this is not required.  Arnold has suggested 
-  creating a smaller header to define the public interface for use by shared
-  libraries.  One could imagine having "awk-ext.h" that is included by "awk.h".
-
-
-Separate projects for major standalone extensions.  Where should these
-be hosted?
+- Review open hook implementation.  Arnold's comments on this:
+   I think the code flow in io.c needs reviewing. It's not
+   clear to me under what circumstances open hooks (a) are called, or
+   (b) should be called.  Only the XML extension uses them now, but I
+   think it'd be a nice mechanism to generalize if possible, and to
+   document.
+   
+   E.g., I can easily envision an open hook to turn directories into records
+   of the form
+  
+         type link-count mode owner group atime mtime ctime name
+   
+   I could also envision an open hook to provide an interface to libiconv
+   (somehow).  More discussion / explanation of the vision behind this
+   would be welcome.
+
+- Can the IOBUF internals be removed from gawkapi.h?  I think this may be
+  possible if we revise the open hook implementation.
+
+
+Separate projects for major standalone extensions.  We need to set up
+hosting for these projects:
 
 - XML
 
@@ -116,10 +76,33 @@ be hosted?
 
 - GD
 
-- MPFR.  Is this still useful if MPFR support will be integrated into gawk?
+- MPFR.  This is probably not useful now that MPFR support has been
+  integrated into gawk.  Are there any users who need this extension?
+
+
+Low priority:
 
+- Fix extension/rwarray.c.  It does not currently compile due to changes
+  in the NODE structure relating to array support.  The MPFR changes will
+  also make this more complicated.  John is best equipped to solve this
+  problem.
+
+- Enhance extension/fork.c waitpid to allow the caller to specify the options.
+  And add an optional array argument to wait and waitpid in which to return
+  exit status information.
 
-Possible changes requiring (further) discussion:
+- Fix lint complaints about shared library functions being called without
+  having been defined.  For example, try:
+     gawk --lint -lordchr 'BEGIN {print chr(65)}'
+     gawk: warning: function `chr' called but never defined
+     A
+  In ext.c, make_builtin needs to call awkgram.y:func_use.  If done naively,
+  I think this would result in complaints about shared library functions
+  defined but not used.  So there should probably be an enhancement to func_use
+  and ftable to indicate if it's a shared library function.
+
+
+Possible future changes requiring (further) discussion:
 
 - Change from dlopen to using the libltdl library (i.e. lt_dlopen).
   This may support more platforms.
@@ -139,6 +122,48 @@ Possible changes requiring (further) discussion:
   etc, I'd like to keep things simple.  But how we design this is going
   to be very important.
 
+
+Unlikely:
+
 - Include a sample rpm spec file in a new packaging subdirectory.
 
 - Patch lexer for @include and @load to make quotes optional.
+
+
+Done:
+
+- Add AWKLIBPATH with default pointing to ${libexecdir}/$PACKAGE/$VERSION
+
+- Change default shared library extension from ".so" to ".$shlibext"
+
+- Patch build infrastructure so that the current code in the
+  extension subdirectory gets built and installed into the default $AWKLIBPATH
+  location.
+
+- Implement @load
+
+- Patch ERRNO handling to create a simple API for use by extensions:
+   extern void update_ERRNO_int(int)
+   enum errno_translate { TRANSLATE, DONT_TRANSLATE };
+   extern void update_ERRNO_string(const char *string, enum errno_translate);
+   extern void unset_ERRNO(void);
+
+- Add valgrind-noleak target.
+
+- Fix minor bug in fork extension, and add wait function.
+
+- Patch filefuncs extension to read symbolic links more robustly.
+
+- Add shared library tests.
+
+- Delete extension/xreadlink.[ch]
+
+- Add a -i (--include) option.
+
+- Enable default ".awk" search in io.c:find_source().  The simple change
+  is to add this code inline in io.c:
+      #ifndef DEFAULT_FILETYPE
+      #define DEFAULT_FILETYPE ".awk"
+      #endif
+
+- The -f flag should not eliminate duplicates.
diff --git a/awkgram.c b/awkgram.c
index dcd5ffe..fe3fd13 100644
--- a/awkgram.c
+++ b/awkgram.c
@@ -5045,25 +5045,28 @@ add_srcfile(int stype, char *src, SRCFILE *thisfile, 
bool *already_included, int
                                errno_val ? strerror(errno_val) : _("reason 
unknown"));
        }
 
-       for (s = srcfiles->next; s != srcfiles; s = s->next) {
-               if ((s->stype == SRC_FILE || s->stype == SRC_INC || s->stype == 
SRC_EXTLIB)
-                               && files_are_same(path, s)
-               ) {
-                       if (do_lint) {
-                               int line = sourceline;
-                               /* Kludge: the line number may be off for 
address@hidden file'.
-                                * Since, this function is also used for '-f 
file' in main.c,
-                                * sourceline > 1 check ensures that the call 
is at
-                                * parse time.
-                                */
-                               if (sourceline > 1 && lasttok == NEWLINE)
-                                       line--;
-                               lintwarn_ln(line, _("already included source 
file `%s'"), src);
+       /* N.B. We do not eliminate duplicate SRC_FILE (-f) programs. */
+       if (stype == SRC_INC || stype == SRC_EXTLIB) {
+               for (s = srcfiles->next; s != srcfiles; s = s->next) {
+                       if ((s->stype == SRC_FILE || s->stype == SRC_INC || 
s->stype == SRC_EXTLIB)
+                                       && files_are_same(path, s)
+                       ) {
+                               if (do_lint) {
+                                       int line = sourceline;
+                                       /* Kludge: the line number may be off 
for address@hidden file'.
+                                        * Since, this function is also used 
for '-f file' in main.c,
+                                        * sourceline > 1 check ensures that 
the call is at
+                                        * parse time.
+                                        */
+                                       if (sourceline > 1 && lasttok == 
NEWLINE)
+                                               line--;
+                                       lintwarn_ln(line, _("already included 
source file `%s'"), src);
+                               }
+                               efree(path);
+                               if (already_included)
+                                       *already_included = true;
+                               return NULL;
                        }
-                       efree(path);
-                       if (already_included)
-                               *already_included = true;
-                       return NULL;
                }
        }
 
diff --git a/awkgram.y b/awkgram.y
index c0ba4f8..2a48a6f 100644
--- a/awkgram.y
+++ b/awkgram.y
@@ -2325,25 +2325,28 @@ add_srcfile(int stype, char *src, SRCFILE *thisfile, 
bool *already_included, int
                                errno_val ? strerror(errno_val) : _("reason 
unknown"));
        }
 
-       for (s = srcfiles->next; s != srcfiles; s = s->next) {
-               if ((s->stype == SRC_FILE || s->stype == SRC_INC || s->stype == 
SRC_EXTLIB)
-                               && files_are_same(path, s)
-               ) {
-                       if (do_lint) {
-                               int line = sourceline;
-                               /* Kludge: the line number may be off for 
address@hidden file'.
-                                * Since, this function is also used for '-f 
file' in main.c,
-                                * sourceline > 1 check ensures that the call 
is at
-                                * parse time.
-                                */
-                               if (sourceline > 1 && lasttok == NEWLINE)
-                                       line--;
-                               lintwarn_ln(line, _("already included source 
file `%s'"), src);
+       /* N.B. We do not eliminate duplicate SRC_FILE (-f) programs. */
+       if (stype == SRC_INC || stype == SRC_EXTLIB) {
+               for (s = srcfiles->next; s != srcfiles; s = s->next) {
+                       if ((s->stype == SRC_FILE || s->stype == SRC_INC || 
s->stype == SRC_EXTLIB)
+                                       && files_are_same(path, s)
+                       ) {
+                               if (do_lint) {
+                                       int line = sourceline;
+                                       /* Kludge: the line number may be off 
for address@hidden file'.
+                                        * Since, this function is also used 
for '-f file' in main.c,
+                                        * sourceline > 1 check ensures that 
the call is at
+                                        * parse time.
+                                        */
+                                       if (sourceline > 1 && lasttok == 
NEWLINE)
+                                               line--;
+                                       lintwarn_ln(line, _("already included 
source file `%s'"), src);
+                               }
+                               efree(path);
+                               if (already_included)
+                                       *already_included = true;
+                               return NULL;
                        }
-                       efree(path);
-                       if (already_included)
-                               *already_included = true;
-                       return NULL;
                }
        }
 
diff --git a/doc/ChangeLog b/doc/ChangeLog
index a04db48..5757259 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,3 +1,8 @@
+2012-05-19         Andrew J. Schorr     <address@hidden>
+
+       * gawk.texi, gawk.1: Document new -i option, and describe new default
+       .awk suffix behavior.
+
 2012-04-01         Andrew J. Schorr     <address@hidden>
 
        * gawk.texi: Replace documentation of removed functions update_ERRNO and
diff --git a/doc/gawk.1 b/doc/gawk.1
index dbc2582..dbc527e 100644
--- a/doc/gawk.1
+++ b/doc/gawk.1
@@ -323,6 +323,19 @@ the standard output.
 these options cause an immediate, successful exit.)
 .TP
 .PD 0
+.BI "\-i " include-file
+.TP
+.PD
+.BI \-\^\-include " include-file"
+Load an awk source library.
+This searches for the library using the
+.B AWKPATH
+environment variable.  If the initial search fails, another attempt will
+be made after appending the ".awk" suffix.  The file will be loaded only
+once (i.e. duplicates are eliminated), and the code does not constitute
+the main program source.
+.TP
+.PD 0
 .BI "\-l " lib
 .TP
 .PD
@@ -619,7 +632,9 @@ The environment variable
 specifies a search path to use when finding source files named with
 the
 .B \-f
-option.  If this variable does not exist, the default path is
+and
+.B \-i
+options.  If this variable does not exist, the default path is
 \fB".:/usr/local/share/awk"\fR.
 (The actual directory may vary, depending upon how
 .I gawk
@@ -3643,9 +3658,14 @@ environment variable can be used to provide a list of 
directories that
 .I gawk
 searches when looking for files named via the
 .B \-f
-and
+,
 .B \-\^\-file
-options.
+,
+.B \-i
+and
+.B \-\^\-include
+options.  If the initial search fails, the path is searched again after
+appending ".awk" to the filename.
 .PP
 The
 .B AWKLIBPATH
diff --git a/doc/gawk.info b/doc/gawk.info
index 6846063..0eb5dad 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -2168,6 +2168,20 @@ The following list describes options mandated by the 
POSIX standard:
      `awk' program consists of the concatenation the contents of each
      specified SOURCE-FILE.
 
+`-i SOURCE-FILE'
+`--include SOURCE-FILE'
+     Read `awk' source library from SOURCE-FILE.  This option is
+     completely equivalent to using the address@hidden' directive inside
+     your program.  This option is very similar to the `-f' option, but
+     there are two important differences.  First, when `-i' is used,
+     the program source will not be loaded if it has been previously
+     loaded, whereas the `-f' will always load the file.  Second,
+     because this option is intended to be used with code libraries, the
+     `awk' command does not recognize such files as constituting main
+     program input.  Thus, after processing an `-i' argument, we still
+     expect to find the main source code via the `-f' option or on the
+     command-line.
+
 `-v VAR=VAL'
 `--assign VAR=VAL'
      Set the variable VAR to the value VAL _before_ execution of the
@@ -2594,9 +2608,9 @@ The previous minor node described how `awk' program files 
can be named
 on the command-line with the `-f' option.  In most `awk'
 implementations, you must supply a precise path name for each program
 file, unless the file is in the current directory.  But in `gawk', if
-the file name supplied to the `-f' option does not contain a `/', then
-`gawk' searches a list of directories (called the "search path"), one
-by one, looking for a file with the specified name.
+the file name supplied to the `-f' or `-i' options does not contain a
+`/', then `gawk' searches a list of directories (called the "search
+path"), one by one, looking for a file with the specified name.
 
 The search path is a string consisting of directory names separated by
 colons.  `gawk' gets its search path from the `AWKPATH' environment
@@ -2609,11 +2623,15 @@ standard directory in the default path and then 
specified on the
 command line with a short file name.  Otherwise, the full file name
 would have to be typed for each file.
 
-   By using both the `--source' and `-f' options, your command-line
-`awk' programs can use facilities in `awk' library files (*note Library
-Functions::).  Path searching is not done if `gawk' is in compatibility
-mode.  This is true for both `--traditional' and `--posix'.  *Note
-Options::.
+   By using the `-i' option, or the `--source' and `-f' options, your
+command-line `awk' programs can use facilities in `awk' library files
+(*note Library Functions::).  Path searching is not done if `gawk' is
+in compatibility mode.  This is true for both `--traditional' and
+`--posix'.  *Note Options::.
+
+   If the source code is not found after the initial search, the path
+is searched again after adding the default `.awk' suffix to the
+filename.
 
      NOTE: To include the current directory in the path, either place
      `.' explicitly in the path or write a null entry in the path.  (A
@@ -2752,7 +2770,8 @@ into smaller, more manageable pieces, and also lets you 
reuse common
 together `awk' functions, used to carry out specific tasks, into
 external files. These files can be used just like function libraries,
 using the address@hidden' keyword in conjunction with the `AWKPATH'
-environment variable.
+environment variable.  Note that source files may also be included
+using the `-i' option.
 
    Let's see an example.  We'll start with two (trivial) `awk' scripts,
 namely `test1' and `test2'. Here is the `test1' script:
@@ -3365,7 +3384,7 @@ Class       Meaning
 `[:upper:]' Uppercase alphabetic characters.
 `[:xdigit:]'Characters that are hexadecimal digits.
 
-Table 3.1: POSIX Character Classes
+Table    3.1: POSIX Character Classes
 
    For example, before the POSIX standard, you had to write
 `/[A-Za-z0-9]/' to match alphanumeric characters.  If your character
@@ -5328,7 +5347,7 @@ COMMAND `|& getline'     Sets `$0' and `NF'          
Extension
 COMMAND `|& getline'     Sets VAR                    Extension
 VAR                                                  
 
-Table 4.1: getline Variants and What They Set
+Table    4.1: getline Variants and What They Set
 
 
 File: gawk.info,  Node: Read Timeout,  Next: Command line directories,  Prev: 
Getline,  Up: Reading Files
@@ -6996,7 +7015,7 @@ Feature     Default        `--posix' or `--use-lc-numeric'
 Input       Use period     Use locale
 `strtonum()'Use period     Use locale
 
-Table 6.1: Locale Decimal Point versus A Period
+Table    6.1: Locale Decimal Point versus A Period
 
    Finally, modern day formal standards and IEEE standard floating point
 representation can have an unusual but important effect on the way
@@ -7338,7 +7357,7 @@ LVALUE `%=' MODULUS    Sets LVALUE to its remainder by 
MODULUS.
 LVALUE `^=' POWER      
 LVALUE `**=' POWER     Raises LVALUE to the power POWER. (c.e.)
 
-Table 6.2: Arithmetic Assignment Operators
+Table    6.2: Arithmetic Assignment Operators
 
      NOTE: Only the `^=' operator is specified by POSIX.  For maximum
      portability, do not use the `**=' operator.
@@ -7643,7 +7662,7 @@ X `!~' Y           True if the string X does not match 
the regexp
 SUBSCRIPT `in'     True if the array ARRAY has an element with the
 ARRAY              subscript SUBSCRIPT.
 
-Table 6.3: Relational Operators
+Table    6.3: Relational Operators
 
    Comparison expressions have the value one if true and zero if false.
 When comparing operands of mixed types, numeric operands are converted
@@ -11481,7 +11500,7 @@ is illustrated in *note table-sub-escapes::.
      `\\\\\\&'           `\\\&'            a literal `\\&'
          `\\q'             `\q'            a literal `\q'
 
-Table 9.1: Historical Escape Sequence Processing for `sub()' and
+Table    9.1: Historical Escape Sequence Processing for `sub()' and
 `gsub()'
 
 This table shows both the lexical-level processing, where an odd number
@@ -11506,7 +11525,8 @@ literally.  The interpretation of `\' and `&' then 
becomes as shown in
        `\\\\&'            `\\&'            a literal `\', then the matched text
      `\\\\\\&'           `\\\&'            a literal `\&'
 
-Table 9.2: 1992 POSIX Rules for sub and gsub Escape Sequence Processing
+Table    9.2: 1992 POSIX Rules for sub and gsub Escape Sequence
+Processing
 
 This appears to solve the problem.  Unfortunately, the phrasing of the
 standard is unusual. It says, in effect, that `\' turns off the special
@@ -11535,7 +11555,7 @@ table-sub-proposed::.
          `\\q'             `\q'            a literal `\q'
         `\\\\'             `\\'            `\\'
 
-Table 9.3: Proposed rules for sub and backslash
+Table    9.3: Proposed rules for sub and backslash
 
    In a nutshell, at the runtime level, there are now three special
 sequences of characters (`\\\&', `\\&' and `\&') whereas historically
@@ -11562,7 +11582,7 @@ rules are presented in *note table-posix-sub::.
          `\\q'             `\q'            a literal `\q'
         `\\\\'             `\\'            `\'
 
-Table 9.4: POSIX rules for `sub()' and `gsub()'
+Table    9.4: POSIX rules for `sub()' and `gsub()'
 
    The only case where the difference is noticeable is the last one:
 `\\\\' is seen as `\\' and produces `\' instead of `\\'.
@@ -11594,7 +11614,7 @@ the `\' does not, as shown in *note 
table-gensub-escapes::.
      `\\\\\\&'                 `\\\&'            a literal `\&'
          `\\q'                   `\q'            a literal `q'
 
-Table 9.5: Escape Sequence Processing for `gensub()'
+Table    9.5: Escape Sequence Processing for `gensub()'
 
    Because of the complexity of the lexical and runtime level processing
 and the special cases for `sub()' and `gsub()', we recommend the use of
@@ -12143,7 +12163,7 @@ table-bitwise-ops::.
          0     | 0   0 | 0   1 | 0   1
          1     | 0   1 | 1   1 | 1   0
 
-Table 9.6: Bitwise Operations
+Table    9.6: Bitwise Operations
 
    As you can see, the result of an AND operation is 1 only when _both_
 bits are 1.  The result of an OR operation is 1 if _either_ bit is 1.
@@ -13955,7 +13975,7 @@ Single         32             24             -126       
    +127
 Double         64             53             -1022          +1023
 Quadruple      128            113            -16382         +16383
 
-Table 11.1: Basic IEEE Formats
+Table   11.1: Basic IEEE Formats
 
      NOTE: The precision numbers include the implied leading one that
      gives them one extra bit of significand.
@@ -13998,7 +14018,7 @@ Round toward zero                `roundTowardZero'      
`"Z"' or `"z"'
 Round to nearest, ties away      `roundTiesToAway'      `"A"' or `"a"'
 from zero                                               
 
-Table 11.2: Rounding Modes
+Table   11.2: Rounding Modes
 
    The default mode `roundTiesToEven' is the most preferred, but the
 least intuitive. This method does the obvious thing for most values, by
@@ -25713,7 +25733,7 @@ Index
 * * (asterisk), * operator, as regexp operator: Regexp Operators.
                                                               (line  87)
 * * (asterisk), * operator, null strings, matching: Gory Details.
-                                                              (line 164)
+                                                              (line 165)
 * * (asterisk), ** operator <1>:         Precedence.          (line  49)
 * * (asterisk), ** operator:             Arithmetic Ops.      (line  81)
 * * (asterisk), **= operator <1>:        Precedence.          (line  95)
@@ -25734,84 +25754,86 @@ Index
 * - (hyphen), -- operator:               Increment Ops.       (line  48)
 * - (hyphen), -= operator <1>:           Precedence.          (line  95)
 * - (hyphen), -= operator:               Assignment Ops.      (line 129)
-* - (hyphen), filenames beginning with:  Options.             (line  59)
+* - (hyphen), filenames beginning with:  Options.             (line  73)
 * - (hyphen), in bracket expressions:    Bracket Expressions. (line  17)
-* --assign option:                       Options.             (line  32)
-* --bignum option:                       Options.             (line 187)
-* --c option:                            Options.             (line  81)
-* --characters-as-bytes option:          Options.             (line  68)
-* --copyright option:                    Options.             (line  88)
-* --debug option:                        Options.             (line 108)
+* --assign option:                       Options.             (line  46)
+* --bignum option:                       Options.             (line 201)
+* --c option:                            Options.             (line  95)
+* --characters-as-bytes option:          Options.             (line  82)
+* --copyright option:                    Options.             (line 102)
+* --debug option:                        Options.             (line 122)
 * --disable-lint configuration option:   Additional Configuration Options.
                                                               (line   9)
 * --disable-nls configuration option:    Additional Configuration Options.
                                                               (line  24)
 * --dump-variables option <1>:           Library Names.       (line  45)
-* --dump-variables option:               Options.             (line  93)
-* --exec option:                         Options.             (line 125)
+* --dump-variables option:               Options.             (line 107)
+* --exec option:                         Options.             (line 139)
 * --field-separator option:              Options.             (line  21)
 * --file option:                         Options.             (line  25)
 * --gen-pot option <1>:                  String Extraction.   (line   6)
-* --gen-pot option:                      Options.             (line 147)
-* --help option:                         Options.             (line 154)
-* --L option:                            Options.             (line 274)
-* --lint option <1>:                     Options.             (line 168)
+* --gen-pot option:                      Options.             (line 161)
+* --help option:                         Options.             (line 168)
+* --include option:                      Options.             (line  32)
+* --L option:                            Options.             (line 288)
+* --lint option <1>:                     Options.             (line 182)
 * --lint option:                         Command Line.        (line  20)
-* --lint-old option:                     Options.             (line 274)
-* --load option:                         Options.             (line 159)
+* --lint-old option:                     Options.             (line 288)
+* --load option:                         Options.             (line 173)
 * --non-decimal-data option <1>:         Nondecimal Data.     (line   6)
-* --non-decimal-data option:             Options.             (line 193)
+* --non-decimal-data option:             Options.             (line 207)
 * --non-decimal-data option, strtonum() function and: Nondecimal Data.
                                                               (line  36)
-* --optimize option:                     Options.             (line 214)
-* --posix option:                        Options.             (line 233)
-* --posix option, --traditional option and: Options.          (line 252)
-* --pretty-print option:                 Options.             (line 206)
+* --optimize option:                     Options.             (line 228)
+* --posix option:                        Options.             (line 247)
+* --posix option, --traditional option and: Options.          (line 266)
+* --pretty-print option:                 Options.             (line 220)
 * --profile option <1>:                  Profiling.           (line  12)
-* --profile option:                      Options.             (line 221)
-* --re-interval option:                  Options.             (line 258)
-* --sandbox option:                      Options.             (line 265)
+* --profile option:                      Options.             (line 235)
+* --re-interval option:                  Options.             (line 272)
+* --sandbox option:                      Options.             (line 279)
 * --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 117)
-* --traditional option:                  Options.             (line  81)
-* --traditional option, --posix option and: Options.          (line 252)
-* --use-lc-numeric option:               Options.             (line 201)
-* --version option:                      Options.             (line 279)
+* --source option:                       Options.             (line 131)
+* --traditional option:                  Options.             (line  95)
+* --traditional option, --posix option and: Options.          (line 266)
+* --use-lc-numeric option:               Options.             (line 215)
+* --version option:                      Options.             (line 293)
 * --with-whiny-user-strftime configuration option: Additional Configuration 
Options.
                                                               (line  29)
-* -b option:                             Options.             (line  68)
-* -C option:                             Options.             (line  88)
-* -D option:                             Options.             (line 108)
-* -d option:                             Options.             (line  93)
-* -E option:                             Options.             (line 125)
-* -e option:                             Options.             (line 117)
+* -b option:                             Options.             (line  82)
+* -C option:                             Options.             (line 102)
+* -D option:                             Options.             (line 122)
+* -d option:                             Options.             (line 107)
+* -E option:                             Options.             (line 139)
+* -e option:                             Options.             (line 131)
 * -F option:                             Command Line Field Separator.
                                                               (line   6)
 * -f option:                             Options.             (line  25)
 * -F option:                             Options.             (line  21)
 * -f option:                             Long.                (line  12)
-* -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 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)
+* -F option, -Ft sets FS to TAB:         Options.             (line 301)
+* -f option, on command line:            Options.             (line 306)
+* -g option:                             Options.             (line 161)
+* -h option:                             Options.             (line 168)
+* -i option:                             Options.             (line  32)
+* -l option:                             Options.             (line 173)
+* -M option:                             Options.             (line 201)
+* -N option:                             Options.             (line 215)
+* -n option:                             Options.             (line 207)
+* -O option:                             Options.             (line 228)
+* -o option:                             Options.             (line 220)
+* -P option:                             Options.             (line 247)
+* -p option:                             Options.             (line 235)
+* -r option:                             Options.             (line 272)
+* -S option:                             Options.             (line 279)
+* -V option:                             Options.             (line 293)
+* -v option:                             Options.             (line  46)
 * -v option, variables, assigning:       Assignment Options.  (line  12)
-* -W option:                             Options.             (line  46)
+* -W option:                             Options.             (line  60)
 * . (period):                            Regexp Operators.    (line  43)
 * .mo files:                             Explaining gettext.  (line  41)
 * .mo files, converting from .po:        I18N Example.        (line  62)
@@ -25958,7 +25980,7 @@ Index
                                                               (line  23)
 * advanced features, network connections, See Also networks, connections: 
Advanced Features.
                                                               (line   6)
-* advanced features, null strings, matching: Gory Details.    (line 164)
+* advanced features, null strings, matching: Gory Details.    (line 165)
 * advanced features, operators, precedence: Increment Ops.    (line  61)
 * advanced features, piping into sh:     Redirection.         (line 143)
 * advanced features, regexp constants:   Assignment Ops.      (line 148)
@@ -26057,7 +26079,7 @@ Index
 * asterisk (*), * operator, as regexp operator: Regexp Operators.
                                                               (line  87)
 * asterisk (*), * operator, null strings, matching: Gory Details.
-                                                              (line 164)
+                                                              (line 165)
 * asterisk (*), ** operator <1>:         Precedence.          (line  49)
 * asterisk (*), ** operator:             Arithmetic Ops.      (line  81)
 * asterisk (*), **= operator <1>:        Precedence.          (line  95)
@@ -26066,10 +26088,10 @@ Index
 * 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 108)
-* awk enabling:                          Options.             (line 206)
+* awk debugging, enabling:               Options.             (line 122)
+* awk enabling:                          Options.             (line 220)
 * awk language, POSIX version:           Assignment Ops.      (line 136)
-* awk profiling, enabling:               Options.             (line 221)
+* awk profiling, enabling:               Options.             (line 235)
 * awk programs <1>:                      Two Rules.           (line   6)
 * awk programs <2>:                      Executable Scripts.  (line   6)
 * awk programs:                          Getting Started.     (line  12)
@@ -26127,7 +26149,7 @@ Index
 * AWKPATH environment variable:          AWKPATH Variable.    (line   6)
 * awkprof.out file:                      Profiling.           (line   6)
 * awksed.awk program:                    Simple Sed.          (line  25)
-* awkvars.out file:                      Options.             (line  93)
+* awkvars.out file:                      Options.             (line 107)
 * b debugger command (alias for break):  Breakpoint Control.  (line  11)
 * backslash (\) <1>:                     Regexp Operators.    (line  18)
 * backslash (\) <2>:                     Quoting.             (line  31)
@@ -26271,7 +26293,7 @@ Index
 * built-in functions:                    Functions.           (line   6)
 * built-in functions, evaluation order:  Calling Built-in.    (line  30)
 * built-in variables:                    Built-in Variables.  (line   6)
-* built-in variables, -v option, setting with: Options.       (line  40)
+* built-in variables, -v option, setting with: Options.       (line  54)
 * built-in variables, conveying information: Auto-set.        (line   6)
 * built-in variables, user-modifiable:   User-modified.       (line   6)
 * Busybox Awk:                           Other Versions.      (line  79)
@@ -26294,7 +26316,7 @@ Index
 * case sensitivity, regexps and <1>:     User-modified.       (line  82)
 * case sensitivity, regexps and:         Case-sensitivity.    (line   6)
 * case sensitivity, string comparisons and: User-modified.    (line  82)
-* CGI, awk scripts for:                  Options.             (line 125)
+* CGI, awk scripts for:                  Options.             (line 139)
 * character lists, See bracket expressions: Regexp Operators. (line  55)
 * character sets (machine character encodings) <1>: Glossary. (line 141)
 * character sets (machine character encodings): Ordinal Functions.
@@ -26344,7 +26366,7 @@ Index
                                                               (line   6)
 * command line, options <2>:             Options.             (line   6)
 * command line, options:                 Long.                (line  12)
-* command line, options, end of:         Options.             (line  54)
+* command line, options, end of:         Options.             (line  68)
 * command line, variables, assigning on: Assignment Options.  (line   6)
 * command-line options, processing:      Getopt Function.     (line   6)
 * command-line options, string extraction: String Extraction. (line   6)
@@ -26380,7 +26402,7 @@ Index
                                                               (line  60)
 * compatibility mode (gawk), octal numbers: Nondecimal-numbers.
                                                               (line  60)
-* compatibility mode (gawk), specifying: Options.             (line  81)
+* compatibility mode (gawk), specifying: Options.             (line  95)
 * compiled programs <1>:                 Glossary.            (line 161)
 * compiled programs:                     Basic High Level.    (line  14)
 * compiling gawk for Cygwin:             Cygwin.              (line   6)
@@ -26429,7 +26451,7 @@ Index
 * 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 334)
+* csh utility, POSIXLY_CORRECT environment variable: Options. (line 348)
 * 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)
@@ -26598,7 +26620,7 @@ Index
                                                               (line  67)
 * debugging awk programs:                Debugger.            (line   6)
 * debugging gawk, bug reports:           Bugs.                (line   9)
-* decimal point character, locale specific: Options.          (line 249)
+* decimal point character, locale specific: Options.          (line 263)
 * decrement operators:                   Increment Ops.       (line  35)
 * default keyword:                       Switch Statement.    (line   6)
 * Deifik, Scott <1>:                     Bugs.                (line  70)
@@ -26896,7 +26918,7 @@ Index
 * files, as single records:              Records.             (line 196)
 * files, awk programs in:                Long.                (line   6)
 * files, awkprof.out:                    Profiling.           (line   6)
-* files, awkvars.out:                    Options.             (line  93)
+* files, awkvars.out:                    Options.             (line 107)
 * files, closing:                        I/O Functions.       (line  10)
 * files, descriptors, See file descriptors: Special FD.       (line   6)
 * files, group:                          Group Functions.     (line   6)
@@ -26924,7 +26946,7 @@ Index
 * files, portable object template:       Explaining gettext.  (line  30)
 * files, portable object, converting to message object files: I18N Example.
                                                               (line  62)
-* files, portable object, generating:    Options.             (line 147)
+* files, portable object, generating:    Options.             (line 161)
 * files, processing, ARGIND variable and: Auto-set.           (line  47)
 * files, reading:                        Rewind Function.     (line   6)
 * files, reading, multiline records:     Multiple Line.       (line   6)
@@ -26982,7 +27004,7 @@ Index
 * 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 245)
+* FS variable, as TAB character:         Options.             (line 259)
 * 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.
@@ -27068,7 +27090,7 @@ Index
                                                               (line 139)
 * gawk, ERRNO variable in:               Getline.             (line  19)
 * gawk, escape sequences:                Escape Sequences.    (line 125)
-* gawk, extensions, disabling:           Options.             (line 233)
+* gawk, extensions, disabling:           Options.             (line 247)
 * gawk, features, adding:                Adding Code.         (line   6)
 * gawk, features, advanced:              Advanced Features.   (line   6)
 * gawk, fflush() function in:            I/O Functions.       (line  44)
@@ -27133,7 +27155,7 @@ Index
 * 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 279)
+* gawk, versions of, information about, printing: Options.    (line 293)
 * gawk, VMS version of:                  VMS Installation.    (line   6)
 * gawk, word-boundary operator:          GNU Regexp Operators.
                                                               (line  63)
@@ -27195,7 +27217,7 @@ Index
 * GNU Lesser General Public License:     Glossary.            (line 397)
 * GNU long options <1>:                  Options.             (line   6)
 * GNU long options:                      Command Line.        (line  13)
-* GNU long options, printing list of:    Options.             (line 154)
+* GNU long options, printing list of:    Options.             (line 168)
 * GNU Project <1>:                       Glossary.            (line 319)
 * GNU Project:                           Manual History.      (line  11)
 * GNU/Linux <1>:                         Glossary.            (line 611)
@@ -27203,7 +27225,7 @@ Index
 * GNU/Linux:                             Manual History.      (line  28)
 * GPL (General Public License) <1>:      Glossary.            (line 310)
 * GPL (General Public License):          Manual History.      (line  11)
-* GPL (General Public License), printing: Options.            (line  88)
+* GPL (General Public License), printing: Options.            (line 102)
 * grcat program:                         Group Functions.     (line  16)
 * Grigera, Juan:                         Contributors.        (line  58)
 * group database, reading:               Group Functions.     (line   6)
@@ -27226,7 +27248,7 @@ Index
 * help debugger command:                 Miscellaneous Debugger Commands.
                                                               (line  68)
 * hexadecimal numbers:                   Nondecimal-numbers.  (line   6)
-* hexadecimal values, enabling interpretation of: Options.    (line 193)
+* hexadecimal values, enabling interpretation of: Options.    (line 207)
 * histsort.awk program:                  History Sorting.     (line  25)
 * Hughes, Phil:                          Acknowledgments.     (line  43)
 * HUP signal:                            Profiling.           (line 203)
@@ -27235,7 +27257,7 @@ Index
 * hyphen (-), -- operator:               Increment Ops.       (line  48)
 * hyphen (-), -= operator <1>:           Precedence.          (line  95)
 * hyphen (-), -= operator:               Assignment Ops.      (line 129)
-* hyphen (-), filenames beginning with:  Options.             (line  59)
+* hyphen (-), filenames beginning with:  Options.             (line  73)
 * hyphen (-), in bracket expressions:    Bracket Expressions. (line  17)
 * i debugger command (alias for info):   Debugger Info.       (line  13)
 * id utility:                            Id Program.          (line   6)
@@ -27456,9 +27478,9 @@ Index
 * lint checking, array subscripts:       Uninitialized Subscripts.
                                                               (line  43)
 * lint checking, empty programs:         Command Line.        (line  16)
-* lint checking, issuing warnings:       Options.             (line 168)
+* lint checking, issuing warnings:       Options.             (line 182)
 * lint checking, POSIXLY_CORRECT environment variable: Options.
-                                                              (line 318)
+                                                              (line 332)
 * lint checking, undefined functions:    Pass By Value/Reference.
                                                               (line  88)
 * LINT variable:                         User-modified.       (line  98)
@@ -27468,10 +27490,10 @@ Index
 * list debugger command:                 Miscellaneous Debugger Commands.
                                                               (line  74)
 * loading extension:                     Loading Extensions.  (line   6)
-* loading, library:                      Options.             (line 159)
+* loading, library:                      Options.             (line 173)
 * local variables:                       Variable Scope.      (line   6)
 * locale categories:                     Explaining gettext.  (line  80)
-* locale decimal point character:        Options.             (line 249)
+* locale decimal point character:        Options.             (line 263)
 * locale, definition of:                 Locales.             (line   6)
 * localization:                          I18N and L10N.       (line   6)
 * localization, See internationalization, localization: I18N and L10N.
@@ -27507,7 +27529,7 @@ Index
 * matching, expressions, See comparison expressions: Typing and Comparison.
                                                               (line   9)
 * matching, leftmost longest:            Multiple Line.       (line  26)
-* matching, null strings:                Gory Details.        (line 164)
+* matching, null strings:                Gory Details.        (line 165)
 * mawk program:                          Other Versions.      (line  35)
 * McPhee, Patrick:                       Contributors.        (line 100)
 * memory, releasing:                     Internals.           (line  92)
@@ -27543,7 +27565,7 @@ Index
 * networks, programming:                 TCP/IP Networking.   (line   6)
 * networks, support for:                 Special Network.     (line   6)
 * newlines <1>:                          Boolean Ops.         (line  67)
-* newlines <2>:                          Options.             (line 239)
+* newlines <2>:                          Options.             (line 253)
 * newlines:                              Statements/Lines.    (line   6)
 * newlines, as field separators:         Default Field Splitting.
                                                               (line   6)
@@ -27592,7 +27614,7 @@ Index
 * null strings, as array subscripts:     Uninitialized Subscripts.
                                                               (line  43)
 * null strings, converting numbers to strings: Conversion.    (line  21)
-* null strings, matching:                Gory Details.        (line 164)
+* null strings, matching:                Gory Details.        (line 165)
 * null strings, quoting and:             Quoting.             (line  62)
 * number sign (#), #! (executable scripts): Executable Scripts.
                                                               (line   6)
@@ -27623,7 +27645,7 @@ Index
 * oawk utility:                          Names.               (line  17)
 * obsolete features:                     Obsolete.            (line   6)
 * octal numbers:                         Nondecimal-numbers.  (line   6)
-* octal values, enabling interpretation of: Options.          (line 193)
+* octal values, enabling interpretation of: Options.          (line 207)
 * OFMT variable <1>:                     User-modified.       (line 115)
 * OFMT variable <2>:                     Conversion.          (line  55)
 * OFMT variable:                         OFMT.                (line  15)
@@ -27670,13 +27692,13 @@ Index
                                                               (line   6)
 * options, command-line <2>:             Options.             (line   6)
 * options, command-line:                 Long.                (line  12)
-* options, command-line, end of:         Options.             (line  54)
+* options, command-line, end of:         Options.             (line  68)
 * options, command-line, invoking awk:   Command Line.        (line   6)
 * options, command-line, processing:     Getopt Function.     (line   6)
 * options, deprecated:                   Obsolete.            (line   6)
 * options, long <1>:                     Options.             (line   6)
 * options, long:                         Command Line.        (line  13)
-* options, printing list of:             Options.             (line 154)
+* options, printing list of:             Options.             (line 168)
 * OR bitwise operation:                  Bitwise Functions.   (line   6)
 * or Boolean-logic operator:             Boolean Ops.         (line   6)
 * or() function (gawk):                  Bitwise Functions.   (line  48)
@@ -27768,13 +27790,13 @@ Index
 * 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 339)
+* portability, POSIXLY_CORRECT environment variable: Options. (line 353)
 * portability, substr() function:        String Functions.    (line 512)
 * portable object files <1>:             Translator i18n.     (line   6)
 * portable object files:                 Explaining gettext.  (line  36)
 * portable object files, converting to message object files: I18N Example.
                                                               (line  62)
-* portable object files, generating:     Options.             (line 147)
+* portable object files, generating:     Options.             (line 161)
 * portable object template files:        Explaining gettext.  (line  30)
 * porting gawk:                          New Ports.           (line   6)
 * positional specifiers, printf statement <1>: Printf Ordering.
@@ -27818,11 +27840,11 @@ Index
 * 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 233)
+* POSIX mode:                            Options.             (line 247)
 * 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 318)
+* POSIXLY_CORRECT environment variable:  Options.             (line 332)
 * PREC variable <1>:                     Setting Precision.   (line   6)
 * PREC variable:                         User-modified.       (line 134)
 * precedence <1>:                        Precedence.          (line   6)
@@ -27858,7 +27880,7 @@ Index
 * printf statement, sprintf() function and: Round Function.   (line   6)
 * printf statement, syntax of:           Basic Printf.        (line   6)
 * printing:                              Printing.            (line   6)
-* printing, list of options:             Options.             (line 154)
+* printing, list of options:             Options.             (line 168)
 * printing, mailing labels:              Labels Program.      (line   6)
 * printing, unduplicated lines of text:  Uniq Program.        (line   6)
 * printing, user information:            Id Program.          (line   6)
@@ -27981,7 +28003,7 @@ Index
                                                               (line  59)
 * regular expressions, gawk, command-line options: GNU Regexp Operators.
                                                               (line  70)
-* regular expressions, interval expressions and: Options.     (line 258)
+* regular expressions, interval expressions and: Options.     (line 272)
 * regular expressions, leftmost longest match: Leftmost Longest.
                                                               (line   6)
 * regular expressions, operators <1>:    Regexp Operators.    (line   6)
@@ -28059,7 +28081,7 @@ Index
 * rvalues/lvalues:                       Assignment Ops.      (line  32)
 * s debugger command (alias for step):   Debugger Execution Control.
                                                               (line  68)
-* sandbox mode:                          Options.             (line 265)
+* sandbox mode:                          Options.             (line 279)
 * scalar values:                         Basic Data Typing.   (line  13)
 * Schorr, Andrew:                        Acknowledgments.     (line  60)
 * Schreiber, Bert:                       Acknowledgments.     (line  38)
@@ -28157,7 +28179,7 @@ Index
 * source code, jawk:                     Other Versions.      (line  97)
 * source code, libmawk:                  Other Versions.      (line 105)
 * source code, mawk:                     Other Versions.      (line  35)
-* source code, mixing:                   Options.             (line 117)
+* source code, mixing:                   Options.             (line 131)
 * source code, pawk:                     Other Versions.      (line  69)
 * source code, QSE Awk:                  Other Versions.      (line 109)
 * source code, QuikTrim Awk:             Other Versions.      (line 113)
@@ -28297,7 +28319,7 @@ Index
 * trace debugger command:                Miscellaneous Debugger Commands.
                                                               (line 110)
 * translate.awk program:                 Translate Program.   (line  55)
-* troubleshooting, --non-decimal-data option: Options.        (line 193)
+* troubleshooting, --non-decimal-data option: Options.        (line 207)
 * troubleshooting, == operator:          Comparison Operators.
                                                               (line  37)
 * troubleshooting, awk uses FS not IFS:  Field Separators.    (line  29)
@@ -28329,7 +28351,7 @@ Index
 * troubleshooting, substr() function:    String Functions.    (line 499)
 * troubleshooting, system() function:    I/O Functions.       (line  85)
 * troubleshooting, typographical errors, global variables: Options.
-                                                              (line  98)
+                                                              (line 112)
 * true, logical:                         Truth Values.        (line   6)
 * Trueman, David <1>:                    Contributors.        (line  31)
 * Trueman, David <2>:                    Acknowledgments.     (line  47)
@@ -28390,7 +28412,7 @@ Index
 * variables, assigning on command line:  Assignment Options.  (line   6)
 * variables, built-in <1>:               Built-in Variables.  (line   6)
 * variables, built-in:                   Using Variables.     (line  20)
-* variables, built-in, -v option, setting with: Options.      (line  40)
+* variables, built-in, -v option, setting with: Options.      (line  54)
 * variables, built-in, conveying information: Auto-set.       (line   6)
 * variables, flag:                       Boolean Ops.         (line  67)
 * variables, getline command into, using <1>: Getline/Variable/Coprocess.
@@ -28401,12 +28423,12 @@ Index
                                                               (line   6)
 * variables, getline command into, using: Getline/Variable.   (line   6)
 * variables, global, for library functions: Library Names.    (line  11)
-* variables, global, printing list of:   Options.             (line  93)
+* variables, global, printing list of:   Options.             (line 107)
 * variables, initializing:               Using Variables.     (line  20)
 * variables, local:                      Variable Scope.      (line   6)
 * variables, names of:                   Arrays.              (line  18)
 * variables, private:                    Library Names.       (line  11)
-* variables, setting:                    Options.             (line  32)
+* variables, setting:                    Options.             (line  46)
 * variables, shadowing:                  Definition Syntax.   (line  61)
 * variables, types of:                   Assignment Ops.      (line  40)
 * variables, types of, comparison expressions and: Typing and Comparison.
@@ -28431,7 +28453,7 @@ Index
 * Wall, Larry <1>:                       Future Extensions.   (line   6)
 * Wall, Larry:                           Array Intro.         (line   6)
 * Wallin, Anders:                        Acknowledgments.     (line  60)
-* warnings, issuing:                     Options.             (line 168)
+* warnings, issuing:                     Options.             (line 182)
 * watch debugger command:                Viewing And Changing Data.
                                                               (line  67)
 * wc utility:                            Wc Program.          (line   6)
@@ -28443,7 +28465,7 @@ Index
 * whitespace, as field separators:       Default Field Splitting.
                                                               (line   6)
 * whitespace, functions, calling:        Calling Built-in.    (line  10)
-* whitespace, newlines as:               Options.             (line 239)
+* whitespace, newlines as:               Options.             (line 253)
 * Williams, Kent:                        Contributors.        (line  35)
 * Woehlke, Matthew:                      Contributors.        (line  79)
 * Woods, John:                           Contributors.        (line  28)
@@ -28539,402 +28561,402 @@ 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
+Ref: Options-Footnote-1116413
+Node: Other Arguments116438
+Node: Naming Standard Input119096
+Node: Environment Variables120190
+Node: AWKPATH Variable120748
+Ref: AWKPATH Variable-Footnote-1123506
+Node: AWKLIBPATH Variable123766
+Node: Other Environment Variables124363
+Node: Exit Status126858
+Node: Include Files127533
+Node: Loading Shared Libraries131102
+Node: Obsolete132327
+Node: Undocumented133024
+Node: Regexp133267
+Node: Regexp Usage134656
+Node: Escape Sequences136682
+Node: Regexp Operators142445
+Ref: Regexp Operators-Footnote-1149825
+Ref: Regexp Operators-Footnote-2149972
+Node: Bracket Expressions150070
+Ref: table-char-classes151960
+Node: GNU Regexp Operators154486
+Node: Case-sensitivity158209
+Ref: Case-sensitivity-Footnote-1161177
+Ref: Case-sensitivity-Footnote-2161412
+Node: Leftmost Longest161520
+Node: Computed Regexps162721
+Node: Reading Files166131
+Node: Records168135
+Ref: Records-Footnote-1176809
+Node: Fields176846
+Ref: Fields-Footnote-1179879
+Node: Nonconstant Fields179965
+Node: Changing Fields182167
+Node: Field Separators188148
+Node: Default Field Splitting190777
+Node: Regexp Field Splitting191894
+Node: Single Character Fields195236
+Node: Command Line Field Separator196295
+Node: Field Splitting Summary199736
+Ref: Field Splitting Summary-Footnote-1202928
+Node: Constant Size203029
+Node: Splitting By Content207613
+Ref: Splitting By Content-Footnote-1211339
+Node: Multiple Line211379
+Ref: Multiple Line-Footnote-1217226
+Node: Getline217405
+Node: Plain Getline219621
+Node: Getline/Variable221710
+Node: Getline/File222851
+Node: Getline/Variable/File224173
+Ref: Getline/Variable/File-Footnote-1225772
+Node: Getline/Pipe225859
+Node: Getline/Variable/Pipe228419
+Node: Getline/Coprocess229526
+Node: Getline/Variable/Coprocess230769
+Node: Getline Notes231483
+Node: Getline Summary233425
+Ref: table-getline-variants233768
+Node: Read Timeout234627
+Ref: Read Timeout-Footnote-1238372
+Node: Command line directories238429
+Node: Printing239059
+Node: Print240690
+Node: Print Examples242027
+Node: Output Separators244811
+Node: OFMT246571
+Node: Printf247929
+Node: Basic Printf248835
+Node: Control Letters250374
+Node: Format Modifiers254186
+Node: Printf Examples260195
+Node: Redirection262910
+Node: Special Files269894
+Node: Special FD270427
+Ref: Special FD-Footnote-1274052
+Node: Special Network274126
+Node: Special Caveats274976
+Node: Close Files And Pipes275772
+Ref: Close Files And Pipes-Footnote-1282795
+Ref: Close Files And Pipes-Footnote-2282943
+Node: Expressions283093
+Node: Values284225
+Node: Constants284901
+Node: Scalar Constants285581
+Ref: Scalar Constants-Footnote-1286440
+Node: Nondecimal-numbers286622
+Node: Regexp Constants289681
+Node: Using Constant Regexps290156
+Node: Variables293211
+Node: Using Variables293866
+Node: Assignment Options295590
+Node: Conversion297462
+Ref: table-locale-affects302838
+Ref: Conversion-Footnote-1303465
+Node: All Operators303574
+Node: Arithmetic Ops304204
+Node: Concatenation306709
+Ref: Concatenation-Footnote-1309502
+Node: Assignment Ops309622
+Ref: table-assign-ops314610
+Node: Increment Ops316021
+Node: Truth Values and Conditions319491
+Node: Truth Values320574
+Node: Typing and Comparison321623
+Node: Variable Typing322412
+Ref: Variable Typing-Footnote-1326309
+Node: Comparison Operators326431
+Ref: table-relational-ops326841
+Node: POSIX String Comparison330393
+Ref: POSIX String Comparison-Footnote-1331349
+Node: Boolean Ops331487
+Ref: Boolean Ops-Footnote-1335565
+Node: Conditional Exp335656
+Node: Function Calls337388
+Node: Precedence340982
+Node: Locales344651
+Node: Patterns and Actions345740
+Node: Pattern Overview346794
+Node: Regexp Patterns348463
+Node: Expression Patterns349006
+Node: Ranges352691
+Node: BEGIN/END355657
+Node: Using BEGIN/END356419
+Ref: Using BEGIN/END-Footnote-1359150
+Node: I/O And BEGIN/END359256
+Node: BEGINFILE/ENDFILE361538
+Node: Empty364431
+Node: Using Shell Variables364747
+Node: Action Overview367032
+Node: Statements369389
+Node: If Statement371243
+Node: While Statement372742
+Node: Do Statement374786
+Node: For Statement375942
+Node: Switch Statement379094
+Node: Break Statement381191
+Node: Continue Statement383181
+Node: Next Statement384974
+Node: Nextfile Statement387364
+Node: Exit Statement389909
+Node: Built-in Variables392325
+Node: User-modified393420
+Ref: User-modified-Footnote-1401775
+Node: Auto-set401837
+Ref: Auto-set-Footnote-1411745
+Node: ARGC and ARGV411950
+Node: Arrays415801
+Node: Array Basics417306
+Node: Array Intro418132
+Node: Reference to Elements422450
+Node: Assigning Elements424720
+Node: Array Example425211
+Node: Scanning an Array426943
+Node: Controlling Scanning429257
+Ref: Controlling Scanning-Footnote-1434190
+Node: Delete434506
+Ref: Delete-Footnote-1436941
+Node: Numeric Array Subscripts436998
+Node: Uninitialized Subscripts439181
+Node: Multi-dimensional440809
+Node: Multi-scanning443903
+Node: Arrays of Arrays445494
+Node: Functions450139
+Node: Built-in450961
+Node: Calling Built-in452039
+Node: Numeric Functions454027
+Ref: Numeric Functions-Footnote-1457859
+Ref: Numeric Functions-Footnote-2458216
+Ref: Numeric Functions-Footnote-3458264
+Node: String Functions458533
+Ref: String Functions-Footnote-1482030
+Ref: String Functions-Footnote-2482159
+Ref: String Functions-Footnote-3482407
+Node: Gory Details482494
+Ref: table-sub-escapes484173
+Ref: table-sub-posix-92485530
+Ref: table-sub-proposed486876
+Ref: table-posix-sub488229
+Ref: table-gensub-escapes489778
+Ref: Gory Details-Footnote-1490988
+Ref: Gory Details-Footnote-2491039
+Node: I/O Functions491190
+Ref: I/O Functions-Footnote-1497845
+Node: Time Functions497992
+Ref: Time Functions-Footnote-1508884
+Ref: Time Functions-Footnote-2508952
+Ref: Time Functions-Footnote-3509110
+Ref: Time Functions-Footnote-4509221
+Ref: Time Functions-Footnote-5509333
+Ref: Time Functions-Footnote-6509560
+Node: Bitwise Functions509826
+Ref: table-bitwise-ops510384
+Ref: Bitwise Functions-Footnote-1514547
+Node: Type Functions514731
+Node: I18N Functions515201
+Node: User-defined516828
+Node: Definition Syntax517632
+Ref: Definition Syntax-Footnote-1522542
+Node: Function Example522611
+Node: Function Caveats525205
+Node: Calling A Function525626
+Node: Variable Scope526741
+Node: Pass By Value/Reference528716
+Node: Return Statement532156
+Node: Dynamic Typing535137
+Node: Indirect Calls535872
+Node: Internationalization545557
+Node: I18N and L10N546996
+Node: Explaining gettext547682
+Ref: Explaining gettext-Footnote-1552748
+Ref: Explaining gettext-Footnote-2552932
+Node: Programmer i18n553097
+Node: Translator i18n557297
+Node: String Extraction558090
+Ref: String Extraction-Footnote-1559051
+Node: Printf Ordering559137
+Ref: Printf Ordering-Footnote-1561921
+Node: I18N Portability561985
+Ref: I18N Portability-Footnote-1564434
+Node: I18N Example564497
+Ref: I18N Example-Footnote-1567132
+Node: Gawk I18N567204
+Node: Arbitrary Precision Arithmetic567821
+Ref: Arbitrary Precision Arithmetic-Footnote-1570696
+Node: Floating-point Programming570844
+Node: Floating-point Representation576114
+Node: Floating-point Context577218
+Ref: table-ieee-formats578053
+Node: Rounding Mode579425
+Ref: table-rounding-modes580052
+Ref: Rounding Mode-Footnote-1583177
+Node: Arbitrary Precision Floats583358
+Ref: Arbitrary Precision Floats-Footnote-1585399
+Node: Setting Precision585710
+Node: Setting Rounding Mode588468
+Node: Floating-point Constants589385
+Node: Changing Precision590804
+Ref: Changing Precision-Footnote-1592204
+Node: Exact Arithmetic592377
+Node: Integer Programming595390
+Node: Arbitrary Precision Integers597170
+Ref: Arbitrary Precision Integers-Footnote-1600194
+Node: MPFR and GMP Libraries600340
+Node: Advanced Features600725
+Node: Nondecimal Data602248
+Node: Array Sorting603831
+Node: Controlling Array Traversal604528
+Node: Array Sorting Functions612765
+Ref: Array Sorting Functions-Footnote-1616439
+Ref: Array Sorting Functions-Footnote-2616532
+Node: Two-way I/O616726
+Ref: Two-way I/O-Footnote-1622158
+Node: TCP/IP Networking622228
+Node: Profiling625072
+Node: Library Functions632526
+Ref: Library Functions-Footnote-1635533
+Node: Library Names635704
+Ref: Library Names-Footnote-1639175
+Ref: Library Names-Footnote-2639395
+Node: General Functions639481
+Node: Strtonum Function640434
+Node: Assert Function643364
+Node: Round Function646690
+Node: Cliff Random Function648233
+Node: Ordinal Functions649249
+Ref: Ordinal Functions-Footnote-1652319
+Ref: Ordinal Functions-Footnote-2652571
+Node: Join Function652780
+Ref: Join Function-Footnote-1654551
+Node: Gettimeofday Function654751
+Node: Data File Management658466
+Node: Filetrans Function659098
+Node: Rewind Function663237
+Node: File Checking664624
+Node: Empty Files665718
+Node: Ignoring Assigns667948
+Node: Getopt Function669501
+Ref: Getopt Function-Footnote-1680805
+Node: Passwd Functions681008
+Ref: Passwd Functions-Footnote-1689983
+Node: Group Functions690071
+Node: Walking Arrays698155
+Node: Sample Programs699724
+Node: Running Examples700389
+Node: Clones701117
+Node: Cut Program702341
+Node: Egrep Program712186
+Ref: Egrep Program-Footnote-1719959
+Node: Id Program720069
+Node: Split Program723685
+Ref: Split Program-Footnote-1727204
+Node: Tee Program727332
+Node: Uniq Program730135
+Node: Wc Program737564
+Ref: Wc Program-Footnote-1741830
+Ref: Wc Program-Footnote-2742030
+Node: Miscellaneous Programs742122
+Node: Dupword Program743310
+Node: Alarm Program745341
+Node: Translate Program750090
+Ref: Translate Program-Footnote-1754477
+Ref: Translate Program-Footnote-2754705
+Node: Labels Program754839
+Ref: Labels Program-Footnote-1758210
+Node: Word Sorting758294
+Node: History Sorting762178
+Node: Extract Program764017
+Ref: Extract Program-Footnote-1771500
+Node: Simple Sed771628
+Node: Igawk Program774690
+Ref: Igawk Program-Footnote-1789847
+Ref: Igawk Program-Footnote-2790048
+Node: Anagram Program790186
+Node: Signature Program793254
+Node: Debugger794354
+Node: Debugging795306
+Node: Debugging Concepts795739
+Node: Debugging Terms797595
+Node: Awk Debugging800192
+Node: Sample Debugging Session801084
+Node: Debugger Invocation801604
+Node: Finding The Bug802933
+Node: List of Debugger Commands809421
+Node: Breakpoint Control810755
+Node: Debugger Execution Control814419
+Node: Viewing And Changing Data817779
+Node: Execution Stack821135
+Node: Debugger Info822602
+Node: Miscellaneous Debugger Commands826583
+Node: Readline Support832028
+Node: Limitations832859
+Node: Language History835111
+Node: V7/SVR3.1836623
+Node: SVR4838944
+Node: POSIX840386
+Node: BTL841394
+Node: POSIX/GNU842128
+Node: Common Extensions847419
+Node: Ranges and Locales848526
+Ref: Ranges and Locales-Footnote-1853130
+Node: Contributors853351
+Node: Installation857612
+Node: Gawk Distribution858506
+Node: Getting858990
+Node: Extracting859816
+Node: Distribution contents861508
+Node: Unix Installation866730
+Node: Quick Installation867347
+Node: Additional Configuration Options869309
+Node: Configuration Philosophy870786
+Node: Non-Unix Installation873128
+Node: PC Installation873586
+Node: PC Binary Installation874885
+Node: PC Compiling876733
+Node: PC Testing879677
+Node: PC Using880853
+Node: Cygwin885038
+Node: MSYS886038
+Node: VMS Installation886552
+Node: VMS Compilation887155
+Ref: VMS Compilation-Footnote-1888162
+Node: VMS Installation Details888220
+Node: VMS Running889855
+Node: VMS Old Gawk891462
+Node: Bugs891936
+Node: Other Versions895788
+Node: Notes901103
+Node: Compatibility Mode901795
+Node: Additions902578
+Node: Accessing The Source903390
+Node: Adding Code904815
+Node: New Ports910782
+Node: Dynamic Extensions914895
+Node: Internals916335
+Node: Plugin License925157
+Node: Loading Extensions925795
+Node: Sample Library927634
+Node: Internal File Description928324
+Node: Internal File Ops932039
+Ref: Internal File Ops-Footnote-1936781
+Node: Using Internal File Ops936921
+Node: Future Extensions939298
+Node: Basic Concepts941802
+Node: Basic High Level942559
+Ref: Basic High Level-Footnote-1946594
+Node: Basic Data Typing946779
+Node: Floating Point Issues951304
+Node: String Conversion Precision952387
+Ref: String Conversion Precision-Footnote-1954087
+Node: Unexpected Results954196
+Node: POSIX Floating Point Problems956022
+Ref: POSIX Floating Point Problems-Footnote-1959727
+Node: Glossary959765
+Node: Copying984741
+Node: GNU Free Documentation License1022298
+Node: Index1047435
 
 End Tag Table
diff --git a/doc/gawk.texi b/doc/gawk.texi
index d3f5c67..7e35e76 100644
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -3022,6 +3022,22 @@ This option may be given multiple times; the 
@command{awk}
 program consists of the concatenation the contents of
 each specified @var{source-file}.
 
address@hidden -i @var{source-file}
address@hidden --include @var{source-file}
address@hidden @code{-i} option
address@hidden @code{--include} option
address@hidden @command{awk} programs, location of
+Read @command{awk} source library from @var{source-file}.  This option is
+completely equivalent to using the @samp{@@include} directive inside
+your program.  This option is very
+similar to the @option{-f} option, but there are two important differences.
+First, when @option{-i} is used, the program source will not be loaded if it 
has
+been previously loaded, whereas the @option{-f} will always load the file.
+Second, because this option is intended to be used with code libraries, the
address@hidden command does not recognize such files as constituting main 
program
+input.  Thus, after processing an @option{-i} argument, we still expect to
+find the main source code via the @option{-f} option or on the command-line.
+
 @item -v @address@hidden
 @itemx --assign @address@hidden
 @cindex @code{-v} option
@@ -3619,7 +3635,8 @@ on the command-line with the @option{-f} option.
 In most @command{awk}
 implementations, you must supply a precise path name for each program
 file, unless the file is in the current directory.
-But in @command{gawk}, if the @value{FN} supplied to the @option{-f} option
+But in @command{gawk}, if the @value{FN} supplied to the @option{-f}
+or @option{-i} options
 does not contain a @samp{/}, then @command{gawk} searches a list of
 directories (called the @dfn{search path}), one by one, looking for a
 file with the specified name.
@@ -3641,13 +3658,16 @@ standard directory in the default path and then 
specified on
 the command line with a short @value{FN}.  Otherwise, the full @value{FN}
 would have to be typed for each file.
 
-By using both the @option{--source} and @option{-f} options, your command-line
+By using the @option{-i} option, or the @option{--source} and @option{-f} 
options, your command-line
 @command{awk} programs can use facilities in @command{awk} library files
 (@pxref{Library Functions}).
 Path searching is not done if @command{gawk} is in compatibility mode.
 This is true for both @option{--traditional} and @option{--posix}.
 @xref{Options}.
 
+If the source code is not found after the initial search, the path is searched
+again after adding the default @samp{.awk} suffix to the filename.
+
 @quotation NOTE
 To include
 the current directory in the path, either place
@@ -3794,7 +3814,8 @@ code from various @command{awk} scripts.  In other words, 
you can group
 together @command{awk} functions, used to carry out specific tasks,
 into external files. These files can be used just like function libraries,
 using the @samp{@@include} keyword in conjunction with the @env{AWKPATH}
-environment variable.
+environment variable.  Note that source files may also be included
+using the @option{-i} option.
 
 Let's see an example.
 We'll start with two (trivial) @command{awk} scripts, namely
diff --git a/io.c b/io.c
index 1e8870e..a9fb345 100644
--- a/io.c
+++ b/io.c
@@ -2538,6 +2538,14 @@ find_source(const char *src, struct stat *stb, int 
*errcode, int is_extlib)
 #undef EXTLIB_SUFFIX
        }
 
+/*
+ * Try searching with .awk appended if the platform headers have not specified
+ * another suffix.
+ */
+#ifndef DEFAULT_FILETYPE
+#define DEFAULT_FILETYPE ".awk"
+#endif
+
 #ifdef DEFAULT_FILETYPE
        if (! do_traditional && path == NULL) {
                char *file_awk;
diff --git a/main.c b/main.c
index fc75db0..4bdbbc5 100644
--- a/main.c
+++ b/main.c
@@ -202,7 +202,7 @@ main(int argc, char **argv)
        /*
         * The + on the front tells GNU getopt not to rearrange argv.
         */
-       const char *optlist = "+F:f:v:W;m:bcCd::D::e:E:gh:l:L:nNo::Op::MPrStVY";
+       const char *optlist = 
"+F:f:v:W;m:bcCd::D::e:E:gh:i:l:L:nNo::Op::MPrStVY";
        bool stopped_early = false;
        int old_optind;
        int i;
@@ -397,6 +397,10 @@ main(int argc, char **argv)
                        usage(EXIT_SUCCESS, stdout);
                        break;
 
+               case 'i':
+                       (void) add_srcfile(SRC_INC, optarg, srcfiles, NULL, 
NULL);
+                       break;
+
                case 'l':
                        (void) add_srcfile(SRC_EXTLIB, optarg, srcfiles, NULL, 
NULL);
                        break;
@@ -638,7 +642,7 @@ out:
         for (s = srcfiles->next; s != srcfiles; s = s->next) {
                 if (s->stype == SRC_EXTLIB)
                        (void) load_ext(s->fullpath, "dlload", NULL);
-               else
+               else if (s->stype != SRC_INC)
                        have_srcfile++;
         }
 
@@ -781,6 +785,7 @@ usage(int exitval, FILE *fp)
        fputs(_("\t-E file\t\t\t--exec=file\n"), fp);
        fputs(_("\t-g\t\t\t--gen-pot\n"), fp);
        fputs(_("\t-h\t\t\t--help\n"), fp);
+       fputs(_("\t-i includefile\t\t--include=includefile\n"), fp);
        fputs(_("\t-l library\t\t--load=library\n"), fp);
        fputs(_("\t-L [fatal]\t\t--lint[=fatal]\n"), fp);
        fputs(_("\t-n\t\t\t--non-decimal-data\n"), fp);
diff --git a/test/ChangeLog b/test/ChangeLog
index 95bd42d..755caeb 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -1,3 +1,14 @@
+2012-05-19         Andrew J. Schorr     <address@hidden>
+
+       * Makefile.am (EXTRA_DIST): Add new files hello.awk, inclib.awk,
+       include.awk, include.ok, include2.ok, incdupe.ok, incdupe2.ok and
+       incdupe3.ok.
+       (GAWK_EXT_TESTS): Add include, include2, incdupe, incdupe2 and incdupe3.
+       (include2, incdupe, incdupe2, incdupe3): New tests.
+       * badargs.ok: Fix usage message to include new -i option.
+       * hello.awk, incdupe.ok, incdupe2.ok, incdupe3.ok, inclib.awk,
+       include.awk, include.ok, include2.ok: New files.
+
 2012-05-09         Arnold D. Robbins     <address@hidden>
 
        * Makefile.am (jarebug): New test.
diff --git a/test/Makefile.am b/test/Makefile.am
index 726c89c..e782d1c 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -347,6 +347,7 @@ EXTRA_DIST = \
        gsubtst8.in \
        gsubtst8.ok \
        gtlnbufv.awk \
+       hello.awk \
        hex.awk \
        hex.ok \
        hsprint.awk \
@@ -367,6 +368,13 @@ EXTRA_DIST = \
        ignrcase.ok \
        ignrcas2.awk \
        ignrcas2.ok \
+       inclib.awk \
+       include.awk \
+       include.ok \
+       include2.ok \
+       incdupe.ok \
+       incdupe2.ok \
+       incdupe3.ok \
        indirectcall.awk \
        indirectcall.in \
        indirectcall.ok \
@@ -859,7 +867,8 @@ GAWK_EXT_TESTS = \
        profile1 profile2 profile3 pty1 \
        rebuf regx8bit reint reint2 rsstart1 \
        rsstart2 rsstart3 rstest6 shadow sortfor sortu splitarg4 strftime \
-       strtonum switch2
+       strtonum switch2 \
+       include include2 incdupe incdupe2 incdupe3
 
 EXTRA_TESTS = inftest regtest
 
@@ -892,7 +901,7 @@ CHECK_MPFR = \
        rand fnarydel fnparydl
 
 # List of the files that appear in manual tests or are for reserve testing:
-GENTESTS_UNUSED = Makefile.in gtlnbufv.awk printfloat.awk
+GENTESTS_UNUSED = Makefile.in gtlnbufv.awk printfloat.awk inclib.awk hello.awk
 
 CMP = cmp
 AWKPROG = ../gawk$(EXEEXT)
@@ -1548,6 +1557,26 @@ readfile::
        @$(AWK) -l readfile 'BEGIN {printf "%s", readfile("Makefile")}' >_$@ 
2>&1 || echo EXIT CODE: $$? >>_$@
        @-$(CMP) Makefile _$@ && rm -f _$@ || cp -p Makefile address@hidden
 
+include2::
+       @echo $@
+       @$(AWK) -i inclib 'BEGIN {print sandwich("a", "b", "c")}' >_$@ 2>&1 || 
echo EXIT CODE: $$? >>_$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
+
+incdupe::
+       @echo $@
+       @$(AWK) --lint -i inclib -i inclib.awk 'BEGIN {print sandwich("a", "b", 
"c")}' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
+
+incdupe2::
+       @echo $@
+       @$(AWK) --lint -f inclib -f inclib.awk >_$@ 2>&1 || echo EXIT CODE: $$? 
>>_$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
+
+incdupe3::
+       @echo $@
+       @$(AWK) --lint -f hello -f hello.awk >_$@ 2>&1 || echo EXIT CODE: $$? 
>>_$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
+
 # Targets generated for other tests:
 include Maketests
 
diff --git a/test/Makefile.in b/test/Makefile.in
index fb48935..d6ffc30 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -579,6 +579,7 @@ EXTRA_DIST = \
        gsubtst8.in \
        gsubtst8.ok \
        gtlnbufv.awk \
+       hello.awk \
        hex.awk \
        hex.ok \
        hsprint.awk \
@@ -599,6 +600,13 @@ EXTRA_DIST = \
        ignrcase.ok \
        ignrcas2.awk \
        ignrcas2.ok \
+       inclib.awk \
+       include.awk \
+       include.ok \
+       include2.ok \
+       incdupe.ok \
+       incdupe2.ok \
+       incdupe3.ok \
        indirectcall.awk \
        indirectcall.in \
        indirectcall.ok \
@@ -1091,7 +1099,8 @@ GAWK_EXT_TESTS = \
        profile1 profile2 profile3 pty1 \
        rebuf regx8bit reint reint2 rsstart1 \
        rsstart2 rsstart3 rstest6 shadow sortfor sortu splitarg4 strftime \
-       strtonum switch2
+       strtonum switch2 \
+       include include2 incdupe incdupe2 incdupe3
 
 EXTRA_TESTS = inftest regtest
 INET_TESTS = inetdayu inetdayt inetechu inetecht
@@ -1123,7 +1132,7 @@ CHECK_MPFR = \
 
 
 # List of the files that appear in manual tests or are for reserve testing:
-GENTESTS_UNUSED = Makefile.in gtlnbufv.awk printfloat.awk
+GENTESTS_UNUSED = Makefile.in gtlnbufv.awk printfloat.awk inclib.awk hello.awk
 CMP = cmp
 AWKPROG = ../gawk$(EXEEXT)
 
@@ -1955,6 +1964,26 @@ readfile::
        @echo $@
        @$(AWK) -l readfile 'BEGIN {printf "%s", readfile("Makefile")}' >_$@ 
2>&1 || echo EXIT CODE: $$? >>_$@
        @-$(CMP) Makefile _$@ && rm -f _$@ || cp -p Makefile address@hidden
+
+include2::
+       @echo $@
+       @$(AWK) -i inclib 'BEGIN {print sandwich("a", "b", "c")}' >_$@ 2>&1 || 
echo EXIT CODE: $$? >>_$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
+
+incdupe::
+       @echo $@
+       @$(AWK) --lint -i inclib -i inclib.awk 'BEGIN {print sandwich("a", "b", 
"c")}' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
+
+incdupe2::
+       @echo $@
+       @$(AWK) --lint -f inclib -f inclib.awk >_$@ 2>&1 || echo EXIT CODE: $$? 
>>_$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
+
+incdupe3::
+       @echo $@
+       @$(AWK) --lint -f hello -f hello.awk >_$@ 2>&1 || echo EXIT CODE: $$? 
>>_$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 Gt-dummy:
 # file Maketests, generated from Makefile.am by the Gentests program
 addcomma:
@@ -3092,6 +3121,11 @@ switch2:
        @AWKPATH=$(srcdir) $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
        @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 
+include:
+       @echo $@
+       @AWKPATH=$(srcdir) $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
+
 double1:
        @echo $@
        @AWKPATH=$(srcdir) $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
diff --git a/test/Maketests b/test/Maketests
index e6a985b..6856b87 100644
--- a/test/Maketests
+++ b/test/Maketests
@@ -1135,6 +1135,11 @@ switch2:
        @AWKPATH=$(srcdir) $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
        @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 
+include:
+       @echo $@
+       @AWKPATH=$(srcdir) $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
+
 double1:
        @echo $@
        @AWKPATH=$(srcdir) $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
diff --git a/test/badargs.ok b/test/badargs.ok
index 35c7d02..1be81ec 100644
--- a/test/badargs.ok
+++ b/test/badargs.ok
@@ -15,6 +15,7 @@ Short options:                GNU long options: (extensions)
        -E file                 --exec=file
        -g                      --gen-pot
        -h                      --help
+       -i includefile          --include=includefile
        -l library              --load=library
        -L [fatal]              --lint[=fatal]
        -n                      --non-decimal-data
diff --git a/test/hello.awk b/test/hello.awk
new file mode 100644
index 0000000..9e6d569
--- /dev/null
+++ b/test/hello.awk
@@ -0,0 +1,3 @@
+BEGIN {
+       print "Hello"
+}
diff --git a/test/incdupe.ok b/test/incdupe.ok
new file mode 100644
index 0000000..63c85e4
--- /dev/null
+++ b/test/incdupe.ok
@@ -0,0 +1,3 @@
+gawk: warning: already included source file `inclib.awk'
+Include library loaded.
+abc
diff --git a/test/incdupe2.ok b/test/incdupe2.ok
new file mode 100644
index 0000000..1178723
--- /dev/null
+++ b/test/incdupe2.ok
@@ -0,0 +1,2 @@
+gawk: inclib.awk:5: error: function name `sandwich' previously defined
+EXIT CODE: 1
diff --git a/test/incdupe3.ok b/test/incdupe3.ok
new file mode 100644
index 0000000..af17d2f
--- /dev/null
+++ b/test/incdupe3.ok
@@ -0,0 +1,2 @@
+Hello
+Hello
diff --git a/test/inclib.awk b/test/inclib.awk
new file mode 100644
index 0000000..5178528
--- /dev/null
+++ b/test/inclib.awk
@@ -0,0 +1,7 @@
+BEGIN {
+       print "Include library loaded."
+}
+
+function sandwich(pfx,x,sfx) {
+       return (pfx x sfx)
+}
diff --git a/test/include.awk b/test/include.awk
new file mode 100644
index 0000000..8fc7837
--- /dev/null
+++ b/test/include.awk
@@ -0,0 +1,5 @@
address@hidden "inclib.awk"
+
+BEGIN {
+       print sandwich("a", "b", "c")
+}
diff --git a/test/include.ok b/test/include.ok
new file mode 100644
index 0000000..a720efc
--- /dev/null
+++ b/test/include.ok
@@ -0,0 +1,2 @@
+Include library loaded.
+abc
diff --git a/test/include2.ok b/test/include2.ok
new file mode 100644
index 0000000..a720efc
--- /dev/null
+++ b/test/include2.ok
@@ -0,0 +1,2 @@
+Include library loaded.
+abc

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

Summary of changes:
 ChangeLog        |   10 +
 TODO.xgawk       |  201 ++++++-----
 awkgram.c        |   39 ++-
 awkgram.y        |   39 ++-
 doc/ChangeLog    |    5 +
 doc/gawk.1       |   26 ++-
 doc/gawk.info    | 1056 ++++++++++++++++++++++++++++--------------------------
 doc/gawk.texi    |   27 ++-
 io.c             |    8 +
 main.c           |    9 +-
 test/ChangeLog   |   11 +
 test/Makefile.am |   33 ++-
 test/Makefile.in |   38 ++-
 test/Maketests   |    5 +
 test/badargs.ok  |    1 +
 test/hello.awk   |    3 +
 test/incdupe.ok  |    3 +
 test/incdupe2.ok |    2 +
 test/incdupe3.ok |    2 +
 test/inclib.awk  |    7 +
 test/include.awk |    5 +
 test/include.ok  |    2 +
 test/include2.ok |    2 +
 23 files changed, 881 insertions(+), 653 deletions(-)
 create mode 100644 test/hello.awk
 create mode 100644 test/incdupe.ok
 create mode 100644 test/incdupe2.ok
 create mode 100644 test/incdupe3.ok
 create mode 100644 test/inclib.awk
 create mode 100644 test/include.awk
 create mode 100644 test/include.ok
 create mode 100644 test/include2.ok


hooks/post-receive
-- 
gawk



reply via email to

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