summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2014-01-23 20:01:32 +0200
committerArnold D. Robbins <arnold@skeeve.com>2014-01-23 20:01:32 +0200
commit7dbb03a642a1526e584b59e3fb4f18ef73acfe1a (patch)
treec238f77ae24fdde56321c65e9af01efb04c98689
parent51038bda2cde5e5a5a4fa1fd54626d4cb107e7ef (diff)
downloadgawk-7dbb03a642a1526e584b59e3fb4f18ef73acfe1a.tar.gz
Add Feature History to doc. Update common extensions.
-rw-r--r--doc/ChangeLog5
-rw-r--r--doc/gawk.info1441
-rw-r--r--doc/gawk.texi615
-rw-r--r--doc/gawktexi.in615
4 files changed, 2143 insertions, 533 deletions
diff --git a/doc/ChangeLog b/doc/ChangeLog
index 82cb722a..1fc81f20 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,3 +1,8 @@
+2014-01-23 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawktexi.in (Feature History): New node.
+ (Common Extensions): Update features now in mawk, too.
+
2014-12-14 John E. Malmberg <wb8tyw@qsl.net>
* gawktexi.in: Add information on building VMS PCSI kit.
diff --git a/doc/gawk.info b/doc/gawk.info
index 88745cd7..6f88bf02 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -193,7 +193,8 @@ texts being (a) (see below), and with the Back-Cover Texts being (b)
field.
* Command Line Field Separator:: Setting `FS' from the
command-line.
-* Full Line Fields:: Making the full line be a single field.
+* Full Line Fields:: Making the full line be a single
+ field.
* Field Splitting Summary:: Some final points and a summary table.
* Constant Size:: Reading constant width data.
* Splitting By Content:: Defining Fields By Content
@@ -583,6 +584,7 @@ texts being (a) (see below), and with the Back-Cover Texts being (b)
version of `awk'.
* POSIX/GNU:: The extensions in `gawk' not
in POSIX `awk'.
+* Feature History:: The history of the features in `gawk'.
* Common Extensions:: Common Extensions Summary.
* Ranges and Locales:: How locales used to affect regexp
ranges.
@@ -24901,6 +24903,7 @@ you can find more information.
`awk'.
* POSIX/GNU:: The extensions in `gawk' not in POSIX
`awk'.
+* Feature History:: The history of the features in `gawk'.
* Common Extensions:: Common Extensions Summary.
* Ranges and Locales:: How locales used to affect regexp ranges.
* Contributors:: The major contributors to `gawk'.
@@ -25079,7 +25082,7 @@ in his version of `awk'.
available in his `awk'.

-File: gawk.info, Node: POSIX/GNU, Next: Common Extensions, Prev: BTL, Up: Language History
+File: gawk.info, Node: POSIX/GNU, Next: Feature History, Prev: BTL, Up: Language History
A.5 Extensions in `gawk' Not in POSIX `awk'
===========================================
@@ -25236,9 +25239,391 @@ the current version of `gawk'.

-File: gawk.info, Node: Common Extensions, Next: Ranges and Locales, Prev: POSIX/GNU, Up: Language History
+File: gawk.info, Node: Feature History, Next: Common Extensions, Prev: POSIX/GNU, Up: Language History
+
+A.6 History of `gawk' Features
+==============================
+
+This minor node describes the features in `gawk' over and above those
+in POSIX `awk', in the order they were added to `gawk'.
+
+ Version 2.10 of `gawk' introduced the following features:
+
+ * The `AWKPATH' environment variable for specifying a path search for
+ the `-f' command-line option (*note Options::).
+
+ * The `IGNORECASE' variable and its effects (*note
+ Case-sensitivity::).
+
+ * The `/dev/stdin', `/dev/stdout', `/dev/stderr' and `/dev/fd/N'
+ special file names (*note Special Files::).
+
+ Version 2.13 of `gawk' introduced the following features:
+
+ * The `FIELDWIDTHS' variable and its effects (*note Constant Size::).
+
+ * The `systime()' and `strftime()' built-in functions for obtaining
+ and printing timestamps (*note Time Functions::).
+
+ * Additional command-line options (*note Options::):
+
+ - The `-W lint' option to provide error and portability checking
+ for both the source code and at runtime.
+
+ - The `-W compat' option to turn off the GNU extensions.
+
+ - The `-W posix' option for full POSIX compliance.
+
+ Version 2.14 of `gawk' introduced the following feature:
+
+ * The `next file' statement for skipping to the next data file
+ (*note Nextfile Statement::).
+
+ Version 2.15 of `gawk' introduced the following features:
+
+ * New variables (*note Built-in Variables::):
+
+ - `ARGIND', which tracks the movement of `FILENAME' through
+ `ARGV'.
+
+ - `ERRNO', which contains the system error message when
+ `getline' returns -1 or `close()' fails.
+
+ * The `/dev/pid', `/dev/ppid', `/dev/pgrpid', and `/dev/user'
+ special file names. These have since been removed.
+
+ * The ability to delete all of an array at once with `delete ARRAY'
+ (*note Delete::).
+
+ * Command line option changes (*note Options::):
+
+ - The ability to use GNU-style long-named options that start
+ with `--'.
+
+ - The `--source' option for mixing command-line and library-file
+ source code.
+
+ Version 3.0 of `gawk' introduced the following features:
+
+ * New or changed variables:
+
+ - `IGNORECASE' changed, now applying to string comparison as
+ well as regexp operations (*note Case-sensitivity::).
+
+ - `RT', which contains the input text that matched `RS' (*note
+ Records::).
+
+ * Full support for both POSIX and GNU regexps (*note Regexp::).
+
+ * The `gensub()' function for more powerful text manipulation (*note
+ String Functions::).
+
+ * The `strftime()' function acquired a default time format, allowing
+ it to be called with no arguments (*note Time Functions::).
+
+ * The ability for `FS' and for the third argument to `split()' to be
+ null strings (*note Single Character Fields::).
+
+ * The ability for `RS' to be a regexp (*note Records::).
+
+ * The `next file' statement became `nextfile' (*note Nextfile
+ Statement::).
+
+ * The `fflush()' function from the Bell Laboratories research
+ version of `awk' (*note I/O Functions::).
+
+ * New command line options:
+
+ - The `--lint-old' option to warn about constructs that are not
+ available in the original Version 7 Unix version of `awk'
+ (*note V7/SVR3.1::).
+
+ - The `-m' option from the Bell Laboratories research version
+ of `awk' This was later removed.
+
+ - The `--re-interval' option to provide interval expressions in
+ regexps (*note Regexp Operators::).
+
+ - The `--traditional' option was added as a better name for
+ `--compat' (*note Options::).
+
+ * The use of GNU Autoconf to control the configuration process
+ (*note Quick Installation::).
+
+ * Amiga support.
+
+
+ Version 3.1 of `gawk' introduced the following features:
+
+ * New variables (*note Built-in Variables::):
+
+ - `BINMODE', for non-POSIX systems, which allows binary I/O for
+ input and/or output files (*note PC Using::).
+
+ - `LINT', which dynamically controls lint warnings.
+
+ - `PROCINFO', an array for providing process-related
+ information.
+
+ - `TEXTDOMAIN', for setting an application's
+ internationalization text domain (*note
+ Internationalization::).
+
+ * The ability to use octal and hexadecimal constants in `awk'
+ program source code (*note Nondecimal-numbers::).
+
+ * The `|&' operator for two-way I/O to a coprocess (*note Two-way
+ I/O::).
+
+ * The `/inet' special files for TCP/IP networking using `|&' (*note
+ TCP/IP Networking::).
+
+ * The optional second argument to `close()' that allows closing one
+ end of a two-way pipe to a coprocess (*note Two-way I/O::).
+
+ * The optional third argument to the `match()' function for
+ capturing text-matching subexpressions within a regexp (*note
+ String Functions::).
+
+ * Positional specifiers in `printf' formats for making translations
+ easier (*note Printf Ordering::).
+
+ * A number of new built-in functions:
+
+ - The `asort()' and `asorti()' functions for sorting arrays
+ (*note Array Sorting::).
+
+ - The `bindtextdomain()', `dcgettext()' and `dcngettext()'
+ functions for internationalization (*note Programmer i18n::).
+
+ - The `extension()' function and the ability to add new
+ built-in functions dynamically (*note Dynamic Extensions::).
+
+ - The `mktime()' function for creating timestamps (*note Time
+ Functions::).
+
+ - The `and()', `or()', `xor()', `compl()', `lshift()',
+ `rshift()', and `strtonum()' functions (*note Bitwise
+ Functions::).
+
+ * The support for `next file' as two words was removed completely
+ (*note Nextfile Statement::).
+
+ * Additional commnd line options (*note Options::):
+
+ - The `--dump-variables' option to print a list of all global
+ variables.
+
+ - The `--exec' option, for use in CGI scripts.
+
+ - The `--gen-po' command-line option and the use of a leading
+ underscore to mark strings that should be translated (*note
+ String Extraction::).
+
+ - The `--non-decimal-data' option to allow non-decimal input
+ data (*note Nondecimal Data::).
+
+ - The `--profile' option and `pgawk', the profiling version of
+ `gawk', for producing execution profiles of `awk' programs
+ (*note Profiling::).
+
+ - The `--use-lc-numeric' option to force `gawk' to use the
+ locale's decimal point for parsing input data (*note
+ Conversion::).
+
+ * The use of GNU Automake to help in standardizing the configuration
+ process (*note Quick Installation::).
+
+ * The use of GNU `gettext' for `gawk''s own message output (*note
+ Gawk I18N::).
+
+ * BeOS support. This was later removed.
+
+ * Tandem support. This was later removed.
+
+ * The Atari port became officially unsupported.
+
+ * The source code changed to use ISO C standard-style function
+ definitions.
+
+ * POSIX compliance for `sub()' and `gsub()' (*note Gory Details::).
+
+ * The `length()' function was extended to accept an array argument
+ and return the number of elements in the array (*note String
+ Functions::).
+
+ * The `strftime()' function acquired a third argument to enable
+ printing times as UTC (*note Time Functions::).
+
+ Version 4.0 of `gawk' introduced the following features:
+
+ * Variable additions:
+
+ - `FPAT', which allows you to specify a regexp that matches the
+ fields, instead of matching the field separator (*note
+ Splitting By Content::).
+
+ - If `PROCINFO["sorted_in"]' exists, `for(iggy in foo)' loops
+ sort the indices before looping over them. The value of this
+ element provides control over how the indices are sorted
+ before the loop traversal starts (*note Controlling
+ Scanning::).
+
+ - `PROCINFO["strftime"]', which holds the default format for
+ `strftime()' (*note Time Functions::).
+
+ * The special files `/dev/pid', `/dev/ppid', `/dev/pgrpid' and
+ `/dev/user' were removed.
+
+ * Support for IPv6 was added via the `/inet6' special file.
+ `/inet4' forces IPv4 and `/inet' chooses the system default, which
+ is probably IPv4 (*note TCP/IP Networking::).
+
+ * The use of `\s' and `\S' escape sequences in regular expressions
+ (*note GNU Regexp Operators::).
+
+ * Interval expressions became part of default regular expressions
+ (*note Regexp Operators::).
+
+ * POSIX character classes work even with `--traditional' (*note
+ Regexp Operators::).
+
+ * `break' and `continue' became invalid outside a loop, even with
+ `--traditional' (*note Break Statement::, and also see *note
+ Continue Statement::).
+
+ * `fflush()', `nextfile', and `delete ARRAY' are allowed if
+ `--posix' or `--traditional', since they are all now part of POSIX.
+
+ * An optional third argument to `asort()' and `asorti()', specifying
+ how to sort (*note String Functions::).
+
+ * The behavior of `fflush()' changed to match Brian Kernighan's `awk'
+ and for POSIX; now both `fflush()' and `fflush("")' flush all open
+ output redirections (*note I/O Functions::).
+
+ * The `isarray()' function which distinguishes if an item is an array
+ or not, to make it possible to traverse multidimensional arrays
+ (*note Type Functions::).
+
+ * The `patsplit()' function which gives the same capability as
+ `FPAT', for splitting (*note String Functions::).
+
+ * An optional fourth argument to the `split()' function, which is an
+ array to hold the values of the separators (*note String
+ Functions::).
+
+ * Arrays of arrays (*note Arrays of Arrays::).
+
+ * The `BEGINFILE' and `ENDFILE' special patterns (*note
+ BEGINFILE/ENDFILE::).
+
+ * Indirect function calls (*note Indirect Calls::).
+
+ * `switch' / `case' are enabled by default (*note Switch
+ Statement::).
+
+ * Command line option changes (*note Options::):
+
+ - The `-b' and `--characters-as-bytes' options which prevent
+ `gawk' from treating input as a multibyte string.
+
+ - The redundant `--compat', `--copyleft', and `--usage' long
+ options were removed.
+
+ - The `--gen-po' option was finally renamed to the correct
+ `--gen-pot'.
+
+ - The `--sandbox' option which disables certain features.
+
+ - All long options acquired corresponding short options, for
+ use in `#!' scripts.
+
+ * Directories named on the command line now produce a warning, not a
+ fatal error, unless `--posix' or `--traditional' are used (*note
+ Command line directories::).
+
+ * The `gawk' internals were rewritten, bringing the `dgawk' debugger
+ and possibly improved performance (*note Debugger::).
+
+ * Per the GNU Coding Standards, dynamic extensions must now define a
+ global symbol indicating that they are GPL-compatible (*note
+ Plugin License::).
+
+ * In POSIX mode, string comparisons use `strcoll()' / `wcscoll()'
+ (*note POSIX String Comparison::).
+
+ * The option for raw sockets was removed, since it was never
+ implemented (*note TCP/IP Networking::).
+
+ * Ranges of the form `[d-h]' are treated as if they were in the C
+ locale, no matter what kind of regexp is being used, and even if
+ `--posix' (*note Ranges and Locales::).
+
+ * Support was removed for the following systems:
+
+ - Atari
+
+ - Amiga
+
+ - BeOS
+
+ - Cray
+
+ - MIPS RiscOS
+
+ - MS-DOS with Microsoft Compiler
+
+ - MS-Windows with Microsoft Compiler
+
+ - NeXT
+
+ - SunOS 3.x, Sun 386 (Road Runner)
+
+ - Tandem (non-POSIX)
+
+ - Prestandard VAX C compiler for VAX/VMS
+
+ Version 4.1 of `gawk' introduced the following features:
+
+ * Three new arrays: `SYMTAB', `FUNCTAB', and
+ `PROCINFO["identifiers"]' (*note Auto-set::).
+
+ * The three executables `gawk', `pgawk', and `dgawk', were merged
+ into one, named just `gawk'. As a result the command line options
+ changed.
+
+ * Command line option changes (*note Options::):
+
+ - The `-D' option invokes the debugger.
+
+ - The `-i' and `--include' options load `awk' library files.
+
+ - The `-l' and `--load' options for load compiled dynamic
+ extensions.
+
+ - The `-M' and `--bignum' options enable MPFR.
+
+ - The `-o' only does pretty-printing.
+
+ - The `-p' option is used for profiling.
+
+ - The `-R' option was removed.
+
+ * Support for high precision arithmetic with MPFR. (*note Gawk and
+ MPFR::).
+
+ * The `and()', `or()' and `xor()' functions allow any number of
+ arguments, with a minimum of two (*note Bitwise Functions::).
+
+ * The dynamic extension interface was completely redone (*note
+ Dynamic Extensions::).
+
+
+
+File: gawk.info, Node: Common Extensions, Next: Ranges and Locales, Prev: Feature History, Up: Language History
-A.6 Common Extensions Summary
+A.7 Common Extensions Summary
=============================
This minor node summarizes the common extensions supported by `gawk',
@@ -25250,7 +25635,7 @@ Feature BWK Awk Mawk GNU Awk
`\x' Escape sequence X X X
`RS' as regexp X X
`FS' as null string X X X
-`/dev/stdin' special file X X
+`/dev/stdin' special file X X X
`/dev/stdout' special file X X X
`/dev/stderr' special file X X X
`**' and `**=' operators X X
@@ -25258,7 +25643,7 @@ Feature BWK Awk Mawk GNU Awk
`func' keyword X X
`nextfile' statement X X X
`delete' without subscript X X X
-`length()' of an array X X
+`length()' of an array X X X
`BINMODE' variable X X
Time related functions X X
@@ -25269,7 +25654,7 @@ POSIX.)

