[Top][All Lists]

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

[gawk-diffs] [SCM] gawk branch, gawk-5.0-stable, updated. gawk-4.1.0-373

From: Arnold Robbins
Subject: [gawk-diffs] [SCM] gawk branch, gawk-5.0-stable, updated. gawk-4.1.0-3731-g875f2de7
Date: Wed, 22 May 2019 13:59:30 -0400 (EDT)

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

The branch, gawk-5.0-stable has been updated
       via  875f2de7fd309eed6096e2f51415aa3ea3666f27 (commit)
      from  990649951e7fa34ae589a19ac686ffcc655d584b (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 -----------------------------------------------------------------

commit 875f2de7fd309eed6096e2f51415aa3ea3666f27
Author: Arnold D. Robbins <address@hidden>
Date:   Wed May 22 20:59:05 2019 +0300

    Add --lint=no-ext to disable "xxx is a gawk extension" warnings.

diff --git a/ChangeLog b/ChangeLog
index 29a31b3..0219f79 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,21 @@
+2019-05-22         Arnold D. Robbins     <address@hidden>
+       Add --lint=no-ext. Suggest by Mark Krauze <address@hidden>.
+       * NEWS: Updated.
+       * awk.h (DO_LINT_EXTENSIONS): New enum.
+       (do_lint_extensions): New macro.
+       * awkgram.y (yylex, snode): Use do_lint_extensions instead of
+       do_lint where appropriate.
+       * builtin.c (do_length): Ditto.
+       * eval.c (set_IGNORECASE, set_BINMODE): Ditto.
+       (set_LINT): Revise logic.
+       * field.c (do_split, set_FIELDWIDTHS, chose_fs_function, set_FPAT):
+       Ditto.
+       * io.c (set_RS): Ditto.
+       * main.c (usage): Updated.
+       (parse_args): Revise the code to handle --lint=no-ext.
 2019-05-10         Arnold D. Robbins     <address@hidden>
        * NEWS: Updated.
diff --git a/NEWS b/NEWS
index c60f687..26ed3b5 100644
--- a/NEWS
+++ b/NEWS
@@ -17,6 +17,9 @@ Changes from 5.0.0 to 5.0.1
 4. There are many small documentation improvements in the manual.
+5. The new argument "no-ext" to --lint disables ``XXX is a gawk extension''
+   lint warnings.
 N. A number of bugs, some of them quite significant, have been fixed.
     See the ChangeLog for details.
diff --git a/awk.h b/awk.h
index 8d87fc6..363e440 100644
--- a/awk.h
+++ b/awk.h
@@ -1139,21 +1139,22 @@ extern int do_flags;
 extern SRCFILE *srcfiles; /* source files */
 enum do_flag_values {
-       DO_LINT_INVALID = 0x0001,       /* only warn about invalid */
-       DO_LINT_ALL     = 0x0002,       /* warn about all things */
-       DO_LINT_OLD     = 0x0004,       /* warn about stuff not in V7 awk */
-       DO_TRADITIONAL  = 0x0008,       /* no gnu extensions, add traditional 
weirdnesses */
-       DO_POSIX        = 0x0010,       /* turn off gnu and unix extensions */
-       DO_INTL         = 0x0020,       /* dump locale-izable strings to stdout 
-       DO_NON_DEC_DATA = 0x0040,       /* allow octal/hex C style DATA. Use 
with caution! */
-       DO_INTERVALS    = 0x0080,       /* allow {...,...} in regexps, see 
resetup() */
-       DO_PRETTY_PRINT = 0x0100,       /* pretty print the program */
-       DO_DUMP_VARS    = 0x0200,       /* dump all global variables at end */
-       DO_TIDY_MEM     = 0x0400,       /* release vars when done */
-       DO_SANDBOX      = 0x0800,       /* sandbox mode - disable 'system' 
function & redirections */
-       DO_PROFILE      = 0x1000,       /* profile the program */
-       DO_DEBUG        = 0x2000,       /* debug the program */
-       DO_MPFR         = 0x4000        /* arbitrary-precision floating-point 
math */
+       DO_LINT_INVALID    = 0x00001,   /* only warn about invalid */
+       DO_LINT_EXTENSIONS = 0x00002,   /* warn about gawk extensions */
+       DO_LINT_ALL        = 0x00004,   /* warn about all things */
+       DO_LINT_OLD        = 0x00008,   /* warn about stuff not in V7 awk */
+       DO_TRADITIONAL     = 0x00010,   /* no gnu extensions, add traditional 
weirdnesses */
+       DO_POSIX           = 0x00020,   /* turn off gnu and unix extensions */
+       DO_INTL            = 0x00040,   /* dump locale-izable strings to stdout 
+       DO_NON_DEC_DATA    = 0x00080,   /* allow octal/hex C style DATA. Use 
with caution! */
+       DO_INTERVALS       = 0x00100,   /* allow {...,...} in regexps, see 
resetup() */
+       DO_PRETTY_PRINT    = 0x00200,   /* pretty print the program */
+       DO_DUMP_VARS       = 0x00400,   /* dump all global variables at end */
+       DO_TIDY_MEM        = 0x00800,   /* release vars when done */
+       DO_SANDBOX         = 0x01000,   /* sandbox mode - disable 'system' 
function & redirections */
+       DO_PROFILE         = 0x02000,   /* profile the program */
+       DO_DEBUG           = 0x04000,   /* debug the program */
+       DO_MPFR            = 0x08000    /* arbitrary-precision floating-point 
math */
 #define do_traditional      (do_flags & DO_TRADITIONAL)
@@ -1179,6 +1180,7 @@ extern int exit_val;
 #define do_lint             (do_flags & (DO_LINT_INVALID|DO_LINT_ALL))
 #define do_lint_old         (do_flags & DO_LINT_OLD)
+#define do_lint_extensions  (do_flags & DO_LINT_EXTENSIONS)
 extern int gawk_mb_cur_max;
diff --git a/awkgram.c b/awkgram.c
index 150cfdc..3d9bbf3 100644
--- a/awkgram.c
+++ b/awkgram.c
@@ -6873,7 +6873,7 @@ retry:
                if (do_lint) {
-                       if ((tokentab[mid].flags & GAWKX) != 0 && (warntab[mid] 
& GAWKX) == 0) {
+                       if (do_lint_extensions && (tokentab[mid].flags & GAWKX) 
!= 0 && (warntab[mid] & GAWKX) == 0) {
                                lintwarn(_("`%s' is a gawk extension"),
                                warntab[mid] |= GAWKX;
@@ -7196,7 +7196,7 @@ snode(INSTRUCTION *subn, INSTRUCTION *r)
                (void) mk_rexp(arg);
                if (nexp == 3) {        /* 3rd argument there */
-                       if (do_lint && ! warned) {
+                       if (do_lint_extensions && ! warned) {
                                warned = true;
                                lintwarn(_("match: third argument is a gawk 
@@ -7253,7 +7253,7 @@ snode(INSTRUCTION *subn, INSTRUCTION *r)
        } else if (r->builtin == do_close) {
                static bool warned = false;
                if (nexp == 2) {
-                       if (do_lint && ! warned) {
+                       if (do_lint_extensions && ! warned) {
                                warned = true;
                                lintwarn(_("close: second argument is a gawk 
diff --git a/awkgram.y b/awkgram.y
index 08bd096..3cbcfd3 100644
--- a/awkgram.y
+++ b/awkgram.y
@@ -4379,7 +4379,7 @@ retry:
                if (do_lint) {
-                       if ((tokentab[mid].flags & GAWKX) != 0 && (warntab[mid] 
& GAWKX) == 0) {
+                       if (do_lint_extensions && (tokentab[mid].flags & GAWKX) 
!= 0 && (warntab[mid] & GAWKX) == 0) {
                                lintwarn(_("`%s' is a gawk extension"),
                                warntab[mid] |= GAWKX;
@@ -4702,7 +4702,7 @@ snode(INSTRUCTION *subn, INSTRUCTION *r)
                (void) mk_rexp(arg);
                if (nexp == 3) {        /* 3rd argument there */
-                       if (do_lint && ! warned) {
+                       if (do_lint_extensions && ! warned) {
                                warned = true;
                                lintwarn(_("match: third argument is a gawk 
@@ -4759,7 +4759,7 @@ snode(INSTRUCTION *subn, INSTRUCTION *r)
        } else if (r->builtin == do_close) {
                static bool warned = false;
                if (nexp == 2) {
-                       if (do_lint && ! warned) {
+                       if (do_lint_extensions && ! warned) {
                                warned = true;
                                lintwarn(_("close: second argument is a gawk 
diff --git a/builtin.c b/builtin.c
index 491a96b..bea88b8 100644
--- a/builtin.c
+++ b/builtin.c
@@ -529,7 +529,7 @@ do_length(int nargs)
                if (do_posix)
                        fatal(_("length: received array argument"));
-               if (do_lint && ! warned) {
+               if (do_lint_extensions && ! warned) {
                        warned = true;
                        lintwarn(_("`length(array)' is a gawk extension"));
diff --git a/doc/ChangeLog b/doc/ChangeLog
index 6220648..42c44fe 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,3 +1,7 @@
+2019-05-22         Arnold D. Robbins     <address@hidden>
+       * gawk1, Document --lint=no-ext.
 2019-05-06         Arnold D. Robbins     <address@hidden>
        * Fix some typos.  Thanks to Mark Krauze
diff --git a/doc/gawk.1 b/doc/gawk.1
index f24e62a..de613aa 100644
--- a/doc/gawk.1
+++ b/doc/gawk.1
@@ -13,7 +13,7 @@
 .              if \w'\(rq' .ds rq "\(rq
 .      \}
-.TH GAWK 1 "Feb 19 2019" "Free Software Foundation" "Utility Commands"
+.TH GAWK 1 "May 22 2019" "Free Software Foundation" "Utility Commands"
 gawk \- pattern scanning and processing language
@@ -354,6 +354,11 @@ With an optional argument of
 .BR invalid ,
 only warnings about things that are
 actually invalid are issued. (This is not fully implemented yet.)
+With an optional argument of
+.BR no-ext ,
+warnings about
+.I gawk
+extensions are disabled.
 .PD 0
 .B \-M
diff --git a/doc/ b/doc/
index d68921c..cffc93d 100644
--- a/doc/
+++ b/doc/
@@ -5,7 +5,7 @@ Free Software Foundation, Inc.
    This is Edition 5.0 of 'GAWK: Effective AWK Programming: A User's
-Guide for GNU Awk', for the 5.0.0 (or later) version of the GNU
+Guide for GNU Awk', for the 5.0.1 (or later) version of the GNU
 implementation of AWK.
    Permission is granted to copy, distribute and/or modify this document
@@ -42,7 +42,7 @@ Free Software Foundation, Inc.
    This is Edition 5.0 of 'GAWK: Effective AWK Programming: A User's
-Guide for GNU Awk', for the 5.0.0 (or later) version of the GNU
+Guide for GNU Awk', for the 5.0.1 (or later) version of the GNU
 implementation of AWK.
    Permission is granted to copy, distribute and/or modify this document
@@ -2686,7 +2686,8 @@ The following list describes options mandated by the 
POSIX standard:
      will certainly encourage the development of cleaner 'awk' programs.
      With an optional argument of 'invalid', only warnings about things
      that are actually invalid are issued.  (This is not fully
-     implemented yet.)
+     implemented yet.)  With an optional argument of 'no-ext', warnings
+     about 'gawk' extensions are disabled.
      Some warnings are only printed once, even if the dubious constructs
      they warn about occur multiple times in your 'awk' program.  Thus,
@@ -29381,7 +29382,7 @@ There are two ways to get GNU software:
      supported.  If you have the 'wget' program, you can use a command
      like the following:
-          wget
+          wget
    The GNU software archive is mirrored around the world.  The
 up-to-date list of mirror sites is available from the main FSF website
@@ -29403,25 +29404,25 @@ compression programs: 'gzip', 'bzip2', and 'xz'.  For 
simplicity, the
 rest of these instructions assume you are using the one compressed with
 the GNU Gzip program ('gzip').
-   Once you have the distribution (e.g., 'gawk-5.0.0.tar.gz'), use
+   Once you have the distribution (e.g., 'gawk-5.0.1.tar.gz'), use
 'gzip' to expand the file and then use 'tar' to extract it.  You can use
 the following pipeline to produce the 'gawk' distribution:
-     gzip -d -c gawk-5.0.0.tar.gz | tar -xvpf -
+     gzip -d -c gawk-5.0.1.tar.gz | tar -xvpf -
    On a system with GNU 'tar', you can let 'tar' do the decompression
 for you:
-     tar -xvpzf gawk-5.0.0.tar.gz
+     tar -xvpzf gawk-5.0.1.tar.gz
-Extracting the archive creates a directory named 'gawk-5.0.0' in the
+Extracting the archive creates a directory named 'gawk-5.0.1' in the
 current directory.
    The distribution file name is of the form 'gawk-V.R.P.tar.gz'.  The V
 represents the major version of 'gawk', the R represents the current
 release of version V, and the P represents a "patch level", meaning that
 minor bugs have been fixed in the release.  The current patch level is
-0, but when retrieving distributions, you should get the version with
+1, but when retrieving distributions, you should get the version with
 the highest version, release, and patch level.  (Note, however, that
 patch levels greater than or equal to 60 denote "beta" or nonproduction
 software; you might not want to retrieve such a version unless you don't
@@ -29648,7 +29649,7 @@ Unix-derived systems, GNU/Linux, BSD-based systems, and 
the Cygwin
 environment for MS-Windows.
    After you have extracted the 'gawk' distribution, 'cd' to
-'gawk-5.0.0'.  As with most GNU software, you configure 'gawk' for your
+'gawk-5.0.1'.  As with most GNU software, you configure 'gawk' for your
 system by running the 'configure' program.  This program is a Bourne
 shell script that is generated automatically using GNU Autoconf.  (The
 Autoconf software is described fully starting with *note (Autoconf,
@@ -29994,8 +29995,8 @@ environment provides an excellent simulation of 
GNU/Linux, using Bash,
 GCC, GNU Make, and other GNU programs.  Compilation and installation for
 Cygwin is the same as for a Unix system:
-     tar -xvpzf gawk-5.0.0.tar.gz
-     cd gawk-5.0.0
+     tar -xvpzf gawk-5.0.1.tar.gz
+     cd gawk-5.0.1
      make && make check
@@ -30639,9 +30640,9 @@ B.6 Summary
    * The 'gawk' distribution is available from the GNU Project's main
      distribution site, ''.  The canonical build recipe is:
-          wget
-          tar -xvpzf gawk-5.0.0.tar.gz
-          cd gawk-5.0.0
+          wget
+          tar -xvpzf gawk-5.0.1.tar.gz
+          cd gawk-5.0.1
           ./configure && make && make check
           NOTE: Because of the 'https://' URL, you may have to supply
@@ -33659,7 +33660,7 @@ Index
 * - (hyphen), file names beginning with: Options.             (line  64)
 * - (hyphen), in bracket expressions:    Bracket Expressions. (line  25)
 * --assign option:                       Options.             (line  36)
-* --bignum option:                       Options.             (line 229)
+* --bignum option:                       Options.             (line 230)
 * --characters-as-bytes option:          Options.             (line  73)
 * --copyright option:                    Options.             (line  93)
 * --debug option:                        Options.             (line 112)
@@ -33686,21 +33687,21 @@ Index
 * --include option:                      Options.             (line 181)
 * --lint option:                         Command Line.        (line  20)
 * --lint option <1>:                     Options.             (line 210)
-* --lint-old option:                     Options.             (line 325)
+* --lint-old option:                     Options.             (line 326)
 * --load option:                         Options.             (line 198)
-* --no-optimize option:                  Options.             (line 310)
-* --non-decimal-data option:             Options.             (line 235)
+* --no-optimize option:                  Options.             (line 311)
+* --non-decimal-data option:             Options.             (line 236)
 * --non-decimal-data option <1>:         Nondecimal Data.     (line   6)
 * --non-decimal-data option, strtonum() function and: Nondecimal Data.
                                                               (line  35)
-* --optimize option:                     Options.             (line 260)
-* --posix option:                        Options.             (line 282)
-* --posix option, --traditional option and: Options.          (line 297)
-* --pretty-print option:                 Options.             (line 249)
-* --profile option:                      Options.             (line 270)
+* --optimize option:                     Options.             (line 261)
+* --posix option:                        Options.             (line 283)
+* --posix option, --traditional option and: Options.          (line 298)
+* --pretty-print option:                 Options.             (line 250)
+* --profile option:                      Options.             (line 271)
 * --profile option <1>:                  Profiling.           (line  12)
-* --re-interval option:                  Options.             (line 303)
-* --sandbox option:                      Options.             (line 315)
+* --re-interval option:                  Options.             (line 304)
+* --sandbox option:                      Options.             (line 316)
 * --sandbox option, disabling system() function: I/O Functions.
                                                               (line 128)
 * --sandbox option, input redirection with getline: Getline.  (line  19)
@@ -33708,9 +33709,9 @@ Index
                                                               (line   6)
 * --source option:                       Options.             (line 121)
 * --traditional option:                  Options.             (line  86)
-* --traditional option, --posix option and: Options.          (line 297)
-* --use-lc-numeric option:               Options.             (line 244)
-* --version option:                      Options.             (line 330)
+* --traditional option, --posix option and: Options.          (line 298)
+* --use-lc-numeric option:               Options.             (line 245)
+* --version option:                      Options.             (line 331)
 * -b option:                             Options.             (line  73)
 * -c option:                             Options.             (line  86)
 * -C option:                             Options.             (line  93)
@@ -33718,32 +33719,32 @@ Index
 * -D option:                             Options.             (line 112)
 * -e option:                             Options.             (line 121)
 * -E option:                             Options.             (line 147)
-* -e option <1>:                         Options.             (line 366)
+* -e option <1>:                         Options.             (line 367)
 * -f option:                             Long.                (line  12)
 * -F option:                             Options.             (line  21)
 * -f option <1>:                         Options.             (line  25)
-* -F option, -Ft sets FS to TAB:         Options.             (line 338)
+* -F option, -Ft sets FS to TAB:         Options.             (line 339)
 * -F option, command-line:               Command Line Field Separator.
                                                               (line   6)
-* -f option, multiple uses:              Options.             (line 343)
+* -f option, multiple uses:              Options.             (line 344)
 * -g option:                             Options.             (line 169)
 * -h option:                             Options.             (line 176)
 * -i option:                             Options.             (line 181)
 * -l option:                             Options.             (line 198)
 * -l option <1>:                         Options.             (line 210)
-* -L option:                             Options.             (line 325)
-* -M option:                             Options.             (line 229)
-* -n option:                             Options.             (line 235)
-* -N option:                             Options.             (line 244)
-* -o option:                             Options.             (line 249)
-* -O option:                             Options.             (line 260)
-* -p option:                             Options.             (line 270)
-* -P option:                             Options.             (line 282)
-* -r option:                             Options.             (line 303)
-* -s option:                             Options.             (line 310)
-* -S option:                             Options.             (line 315)
+* -L option:                             Options.             (line 326)
+* -M option:                             Options.             (line 230)
+* -n option:                             Options.             (line 236)
+* -N option:                             Options.             (line 245)
+* -o option:                             Options.             (line 250)
+* -O option:                             Options.             (line 261)
+* -p option:                             Options.             (line 271)
+* -P option:                             Options.             (line 283)
+* -r option:                             Options.             (line 304)
+* -s option:                             Options.             (line 311)
+* -S option:                             Options.             (line 316)
 * -v option:                             Options.             (line  36)
-* -V option:                             Options.             (line 330)
+* -V option:                             Options.             (line 331)
 * -v option <1>:                         Assignment Options.  (line  12)
 * -W option:                             Options.             (line  51)
 * . (period), regexp operator:           Regexp Operator Details.
@@ -33972,7 +33973,7 @@ Index
 * arguments, command-line, invoking awk: Command Line.        (line   6)
 * arguments, in function calls:          Function Calls.      (line  18)
 * arguments, processing:                 Getopt Function.     (line   6)
-* ARGV array:                            Options.             (line 315)
+* ARGV array:                            Options.             (line 316)
 * ARGV array, indexing into:             Other Arguments.     (line  15)
 * arithmetic operators:                  Arithmetic Ops.      (line   6)
 * array manipulation in extensions:      Array Manipulation.  (line   6)
@@ -34066,7 +34067,7 @@ Index
                                                               (line   6)
 * awk namespace, use for indirect function calls: Internal Name Management.
                                                               (line   6)
-* awk profiling, enabling:               Options.             (line 270)
+* awk profiling, enabling:               Options.             (line 271)
 * awk programs:                          Getting Started.     (line  12)
 * awk programs <1>:                      Executable Scripts.  (line   6)
 * awk programs <2>:                      Two Rules.           (line   6)
@@ -34493,7 +34494,7 @@ Index
 * cosine:                                Numeric Functions.   (line  16)
 * counting:                              Wc Program.          (line   6)
 * csh utility:                           Statements/Lines.    (line  43)
-* csh utility, POSIXLY_CORRECT environment variable: Options. (line 387)
+* csh utility, POSIXLY_CORRECT environment variable: Options. (line 388)
 * csh utility, |& operator, comparison with: Two-way I/O.     (line  27)
 * ctime() user-defined function:         Function Example.    (line  74)
 * Curreli, Marco:                        Contributors.        (line 147)
@@ -34718,7 +34719,7 @@ Index
 * debugging gawk, bug reports:           Bugs.                (line   9)
 * debugging, example session:            Sample Debugging Session.
                                                               (line   6)
-* decimal point character, locale specific: Options.          (line 294)
+* decimal point character, locale specific: Options.          (line 295)
 * decrement operators:                   Increment Ops.       (line  35)
 * default keyword:                       Switch Statement.    (line   6)
 * Deifik, Scott:                         Acknowledgments.     (line  60)
@@ -35191,7 +35192,7 @@ Index
 * FS variable, running awk programs and: Cut Program.         (line  63)
 * FS variable, setting from command line: Command Line Field Separator.
                                                               (line   6)
-* FS variable, TAB character as:         Options.             (line 291)
+* FS variable, TAB character as:         Options.             (line 292)
 * FS, containing ^:                      Regexp Field Splitting.
                                                               (line  59)
 * FS, in multiline records:              Multiple Line.       (line  41)
@@ -35276,7 +35277,7 @@ Index
 * gawk, ERRNO variable in <3>:           Auto-set.            (line  87)
 * gawk, ERRNO variable in <4>:           TCP/IP Networking.   (line  54)
 * gawk, escape sequences:                Escape Sequences.    (line 121)
-* gawk, extensions, disabling:           Options.             (line 282)
+* gawk, extensions, disabling:           Options.             (line 283)
 * gawk, features, adding:                Adding Code.         (line   6)
 * gawk, features, advanced:              Advanced Features.   (line   6)
 * gawk, field separators and:            User-modified.       (line  74)
@@ -35341,7 +35342,7 @@ Index
 * gawk, TEXTDOMAIN variable in:          User-modified.       (line 155)
 * gawk, timestamps:                      Time Functions.      (line   6)
 * gawk, uses for:                        Preface.             (line  34)
-* gawk, versions of, information about, printing: Options.    (line 330)
+* gawk, versions of, information about, printing: Options.    (line 331)
 * gawk, VMS version of:                  VMS Installation.    (line   6)
 * gawk, word-boundary operator:          GNU Regexp Operators.
                                                               (line  66)
@@ -35457,7 +35458,7 @@ Index
 * help debugger command:                 Miscellaneous Debugger Commands.
                                                               (line  67)
 * hexadecimal numbers:                   Nondecimal-numbers.  (line   6)
-* hexadecimal values, enabling interpretation of: Options.    (line 235)
+* hexadecimal values, enabling interpretation of: Options.    (line 236)
 * history expansion, in debugger:        Readline Support.    (line   6)
 * histsort.awk program:                  History Sorting.     (line  25)
 * Hughes, Phil:                          Acknowledgments.     (line  43)
@@ -35675,7 +35676,7 @@ Index
 * lint checking, empty programs:         Command Line.        (line  16)
 * lint checking, issuing warnings:       Options.             (line 210)
 * lint checking, POSIXLY_CORRECT environment variable: Options.
-                                                              (line 372)
+                                                              (line 373)
 * lint checking, undefined functions:    Function Caveats.    (line  23)
 * LINT variable:                         User-modified.       (line  90)
 * Linux:                                 Manual History.      (line  28)
@@ -35690,7 +35691,7 @@ Index
 * loading, extensions:                   Options.             (line 198)
 * local variables, in a function:        Variable Scope.      (line   6)
 * locale categories:                     Explaining gettext.  (line  81)
-* locale decimal point character:        Options.             (line 294)
+* locale decimal point character:        Options.             (line 295)
 * locale, definition of:                 Locales.             (line   6)
 * localization:                          I18N and L10N.       (line   6)
 * localization, See internationalization, localization: I18N and L10N.
@@ -35802,7 +35803,7 @@ Index
 * networks, programming:                 TCP/IP Networking.   (line   6)
 * networks, support for:                 Special Network.     (line   6)
 * newlines:                              Statements/Lines.    (line   6)
-* newlines <1>:                          Options.             (line 288)
+* newlines <1>:                          Options.             (line 289)
 * newlines <2>:                          Boolean Ops.         (line  69)
 * newlines, as record separators:        awk split records.   (line  12)
 * newlines, in dynamic regexps:          Computed Regexps.    (line  60)
@@ -35877,7 +35878,7 @@ Index
 * o debugger command (alias for option): Debugger Info.       (line  57)
 * obsolete features:                     Obsolete.            (line   6)
 * octal numbers:                         Nondecimal-numbers.  (line   6)
-* octal values, enabling interpretation of: Options.          (line 235)
+* octal values, enabling interpretation of: Options.          (line 236)
 * OFMT variable:                         OFMT.                (line  15)
 * OFMT variable <1>:                     Strings And Numbers. (line  56)
 * OFMT variable <2>:                     User-modified.       (line 107)
@@ -36037,7 +36038,7 @@ Index
 * portability, NF variable, decrementing: Changing Fields.    (line 115)
 * portability, operators:                Increment Ops.       (line  60)
 * portability, operators, not in POSIX awk: Precedence.       (line  97)
-* portability, POSIXLY_CORRECT environment variable: Options. (line 392)
+* portability, POSIXLY_CORRECT environment variable: Options. (line 393)
 * portability, substr() function:        String Functions.    (line 518)
 * portable object files:                 Explaining gettext.  (line  37)
 * portable object files <1>:             Translator i18n.     (line   6)
@@ -36088,12 +36089,12 @@ Index
                                                               (line 136)
 * POSIX awk, timestamps and:             Time Functions.      (line   6)
 * POSIX awk, | I/O operator and:         Getline/Pipe.        (line  56)
-* POSIX mode:                            Options.             (line 282)
-* POSIX mode <1>:                        Options.             (line 372)
+* POSIX mode:                            Options.             (line 283)
+* POSIX mode <1>:                        Options.             (line 373)
 * POSIX, awk and:                        Preface.             (line  21)
 * POSIX, gawk extensions not included in: POSIX/GNU.          (line   6)
 * POSIX, programs, implementing in awk:  Clones.              (line   6)
-* POSIXLY_CORRECT environment variable:  Options.             (line 372)
+* POSIXLY_CORRECT environment variable:  Options.             (line 373)
 * PREC variable:                         User-modified.       (line 127)
 * precedence:                            Increment Ops.       (line  60)
 * precedence <1>:                        Precedence.          (line   6)
@@ -36105,7 +36106,7 @@ Index
 * predefined variables, user-modifiable: User-modified.       (line   6)
 * pretty printer, interaction with namespaces: Namespace And Features.
                                                               (line   9)
-* pretty printing:                       Options.             (line 247)
+* pretty printing:                       Options.             (line 248)
 * pretty printing <1>:                   Profiling.           (line 222)
 * pretty-printing, profiling, difference with: Profiling.     (line 229)
 * print debugger command:                Viewing And Changing Data.
@@ -36292,7 +36293,7 @@ Index
                                                               (line  60)
 * regular expressions, gawk, command-line options: GNU Regexp Operators.
                                                               (line  73)
-* regular expressions, interval expressions and: Options.     (line 303)
+* regular expressions, interval expressions and: Options.     (line 304)
 * regular expressions, leftmost longest match: Leftmost Longest.
                                                               (line   6)
 * regular expressions, operators:        Regexp Usage.        (line  19)
@@ -36377,7 +36378,7 @@ Index
                                                               (line  68)
 * sample debugging session:              Sample Debugging Session.
                                                               (line   6)
-* sandbox mode:                          Options.             (line 315)
+* sandbox mode:                          Options.             (line 316)
 * save debugger options:                 Debugger Info.       (line  85)
 * scalar or array:                       Type Functions.      (line  11)
 * scalar values:                         Basic Data Typing.   (line  13)
@@ -36709,7 +36710,7 @@ Index
 * translate string:                      I18N Functions.      (line  21)
 * translate.awk program:                 Translate Program.   (line  55)
 * treating files, as single records:     gawk split records.  (line  92)
-* troubleshooting, --non-decimal-data option: Options.        (line 235)
+* troubleshooting, --non-decimal-data option: Options.        (line 236)
 * troubleshooting, == operator:          Comparison Operators.
                                                               (line  37)
 * troubleshooting, awk uses FS not IFS:  Field Separators.    (line  29)
@@ -36868,7 +36869,7 @@ Index
 * whitespace, as field separators:       Default Field Splitting.
                                                               (line   6)
 * whitespace, functions, calling:        Calling Built-in.    (line  10)
-* whitespace, newlines as:               Options.             (line 288)
+* whitespace, newlines as:               Options.             (line 289)
 * Williams, Kent:                        Contributors.        (line  35)
 * Woehlke, Matthew:                      Contributors.        (line  82)
 * Woods, John:                           Contributors.        (line  28)
@@ -36938,557 +36939,557 @@ Node: Intro Summary116293
 Node: Invoking Gawk117177
 Node: Command Line118691
 Node: Options119489
-Ref: Options-Footnote-1136851
-Ref: Options-Footnote-2137082
-Node: Other Arguments137107
-Node: Naming Standard Input140054
-Node: Environment Variables141264
-Node: AWKPATH Variable141822
-Ref: AWKPATH Variable-Footnote-1145234
-Ref: AWKPATH Variable-Footnote-2145268
-Node: AWKLIBPATH Variable145529
-Node: Other Environment Variables147187
-Node: Exit Status151008
-Node: Include Files151685
-Node: Loading Shared Libraries155375
-Node: Obsolete156803
-Node: Undocumented157495
-Node: Invoking Summary157792
-Node: Regexp159452
-Node: Regexp Usage160906
-Node: Escape Sequences162943
-Node: Regexp Operators169175
-Node: Regexp Operator Details169660
-Ref: Regexp Operator Details-Footnote-1175782
-Node: Interval Expressions175929
-Ref: Interval Expressions-Footnote-1177364
-Node: Bracket Expressions177462
-Ref: table-char-classes179938
-Node: Leftmost Longest183264
-Node: Computed Regexps184567
-Node: GNU Regexp Operators187994
-Node: Case-sensitivity191673
-Ref: Case-sensitivity-Footnote-1194539
-Ref: Case-sensitivity-Footnote-2194774
-Node: Regexp Summary194882
-Node: Reading Files196348
-Node: Records198617
-Node: awk split records199692
-Node: gawk split records204967
-Ref: gawk split records-Footnote-1209553
-Node: Fields209590
-Node: Nonconstant Fields212331
-Ref: Nonconstant Fields-Footnote-1214567
-Node: Changing Fields214771
-Node: Field Separators220802
-Node: Default Field Splitting223500
-Node: Regexp Field Splitting224618
-Node: Single Character Fields227971
-Node: Command Line Field Separator229031
-Node: Full Line Fields232249
-Ref: Full Line Fields-Footnote-1233771
-Ref: Full Line Fields-Footnote-2233817
-Node: Field Splitting Summary233918
-Node: Constant Size235992
-Node: Fixed width data236724
-Node: Skipping intervening240191
-Node: Allowing trailing data240989
-Node: Fields with fixed data242026
-Node: Splitting By Content243544
-Ref: Splitting By Content-Footnote-1247194
-Node: Testing field creation247357
-Node: Multiple Line248982
-Node: Getline255259
-Node: Plain Getline257728
-Node: Getline/Variable260369
-Node: Getline/File261520
-Node: Getline/Variable/File262908
-Ref: Getline/Variable/File-Footnote-1264513
-Node: Getline/Pipe264601
-Node: Getline/Variable/Pipe267308
-Node: Getline/Coprocess268443
-Node: Getline/Variable/Coprocess269710
-Node: Getline Notes270452
-Node: Getline Summary273249
-Ref: table-getline-variants273673
-Node: Read Timeout274421
-Ref: Read Timeout-Footnote-1278327
-Node: Retrying Input278385
-Node: Command-line directories279584
-Node: Input Summary280490
-Node: Input Exercises283662
-Node: Printing284390
-Node: Print286224
-Node: Print Examples287681
-Node: Output Separators290461
-Node: OFMT292478
-Node: Printf293834
-Node: Basic Printf294619
-Node: Control Letters296193
-Node: Format Modifiers301357
-Node: Printf Examples307372
-Node: Redirection309858
-Node: Special FD316699
-Ref: Special FD-Footnote-1319867
-Node: Special Files319941
-Node: Other Inherited Files320558
-Node: Special Network321559
-Node: Special Caveats322419
-Node: Close Files And Pipes323368
-Ref: table-close-pipe-return-values330275
-Ref: Close Files And Pipes-Footnote-1331088
-Ref: Close Files And Pipes-Footnote-2331236
-Node: Nonfatal331388
-Node: Output Summary333726
-Node: Output Exercises334948
-Node: Expressions335627
-Node: Values336815
-Node: Constants337493
-Node: Scalar Constants338184
-Ref: Scalar Constants-Footnote-1340708
-Node: Nondecimal-numbers340958
-Node: Regexp Constants343959
-Node: Using Constant Regexps344485
-Node: Standard Regexp Constants345107
-Node: Strong Regexp Constants348295
-Node: Variables351253
-Node: Using Variables351910
-Node: Assignment Options353820
-Node: Conversion356287
-Node: Strings And Numbers356811
-Ref: Strings And Numbers-Footnote-1359874
-Node: Locale influences conversions359983
-Ref: table-locale-affects362741
-Node: All Operators363359
-Node: Arithmetic Ops363988
-Node: Concatenation366494
-Ref: Concatenation-Footnote-1369341
-Node: Assignment Ops369448
-Ref: table-assign-ops374439
-Node: Increment Ops375752
-Node: Truth Values and Conditions379212
-Node: Truth Values380286
-Node: Typing and Comparison381334
-Node: Variable Typing382154
-Ref: Variable Typing-Footnote-1388617
-Ref: Variable Typing-Footnote-2388689
-Node: Comparison Operators388766
-Ref: table-relational-ops389185
-Node: POSIX String Comparison392680
-Ref: POSIX String Comparison-Footnote-1394375
-Ref: POSIX String Comparison-Footnote-2394514
-Node: Boolean Ops394598
-Ref: Boolean Ops-Footnote-1399080
-Node: Conditional Exp399172
-Node: Function Calls400908
-Node: Precedence404785
-Node: Locales408444
-Node: Expressions Summary410076
-Node: Patterns and Actions412649
-Node: Pattern Overview413769
-Node: Regexp Patterns415446
-Node: Expression Patterns415988
-Node: Ranges419769
-Node: BEGIN/END422877
-Node: Using BEGIN/END423638
-Ref: Using BEGIN/END-Footnote-1426374
-Node: I/O And BEGIN/END426480
-Node: Empty431707
-Node: Using Shell Variables432024
-Node: Action Overview434298
-Node: Statements436623
-Node: If Statement438471
-Node: While Statement439966
-Node: Do Statement441994
-Node: For Statement443142
-Node: Switch Statement446313
-Node: Break Statement448699
-Node: Continue Statement450791
-Node: Next Statement452618
-Node: Nextfile Statement455001
-Node: Exit Statement457653
-Node: Built-in Variables460056
-Node: User-modified461189
-Node: Auto-set468956
-Ref: Auto-set-Footnote-1485763
-Ref: Auto-set-Footnote-2485969
-Node: ARGC and ARGV486025
-Node: Pattern Action Summary490238
-Node: Arrays492668
-Node: Array Basics493997
-Node: Array Intro494841
-Ref: figure-array-elements496816
-Ref: Array Intro-Footnote-1499520
-Node: Reference to Elements499648
-Node: Assigning Elements502112
-Node: Array Example502603
-Node: Scanning an Array504362
-Node: Controlling Scanning507384
-Ref: Controlling Scanning-Footnote-1512783
-Node: Numeric Array Subscripts513099
-Node: Uninitialized Subscripts515283
-Node: Delete516902
-Ref: Delete-Footnote-1519654
-Node: Multidimensional519711
-Node: Multiscanning522806
-Node: Arrays of Arrays524397
-Node: Arrays Summary529165
-Node: Functions531258
-Node: Built-in532296
-Node: Calling Built-in533377
-Node: Numeric Functions535373
-Ref: Numeric Functions-Footnote-1539401
-Ref: Numeric Functions-Footnote-2540049
-Ref: Numeric Functions-Footnote-3540097
-Node: String Functions540369
-Ref: String Functions-Footnote-1564227
-Ref: String Functions-Footnote-2564355
-Ref: String Functions-Footnote-3564603
-Node: Gory Details564690
-Ref: table-sub-escapes566481
-Ref: table-sub-proposed568000
-Ref: table-posix-sub569363
-Ref: table-gensub-escapes570904
-Ref: Gory Details-Footnote-1571727
-Node: I/O Functions571881
-Ref: table-system-return-values578349
-Ref: I/O Functions-Footnote-1580429
-Ref: I/O Functions-Footnote-2580577
-Node: Time Functions580697
-Ref: Time Functions-Footnote-1591368
-Ref: Time Functions-Footnote-2591436
-Ref: Time Functions-Footnote-3591594
-Ref: Time Functions-Footnote-4591705
-Ref: Time Functions-Footnote-5591817
-Ref: Time Functions-Footnote-6592044
-Node: Bitwise Functions592310
-Ref: table-bitwise-ops592904
-Ref: Bitwise Functions-Footnote-1598967
-Ref: Bitwise Functions-Footnote-2599140
-Node: Type Functions599331
-Node: I18N Functions602082
-Node: User-defined603733
-Node: Definition Syntax604545
-Ref: Definition Syntax-Footnote-1610232
-Node: Function Example610303
-Ref: Function Example-Footnote-1613225
-Node: Function Calling613247
-Node: Calling A Function613835
-Node: Variable Scope614793
-Node: Pass By Value/Reference617787
-Node: Function Caveats620431
-Ref: Function Caveats-Footnote-1622478
-Node: Return Statement622598
-Node: Dynamic Typing625577
-Node: Indirect Calls626507
-Ref: Indirect Calls-Footnote-1636759
-Node: Functions Summary636887
-Node: Library Functions639592
-Ref: Library Functions-Footnote-1643199
-Ref: Library Functions-Footnote-2643342
-Node: Library Names643513
-Ref: Library Names-Footnote-1647180
-Ref: Library Names-Footnote-2647403
-Node: General Functions647489
-Node: Strtonum Function648592
-Node: Assert Function651614
-Node: Round Function654940
-Node: Cliff Random Function656480
-Node: Ordinal Functions657496
-Ref: Ordinal Functions-Footnote-1660559
-Ref: Ordinal Functions-Footnote-2660811
-Node: Join Function661021
-Ref: Join Function-Footnote-1662791
-Node: Getlocaltime Function662991
-Node: Readfile Function666733
-Node: Shell Quoting668710
-Node: Data File Management670111
-Node: Filetrans Function670743
-Node: Rewind Function674839
-Node: File Checking676748
-Ref: File Checking-Footnote-1678082
-Node: Empty Files678283
-Node: Ignoring Assigns680262
-Node: Getopt Function681812
-Ref: Getopt Function-Footnote-1693281
-Node: Passwd Functions693481
-Ref: Passwd Functions-Footnote-1702320
-Node: Group Functions702408
-Ref: Group Functions-Footnote-1710306
-Node: Walking Arrays710513
-Node: Library Functions Summary713521
-Node: Library Exercises714927
-Node: Sample Programs715392
-Node: Running Examples716162
-Node: Clones716890
-Node: Cut Program718114
-Node: Egrep Program728043
-Ref: Egrep Program-Footnote-1735555
-Node: Id Program735665
-Node: Split Program739345
-Ref: Split Program-Footnote-1742803
-Node: Tee Program742932
-Node: Uniq Program745722
-Node: Wc Program753343
-Ref: Wc Program-Footnote-1757598
-Node: Miscellaneous Programs757692
-Node: Dupword Program758905
-Node: Alarm Program760935
-Node: Translate Program765790
-Ref: Translate Program-Footnote-1770355
-Node: Labels Program770625
-Ref: Labels Program-Footnote-1773976
-Node: Word Sorting774060
-Node: History Sorting778132
-Node: Extract Program779967
-Node: Simple Sed788021
-Node: Igawk Program791095
-Ref: Igawk Program-Footnote-1805426
-Ref: Igawk Program-Footnote-2805628
-Ref: Igawk Program-Footnote-3805750
-Node: Anagram Program805865
-Node: Signature Program808927
-Node: Programs Summary810174
-Node: Programs Exercises811388
-Ref: Programs Exercises-Footnote-1815517
-Node: Advanced Features815608
-Node: Nondecimal Data817598
-Node: Array Sorting819189
-Node: Controlling Array Traversal819889
-Ref: Controlling Array Traversal-Footnote-1828257
-Node: Array Sorting Functions828375
-Ref: Array Sorting Functions-Footnote-1833466
-Node: Two-way I/O833662
-Ref: Two-way I/O-Footnote-1841383
-Ref: Two-way I/O-Footnote-2841570
-Node: TCP/IP Networking841652
-Node: Profiling844770
-Node: Advanced Features Summary853785
-Node: Internationalization855629
-Node: I18N and L10N857109
-Node: Explaining gettext857796
-Ref: Explaining gettext-Footnote-1863688
-Ref: Explaining gettext-Footnote-2863873
-Node: Programmer i18n864038
-Ref: Programmer i18n-Footnote-1868987
-Node: Translator i18n869036
-Node: String Extraction869830
-Ref: String Extraction-Footnote-1870962
-Node: Printf Ordering871048
-Ref: Printf Ordering-Footnote-1873834
-Node: I18N Portability873898
-Ref: I18N Portability-Footnote-1876354
-Node: I18N Example876417
-Ref: I18N Example-Footnote-1879692
-Ref: I18N Example-Footnote-2879765
-Node: Gawk I18N879874
-Node: I18N Summary880523
-Node: Debugger881864
-Node: Debugging882864
-Node: Debugging Concepts883305
-Node: Debugging Terms885114
-Node: Awk Debugging887689
-Ref: Awk Debugging-Footnote-1888634
-Node: Sample Debugging Session888766
-Node: Debugger Invocation889300
-Node: Finding The Bug890686
-Node: List of Debugger Commands897160
-Node: Breakpoint Control898493
-Node: Debugger Execution Control902187
-Node: Viewing And Changing Data905549
-Node: Execution Stack909090
-Node: Debugger Info910727
-Node: Miscellaneous Debugger Commands914798
-Node: Readline Support919860
-Node: Limitations920756
-Node: Debugging Summary923310
-Node: Namespaces924589
-Node: Global Namespace925668
-Node: Qualified Names927066
-Node: Default Namespace928065
-Node: Changing The Namespace928806
-Node: Naming Rules930420
-Node: Internal Name Management932268
-Node: Namespace Example933310
-Node: Namespace And Features935872
-Node: Namespace Summary937307
-Node: Arbitrary Precision Arithmetic938784
-Node: Computer Arithmetic940271
-Ref: table-numeric-ranges944037
-Ref: table-floating-point-ranges944530
-Ref: Computer Arithmetic-Footnote-1945188
-Node: Math Definitions945245
-Ref: table-ieee-formats948561
-Ref: Math Definitions-Footnote-1949164
-Node: MPFR features949269
-Node: FP Math Caution950987
-Ref: FP Math Caution-Footnote-1952059
-Node: Inexactness of computations952428
-Node: Inexact representation953388
-Node: Comparing FP Values954748
-Node: Errors accumulate955989
-Node: Getting Accuracy957422
-Node: Try To Round960132
-Node: Setting precision961031
-Ref: table-predefined-precision-strings961728
-Node: Setting the rounding mode963558
-Ref: table-gawk-rounding-modes963932
-Ref: Setting the rounding mode-Footnote-1967863
-Node: Arbitrary Precision Integers968042
-Ref: Arbitrary Precision Integers-Footnote-1971217
-Node: Checking for MPFR971366
-Node: POSIX Floating Point Problems972840
-Ref: POSIX Floating Point Problems-Footnote-1977125
-Node: Floating point summary977163
-Node: Dynamic Extensions979353
-Node: Extension Intro980906
-Node: Plugin License982172
-Node: Extension Mechanism Outline982969
-Ref: figure-load-extension983408
-Ref: figure-register-new-function984973
-Ref: figure-call-new-function986065
-Node: Extension API Description988127
-Node: Extension API Functions Introduction989769
-Ref: table-api-std-headers991605
-Node: General Data Types995470
-Ref: General Data Types-Footnote-11003831
-Node: Memory Allocation Functions1004130
-Ref: Memory Allocation Functions-Footnote-11008340
-Node: Constructor Functions1008439
-Node: Registration Functions1012025
-Node: Extension Functions1012710
-Node: Exit Callback Functions1018032
-Node: Extension Version String1019282
-Node: Input Parsers1019945
-Node: Output Wrappers1032666
-Node: Two-way processors1037178
-Node: Printing Messages1039443
-Ref: Printing Messages-Footnote-11040614
-Node: Updating ERRNO1040767
-Node: Requesting Values1041506
-Ref: table-value-types-returned1042243
-Node: Accessing Parameters1043179
-Node: Symbol Table Access1044414
-Node: Symbol table by name1044926
-Ref: Symbol table by name-Footnote-11047950
-Node: Symbol table by cookie1048078
-Ref: Symbol table by cookie-Footnote-11052263
-Node: Cached values1052327
-Ref: Cached values-Footnote-11055863
-Node: Array Manipulation1056016
-Ref: Array Manipulation-Footnote-11057107
-Node: Array Data Types1057144
-Ref: Array Data Types-Footnote-11059802
-Node: Array Functions1059894
-Node: Flattening Arrays1064392
-Node: Creating Arrays1071368
-Node: Redirection API1076135
-Node: Extension API Variables1078968
-Node: Extension Versioning1079679
-Ref: gawk-api-version1080108
-Node: Extension GMP/MPFR Versioning1081839
-Node: Extension API Informational Variables1083467
-Node: Extension API Boilerplate1084540
-Node: Changes from API V11088514
-Node: Finding Extensions1090086
-Node: Extension Example1090645
-Node: Internal File Description1091443
-Node: Internal File Ops1095523
-Ref: Internal File Ops-Footnote-11106873
-Node: Using Internal File Ops1107013
-Ref: Using Internal File Ops-Footnote-11109396
-Node: Extension Samples1109670
-Node: Extension Sample File Functions1111199
-Node: Extension Sample Fnmatch1118848
-Node: Extension Sample Fork1120335
-Node: Extension Sample Inplace1121553
-Node: Extension Sample Ord1124857
-Node: Extension Sample Readdir1125693
-Ref: table-readdir-file-types1126582
-Node: Extension Sample Revout1127387
-Node: Extension Sample Rev2way1127976
-Node: Extension Sample Read write array1128716
-Node: Extension Sample Readfile1130658
-Node: Extension Sample Time1131753
-Node: Extension Sample API Tests1133101
-Node: gawkextlib1133593
-Node: Extension summary1136511
-Node: Extension Exercises1140213
-Node: Language History1141455
-Node: V7/SVR3.11143111
-Node: SVR41145263
-Node: POSIX1146697
-Node: BTL1148077
-Node: POSIX/GNU1148806
-Node: Feature History1154584
-Node: Common Extensions1170630
-Node: Ranges and Locales1171913
-Ref: Ranges and Locales-Footnote-11176529
-Ref: Ranges and Locales-Footnote-21176556
-Ref: Ranges and Locales-Footnote-31176791
-Node: Contributors1177012
-Node: History summary1182965
-Node: Installation1184345
-Node: Gawk Distribution1185289
-Node: Getting1185773
-Node: Extracting1186736
-Node: Distribution contents1188374
-Node: Unix Installation1194854
-Node: Quick Installation1195536
-Node: Shell Startup Files1197950
-Node: Additional Configuration Options1199039
-Node: Configuration Philosophy1201354
-Node: Non-Unix Installation1203723
-Node: PC Installation1204183
-Node: PC Binary Installation1205021
-Node: PC Compiling1205456
-Node: PC Using1206573
-Node: Cygwin1210126
-Node: MSYS1211225
-Node: VMS Installation1211726
-Node: VMS Compilation1212517
-Ref: VMS Compilation-Footnote-11213746
-Node: VMS Dynamic Extensions1213804
-Node: VMS Installation Details1215489
-Node: VMS Running1217742
-Node: VMS GNV1222021
-Node: VMS Old Gawk1222756
-Node: Bugs1223227
-Node: Bug address1223890
-Node: Usenet1226872
-Node: Maintainers1227876
-Node: Other Versions1229137
-Node: Installation summary1236225
-Node: Notes1237427
-Node: Compatibility Mode1238221
-Node: Additions1239003
-Node: Accessing The Source1239928
-Node: Adding Code1241365
-Node: New Ports1247584
-Node: Derived Files1251959
-Ref: Derived Files-Footnote-11257619
-Ref: Derived Files-Footnote-21257654
-Ref: Derived Files-Footnote-31258252
-Node: Future Extensions1258366
-Node: Implementation Limitations1259024
-Node: Extension Design1260207
-Node: Old Extension Problems1261351
-Ref: Old Extension Problems-Footnote-11262869
-Node: Extension New Mechanism Goals1262926
-Ref: Extension New Mechanism Goals-Footnote-11266290
-Node: Extension Other Design Decisions1266479
-Node: Extension Future Growth1268592
-Node: Notes summary1269428
-Node: Basic Concepts1270586
-Node: Basic High Level1271267
-Ref: figure-general-flow1271549
-Ref: figure-process-flow1272234
-Ref: Basic High Level-Footnote-11275535
-Node: Basic Data Typing1275720
-Node: Glossary1279048
-Node: Copying1310886
-Node: GNU Free Documentation License1348429
-Node: Index1373549
+Ref: Options-Footnote-1136943
+Ref: Options-Footnote-2137174
+Node: Other Arguments137199
+Node: Naming Standard Input140146
+Node: Environment Variables141356
+Node: AWKPATH Variable141914
+Ref: AWKPATH Variable-Footnote-1145326
+Ref: AWKPATH Variable-Footnote-2145360
+Node: AWKLIBPATH Variable145621
+Node: Other Environment Variables147279
+Node: Exit Status151100
+Node: Include Files151777
+Node: Loading Shared Libraries155467
+Node: Obsolete156895
+Node: Undocumented157587
+Node: Invoking Summary157884
+Node: Regexp159544
+Node: Regexp Usage160998
+Node: Escape Sequences163035
+Node: Regexp Operators169267
+Node: Regexp Operator Details169752
+Ref: Regexp Operator Details-Footnote-1175874
+Node: Interval Expressions176021
+Ref: Interval Expressions-Footnote-1177456
+Node: Bracket Expressions177554
+Ref: table-char-classes180030
+Node: Leftmost Longest183356
+Node: Computed Regexps184659
+Node: GNU Regexp Operators188086
+Node: Case-sensitivity191765
+Ref: Case-sensitivity-Footnote-1194631
+Ref: Case-sensitivity-Footnote-2194866
+Node: Regexp Summary194974
+Node: Reading Files196440
+Node: Records198709
+Node: awk split records199784
+Node: gawk split records205059
+Ref: gawk split records-Footnote-1209645
+Node: Fields209682
+Node: Nonconstant Fields212423
+Ref: Nonconstant Fields-Footnote-1214659
+Node: Changing Fields214863
+Node: Field Separators220894
+Node: Default Field Splitting223592
+Node: Regexp Field Splitting224710
+Node: Single Character Fields228063
+Node: Command Line Field Separator229123
+Node: Full Line Fields232341
+Ref: Full Line Fields-Footnote-1233863
+Ref: Full Line Fields-Footnote-2233909
+Node: Field Splitting Summary234010
+Node: Constant Size236084
+Node: Fixed width data236816
+Node: Skipping intervening240283
+Node: Allowing trailing data241081
+Node: Fields with fixed data242118
+Node: Splitting By Content243636
+Ref: Splitting By Content-Footnote-1247286
+Node: Testing field creation247449
+Node: Multiple Line249074
+Node: Getline255351
+Node: Plain Getline257820
+Node: Getline/Variable260461
+Node: Getline/File261612
+Node: Getline/Variable/File263000
+Ref: Getline/Variable/File-Footnote-1264605
+Node: Getline/Pipe264693
+Node: Getline/Variable/Pipe267400
+Node: Getline/Coprocess268535
+Node: Getline/Variable/Coprocess269802
+Node: Getline Notes270544
+Node: Getline Summary273341
+Ref: table-getline-variants273765
+Node: Read Timeout274513
+Ref: Read Timeout-Footnote-1278419
+Node: Retrying Input278477
+Node: Command-line directories279676
+Node: Input Summary280582
+Node: Input Exercises283754
+Node: Printing284482
+Node: Print286316
+Node: Print Examples287773
+Node: Output Separators290553
+Node: OFMT292570
+Node: Printf293926
+Node: Basic Printf294711
+Node: Control Letters296285
+Node: Format Modifiers301449
+Node: Printf Examples307464
+Node: Redirection309950
+Node: Special FD316791
+Ref: Special FD-Footnote-1319959
+Node: Special Files320033
+Node: Other Inherited Files320650
+Node: Special Network321651
+Node: Special Caveats322511
+Node: Close Files And Pipes323460
+Ref: table-close-pipe-return-values330367
+Ref: Close Files And Pipes-Footnote-1331180
+Ref: Close Files And Pipes-Footnote-2331328
+Node: Nonfatal331480
+Node: Output Summary333818
+Node: Output Exercises335040
+Node: Expressions335719
+Node: Values336907
+Node: Constants337585
+Node: Scalar Constants338276
+Ref: Scalar Constants-Footnote-1340800
+Node: Nondecimal-numbers341050
+Node: Regexp Constants344051
+Node: Using Constant Regexps344577
+Node: Standard Regexp Constants345199
+Node: Strong Regexp Constants348387
+Node: Variables351345
+Node: Using Variables352002
+Node: Assignment Options353912
+Node: Conversion356379
+Node: Strings And Numbers356903
+Ref: Strings And Numbers-Footnote-1359966
+Node: Locale influences conversions360075
+Ref: table-locale-affects362833
+Node: All Operators363451
+Node: Arithmetic Ops364080
+Node: Concatenation366586
+Ref: Concatenation-Footnote-1369433
+Node: Assignment Ops369540
+Ref: table-assign-ops374531
+Node: Increment Ops375844
+Node: Truth Values and Conditions379304
+Node: Truth Values380378
+Node: Typing and Comparison381426
+Node: Variable Typing382246
+Ref: Variable Typing-Footnote-1388709
+Ref: Variable Typing-Footnote-2388781
+Node: Comparison Operators388858
+Ref: table-relational-ops389277
+Node: POSIX String Comparison392772
+Ref: POSIX String Comparison-Footnote-1394467
+Ref: POSIX String Comparison-Footnote-2394606
+Node: Boolean Ops394690
+Ref: Boolean Ops-Footnote-1399172
+Node: Conditional Exp399264
+Node: Function Calls401000
+Node: Precedence404877
+Node: Locales408536
+Node: Expressions Summary410168
+Node: Patterns and Actions412741
+Node: Pattern Overview413861
+Node: Regexp Patterns415538
+Node: Expression Patterns416080
+Node: Ranges419861
+Node: BEGIN/END422969
+Node: Using BEGIN/END423730
+Ref: Using BEGIN/END-Footnote-1426466
+Node: I/O And BEGIN/END426572
+Node: Empty431799
+Node: Using Shell Variables432116
+Node: Action Overview434390
+Node: Statements436715
+Node: If Statement438563
+Node: While Statement440058
+Node: Do Statement442086
+Node: For Statement443234
+Node: Switch Statement446405
+Node: Break Statement448791
+Node: Continue Statement450883
+Node: Next Statement452710
+Node: Nextfile Statement455093
+Node: Exit Statement457745
+Node: Built-in Variables460148
+Node: User-modified461281
+Node: Auto-set469048
+Ref: Auto-set-Footnote-1485855
+Ref: Auto-set-Footnote-2486061
+Node: ARGC and ARGV486117
+Node: Pattern Action Summary490330
+Node: Arrays492760
+Node: Array Basics494089
+Node: Array Intro494933
+Ref: figure-array-elements496908
+Ref: Array Intro-Footnote-1499612
+Node: Reference to Elements499740
+Node: Assigning Elements502204
+Node: Array Example502695
+Node: Scanning an Array504454
+Node: Controlling Scanning507476
+Ref: Controlling Scanning-Footnote-1512875
+Node: Numeric Array Subscripts513191
+Node: Uninitialized Subscripts515375
+Node: Delete516994
+Ref: Delete-Footnote-1519746
+Node: Multidimensional519803
+Node: Multiscanning522898
+Node: Arrays of Arrays524489
+Node: Arrays Summary529257
+Node: Functions531350
+Node: Built-in532388
+Node: Calling Built-in533469
+Node: Numeric Functions535465
+Ref: Numeric Functions-Footnote-1539493
+Ref: Numeric Functions-Footnote-2540141
+Ref: Numeric Functions-Footnote-3540189
+Node: String Functions540461
+Ref: String Functions-Footnote-1564319
+Ref: String Functions-Footnote-2564447
+Ref: String Functions-Footnote-3564695
+Node: Gory Details564782
+Ref: table-sub-escapes566573
+Ref: table-sub-proposed568092
+Ref: table-posix-sub569455
+Ref: table-gensub-escapes570996
+Ref: Gory Details-Footnote-1571819
+Node: I/O Functions571973
+Ref: table-system-return-values578441
+Ref: I/O Functions-Footnote-1580521
+Ref: I/O Functions-Footnote-2580669
+Node: Time Functions580789
+Ref: Time Functions-Footnote-1591460
+Ref: Time Functions-Footnote-2591528
+Ref: Time Functions-Footnote-3591686
+Ref: Time Functions-Footnote-4591797
+Ref: Time Functions-Footnote-5591909
+Ref: Time Functions-Footnote-6592136
+Node: Bitwise Functions592402
+Ref: table-bitwise-ops592996
+Ref: Bitwise Functions-Footnote-1599059
+Ref: Bitwise Functions-Footnote-2599232
+Node: Type Functions599423
+Node: I18N Functions602174
+Node: User-defined603825
+Node: Definition Syntax604637
+Ref: Definition Syntax-Footnote-1610324
+Node: Function Example610395
+Ref: Function Example-Footnote-1613317
+Node: Function Calling613339
+Node: Calling A Function613927
+Node: Variable Scope614885
+Node: Pass By Value/Reference617879
+Node: Function Caveats620523
+Ref: Function Caveats-Footnote-1622570
+Node: Return Statement622690
+Node: Dynamic Typing625669
+Node: Indirect Calls626599
+Ref: Indirect Calls-Footnote-1636851
+Node: Functions Summary636979
+Node: Library Functions639684
+Ref: Library Functions-Footnote-1643291
+Ref: Library Functions-Footnote-2643434
+Node: Library Names643605
+Ref: Library Names-Footnote-1647272
+Ref: Library Names-Footnote-2647495
+Node: General Functions647581
+Node: Strtonum Function648684
+Node: Assert Function651706
+Node: Round Function655032
+Node: Cliff Random Function656572
+Node: Ordinal Functions657588
+Ref: Ordinal Functions-Footnote-1660651
+Ref: Ordinal Functions-Footnote-2660903
+Node: Join Function661113
+Ref: Join Function-Footnote-1662883
+Node: Getlocaltime Function663083
+Node: Readfile Function666825
+Node: Shell Quoting668802
+Node: Data File Management670203
+Node: Filetrans Function670835
+Node: Rewind Function674931
+Node: File Checking676840
+Ref: File Checking-Footnote-1678174
+Node: Empty Files678375
+Node: Ignoring Assigns680354
+Node: Getopt Function681904
+Ref: Getopt Function-Footnote-1693373
+Node: Passwd Functions693573
+Ref: Passwd Functions-Footnote-1702412
+Node: Group Functions702500
+Ref: Group Functions-Footnote-1710398
+Node: Walking Arrays710605
+Node: Library Functions Summary713613
+Node: Library Exercises715019
+Node: Sample Programs715484
+Node: Running Examples716254
+Node: Clones716982
+Node: Cut Program718206
+Node: Egrep Program728135
+Ref: Egrep Program-Footnote-1735647
+Node: Id Program735757
+Node: Split Program739437
+Ref: Split Program-Footnote-1742895
+Node: Tee Program743024
+Node: Uniq Program745814
+Node: Wc Program753435
+Ref: Wc Program-Footnote-1757690
+Node: Miscellaneous Programs757784
+Node: Dupword Program758997
+Node: Alarm Program761027
+Node: Translate Program765882
+Ref: Translate Program-Footnote-1770447
+Node: Labels Program770717
+Ref: Labels Program-Footnote-1774068
+Node: Word Sorting774152
+Node: History Sorting778224
+Node: Extract Program780059
+Node: Simple Sed788113
+Node: Igawk Program791187
+Ref: Igawk Program-Footnote-1805518
+Ref: Igawk Program-Footnote-2805720
+Ref: Igawk Program-Footnote-3805842
+Node: Anagram Program805957
+Node: Signature Program809019
+Node: Programs Summary810266
+Node: Programs Exercises811480
+Ref: Programs Exercises-Footnote-1815609
+Node: Advanced Features815700
+Node: Nondecimal Data817690
+Node: Array Sorting819281
+Node: Controlling Array Traversal819981
+Ref: Controlling Array Traversal-Footnote-1828349
+Node: Array Sorting Functions828467
+Ref: Array Sorting Functions-Footnote-1833558
+Node: Two-way I/O833754
+Ref: Two-way I/O-Footnote-1841475
+Ref: Two-way I/O-Footnote-2841662
+Node: TCP/IP Networking841744
+Node: Profiling844862
+Node: Advanced Features Summary853877
+Node: Internationalization855721
+Node: I18N and L10N857201
+Node: Explaining gettext857888
+Ref: Explaining gettext-Footnote-1863780
+Ref: Explaining gettext-Footnote-2863965
+Node: Programmer i18n864130
+Ref: Programmer i18n-Footnote-1869079
+Node: Translator i18n869128
+Node: String Extraction869922
+Ref: String Extraction-Footnote-1871054
+Node: Printf Ordering871140
+Ref: Printf Ordering-Footnote-1873926
+Node: I18N Portability873990
+Ref: I18N Portability-Footnote-1876446
+Node: I18N Example876509
+Ref: I18N Example-Footnote-1879784
+Ref: I18N Example-Footnote-2879857
+Node: Gawk I18N879966
+Node: I18N Summary880615
+Node: Debugger881956
+Node: Debugging882956
+Node: Debugging Concepts883397
+Node: Debugging Terms885206
+Node: Awk Debugging887781
+Ref: Awk Debugging-Footnote-1888726
+Node: Sample Debugging Session888858
+Node: Debugger Invocation889392
+Node: Finding The Bug890778
+Node: List of Debugger Commands897252
+Node: Breakpoint Control898585
+Node: Debugger Execution Control902279
+Node: Viewing And Changing Data905641
+Node: Execution Stack909182
+Node: Debugger Info910819
+Node: Miscellaneous Debugger Commands914890
+Node: Readline Support919952
+Node: Limitations920848
+Node: Debugging Summary923402
+Node: Namespaces924681
+Node: Global Namespace925760
+Node: Qualified Names927158
+Node: Default Namespace928157
+Node: Changing The Namespace928898
+Node: Naming Rules930512
+Node: Internal Name Management932360
+Node: Namespace Example933402
+Node: Namespace And Features935964
+Node: Namespace Summary937399
+Node: Arbitrary Precision Arithmetic938876
+Node: Computer Arithmetic940363
+Ref: table-numeric-ranges944129
+Ref: table-floating-point-ranges944622
+Ref: Computer Arithmetic-Footnote-1945280
+Node: Math Definitions945337
+Ref: table-ieee-formats948653
+Ref: Math Definitions-Footnote-1949256
+Node: MPFR features949361
+Node: FP Math Caution951079
+Ref: FP Math Caution-Footnote-1952151
+Node: Inexactness of computations952520
+Node: Inexact representation953480
+Node: Comparing FP Values954840
+Node: Errors accumulate956081
+Node: Getting Accuracy957514
+Node: Try To Round960224
+Node: Setting precision961123
+Ref: table-predefined-precision-strings961820
+Node: Setting the rounding mode963650
+Ref: table-gawk-rounding-modes964024
+Ref: Setting the rounding mode-Footnote-1967955
+Node: Arbitrary Precision Integers968134
+Ref: Arbitrary Precision Integers-Footnote-1971309
+Node: Checking for MPFR971458
+Node: POSIX Floating Point Problems972932
+Ref: POSIX Floating Point Problems-Footnote-1977217
+Node: Floating point summary977255
+Node: Dynamic Extensions979445
+Node: Extension Intro980998
+Node: Plugin License982264
+Node: Extension Mechanism Outline983061
+Ref: figure-load-extension983500
+Ref: figure-register-new-function985065
+Ref: figure-call-new-function986157
+Node: Extension API Description988219
+Node: Extension API Functions Introduction989861
+Ref: table-api-std-headers991697
+Node: General Data Types995562
+Ref: General Data Types-Footnote-11003923
+Node: Memory Allocation Functions1004222
+Ref: Memory Allocation Functions-Footnote-11008432
+Node: Constructor Functions1008531
+Node: Registration Functions1012117
+Node: Extension Functions1012802
+Node: Exit Callback Functions1018124
+Node: Extension Version String1019374
+Node: Input Parsers1020037
+Node: Output Wrappers1032758
+Node: Two-way processors1037270
+Node: Printing Messages1039535
+Ref: Printing Messages-Footnote-11040706
+Node: Updating ERRNO1040859
+Node: Requesting Values1041598
+Ref: table-value-types-returned1042335
+Node: Accessing Parameters1043271
+Node: Symbol Table Access1044506
+Node: Symbol table by name1045018
+Ref: Symbol table by name-Footnote-11048042
+Node: Symbol table by cookie1048170
+Ref: Symbol table by cookie-Footnote-11052355
+Node: Cached values1052419
+Ref: Cached values-Footnote-11055955
+Node: Array Manipulation1056108
+Ref: Array Manipulation-Footnote-11057199
+Node: Array Data Types1057236
+Ref: Array Data Types-Footnote-11059894
+Node: Array Functions1059986
+Node: Flattening Arrays1064484
+Node: Creating Arrays1071460
+Node: Redirection API1076227
+Node: Extension API Variables1079060
+Node: Extension Versioning1079771
+Ref: gawk-api-version1080200
+Node: Extension GMP/MPFR Versioning1081931
+Node: Extension API Informational Variables1083559
+Node: Extension API Boilerplate1084632
+Node: Changes from API V11088606
+Node: Finding Extensions1090178
+Node: Extension Example1090737
+Node: Internal File Description1091535
+Node: Internal File Ops1095615
+Ref: Internal File Ops-Footnote-11106965
+Node: Using Internal File Ops1107105
+Ref: Using Internal File Ops-Footnote-11109488
+Node: Extension Samples1109762
+Node: Extension Sample File Functions1111291
+Node: Extension Sample Fnmatch1118940
+Node: Extension Sample Fork1120427
+Node: Extension Sample Inplace1121645
+Node: Extension Sample Ord1124949
+Node: Extension Sample Readdir1125785
+Ref: table-readdir-file-types1126674
+Node: Extension Sample Revout1127479
+Node: Extension Sample Rev2way1128068
+Node: Extension Sample Read write array1128808
+Node: Extension Sample Readfile1130750
+Node: Extension Sample Time1131845
+Node: Extension Sample API Tests1133193
+Node: gawkextlib1133685
+Node: Extension summary1136603
+Node: Extension Exercises1140305
+Node: Language History1141547
+Node: V7/SVR3.11143203
+Node: SVR41145355
+Node: POSIX1146789
+Node: BTL1148169
+Node: POSIX/GNU1148898
+Node: Feature History1154676
+Node: Common Extensions1170722
+Node: Ranges and Locales1172005
+Ref: Ranges and Locales-Footnote-11176621
+Ref: Ranges and Locales-Footnote-21176648
+Ref: Ranges and Locales-Footnote-31176883
+Node: Contributors1177104
+Node: History summary1183057
+Node: Installation1184437
+Node: Gawk Distribution1185381
+Node: Getting1185865
+Node: Extracting1186828
+Node: Distribution contents1188466
+Node: Unix Installation1194946
+Node: Quick Installation1195628
+Node: Shell Startup Files1198042
+Node: Additional Configuration Options1199131
+Node: Configuration Philosophy1201446
+Node: Non-Unix Installation1203815
+Node: PC Installation1204275
+Node: PC Binary Installation1205113
+Node: PC Compiling1205548
+Node: PC Using1206665
+Node: Cygwin1210218
+Node: MSYS1211317
+Node: VMS Installation1211818
+Node: VMS Compilation1212609
+Ref: VMS Compilation-Footnote-11213838
+Node: VMS Dynamic Extensions1213896
+Node: VMS Installation Details1215581
+Node: VMS Running1217834
+Node: VMS GNV1222113
+Node: VMS Old Gawk1222848
+Node: Bugs1223319
+Node: Bug address1223982
+Node: Usenet1226964
+Node: Maintainers1227968
+Node: Other Versions1229229
+Node: Installation summary1236317
+Node: Notes1237519
+Node: Compatibility Mode1238313
+Node: Additions1239095
+Node: Accessing The Source1240020
+Node: Adding Code1241457
+Node: New Ports1247676
+Node: Derived Files1252051
+Ref: Derived Files-Footnote-11257711
+Ref: Derived Files-Footnote-21257746
+Ref: Derived Files-Footnote-31258344
+Node: Future Extensions1258458
+Node: Implementation Limitations1259116
+Node: Extension Design1260299
+Node: Old Extension Problems1261443
+Ref: Old Extension Problems-Footnote-11262961
+Node: Extension New Mechanism Goals1263018
+Ref: Extension New Mechanism Goals-Footnote-11266382
+Node: Extension Other Design Decisions1266571
+Node: Extension Future Growth1268684
+Node: Notes summary1269520
+Node: Basic Concepts1270678
+Node: Basic High Level1271359
+Ref: figure-general-flow1271641
+Ref: figure-process-flow1272326
+Ref: Basic High Level-Footnote-11275627
+Node: Basic Data Typing1275812
+Node: Glossary1279140
+Node: Copying1310978
+Node: GNU Free Documentation License1348521
+Node: Index1373641
 End Tag Table
diff --git a/doc/gawk.texi b/doc/gawk.texi
index 0844b80..449fac4 100644
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -59,9 +59,9 @@
 @c applies to and all the info about who's publishing this edition
 @c These apply across the board.
address@hidden UPDATE-MONTH March, 2019
address@hidden UPDATE-MONTH May, 2019
 @set VERSION 5.0
address@hidden PATCHLEVEL 0
address@hidden PATCHLEVEL 1
 @set GAWKINETTITLE TCP/IP Internetworking with @command{gawk}
 @ifset FOR_PRINT
@@ -4115,6 +4115,8 @@ This may be drastic, but its use will certainly encourage 
 development of cleaner @command{awk} programs.
 With an optional argument of @samp{invalid}, only warnings about things
 that are actually invalid are issued. (This is not fully implemented yet.)
+With an optional argument of @samp{no-ext}, warnings about @command{gawk}
+extensions are disabled.
 Some warnings are only printed once, even if the dubious constructs they
 warn about occur multiple times in your @command{awk} program.  Thus,
diff --git a/doc/ b/doc/
index 8065051..850d4e1 100644
--- a/doc/
+++ b/doc/
@@ -54,9 +54,9 @@
 @c applies to and all the info about who's publishing this edition
 @c These apply across the board.
address@hidden UPDATE-MONTH March, 2019
address@hidden UPDATE-MONTH May, 2019
 @set VERSION 5.0
address@hidden PATCHLEVEL 0
address@hidden PATCHLEVEL 1
 @set GAWKINETTITLE TCP/IP Internetworking with @command{gawk}
 @ifset FOR_PRINT
@@ -4025,6 +4025,8 @@ This may be drastic, but its use will certainly encourage 
 development of cleaner @command{awk} programs.
 With an optional argument of @samp{invalid}, only warnings about things
 that are actually invalid are issued. (This is not fully implemented yet.)
+With an optional argument of @samp{no-ext}, warnings about @command{gawk}
+extensions are disabled.
 Some warnings are only printed once, even if the dubious constructs they
 warn about occur multiple times in your @command{awk} program.  Thus,
diff --git a/eval.c b/eval.c
index 132c850..8acfba0 100644
--- a/eval.c
+++ b/eval.c
@@ -706,7 +706,7 @@ set_IGNORECASE()
        static bool warned = false;
-       if ((do_lint || do_traditional) && ! warned) {
+       if ((do_lint_extensions || do_traditional) && ! warned) {
                warned = true;
                lintwarn(_("`IGNORECASE' is a gawk extension"));
@@ -727,7 +727,7 @@ set_BINMODE()
        char *p;
        NODE *v = fixtype(BINMODE_node->var_value);
-       if ((do_lint || do_traditional) && ! warned) {
+       if ((do_lint_extensions || do_traditional) && ! warned) {
                warned = true;
                lintwarn(_("`BINMODE' is a gawk extension"));
@@ -964,6 +964,8 @@ set_LINT()
                if (lintlen > 0) {
                        if (lintlen == 7 && strncmp(lintval, "invalid", 7) == 0)
                                do_flags |= DO_LINT_INVALID;
+                       else if (lintlen == 6 && strncmp(lintval, "no-ext", 6) 
== 0)
+                               do_flags &= ~DO_LINT_EXTENSIONS;
                        else {
                                do_flags |= DO_LINT_ALL;
                                if (lintlen == 5 && strncmp(lintval, "fatal", 
5) == 0)
diff --git a/field.c b/field.c
index 6502b2f..285376f 100644
--- a/field.c
+++ b/field.c
@@ -978,7 +978,7 @@ do_split(int nargs)
                sep_arr = POP_PARAM();
                if (sep_arr->type != Node_var_array)
                        fatal(_("split: fourth argument is not an array"));
-               if ((do_lint || do_lint_old) && ! warned) {
+               if ((do_lint_extensions || do_lint_old) && ! warned) {
                        warned = true;
                        lintwarn(_("split: fourth argument is a gawk 
@@ -1144,7 +1144,7 @@ set_FIELDWIDTHS()
        bool fatal_error = false;
        NODE *tmp;
-       if (do_lint && ! warned) {
+       if (do_lint_extensions && ! warned) {
                warned = true;
                lintwarn(_("`FIELDWIDTHS' is a gawk extension"));
@@ -1307,7 +1307,7 @@ choose_fs_function:
-               if (do_lint && ! warned) {
+               if (do_lint_extensions && ! warned) {
                        warned = true;
                        lintwarn(_("null string for `FS' is a gawk extension"));
@@ -1438,7 +1438,7 @@ set_FPAT()
        bool remake_re = true;
        NODE *fpat;
-       if (do_lint && ! warned) {
+       if (do_lint_extensions && ! warned) {
                warned = true;
                lintwarn(_("`FPAT' is a gawk extension"));
diff --git a/io.c b/io.c
index 3d90e71..c49d128 100644
--- a/io.c
+++ b/io.c
@@ -4075,7 +4075,7 @@ set_RS()
                matchrec = rsrescan;
-               if (do_lint && ! warned) {
+               if (do_lint_extensions && ! warned) {
                        lintwarn(_("multicharacter value of `RS' is a gawk 
                        warned = true;
diff --git a/main.c b/main.c
index 1f23e57..c2e3aa5 100644
--- a/main.c
+++ b/main.c
@@ -605,7 +605,7 @@ usage(int exitval, FILE *fp)
         * TRANSLATORS: the "fatal" and "invalid" here are literal
         * values, they should not be translated. Thanks.
-       fputs(_("\t-L[fatal|invalid]\t--lint[=fatal|invalid]\n"), fp);
+       fputs(_("\t-L[fatal|invalid|no-ext]\t--lint[=fatal|invalid|no-ext]\n"), 
        fputs(_("\t-M\t\t\t--bignum\n"), fp);
        fputs(_("\t-N\t\t\t--use-lc-numeric\n"), fp);
        fputs(_("\t-n\t\t\t--non-decimal-data\n"), fp);
@@ -1622,7 +1622,7 @@ parse_args(int argc, char **argv)
 #ifndef NO_LINT
                case 'L':
-                       do_flags |= DO_LINT_ALL;
+                       do_flags |= (DO_LINT_ALL|DO_LINT_EXTENSIONS);
                        if (optarg != NULL) {
                                if (strcmp(optarg, "fatal") == 0)
                                        lintfunc = r_fatal;
@@ -1630,6 +1630,9 @@ parse_args(int argc, char **argv)
                                        do_flags &= ~DO_LINT_ALL;
                                        do_flags |= DO_LINT_INVALID;
+                               else if (strcmp(optarg, "no-ext") == 0) {
+                                       do_flags &= ~DO_LINT_EXTENSIONS;
+                               }
diff --git a/test/ChangeLog b/test/ChangeLog
index 9032753..8292726 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -1,3 +1,7 @@
+2019-05-22         Arnold D. Robbins     <address@hidden>
+       * badargs.ok: Updated after code changes.
 2019-05-07         Arnold D. Robbins     <address@hidden>
        * Gentests: Finish handlinig NEED_SANDBOX.
diff --git a/test/badargs.ok b/test/badargs.ok
index 4999873..dfbd1c1 100644
--- a/test/badargs.ok
+++ b/test/badargs.ok
@@ -17,7 +17,7 @@ Short options:                GNU long options: (extensions)
        -h                      --help
        -i includefile          --include=includefile
        -l library              --load=library
-       -L[fatal|invalid]       --lint[=fatal|invalid]
+       -L[fatal|invalid|no-ext]        --lint[=fatal|invalid|no-ext]
        -M                      --bignum
        -N                      --use-lc-numeric
        -n                      --non-decimal-data


Summary of changes:
 ChangeLog       |   18 +
 NEWS            |    3 +
 awk.h           |   32 +-
 awkgram.c       |    6 +-
 awkgram.y       |    6 +-
 builtin.c       |    2 +-
 doc/ChangeLog   |    4 +
 doc/gawk.1      |    7 +-
 doc/   | 1235 ++++++++++++++++++++++++++++---------------------------
 doc/gawk.texi   |    6 +-
 doc/ |    6 +-
 eval.c          |    6 +-
 field.c         |    8 +-
 io.c            |    2 +-
 main.c          |    7 +-
 test/ChangeLog  |    4 +
 test/badargs.ok |    2 +-
 17 files changed, 700 insertions(+), 654 deletions(-)


reply via email to

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