diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2014-01-23 20:01:32 +0200 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2014-01-23 20:01:32 +0200 |
commit | 7dbb03a642a1526e584b59e3fb4f18ef73acfe1a (patch) | |
tree | c238f77ae24fdde56321c65e9af01efb04c98689 | |
parent | 51038bda2cde5e5a5a4fa1fd54626d4cb107e7ef (diff) | |
download | egawk-7dbb03a642a1526e584b59e3fb4f18ef73acfe1a.tar.gz egawk-7dbb03a642a1526e584b59e3fb4f18ef73acfe1a.tar.bz2 egawk-7dbb03a642a1526e584b59e3fb4f18ef73acfe1a.zip |
Add Feature History to doc. Update common extensions.
-rw-r--r-- | doc/ChangeLog | 5 | ||||
-rw-r--r-- | doc/gawk.info | 1441 | ||||
-rw-r--r-- | doc/gawk.texi | 615 | ||||
-rw-r--r-- | doc/gawktexi.in | 615 |
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 |