File: gawk.info, Node: Ranges and Locales, Next: Contributors, Prev: Common Extensions, Up: Language History
-A.7 Regexp Ranges and Locales: A Long Sad Story
+A.8 Regexp Ranges and Locales: A Long Sad Story
===============================================
This minor node describes the confusing history of ranges within
@@ -25375,7 +25760,7 @@ and its rationale

File: gawk.info, Node: Contributors, Prev: Ranges and Locales, Up: Language History
-A.8 Major Contributors to `gawk'
+A.9 Major Contributors to `gawk'
================================
Always give credit where credit is due. -- Anonymous
@@ -31390,6 +31775,7 @@ Index
(line 19)
* next debugger command: Debugger Execution Control.
(line 43)
+* next file statement: Feature History. (line 168)
* next statement <1>: Next Statement. (line 6)
* next statement: Boolean Ops. (line 85)
* next statement, BEGIN/END patterns and: I/O And BEGIN/END. (line 37)
@@ -32358,524 +32744,525 @@ Index

Tag Table:
Node: Top1366
-Node: Foreword40737
-Node: Preface45082
-Ref: Preface-Footnote-148135
-Ref: Preface-Footnote-248231
-Node: History48463
-Node: Names50837
-Ref: Names-Footnote-152314
-Node: This Manual52386
-Ref: This Manual-Footnote-158160
-Node: Conventions58260
-Node: Manual History60416
-Ref: Manual History-Footnote-163864
-Ref: Manual History-Footnote-263905
-Node: How To Contribute63979
-Node: Acknowledgments65123
-Node: Getting Started69332
-Node: Running gawk71711
-Node: One-shot72897
-Node: Read Terminal74122
-Ref: Read Terminal-Footnote-175772
-Ref: Read Terminal-Footnote-276048
-Node: Long76219
-Node: Executable Scripts77595
-Ref: Executable Scripts-Footnote-179428
-Ref: Executable Scripts-Footnote-279530
-Node: Comments80077
-Node: Quoting82544
-Node: DOS Quoting87167
-Node: Sample Data Files87842
-Node: Very Simple90886
-Node: Two Rules95485
-Node: More Complex97632
-Ref: More Complex-Footnote-1100562
-Node: Statements/Lines100647
-Ref: Statements/Lines-Footnote-1105109
-Node: Other Features105374
-Node: When106302
-Node: Invoking Gawk108449
-Node: Command Line109910
-Node: Options110693
-Ref: Options-Footnote-1126085
-Node: Other Arguments126110
-Node: Naming Standard Input128768
-Node: Environment Variables129862
-Node: AWKPATH Variable130420
-Ref: AWKPATH Variable-Footnote-1133178
-Node: AWKLIBPATH Variable133438
-Node: Other Environment Variables134156
-Node: Exit Status137119
-Node: Include Files137794
-Node: Loading Shared Libraries141363
-Node: Obsolete142727
-Node: Undocumented143424
-Node: Regexp143666
-Node: Regexp Usage145055
-Node: Escape Sequences147081
-Node: Regexp Operators152750
-Ref: Regexp Operators-Footnote-1160130
-Ref: Regexp Operators-Footnote-2160277
-Node: Bracket Expressions160375
-Ref: table-char-classes162265
-Node: GNU Regexp Operators164788
-Node: Case-sensitivity168511
-Ref: Case-sensitivity-Footnote-1171479
-Ref: Case-sensitivity-Footnote-2171714
-Node: Leftmost Longest171822
-Node: Computed Regexps173023
-Node: Reading Files176360
-Node: Records178362
-Ref: Records-Footnote-1187251
-Node: Fields187288
-Ref: Fields-Footnote-1190321
-Node: Nonconstant Fields190407
-Node: Changing Fields192609
-Node: Field Separators198568
-Node: Default Field Splitting201270
-Node: Regexp Field Splitting202387
-Node: Single Character Fields205729
-Node: Command Line Field Separator206788
-Node: Full Line Fields210222
-Ref: Full Line Fields-Footnote-1210730
-Node: Field Splitting Summary210776
-Ref: Field Splitting Summary-Footnote-1213875
-Node: Constant Size213976
-Node: Splitting By Content218560
-Ref: Splitting By Content-Footnote-1222286
-Node: Multiple Line222326
-Ref: Multiple Line-Footnote-1228173
-Node: Getline228352
-Node: Plain Getline230568
-Node: Getline/Variable232663
-Node: Getline/File233810
-Node: Getline/Variable/File235151
-Ref: Getline/Variable/File-Footnote-1236750
-Node: Getline/Pipe236837
-Node: Getline/Variable/Pipe239536
-Node: Getline/Coprocess240643
-Node: Getline/Variable/Coprocess241895
-Node: Getline Notes242632
-Node: Getline Summary245419
-Ref: table-getline-variants245827
-Node: Read Timeout246739
-Ref: Read Timeout-Footnote-1250480
-Node: Command line directories250537
-Node: Printing251167
-Node: Print252798
-Node: Print Examples254135
-Node: Output Separators256919
-Node: OFMT258679
-Node: Printf260037
-Node: Basic Printf260943
-Node: Control Letters262482
-Node: Format Modifiers266294
-Node: Printf Examples272303
-Node: Redirection275018
-Node: Special Files281983
-Node: Special FD282516
-Ref: Special FD-Footnote-1286141
-Node: Special Network286215
-Node: Special Caveats287065
-Node: Close Files And Pipes287861
-Ref: Close Files And Pipes-Footnote-1294844
-Ref: Close Files And Pipes-Footnote-2294992
-Node: Expressions295142
-Node: Values296274
-Node: Constants296950
-Node: Scalar Constants297630
-Ref: Scalar Constants-Footnote-1298489
-Node: Nondecimal-numbers298671
-Node: Regexp Constants301671
-Node: Using Constant Regexps302146
-Node: Variables305201
-Node: Using Variables305856
-Node: Assignment Options307580
-Node: Conversion309452
-Ref: table-locale-affects314953
-Ref: Conversion-Footnote-1315577
-Node: All Operators315686
-Node: Arithmetic Ops316316
-Node: Concatenation318821
-Ref: Concatenation-Footnote-1321613
-Node: Assignment Ops321733
-Ref: table-assign-ops326721
-Node: Increment Ops328052
-Node: Truth Values and Conditions331486
-Node: Truth Values332569
-Node: Typing and Comparison333618
-Node: Variable Typing334411
-Ref: Variable Typing-Footnote-1338308
-Node: Comparison Operators338430
-Ref: table-relational-ops338840
-Node: POSIX String Comparison342389
-Ref: POSIX String Comparison-Footnote-1343345
-Node: Boolean Ops343483
-Ref: Boolean Ops-Footnote-1347561
-Node: Conditional Exp347652
-Node: Function Calls349384
-Node: Precedence352978
-Node: Locales356647
-Node: Patterns and Actions357736
-Node: Pattern Overview358790
-Node: Regexp Patterns360459
-Node: Expression Patterns361002
-Node: Ranges364687
-Node: BEGIN/END367653
-Node: Using BEGIN/END368415
-Ref: Using BEGIN/END-Footnote-1371146
-Node: I/O And BEGIN/END371252
-Node: BEGINFILE/ENDFILE373534
-Node: Empty376448
-Node: Using Shell Variables376764
-Node: Action Overview379049
-Node: Statements381406
-Node: If Statement383260
-Node: While Statement384759
-Node: Do Statement386803
-Node: For Statement387959
-Node: Switch Statement391111
-Node: Break Statement393208
-Node: Continue Statement395198
-Node: Next Statement396991
-Node: Nextfile Statement399381
-Node: Exit Statement402024
-Node: Built-in Variables404440
-Node: User-modified405535
-Ref: User-modified-Footnote-1413893
-Node: Auto-set413955
-Ref: Auto-set-Footnote-1427033
-Ref: Auto-set-Footnote-2427238
-Node: ARGC and ARGV427294
-Node: Arrays431145
-Node: Array Basics432650
-Node: Array Intro433476
-Node: Reference to Elements437793
-Node: Assigning Elements440063
-Node: Array Example440554
-Node: Scanning an Array442286
-Node: Controlling Scanning444600
-Ref: Controlling Scanning-Footnote-1449687
-Node: Delete450003
-Ref: Delete-Footnote-1452768
-Node: Numeric Array Subscripts452825
-Node: Uninitialized Subscripts455008
-Node: Multidimensional456635
-Node: Multiscanning459728
-Node: Arrays of Arrays461317
-Node: Functions465957
-Node: Built-in466776
-Node: Calling Built-in467854
-Node: Numeric Functions469842
-Ref: Numeric Functions-Footnote-1473674
-Ref: Numeric Functions-Footnote-2474031
-Ref: Numeric Functions-Footnote-3474079
-Node: String Functions474348
-Ref: String Functions-Footnote-1497268
-Ref: String Functions-Footnote-2497397
-Ref: String Functions-Footnote-3497645
-Node: Gory Details497732
-Ref: table-sub-escapes499411
-Ref: table-sub-posix-92500765
-Ref: table-sub-proposed502116
-Ref: table-posix-sub503470
-Ref: table-gensub-escapes505015
-Ref: Gory Details-Footnote-1506191
-Ref: Gory Details-Footnote-2506242
-Node: I/O Functions506393
-Ref: I/O Functions-Footnote-1513378
-Node: Time Functions513525
-Ref: Time Functions-Footnote-1524458
-Ref: Time Functions-Footnote-2524526
-Ref: Time Functions-Footnote-3524684
-Ref: Time Functions-Footnote-4524795
-Ref: Time Functions-Footnote-5524907
-Ref: Time Functions-Footnote-6525134
-Node: Bitwise Functions525400
-Ref: table-bitwise-ops525962
-Ref: Bitwise Functions-Footnote-1530183
-Node: Type Functions530367
-Node: I18N Functions531518
-Node: User-defined533145
-Node: Definition Syntax533949
-Ref: Definition Syntax-Footnote-1538859
-Node: Function Example538928
-Node: Function Caveats541522
-Node: Calling A Function541943
-Node: Variable Scope543058
-Node: Pass By Value/Reference546021
-Node: Return Statement549529
-Node: Dynamic Typing552510
-Node: Indirect Calls553441
-Node: Library Functions563126
-Ref: Library Functions-Footnote-1566639
-Ref: Library Functions-Footnote-2566782
-Node: Library Names566953
-Ref: Library Names-Footnote-1570424
-Ref: Library Names-Footnote-2570644
-Node: General Functions570730
-Node: Strtonum Function571758
-Node: Assert Function574688
-Node: Round Function578014
-Node: Cliff Random Function579557
-Node: Ordinal Functions580573
-Ref: Ordinal Functions-Footnote-1583643
-Ref: Ordinal Functions-Footnote-2583895
-Node: Join Function584104
-Ref: Join Function-Footnote-1585875
-Node: Getlocaltime Function586075
-Node: Readfile Function589816
-Node: Data File Management591655
-Node: Filetrans Function592287
-Node: Rewind Function596356
-Node: File Checking597743
-Node: Empty Files598837
-Node: Ignoring Assigns601067
-Node: Getopt Function602620
-Ref: Getopt Function-Footnote-1613923
-Node: Passwd Functions614126
-Ref: Passwd Functions-Footnote-1623101
-Node: Group Functions623189
-Node: Walking Arrays631273
-Node: Sample Programs633410
-Node: Running Examples634084
-Node: Clones634812
-Node: Cut Program636036
-Node: Egrep Program645881
-Ref: Egrep Program-Footnote-1653654
-Node: Id Program653764
-Node: Split Program657380
-Ref: Split Program-Footnote-1660899
-Node: Tee Program661027
-Node: Uniq Program663830
-Node: Wc Program671259
-Ref: Wc Program-Footnote-1675525
-Ref: Wc Program-Footnote-2675725
-Node: Miscellaneous Programs675817
-Node: Dupword Program677005
-Node: Alarm Program679036
-Node: Translate Program683789
-Ref: Translate Program-Footnote-1688176
-Ref: Translate Program-Footnote-2688424
-Node: Labels Program688558
-Ref: Labels Program-Footnote-1691929
-Node: Word Sorting692013
-Node: History Sorting695897
-Node: Extract Program697736
-Ref: Extract Program-Footnote-1705239
-Node: Simple Sed705367
-Node: Igawk Program708429
-Ref: Igawk Program-Footnote-1723586
-Ref: Igawk Program-Footnote-2723787
-Node: Anagram Program723925
-Node: Signature Program726993
-Node: Advanced Features728093
-Node: Nondecimal Data729979
-Node: Array Sorting731562
-Node: Controlling Array Traversal732259
-Node: Array Sorting Functions740543
-Ref: Array Sorting Functions-Footnote-1744412
-Node: Two-way I/O744606
-Ref: Two-way I/O-Footnote-1750038
-Node: TCP/IP Networking750108
-Node: Profiling752952
-Node: Internationalization760449
-Node: I18N and L10N761874
-Node: Explaining gettext762560
-Ref: Explaining gettext-Footnote-1767628
-Ref: Explaining gettext-Footnote-2767812
-Node: Programmer i18n767977
-Node: Translator i18n772179
-Node: String Extraction772972
-Ref: String Extraction-Footnote-1773933
-Node: Printf Ordering774019
-Ref: Printf Ordering-Footnote-1776803
-Node: I18N Portability776867
-Ref: I18N Portability-Footnote-1779316
-Node: I18N Example779379
-Ref: I18N Example-Footnote-1782017
-Node: Gawk I18N782089
-Node: Debugger782710
-Node: Debugging783681
-Node: Debugging Concepts784114
-Node: Debugging Terms785970
-Node: Awk Debugging788567
-Node: Sample Debugging Session789459
-Node: Debugger Invocation789979
-Node: Finding The Bug791311
-Node: List of Debugger Commands797799
-Node: Breakpoint Control799133
-Node: Debugger Execution Control802797
-Node: Viewing And Changing Data806157
-Node: Execution Stack809513
-Node: Debugger Info810980
-Node: Miscellaneous Debugger Commands814962
-Node: Readline Support820138
-Node: Limitations820969
-Node: Arbitrary Precision Arithmetic823221
-Ref: Arbitrary Precision Arithmetic-Footnote-1824870
-Node: General Arithmetic825018
-Node: Floating Point Issues826738
-Node: String Conversion Precision827619
-Ref: String Conversion Precision-Footnote-1829324
-Node: Unexpected Results829433
-Node: POSIX Floating Point Problems831586
-Ref: POSIX Floating Point Problems-Footnote-1835411
-Node: Integer Programming835449
-Node: Floating-point Programming837188
-Ref: Floating-point Programming-Footnote-1843519
-Ref: Floating-point Programming-Footnote-2843789
-Node: Floating-point Representation844053
-Node: Floating-point Context845218
-Ref: table-ieee-formats846057
-Node: Rounding Mode847441
-Ref: table-rounding-modes847920
-Ref: Rounding Mode-Footnote-1850935
-Node: Gawk and MPFR851114
-Node: Arbitrary Precision Floats852369
-Ref: Arbitrary Precision Floats-Footnote-1854812
-Node: Setting Precision855128
-Ref: table-predefined-precision-strings855814
-Node: Setting Rounding Mode857959
-Ref: table-gawk-rounding-modes858363
-Node: Floating-point Constants859550
-Node: Changing Precision860979
-Ref: Changing Precision-Footnote-1862376
-Node: Exact Arithmetic862550
-Node: Arbitrary Precision Integers865688
-Ref: Arbitrary Precision Integers-Footnote-1868706
-Node: Dynamic Extensions868853
-Node: Extension Intro870311
-Node: Plugin License871576
-Node: Extension Mechanism Outline872261
-Ref: load-extension872678
-Ref: load-new-function874156
-Ref: call-new-function875151
-Node: Extension API Description877166
-Node: Extension API Functions Introduction878379
-Node: General Data Types883245
-Ref: General Data Types-Footnote-1888850
-Node: Requesting Values889149
-Ref: table-value-types-returned889880
-Node: Constructor Functions890834
-Node: Registration Functions893854
-Node: Extension Functions894539
-Node: Exit Callback Functions896764
-Node: Extension Version String898013
-Node: Input Parsers898663
-Node: Output Wrappers908420
-Node: Two-way processors912930
-Node: Printing Messages915138
-Ref: Printing Messages-Footnote-1916215
-Node: Updating `ERRNO'916367
-Node: Accessing Parameters917106
-Node: Symbol Table Access918336
-Node: Symbol table by name918848
-Node: Symbol table by cookie920595
-Ref: Symbol table by cookie-Footnote-1924725
-Node: Cached values924788
-Ref: Cached values-Footnote-1928237
-Node: Array Manipulation928328
-Ref: Array Manipulation-Footnote-1929426
-Node: Array Data Types929465
-Ref: Array Data Types-Footnote-1932168
-Node: Array Functions932260
-Node: Flattening Arrays936026
-Node: Creating Arrays942878
-Node: Extension API Variables947603
-Node: Extension Versioning948239
-Node: Extension API Informational Variables950140
-Node: Extension API Boilerplate951226
-Node: Finding Extensions955030
-Node: Extension Example955590
-Node: Internal File Description956320
-Node: Internal File Ops960411
-Ref: Internal File Ops-Footnote-1971919
-Node: Using Internal File Ops972059
-Ref: Using Internal File Ops-Footnote-1974412
-Node: Extension Samples974678
-Node: Extension Sample File Functions976202
-Node: Extension Sample Fnmatch984687
-Node: Extension Sample Fork986413
-Node: Extension Sample Inplace987631
-Node: Extension Sample Ord989409
-Node: Extension Sample Readdir990245
-Node: Extension Sample Revout991777
-Node: Extension Sample Rev2way992370
-Node: Extension Sample Read write array993060
-Node: Extension Sample Readfile994943
-Node: Extension Sample API Tests995761
-Node: Extension Sample Time996286
-Node: gawkextlib997650
-Node: Language History1000431
-Node: V7/SVR3.11001953
-Node: SVR41004273
-Node: POSIX1005715
-Node: BTL1007101
-Node: POSIX/GNU1007835
-Node: Common Extensions1013436
-Node: Ranges and Locales1014742
-Ref: Ranges and Locales-Footnote-11019360
-Ref: Ranges and Locales-Footnote-21019387
-Ref: Ranges and Locales-Footnote-31019647
-Node: Contributors1019868
-Node: Installation1024943
-Node: Gawk Distribution1025837
-Node: Getting1026321
-Node: Extracting1027147
-Node: Distribution contents1028839
-Node: Unix Installation1034544
-Node: Quick Installation1035161
-Node: Additional Configuration Options1037605
-Node: Configuration Philosophy1039341
-Node: Non-Unix Installation1041695
-Node: PC Installation1042153
-Node: PC Binary Installation1043452
-Node: PC Compiling1045300
-Node: PC Testing1048244
-Node: PC Using1049420
-Node: Cygwin1053605
-Node: MSYS1054605
-Node: VMS Installation1055119
-Node: VMS Compilation1055883
-Ref: VMS Compilation-Footnote-11057498
-Node: VMS Dynamic Extensions1057556
-Node: VMS Installation Details1058929
-Node: VMS Running1061176
-Node: VMS GNV1064010
-Node: VMS Old Gawk1064733
-Node: Bugs1065203
-Node: Other Versions1069121
-Node: Notes1075205
-Node: Compatibility Mode1076005
-Node: Additions1076788
-Node: Accessing The Source1077715
-Node: Adding Code1079155
-Node: New Ports1085200
-Node: Derived Files1089335
-Ref: Derived Files-Footnote-11094656
-Ref: Derived Files-Footnote-21094690
-Ref: Derived Files-Footnote-31095290
-Node: Future Extensions1095388
-Node: Implementation Limitations1095971
-Node: Extension Design1097223
-Node: Old Extension Problems1098377
-Ref: Old Extension Problems-Footnote-11099885
-Node: Extension New Mechanism Goals1099942
-Ref: Extension New Mechanism Goals-Footnote-11103307
-Node: Extension Other Design Decisions1103493
-Node: Extension Future Growth1105599
-Node: Old Extension Mechanism1106435
-Node: Basic Concepts1108175
-Node: Basic High Level1108856
-Ref: figure-general-flow1109127
-Ref: figure-process-flow1109726
-Ref: Basic High Level-Footnote-11112955
-Node: Basic Data Typing1113140
-Node: Glossary1116495
-Node: Copying1141957
-Node: GNU Free Documentation License1179514
-Node: Index1204651
+Node: Foreword40856
+Node: Preface45201
+Ref: Preface-Footnote-148254
+Ref: Preface-Footnote-248350
+Node: History48582
+Node: Names50956
+Ref: Names-Footnote-152433
+Node: This Manual52505
+Ref: This Manual-Footnote-158279
+Node: Conventions58379
+Node: Manual History60535
+Ref: Manual History-Footnote-163983
+Ref: Manual History-Footnote-264024
+Node: How To Contribute64098
+Node: Acknowledgments65242
+Node: Getting Started69451
+Node: Running gawk71830
+Node: One-shot73016
+Node: Read Terminal74241
+Ref: Read Terminal-Footnote-175891
+Ref: Read Terminal-Footnote-276167
+Node: Long76338
+Node: Executable Scripts77714
+Ref: Executable Scripts-Footnote-179547
+Ref: Executable Scripts-Footnote-279649
+Node: Comments80196
+Node: Quoting82663
+Node: DOS Quoting87286
+Node: Sample Data Files87961
+Node: Very Simple91005
+Node: Two Rules95604
+Node: More Complex97751
+Ref: More Complex-Footnote-1100681
+Node: Statements/Lines100766
+Ref: Statements/Lines-Footnote-1105228
+Node: Other Features105493
+Node: When106421
+Node: Invoking Gawk108568
+Node: Command Line110029
+Node: Options110812
+Ref: Options-Footnote-1126204
+Node: Other Arguments126229
+Node: Naming Standard Input128887
+Node: Environment Variables129981
+Node: AWKPATH Variable130539
+Ref: AWKPATH Variable-Footnote-1133297
+Node: AWKLIBPATH Variable133557
+Node: Other Environment Variables134275
+Node: Exit Status137238
+Node: Include Files137913
+Node: Loading Shared Libraries141482
+Node: Obsolete142846
+Node: Undocumented143543
+Node: Regexp143785
+Node: Regexp Usage145174
+Node: Escape Sequences147200
+Node: Regexp Operators152869
+Ref: Regexp Operators-Footnote-1160249
+Ref: Regexp Operators-Footnote-2160396
+Node: Bracket Expressions160494
+Ref: table-char-classes162384
+Node: GNU Regexp Operators164907
+Node: Case-sensitivity168630
+Ref: Case-sensitivity-Footnote-1171598
+Ref: Case-sensitivity-Footnote-2171833
+Node: Leftmost Longest171941
+Node: Computed Regexps173142
+Node: Reading Files176479
+Node: Records178481
+Ref: Records-Footnote-1187370
+Node: Fields187407
+Ref: Fields-Footnote-1190440
+Node: Nonconstant Fields190526
+Node: Changing Fields192728
+Node: Field Separators198687
+Node: Default Field Splitting201389
+Node: Regexp Field Splitting202506
+Node: Single Character Fields205848
+Node: Command Line Field Separator206907
+Node: Full Line Fields210341
+Ref: Full Line Fields-Footnote-1210849
+Node: Field Splitting Summary210895
+Ref: Field Splitting Summary-Footnote-1213994
+Node: Constant Size214095
+Node: Splitting By Content218679
+Ref: Splitting By Content-Footnote-1222405
+Node: Multiple Line222445
+Ref: Multiple Line-Footnote-1228292
+Node: Getline228471
+Node: Plain Getline230687
+Node: Getline/Variable232782
+Node: Getline/File233929
+Node: Getline/Variable/File235270
+Ref: Getline/Variable/File-Footnote-1236869
+Node: Getline/Pipe236956
+Node: Getline/Variable/Pipe239655
+Node: Getline/Coprocess240762
+Node: Getline/Variable/Coprocess242014
+Node: Getline Notes242751
+Node: Getline Summary245538
+Ref: table-getline-variants245946
+Node: Read Timeout246858
+Ref: Read Timeout-Footnote-1250599
+Node: Command line directories250656
+Node: Printing251286
+Node: Print252917
+Node: Print Examples254254
+Node: Output Separators257038
+Node: OFMT258798
+Node: Printf260156
+Node: Basic Printf261062
+Node: Control Letters262601
+Node: Format Modifiers266413
+Node: Printf Examples272422
+Node: Redirection275137
+Node: Special Files282102
+Node: Special FD282635
+Ref: Special FD-Footnote-1286260
+Node: Special Network286334
+Node: Special Caveats287184
+Node: Close Files And Pipes287980
+Ref: Close Files And Pipes-Footnote-1294963
+Ref: Close Files And Pipes-Footnote-2295111
+Node: Expressions295261
+Node: Values296393
+Node: Constants297069
+Node: Scalar Constants297749
+Ref: Scalar Constants-Footnote-1298608
+Node: Nondecimal-numbers298790
+Node: Regexp Constants301790
+Node: Using Constant Regexps302265
+Node: Variables305320
+Node: Using Variables305975
+Node: Assignment Options307699
+Node: Conversion309571
+Ref: table-locale-affects315072
+Ref: Conversion-Footnote-1315696
+Node: All Operators315805
+Node: Arithmetic Ops316435
+Node: Concatenation318940
+Ref: Concatenation-Footnote-1321732
+Node: Assignment Ops321852
+Ref: table-assign-ops326840
+Node: Increment Ops328171
+Node: Truth Values and Conditions331605
+Node: Truth Values332688
+Node: Typing and Comparison333737
+Node: Variable Typing334530
+Ref: Variable Typing-Footnote-1338427
+Node: Comparison Operators338549
+Ref: table-relational-ops338959
+Node: POSIX String Comparison342508
+Ref: POSIX String Comparison-Footnote-1343464
+Node: Boolean Ops343602
+Ref: Boolean Ops-Footnote-1347680
+Node: Conditional Exp347771
+Node: Function Calls349503
+Node: Precedence353097
+Node: Locales356766
+Node: Patterns and Actions357855
+Node: Pattern Overview358909
+Node: Regexp Patterns360578
+Node: Expression Patterns361121
+Node: Ranges364806
+Node: BEGIN/END367772
+Node: Using BEGIN/END368534
+Ref: Using BEGIN/END-Footnote-1371265
+Node: I/O And BEGIN/END371371
+Node: BEGINFILE/ENDFILE373653
+Node: Empty376567
+Node: Using Shell Variables376883
+Node: Action Overview379168
+Node: Statements381525
+Node: If Statement383379
+Node: While Statement384878
+Node: Do Statement386922
+Node: For Statement388078
+Node: Switch Statement391230
+Node: Break Statement393327
+Node: Continue Statement395317
+Node: Next Statement397110
+Node: Nextfile Statement399500
+Node: Exit Statement402143
+Node: Built-in Variables404559
+Node: User-modified405654
+Ref: User-modified-Footnote-1414012
+Node: Auto-set414074
+Ref: Auto-set-Footnote-1427152
+Ref: Auto-set-Footnote-2427357
+Node: ARGC and ARGV427413
+Node: Arrays431264
+Node: Array Basics432769
+Node: Array Intro433595
+Node: Reference to Elements437912
+Node: Assigning Elements440182
+Node: Array Example440673
+Node: Scanning an Array442405
+Node: Controlling Scanning444719
+Ref: Controlling Scanning-Footnote-1449806
+Node: Delete450122
+Ref: Delete-Footnote-1452887
+Node: Numeric Array Subscripts452944
+Node: Uninitialized Subscripts455127
+Node: Multidimensional456754
+Node: Multiscanning459847
+Node: Arrays of Arrays461436
+Node: Functions466076
+Node: Built-in466895
+Node: Calling Built-in467973
+Node: Numeric Functions469961
+Ref: Numeric Functions-Footnote-1473793
+Ref: Numeric Functions-Footnote-2474150
+Ref: Numeric Functions-Footnote-3474198
+Node: String Functions474467
+Ref: String Functions-Footnote-1497387
+Ref: String Functions-Footnote-2497516
+Ref: String Functions-Footnote-3497764
+Node: Gory Details497851
+Ref: table-sub-escapes499530
+Ref: table-sub-posix-92500884
+Ref: table-sub-proposed502235
+Ref: table-posix-sub503589
+Ref: table-gensub-escapes505134
+Ref: Gory Details-Footnote-1506310
+Ref: Gory Details-Footnote-2506361
+Node: I/O Functions506512
+Ref: I/O Functions-Footnote-1513497
+Node: Time Functions513644
+Ref: Time Functions-Footnote-1524577
+Ref: Time Functions-Footnote-2524645
+Ref: Time Functions-Footnote-3524803
+Ref: Time Functions-Footnote-4524914
+Ref: Time Functions-Footnote-5525026
+Ref: Time Functions-Footnote-6525253
+Node: Bitwise Functions525519
+Ref: table-bitwise-ops526081
+Ref: Bitwise Functions-Footnote-1530302
+Node: Type Functions530486
+Node: I18N Functions531637
+Node: User-defined533264
+Node: Definition Syntax534068
+Ref: Definition Syntax-Footnote-1538978
+Node: Function Example539047
+Node: Function Caveats541641
+Node: Calling A Function542062
+Node: Variable Scope543177
+Node: Pass By Value/Reference546140
+Node: Return Statement549648
+Node: Dynamic Typing552629
+Node: Indirect Calls553560
+Node: Library Functions563245
+Ref: Library Functions-Footnote-1566758
+Ref: Library Functions-Footnote-2566901
+Node: Library Names567072
+Ref: Library Names-Footnote-1570543
+Ref: Library Names-Footnote-2570763
+Node: General Functions570849
+Node: Strtonum Function571877
+Node: Assert Function574807
+Node: Round Function578133
+Node: Cliff Random Function579676
+Node: Ordinal Functions580692
+Ref: Ordinal Functions-Footnote-1583762
+Ref: Ordinal Functions-Footnote-2584014
+Node: Join Function584223
+Ref: Join Function-Footnote-1585994
+Node: Getlocaltime Function586194
+Node: Readfile Function589935
+Node: Data File Management591774
+Node: Filetrans Function592406
+Node: Rewind Function596475
+Node: File Checking597862
+Node: Empty Files598956
+Node: Ignoring Assigns601186
+Node: Getopt Function602739
+Ref: Getopt Function-Footnote-1614042
+Node: Passwd Functions614245
+Ref: Passwd Functions-Footnote-1623220
+Node: Group Functions623308
+Node: Walking Arrays631392
+Node: Sample Programs633529
+Node: Running Examples634203
+Node: Clones634931
+Node: Cut Program636155
+Node: Egrep Program646000
+Ref: Egrep Program-Footnote-1653773
+Node: Id Program653883
+Node: Split Program657499
+Ref: Split Program-Footnote-1661018
+Node: Tee Program661146
+Node: Uniq Program663949
+Node: Wc Program671378
+Ref: Wc Program-Footnote-1675644
+Ref: Wc Program-Footnote-2675844
+Node: Miscellaneous Programs675936
+Node: Dupword Program677124
+Node: Alarm Program679155
+Node: Translate Program683908
+Ref: Translate Program-Footnote-1688295
+Ref: Translate Program-Footnote-2688543
+Node: Labels Program688677
+Ref: Labels Program-Footnote-1692048
+Node: Word Sorting692132
+Node: History Sorting696016
+Node: Extract Program697855
+Ref: Extract Program-Footnote-1705358
+Node: Simple Sed705486
+Node: Igawk Program708548
+Ref: Igawk Program-Footnote-1723705
+Ref: Igawk Program-Footnote-2723906
+Node: Anagram Program724044
+Node: Signature Program727112
+Node: Advanced Features728212
+Node: Nondecimal Data730098
+Node: Array Sorting731681
+Node: Controlling Array Traversal732378
+Node: Array Sorting Functions740662
+Ref: Array Sorting Functions-Footnote-1744531
+Node: Two-way I/O744725
+Ref: Two-way I/O-Footnote-1750157
+Node: TCP/IP Networking750227
+Node: Profiling753071
+Node: Internationalization760568
+Node: I18N and L10N761993
+Node: Explaining gettext762679
+Ref: Explaining gettext-Footnote-1767747
+Ref: Explaining gettext-Footnote-2767931
+Node: Programmer i18n768096
+Node: Translator i18n772298
+Node: String Extraction773091
+Ref: String Extraction-Footnote-1774052
+Node: Printf Ordering774138
+Ref: Printf Ordering-Footnote-1776922
+Node: I18N Portability776986
+Ref: I18N Portability-Footnote-1779435
+Node: I18N Example779498
+Ref: I18N Example-Footnote-1782136
+Node: Gawk I18N782208
+Node: Debugger782829
+Node: Debugging783800
+Node: Debugging Concepts784233
+Node: Debugging Terms786089
+Node: Awk Debugging788686
+Node: Sample Debugging Session789578
+Node: Debugger Invocation790098
+Node: Finding The Bug791430
+Node: List of Debugger Commands797918
+Node: Breakpoint Control799252
+Node: Debugger Execution Control802916
+Node: Viewing And Changing Data806276
+Node: Execution Stack809632
+Node: Debugger Info811099
+Node: Miscellaneous Debugger Commands815081
+Node: Readline Support820257
+Node: Limitations821088
+Node: Arbitrary Precision Arithmetic823340
+Ref: Arbitrary Precision Arithmetic-Footnote-1824989
+Node: General Arithmetic825137
+Node: Floating Point Issues826857
+Node: String Conversion Precision827738
+Ref: String Conversion Precision-Footnote-1829443
+Node: Unexpected Results829552
+Node: POSIX Floating Point Problems831705
+Ref: POSIX Floating Point Problems-Footnote-1835530
+Node: Integer Programming835568
+Node: Floating-point Programming837307
+Ref: Floating-point Programming-Footnote-1843638
+Ref: Floating-point Programming-Footnote-2843908
+Node: Floating-point Representation844172
+Node: Floating-point Context845337
+Ref: table-ieee-formats846176
+Node: Rounding Mode847560
+Ref: table-rounding-modes848039
+Ref: Rounding Mode-Footnote-1851054
+Node: Gawk and MPFR851233
+Node: Arbitrary Precision Floats852488
+Ref: Arbitrary Precision Floats-Footnote-1854931
+Node: Setting Precision855247
+Ref: table-predefined-precision-strings855933
+Node: Setting Rounding Mode858078
+Ref: table-gawk-rounding-modes858482
+Node: Floating-point Constants859669
+Node: Changing Precision861098
+Ref: Changing Precision-Footnote-1862495
+Node: Exact Arithmetic862669
+Node: Arbitrary Precision Integers865807
+Ref: Arbitrary Precision Integers-Footnote-1868825
+Node: Dynamic Extensions868972
+Node: Extension Intro870430
+Node: Plugin License871695
+Node: Extension Mechanism Outline872380
+Ref: load-extension872797
+Ref: load-new-function874275
+Ref: call-new-function875270
+Node: Extension API Description877285
+Node: Extension API Functions Introduction878498
+Node: General Data Types883364
+Ref: General Data Types-Footnote-1888969
+Node: Requesting Values889268
+Ref: table-value-types-returned889999
+Node: Constructor Functions890953
+Node: Registration Functions893973
+Node: Extension Functions894658
+Node: Exit Callback Functions896883
+Node: Extension Version String898132
+Node: Input Parsers898782
+Node: Output Wrappers908539
+Node: Two-way processors913049
+Node: Printing Messages915257
+Ref: Printing Messages-Footnote-1916334
+Node: Updating `ERRNO'916486
+Node: Accessing Parameters917225
+Node: Symbol Table Access918455
+Node: Symbol table by name918967
+Node: Symbol table by cookie920714
+Ref: Symbol table by cookie-Footnote-1924844
+Node: Cached values924907
+Ref: Cached values-Footnote-1928356
+Node: Array Manipulation928447
+Ref: Array Manipulation-Footnote-1929545
+Node: Array Data Types929584
+Ref: Array Data Types-Footnote-1932287
+Node: Array Functions932379
+Node: Flattening Arrays936145
+Node: Creating Arrays942997
+Node: Extension API Variables947722
+Node: Extension Versioning948358
+Node: Extension API Informational Variables950259
+Node: Extension API Boilerplate951345
+Node: Finding Extensions955149
+Node: Extension Example955709
+Node: Internal File Description956439
+Node: Internal File Ops960530
+Ref: Internal File Ops-Footnote-1972038
+Node: Using Internal File Ops972178
+Ref: Using Internal File Ops-Footnote-1974531
+Node: Extension Samples974797
+Node: Extension Sample File Functions976321
+Node: Extension Sample Fnmatch984806
+Node: Extension Sample Fork986532
+Node: Extension Sample Inplace987750
+Node: Extension Sample Ord989528
+Node: Extension Sample Readdir990364
+Node: Extension Sample Revout991896
+Node: Extension Sample Rev2way992489
+Node: Extension Sample Read write array993179
+Node: Extension Sample Readfile995062
+Node: Extension Sample API Tests995880
+Node: Extension Sample Time996405
+Node: gawkextlib997769
+Node: Language History1000550
+Node: V7/SVR3.11002143
+Node: SVR41004463
+Node: POSIX1005905
+Node: BTL1007291
+Node: POSIX/GNU1008025
+Node: Feature History1013624
+Node: Common Extensions1026588
+Node: Ranges and Locales1027900
+Ref: Ranges and Locales-Footnote-11032518
+Ref: Ranges and Locales-Footnote-21032545
+Ref: Ranges and Locales-Footnote-31032805
+Node: Contributors1033026
+Node: Installation1038101
+Node: Gawk Distribution1038995
+Node: Getting1039479
+Node: Extracting1040305
+Node: Distribution contents1041997
+Node: Unix Installation1047702
+Node: Quick Installation1048319
+Node: Additional Configuration Options1050763
+Node: Configuration Philosophy1052499
+Node: Non-Unix Installation1054853
+Node: PC Installation1055311
+Node: PC Binary Installation1056610
+Node: PC Compiling1058458
+Node: PC Testing1061402
+Node: PC Using1062578
+Node: Cygwin1066763
+Node: MSYS1067763
+Node: VMS Installation1068277
+Node: VMS Compilation1069041
+Ref: VMS Compilation-Footnote-11070656
+Node: VMS Dynamic Extensions1070714
+Node: VMS Installation Details1072087
+Node: VMS Running1074334
+Node: VMS GNV1077168
+Node: VMS Old Gawk1077891
+Node: Bugs1078361
+Node: Other Versions1082279
+Node: Notes1088363
+Node: Compatibility Mode1089163
+Node: Additions1089946
+Node: Accessing The Source1090873
+Node: Adding Code1092313
+Node: New Ports1098358
+Node: Derived Files1102493
+Ref: Derived Files-Footnote-11107814
+Ref: Derived Files-Footnote-21107848
+Ref: Derived Files-Footnote-31108448
+Node: Future Extensions1108546
+Node: Implementation Limitations1109129
+Node: Extension Design1110381
+Node: Old Extension Problems1111535
+Ref: Old Extension Problems-Footnote-11113043
+Node: Extension New Mechanism Goals1113100
+Ref: Extension New Mechanism Goals-Footnote-11116465
+Node: Extension Other Design Decisions1116651
+Node: Extension Future Growth1118757
+Node: Old Extension Mechanism1119593
+Node: Basic Concepts1121333
+Node: Basic High Level1122014
+Ref: figure-general-flow1122285
+Ref: figure-process-flow1122884
+Ref: Basic High Level-Footnote-11126113
+Node: Basic Data Typing1126298
+Node: Glossary1129653
+Node: Copying1155115
+Node: GNU Free Documentation License1192672
+Node: Index1217809

End Tag Table
diff --git a/doc/gawk.texi b/doc/gawk.texi
index b759986b..1001d03c 100644
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -402,7 +402,8 @@ particular records in a file and perform operations upon them.
field.
* Command Line Field Separator:: Setting @code{FS} from the
command-line.
-* Full Line Fields:: Making the full line be a single field.
+* Full Line Fields:: Making the full line be a single
+ field.
* Field Splitting Summary:: Some final points and a summary table.
* Constant Size:: Reading constant width data.
* Splitting By Content:: Defining Fields By Content
@@ -792,6 +793,7 @@ particular records in a file and perform operations upon them.
version of @command{awk}.
* POSIX/GNU:: The extensions in @command{gawk} not
in POSIX @command{awk}.
+* Feature History:: The history of the features in @command{gawk}.
* Common Extensions:: Common Extensions Summary.
* Ranges and Locales:: How locales used to affect regexp
ranges.
@@ -33025,6 +33027,7 @@ of the @value{DOCUMENT} where you can find more information.
@command{awk}.
* POSIX/GNU:: The extensions in @command{gawk} not in POSIX
@command{awk}.
+* Feature History:: The history of the features in @command{gawk}.
* Common Extensions:: Common Extensions Summary.
* Ranges and Locales:: How locales used to affect regexp ranges.
* Contributors:: The major contributors to @command{gawk}.
@@ -33603,6 +33606,612 @@ GCC for VAX and Alpha has not been tested for a while.
@c ENDOFRANGE exgnot
@c ENDOFRANGE posnot
+@node Feature History
+@appendixsec History of @command{gawk} Features
+
+@ignore
+See the thread:
+https://groups.google.com/forum/#!topic/comp.lang.awk/SAUiRuff30c
+This motivated me to add this section.
+@end ignore
+
+@ignore
+I've tried to follow this general order, esp.@: for the 3.0 and 3.1 sections:
+ variables
+ special files
+ language changes (e.g., hex constants)
+ differences in standard awk functions
+ new gawk functions
+ new keywords
+ new command-line options
+ behavioral changes
+ new ports
+Within each category, be alphabetical.
+@end ignore
+
+This @value{SECTION} describes the features in @command{gawk}
+over and above those in POSIX @command{awk},
+in the order they were added to @command{gawk}.
+
+Version 2.10 of @command{gawk} introduced the following features:
+
+@itemize @bullet
+@item
+The @env{AWKPATH} environment variable for specifying a path search for
+the @option{-f} command-line option
+(@pxref{Options}).
+
+@item
+The @code{IGNORECASE} variable and its effects
+(@pxref{Case-sensitivity}).
+
+@item
+The @file{/dev/stdin}, @file{/dev/stdout}, @file{/dev/stderr} and
+@file{/dev/fd/@var{N}} special file names
+(@pxref{Special Files}).
+@end itemize
+
+Version 2.13 of @command{gawk} introduced the following features:
+
+@itemize @bullet
+@item
+The @code{FIELDWIDTHS} variable and its effects
+(@pxref{Constant Size}).
+
+@item
+The @code{systime()} and @code{strftime()} built-in functions for obtaining
+and printing timestamps
+(@pxref{Time Functions}).
+
+@item
+Additional command-line options
+(@pxref{Options}):
+
+@itemize @minus
+@item
+The @option{-W lint} option to provide error and portability checking
+for both the source code and at runtime.
+
+@item
+The @option{-W compat} option to turn off the GNU extensions.
+
+@item
+The @option{-W posix} option for full POSIX compliance.
+@end itemize
+@end itemize
+
+Version 2.14 of @command{gawk} introduced the following feature:
+
+@itemize @bullet
+@item
+The @code{next file} statement for skipping to the next data file
+(@pxref{Nextfile Statement}).
+@end itemize
+
+Version 2.15 of @command{gawk} introduced the following features:
+
+@itemize @bullet
+@item
+New variables (@pxref{Built-in Variables}):
+
+@itemize @minus
+@item
+@code{ARGIND}, which tracks the movement of @code{FILENAME}
+through @code{ARGV}.
+
+@item
+@code{ERRNO}, which contains the system error message when
+@code{getline} returns @minus{}1 or @code{close()} fails.
+@end itemize
+
+@item
+The @file{/dev/pid}, @file{/dev/ppid}, @file{/dev/pgrpid}, and
+@file{/dev/user} special file names. These have since been removed.
+
+@item
+The ability to delete all of an array at once with @samp{delete @var{array}}
+(@pxref{Delete}).
+
+@item
+Command line option changes
+(@pxref{Options}):
+
+@itemize @minus
+@item
+The ability to use GNU-style long-named options that start with @option{--}.
+
+@item
+The @option{--source} option for mixing command-line and library-file
+source code.
+@end itemize
+@end itemize
+
+Version 3.0 of @command{gawk} introduced the following features:
+
+@itemize @bullet
+@item
+New or changed variables:
+
+@itemize @minus
+@item
+@code{IGNORECASE} changed, now applying to string comparison as well
+as regexp operations
+(@pxref{Case-sensitivity}).
+
+@item
+@code{RT}, which contains the input text that matched @code{RS}
+(@pxref{Records}).
+@end itemize
+
+@item
+Full support for both POSIX and GNU regexps
+(@pxref{Regexp}).
+
+@item
+The @code{gensub()} function for more powerful text manipulation
+(@pxref{String Functions}).
+
+@item
+The @code{strftime()} function acquired a default time format,
+allowing it to be called with no arguments
+(@pxref{Time Functions}).
+
+@item
+The ability for @code{FS} and for the third
+argument to @code{split()} to be null strings
+(@pxref{Single Character Fields}).
+
+@item
+The ability for @code{RS} to be a regexp
+(@pxref{Records}).
+
+@item
+The @code{next file} statement became @code{nextfile}
+(@pxref{Nextfile Statement}).
+
+@item
+The @code{fflush()} function from the
+Bell Laboratories research version of @command{awk}
+(@pxref{I/O Functions}).
+
+@item
+New command line options:
+
+@itemize @minus
+@item
+The @option{--lint-old} option to
+warn about constructs that are not available in
+the original Version 7 Unix version of @command{awk}
+(@pxref{V7/SVR3.1}).
+
+@item
+The @option{-m} option from the
+Bell Laboratories research version of @command{awk}
+This was later removed.
+
+@item
+The @option{--re-interval} option to provide interval expressions in regexps
+(@pxref{Regexp Operators}).
+
+@item
+The @option{--traditional} option was added as a better name for
+@option{--compat} (@pxref{Options}).
+@end itemize
+
+@item
+The use of GNU Autoconf to control the configuration process
+(@pxref{Quick Installation}).
+
+@item
+Amiga support.
+
+@end itemize
+
+Version 3.1 of @command{gawk} introduced the following features:
+
+@itemize @bullet
+@item
+New variables
+(@pxref{Built-in Variables}):
+
+@itemize @minus
+@item
+@code{BINMODE}, for non-POSIX systems,
+which allows binary I/O for input and/or output files
+(@pxref{PC Using}).
+
+@item
+@code{LINT}, which dynamically controls lint warnings.
+
+@item
+@code{PROCINFO}, an array for providing process-related information.
+
+@item
+@code{TEXTDOMAIN}, for setting an application's internationalization text domain
+(@pxref{Internationalization}).
+@end itemize
+
+@item
+The ability to use octal and hexadecimal constants in @command{awk}
+program source code
+(@pxref{Nondecimal-numbers}).
+
+@item
+The @samp{|&} operator for two-way I/O to a coprocess
+(@pxref{Two-way I/O}).
+
+@item
+The @file{/inet} special files for TCP/IP networking using @samp{|&}
+(@pxref{TCP/IP Networking}).
+
+@item
+The optional second argument to @code{close()} that allows closing one end
+of a two-way pipe to a coprocess
+(@pxref{Two-way I/O}).
+
+@item
+The optional third argument to the @code{match()} function
+for capturing text-matching subexpressions within a regexp
+(@pxref{String Functions}).
+
+@item
+Positional specifiers in @code{printf} formats for
+making translations easier
+(@pxref{Printf Ordering}).
+
+@item
+A number of new built-in functions:
+
+@itemize @minus
+@item
+The @code{asort()} and @code{asorti()} functions for sorting arrays
+(@pxref{Array Sorting}).
+
+@item
+The @code{bindtextdomain()}, @code{dcgettext()} and @code{dcngettext()} functions
+for internationalization
+(@pxref{Programmer i18n}).
+
+@item
+The @code{extension()} function and the ability to add
+new built-in functions dynamically
+(@pxref{Dynamic Extensions}).
+
+@item
+The @code{mktime()} function for creating timestamps
+(@pxref{Time Functions}).
+
+@item
+The @code{and()}, @code{or()}, @code{xor()}, @code{compl()},
+@code{lshift()}, @code{rshift()}, and @code{strtonum()} functions
+(@pxref{Bitwise Functions}).
+@end itemize
+
+@item
+@cindex @code{next file} statement
+The support for @samp{next file} as two words was removed completely
+(@pxref{Nextfile Statement}).
+
+@item
+Additional commnd line options
+(@pxref{Options}):
+
+@itemize @minus
+@item
+The @option{--dump-variables} option to print a list of all global variables.
+
+@item
+The @option{--exec} option, for use in CGI scripts.
+
+@item
+The @option{--gen-po} command-line option and the use of a leading
+underscore to mark strings that should be translated
+(@pxref{String Extraction}).
+
+@item
+The @option{--non-decimal-data} option to allow non-decimal
+input data
+(@pxref{Nondecimal Data}).
+
+@item
+The @option{--profile} option and @command{pgawk}, the
+profiling version of @command{gawk}, for producing execution
+profiles of @command{awk} programs
+(@pxref{Profiling}).
+
+@item
+The @option{--use-lc-numeric} option to force @command{gawk}
+to use the locale's decimal point for parsing input data
+(@pxref{Conversion}).
+@end itemize
+
+@item
+The use of GNU Automake to help in standardizing the configuration process
+(@pxref{Quick Installation}).
+
+@item
+The use of GNU @code{gettext} for @command{gawk}'s own message output
+(@pxref{Gawk I18N}).
+
+@item
+BeOS support. This was later removed.
+
+@item
+Tandem support. This was later removed.
+
+@item
+The Atari port became officially unsupported.
+
+@item
+The source code changed to use ISO C standard-style function definitions.
+
+@item
+POSIX compliance for @code{sub()} and @code{gsub()}
+(@pxref{Gory Details}).
+
+@item
+The @code{length()} function was extended to accept an array argument
+and return the number of elements in the array
+(@pxref{String Functions}).
+
+@item
+The @code{strftime()} function acquired a third argument to
+enable printing times as UTC
+(@pxref{Time Functions}).
+@end itemize
+
+Version 4.0 of @command{gawk} introduced the following features:
+
+@itemize @bullet
+
+@item
+Variable additions:
+
+@itemize @minus
+@item
+@code{FPAT}, which allows you to specify a regexp that matches
+the fields, instead of matching the field separator
+(@pxref{Splitting By Content}).
+
+@item
+If @code{PROCINFO["sorted_in"]} exists, @samp{for(iggy in foo)} loops sort the
+indices before looping over them. The value of this element
+provides control over how the indices are sorted before the loop
+traversal starts
+(@pxref{Controlling Scanning}).
+
+@item
+@code{PROCINFO["strftime"]}, which holds
+the default format for @code{strftime()}
+(@pxref{Time Functions}).
+@end itemize
+
+@item
+The special files @file{/dev/pid}, @file{/dev/ppid}, @file{/dev/pgrpid}
+and @file{/dev/user} were removed.
+
+@item
+Support for IPv6 was added via the @file{/inet6} special file.
+@file{/inet4} forces IPv4 and @file{/inet} chooses the system
+default, which is probably IPv4
+(@pxref{TCP/IP Networking}).
+
+@item
+The use of @samp{\s} and @samp{\S} escape sequences in regular expressions
+(@pxref{GNU Regexp Operators}).
+
+@item
+Interval expressions became part of default regular expressions
+(@pxref{Regexp Operators}).
+
+@item
+POSIX character classes work even with @option{--traditional}
+(@pxref{Regexp Operators}).
+
+@item
+@code{break} and @code{continue} became invalid outside a loop,
+even with @option{--traditional}
+(@pxref{Break Statement}, and also see
+@ref{Continue Statement}).
+
+@item
+@code{fflush()}, @code{nextfile}, and @samp{delete @var{array}}
+are allowed if @option{--posix} or @option{--traditional}, since they
+are all now part of POSIX.
+
+@item
+An optional third argument to
+@code{asort()} and @code{asorti()}, specifying how to sort
+(@pxref{String Functions}).
+
+@item
+The behavior of @code{fflush()} changed to match Brian Kernighan's @command{awk}
+and for POSIX; now both @samp{fflush()} and @samp{fflush("")}
+flush all open output redirections
+(@pxref{I/O Functions}).
+
+@item
+The @code{isarray()}
+function which distinguishes if an item is an array
+or not, to make it possible to traverse multidimensional arrays
+(@pxref{Type Functions}).
+
+@item
+The @code{patsplit()}
+function which gives the same capability as @code{FPAT}, for splitting
+(@pxref{String Functions}).
+
+@item
+An optional fourth argument to the @code{split()} function,
+which is an array to hold the values of the separators
+(@pxref{String Functions}).
+
+@item
+Arrays of arrays
+(@pxref{Arrays of Arrays}).
+
+@item
+The @code{BEGINFILE} and @code{ENDFILE} special patterns
+(@pxref{BEGINFILE/ENDFILE}).
+
+@item
+Indirect function calls
+(@pxref{Indirect Calls}).
+
+@item
+@code{switch} / @code{case} are enabled by default
+(@pxref{Switch Statement}).
+
+@item
+Command line option changes
+(@pxref{Options}):
+
+@itemize @minus
+@item
+The @option{-b} and @option{--characters-as-bytes} options
+which prevent @command{gawk} from treating input as a multibyte string.
+
+@item
+The redundant @option{--compat}, @option{--copyleft}, and @option{--usage}
+long options were removed.
+
+@item
+The @option{--gen-po} option was finally renamed to the correct @option{--gen-pot}.
+
+@item
+The @option{--sandbox} option which disables certain features.
+
+@item
+All long options acquired corresponding short options, for use in @samp{#!} scripts.
+@end itemize
+
+@item
+Directories named on the command line now produce a warning, not a fatal
+error, unless @option{--posix} or @option{--traditional} are used
+(@pxref{Command line directories}).
+
+@item
+The @command{gawk} internals were rewritten, bringing the @command{dgawk}
+debugger and possibly improved performance
+(@pxref{Debugger}).
+
+@item
+Per the GNU Coding Standards, dynamic extensions must now define
+a global symbol indicating that they are GPL-compatible
+(@pxref{Plugin License}).
+
+@item
+In POSIX mode, string comparisons use @code{strcoll()} / @code{wcscoll()}
+(@pxref{POSIX String Comparison}).
+
+@item
+The option for raw sockets was removed, since it was never implemented
+(@pxref{TCP/IP Networking}).
+
+@item
+Ranges of the form @code{[d-h]} are treated as if they were in the
+C locale, no matter what kind of regexp is being used, and even if
+@option{--posix}
+(@pxref{Ranges and Locales}).
+
+@item
+Support was removed for the following systems:
+
+@itemize @minus
+@item
+Atari
+
+@item
+Amiga
+
+@item
+BeOS
+
+@item
+Cray
+
+@item
+MIPS RiscOS
+
+@item
+MS-DOS with Microsoft Compiler
+
+@item
+MS-Windows with Microsoft Compiler
+
+@item
+NeXT
+
+@item
+SunOS 3.x, Sun 386 (Road Runner)
+
+@item
+Tandem (non-POSIX)
+
+@item
+Prestandard VAX C compiler for VAX/VMS
+@end itemize
+@end itemize
+
+Version 4.1 of @command{gawk} introduced the following features:
+
+@itemize @bullet
+
+@item
+Three new arrays:
+@code{SYMTAB}, @code{FUNCTAB}, and @code{PROCINFO["identifiers"]}
+(@pxref{Auto-set}).
+
+@item
+The three executables @command{gawk}, @command{pgawk}, and @command{dgawk}, were merged into
+one, named just @command{gawk}. As a result the command line options changed.
+
+@item
+Command line option changes
+(@pxref{Options}):
+
+@itemize @minus
+@item
+The @option{-D} option invokes the debugger.
+
+@item
+The @option{-i} and @option{--include} options
+load @command{awk} library files.
+
+@item
+The @option{-l} and @option{--load} options for load compiled dynamic extensions.
+
+@item
+The @option{-M} and @option{--bignum} options enable MPFR.
+
+@item
+The @option{-o} only does pretty-printing.
+
+@item
+The @option{-p} option is used for profiling.
+
+@item
+The @option{-R} option was removed.
+@end itemize
+
+@item
+Support for high precision arithmetic with MPFR.
+(@pxref{Gawk and MPFR}).
+
+@item
+The @code{and()}, @code{or()} and @code{xor()} functions
+allow any number of arguments,
+with a minimum of two
+(@pxref{Bitwise Functions}).
+
+@item
+The dynamic extension interface was completely redone
+(@pxref{Dynamic Extensions}).
+
+@end itemize
+
+@c XXX ADD MORE STUFF HERE
+
@node Common Extensions
@appendixsec Common Extensions Summary
@@ -33618,7 +34227,7 @@ the three most widely-used freely available versions of @command{awk}
@item @samp{\x} Escape sequence @tab X @tab X @tab X
@item @code{RS} as regexp @tab @tab X @tab X
@item @code{FS} as null string @tab X @tab X @tab X
-@item @file{/dev/stdin} special file @tab X @tab @tab X
+@item @file{/dev/stdin} special file @tab X @tab X @tab X
@item @file{/dev/stdout} special file @tab X @tab X @tab X
@item @file{/dev/stderr} special file @tab X @tab X @tab X
@item @code{**} and @code{**=} operators @tab X @tab @tab X
@@ -33626,7 +34235,7 @@ the three most widely-used freely available versions of @command{awk}
@item @code{func} keyword @tab X @tab @tab X
@item @code{nextfile} statement @tab X @tab X @tab X
@item @code{delete} without subscript @tab X @tab X @tab X
-@item @code{length()} of an array @tab X @tab @tab X
+@item @code{length()} of an array @tab X @tab X @tab X
@item @code{BINMODE} variable @tab @tab X @tab X
@item Time related functions @tab @tab X @tab X
@end multitable
diff --git a/doc/gawktexi.in b/doc/gawktexi.in
index f27d5aba..6c015c81 100644
--- a/doc/gawktexi.in
+++ b/doc/gawktexi.in
@@ -397,7 +397,8 @@ particular records in a file and perform operations upon them.
field.
* Command Line Field Separator:: Setting @code{FS} from the
command-line.
-* Full Line Fields:: Making the full line be a single field.
+* Full Line Fields:: Making the full line be a single
+ field.
* Field Splitting Summary:: Some final points and a summary table.
* Constant Size:: Reading constant width data.
* Splitting By Content:: Defining Fields By Content
@@ -787,6 +788,7 @@ particular records in a file and perform operations upon them.
version of @command{awk}.
* POSIX/GNU:: The extensions in @command{gawk} not
in POSIX @command{awk}.
+* Feature History:: The history of the features in @command{gawk}.
* Common Extensions:: Common Extensions Summary.
* Ranges and Locales:: How locales used to affect regexp
ranges.
@@ -32174,6 +32176,7 @@ of the @value{DOCUMENT} where you can find more information.
@command{awk}.
* POSIX/GNU:: The extensions in @command{gawk} not in POSIX
@command{awk}.
+* Feature History:: The history of the features in @command{gawk}.
* Common Extensions:: Common Extensions Summary.
* Ranges and Locales:: How locales used to affect regexp ranges.
* Contributors:: The major contributors to @command{gawk}.
@@ -32752,6 +32755,612 @@ GCC for VAX and Alpha has not been tested for a while.
@c ENDOFRANGE exgnot
@c ENDOFRANGE posnot
+@node Feature History
+@appendixsec History of @command{gawk} Features
+
+@ignore
+See the thread:
+https://groups.google.com/forum/#!topic/comp.lang.awk/SAUiRuff30c
+This motivated me to add this section.
+@end ignore
+
+@ignore
+I've tried to follow this general order, esp.@: for the 3.0 and 3.1 sections:
+ variables
+ special files
+ language changes (e.g., hex constants)
+ differences in standard awk functions
+ new gawk functions
+ new keywords
+ new command-line options
+ behavioral changes
+ new ports
+Within each category, be alphabetical.
+@end ignore
+
+This @value{SECTION} describes the features in @command{gawk}
+over and above those in POSIX @command{awk},
+in the order they were added to @command{gawk}.
+
+Version 2.10 of @command{gawk} introduced the following features:
+
+@itemize @bullet
+@item
+The @env{AWKPATH} environment variable for specifying a path search for
+the @option{-f} command-line option
+(@pxref{Options}).
+
+@item
+The @code{IGNORECASE} variable and its effects
+(@pxref{Case-sensitivity}).
+
+@item
+The @file{/dev/stdin}, @file{/dev/stdout}, @file{/dev/stderr} and
+@file{/dev/fd/@var{N}} special file names
+(@pxref{Special Files}).
+@end itemize
+
+Version 2.13 of @command{gawk} introduced the following features:
+
+@itemize @bullet
+@item
+The @code{FIELDWIDTHS} variable and its effects
+(@pxref{Constant Size}).
+
+@item
+The @code{systime()} and @code{strftime()} built-in functions for obtaining
+and printing timestamps
+(@pxref{Time Functions}).
+
+@item
+Additional command-line options
+(@pxref{Options}):
+
+@itemize @minus
+@item
+The @option{-W lint} option to provide error and portability checking
+for both the source code and at runtime.
+
+@item
+The @option{-W compat} option to turn off the GNU extensions.
+
+@item
+The @option{-W posix} option for full POSIX compliance.
+@end itemize
+@end itemize
+
+Version 2.14 of @command{gawk} introduced the following feature:
+
+@itemize @bullet
+@item
+The @code{next file} statement for skipping to the next data file
+(@pxref{Nextfile Statement}).
+@end itemize
+
+Version 2.15 of @command{gawk} introduced the following features:
+
+@itemize @bullet
+@item
+New variables (@pxref{Built-in Variables}):
+
+@itemize @minus
+@item
+@code{ARGIND}, which tracks the movement of @code{FILENAME}
+through @code{ARGV}.
+
+@item
+@code{ERRNO}, which contains the system error message when
+@code{getline} returns @minus{}1 or @code{close()} fails.
+@end itemize
+
+@item
+The @file{/dev/pid}, @file{/dev/ppid}, @file{/dev/pgrpid}, and
+@file{/dev/user} special file names. These have since been removed.
+
+@item
+The ability to delete all of an array at once with @samp{delete @var{array}}
+(@pxref{Delete}).
+
+@item
+Command line option changes
+(@pxref{Options}):
+
+@itemize @minus
+@item
+The ability to use GNU-style long-named options that start with @option{--}.
+
+@item
+The @option{--source} option for mixing command-line and library-file
+source code.
+@end itemize
+@end itemize
+
+Version 3.0 of @command{gawk} introduced the following features:
+
+@itemize @bullet
+@item
+New or changed variables:
+
+@itemize @minus
+@item
+@code{IGNORECASE} changed, now applying to string comparison as well
+as regexp operations
+(@pxref{Case-sensitivity}).
+
+@item
+@code{RT}, which contains the input text that matched @code{RS}
+(@pxref{Records}).
+@end itemize
+
+@item
+Full support for both POSIX and GNU regexps
+(@pxref{Regexp}).
+
+@item
+The @code{gensub()} function for more powerful text manipulation
+(@pxref{String Functions}).
+
+@item
+The @code{strftime()} function acquired a default time format,
+allowing it to be called with no arguments
+(@pxref{Time Functions}).
+
+@item
+The ability for @code{FS} and for the third
+argument to @code{split()} to be null strings
+(@pxref{Single Character Fields}).
+
+@item
+The ability for @code{RS} to be a regexp
+(@pxref{Records}).
+
+@item
+The @code{next file} statement became @code{nextfile}
+(@pxref{Nextfile Statement}).
+
+@item
+The @code{fflush()} function from the
+Bell Laboratories research version of @command{awk}
+(@pxref{I/O Functions}).
+
+@item
+New command line options:
+
+@itemize @minus
+@item
+The @option{--lint-old} option to
+warn about constructs that are not available in
+the original Version 7 Unix version of @command{awk}
+(@pxref{V7/SVR3.1}).
+
+@item
+The @option{-m} option from the
+Bell Laboratories research version of @command{awk}
+This was later removed.
+
+@item
+The @option{--re-interval} option to provide interval expressions in regexps
+(@pxref{Regexp Operators}).
+
+@item
+The @option{--traditional} option was added as a better name for
+@option{--compat} (@pxref{Options}).
+@end itemize
+
+@item
+The use of GNU Autoconf to control the configuration process
+(@pxref{Quick Installation}).
+
+@item
+Amiga support.
+
+@end itemize
+
+Version 3.1 of @command{gawk} introduced the following features:
+
+@itemize @bullet
+@item
+New variables
+(@pxref{Built-in Variables}):
+
+@itemize @minus
+@item
+@code{BINMODE}, for non-POSIX systems,
+which allows binary I/O for input and/or output files
+(@pxref{PC Using}).
+
+@item
+@code{LINT}, which dynamically controls lint warnings.
+
+@item
+@code{PROCINFO}, an array for providing process-related information.
+
+@item
+@code{TEXTDOMAIN}, for setting an application's internationalization text domain
+(@pxref{Internationalization}).
+@end itemize
+
+@item
+The ability to use octal and hexadecimal constants in @command{awk}
+program source code
+(@pxref{Nondecimal-numbers}).
+
+@item
+The @samp{|&} operator for two-way I/O to a coprocess
+(@pxref{Two-way I/O}).
+
+@item
+The @file{/inet} special files for TCP/IP networking using @samp{|&}
+(@pxref{TCP/IP Networking}).
+
+@item
+The optional second argument to @code{close()} that allows closing one end
+of a two-way pipe to a coprocess
+(@pxref{Two-way I/O}).
+
+@item
+The optional third argument to the @code{match()} function
+for capturing text-matching subexpressions within a regexp
+(@pxref{String Functions}).
+
+@item
+Positional specifiers in @code{printf} formats for
+making translations easier
+(@pxref{Printf Ordering}).
+
+@item
+A number of new built-in functions:
+
+@itemize @minus
+@item
+The @code{asort()} and @code{asorti()} functions for sorting arrays
+(@pxref{Array Sorting}).
+
+@item
+The @code{bindtextdomain()}, @code{dcgettext()} and @code{dcngettext()} functions
+for internationalization
+(@pxref{Programmer i18n}).
+
+@item
+The @code{extension()} function and the ability to add
+new built-in functions dynamically
+(@pxref{Dynamic Extensions}).
+
+@item
+The @code{mktime()} function for creating timestamps
+(@pxref{Time Functions}).
+
+@item
+The @code{and()}, @code{or()}, @code{xor()}, @code{compl()},
+@code{lshift()}, @code{rshift()}, and @code{strtonum()} functions
+(@pxref{Bitwise Functions}).
+@end itemize
+
+@item
+@cindex @code{next file} statement
+The support for @samp{next file} as two words was removed completely
+(@pxref{Nextfile Statement}).
+
+@item
+Additional commnd line options
+(@pxref{Options}):
+
+@itemize @minus
+@item
+The @option{--dump-variables} option to print a list of all global variables.
+
+@item
+The @option{--exec} option, for use in CGI scripts.
+
+@item
+The @option{--gen-po} command-line option and the use of a leading
+underscore to mark strings that should be translated
+(@pxref{String Extraction}).
+
+@item
+The @option{--non-decimal-data} option to allow non-decimal
+input data
+(@pxref{Nondecimal Data}).
+
+@item
+The @option{--profile} option and @command{pgawk}, the
+profiling version of @command{gawk}, for producing execution
+profiles of @command{awk} programs
+(@pxref{Profiling}).
+
+@item
+The @option{--use-lc-numeric} option to force @command{gawk}
+to use the locale's decimal point for parsing input data
+(@pxref{Conversion}).
+@end itemize
+
+@item
+The use of GNU Automake to help in standardizing the configuration process
+(@pxref{Quick Installation}).
+
+@item
+The use of GNU @code{gettext} for @command{gawk}'s own message output
+(@pxref{Gawk I18N}).
+
+@item
+BeOS support. This was later removed.
+
+@item
+Tandem support. This was later removed.
+
+@item
+The Atari port became officially unsupported.
+
+@item
+The source code changed to use ISO C standard-style function definitions.
+
+@item
+POSIX compliance for @code{sub()} and @code{gsub()}
+(@pxref{Gory Details}).
+
+@item
+The @code{length()} function was extended to accept an array argument
+and return the number of elements in the array
+(@pxref{String Functions}).
+
+@item
+The @code{strftime()} function acquired a third argument to
+enable printing times as UTC
+(@pxref{Time Functions}).
+@end itemize
+
+Version 4.0 of @command{gawk} introduced the following features:
+
+@itemize @bullet
+
+@item
+Variable additions:
+
+@itemize @minus
+@item
+@code{FPAT}, which allows you to specify a regexp that matches
+the fields, instead of matching the field separator
+(@pxref{Splitting By Content}).
+
+@item
+If @code{PROCINFO["sorted_in"]} exists, @samp{for(iggy in foo)} loops sort the
+indices before looping over them. The value of this element
+provides control over how the indices are sorted before the loop
+traversal starts
+(@pxref{Controlling Scanning}).
+
+@item
+@code{PROCINFO["strftime"]}, which holds
+the default format for @code{strftime()}
+(@pxref{Time Functions}).
+@end itemize
+
+@item
+The special files @file{/dev/pid}, @file{/dev/ppid}, @file{/dev/pgrpid}
+and @file{/dev/user} were removed.
+
+@item
+Support for IPv6 was added via the @file{/inet6} special file.
+@file{/inet4} forces IPv4 and @file{/inet} chooses the system
+default, which is probably IPv4
+(@pxref{TCP/IP Networking}).
+
+@item
+The use of @samp{\s} and @samp{\S} escape sequences in regular expressions
+(@pxref{GNU Regexp Operators}).
+
+@item
+Interval expressions became part of default regular expressions
+(@pxref{Regexp Operators}).
+
+@item
+POSIX character classes work even with @option{--traditional}
+(@pxref{Regexp Operators}).
+
+@item
+@code{break} and @code{continue} became invalid outside a loop,
+even with @option{--traditional}
+(@pxref{Break Statement}, and also see
+@ref{Continue Statement}).
+
+@item
+@code{fflush()}, @code{nextfile}, and @samp{delete @var{array}}
+are allowed if @option{--posix} or @option{--traditional}, since they
+are all now part of POSIX.
+
+@item
+An optional third argument to
+@code{asort()} and @code{asorti()}, specifying how to sort
+(@pxref{String Functions}).
+
+@item
+The behavior of @code{fflush()} changed to match Brian Kernighan's @command{awk}
+and for POSIX; now both @samp{fflush()} and @samp{fflush("")}
+flush all open output redirections
+(@pxref{I/O Functions}).
+
+@item
+The @code{isarray()}
+function which distinguishes if an item is an array
+or not, to make it possible to traverse multidimensional arrays
+(@pxref{Type Functions}).
+
+@item
+The @code{patsplit()}
+function which gives the same capability as @code{FPAT}, for splitting
+(@pxref{String Functions}).
+
+@item
+An optional fourth argument to the @code{split()} function,
+which is an array to hold the values of the separators
+(@pxref{String Functions}).
+
+@item
+Arrays of arrays
+(@pxref{Arrays of Arrays}).
+
+@item
+The @code{BEGINFILE} and @code{ENDFILE} special patterns
+(@pxref{BEGINFILE/ENDFILE}).
+
+@item
+Indirect function calls
+(@pxref{Indirect Calls}).
+
+@item
+@code{switch} / @code{case} are enabled by default
+(@pxref{Switch Statement}).
+
+@item
+Command line option changes
+(@pxref{Options}):
+
+@itemize @minus
+@item
+The @option{-b} and @option{--characters-as-bytes} options
+which prevent @command{gawk} from treating input as a multibyte string.
+
+@item
+The redundant @option{--compat}, @option{--copyleft}, and @option{--usage}
+long options were removed.
+
+@item
+The @option{--gen-po} option was finally renamed to the correct @option{--gen-pot}.
+
+@item
+The @option{--sandbox} option which disables certain features.
+
+@item
+All long options acquired corresponding short options, for use in @samp{#!} scripts.
+@end itemize
+
+@item
+Directories named on the command line now produce a warning, not a fatal
+error, unless @option{--posix} or @option{--traditional} are used
+(@pxref{Command line directories}).
+
+@item
+The @command{gawk} internals were rewritten, bringing the @command{dgawk}
+debugger and possibly improved performance
+(@pxref{Debugger}).
+
+@item
+Per the GNU Coding Standards, dynamic extensions must now define
+a global symbol indicating that they are GPL-compatible
+(@pxref{Plugin License}).
+
+@item
+In POSIX mode, string comparisons use @code{strcoll()} / @code{wcscoll()}
+(@pxref{POSIX String Comparison}).
+
+@item
+The option for raw sockets was removed, since it was never implemented
+(@pxref{TCP/IP Networking}).
+
+@item
+Ranges of the form @code{[d-h]} are treated as if they were in the
+C locale, no matter what kind of regexp is being used, and even if
+@option{--posix}
+(@pxref{Ranges and Locales}).
+
+@item
+Support was removed for the following systems:
+
+@itemize @minus
+@item
+Atari
+
+@item
+Amiga
+
+@item
+BeOS
+
+@item
+Cray
+
+@item
+MIPS RiscOS
+
+@item
+MS-DOS with Microsoft Compiler
+
+@item
+MS-Windows with Microsoft Compiler
+
+@item
+NeXT
+
+@item
+SunOS 3.x, Sun 386 (Road Runner)
+
+@item
+Tandem (non-POSIX)
+
+@item
+Prestandard VAX C compiler for VAX/VMS
+@end itemize
+@end itemize
+
+Version 4.1 of @command{gawk} introduced the following features:
+
+@itemize @bullet
+
+@item
+Three new arrays:
+@code{SYMTAB}, @code{FUNCTAB}, and @code{PROCINFO["identifiers"]}
+(@pxref{Auto-set}).
+
+@item
+The three executables @command{gawk}, @command{pgawk}, and @command{dgawk}, were merged into
+one, named just @command{gawk}. As a result the command line options changed.
+
+@item
+Command line option changes
+(@pxref{Options}):
+
+@itemize @minus
+@item
+The @option{-D} option invokes the debugger.
+
+@item
+The @option{-i} and @option{--include} options
+load @command{awk} library files.
+
+@item
+The @option{-l} and @option{--load} options for load compiled dynamic extensions.
+
+@item
+The @option{-M} and @option{--bignum} options enable MPFR.
+
+@item
+The @option{-o} only does pretty-printing.
+
+@item
+The @option{-p} option is used for profiling.
+
+@item
+The @option{-R} option was removed.
+@end itemize
+
+@item
+Support for high precision arithmetic with MPFR.
+(@pxref{Gawk and MPFR}).
+
+@item
+The @code{and()}, @code{or()} and @code{xor()} functions
+allow any number of arguments,
+with a minimum of two
+(@pxref{Bitwise Functions}).
+
+@item
+The dynamic extension interface was completely redone
+(@pxref{Dynamic Extensions}).
+
+@end itemize
+
+@c XXX ADD MORE STUFF HERE
+
@node Common Extensions
@appendixsec Common Extensions Summary
@@ -32767,7 +33376,7 @@ the three most widely-used freely available versions of @command{awk}
@item @samp{\x} Escape sequence @tab X @tab X @tab X
@item @code{RS} as regexp @tab @tab X @tab X
@item @code{FS} as null string @tab X @tab X @tab X
-@item @file{/dev/stdin} special file @tab X @tab @tab X
+@item @file{/dev/stdin} special file @tab X @tab X @tab X
@item @file{/dev/stdout} special file @tab X @tab X @tab X
@item @file{/dev/stderr} special file @tab X @tab X @tab X
@item @code{**} and @code{**=} operators @tab X @tab @tab X
@@ -32775,7 +33384,7 @@ the three most widely-used freely available versions of @command{awk}
@item @code{func} keyword @tab X @tab @tab X
@item @code{nextfile} statement @tab X @tab X @tab X
@item @code{delete} without subscript @tab X @tab X @tab X
-@item @code{length()} of an array @tab X @tab @tab X
+@item @code{length()} of an array @tab X @tab X @tab X
@item @code{BINMODE} variable @tab @tab X @tab X
@item Time related functions @tab @tab X @tab X
@end multitable