[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gawk-diffs] [SCM] gawk branch, master, updated. 440d03600a15452975c8fe2
From: |
Arnold Robbins |
Subject: |
[gawk-diffs] [SCM] gawk branch, master, updated. 440d03600a15452975c8fe2e0c1bf349cd452bad |
Date: |
Thu, 09 May 2013 12:47:29 +0000 |
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "gawk".
The branch, master has been updated
via 440d03600a15452975c8fe2e0c1bf349cd452bad (commit)
from f23270d71c3cdb85b79677f07378eac9e6bcafb5 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://git.sv.gnu.org/cgit/gawk.git/commit/?id=440d03600a15452975c8fe2e0c1bf349cd452bad
commit 440d03600a15452975c8fe2e0c1bf349cd452bad
Author: Arnold D. Robbins <address@hidden>
Date: Thu May 9 15:43:49 2013 +0300
More doc cleanups.
diff --git a/TODO b/TODO
index bcc6cf6..421d101 100644
--- a/TODO
+++ b/TODO
@@ -1,4 +1,4 @@
-Thu May 2 22:37:09 IDT 2013
+Thu May 9 15:31:55 IDT 2013
============================
There were too many files tracking different thoughts and ideas for
@@ -32,6 +32,9 @@ Minor Cleanups and Code Improvements
In test/Makefile.am and generation scripts, quote $(srcdir) etc.
for windows or other systems with spaces in path names. Fun.
+ Enhance profiling to same comments in a byte-code that does nothing
+ but that can be used when pretty printing the program.
+
Minor New Features
------------------
diff --git a/doc/ChangeLog b/doc/ChangeLog
index aabda0f..6eec6ed 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -2,6 +2,7 @@
* gawktexi.in, gawk.1: Document that a regexp constant as the second
argument to index() produces a fatal error.
+ * gawktexi.in: More cleanups. Particularly, cleanup the index.
2013-04-27 Arnold D. Robbins <address@hidden>
diff --git a/doc/gawk.info b/doc/gawk.info
index 7d4f0d5..32f8ccc 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -1011,7 +1011,7 @@ for translating program messages into different languages
at runtime.
arithmetic facilities provided by `gawk'.
*note Dynamic Extensions::, describes how to add new variables and
-functions to `gawk' by writing extensions in C.
+functions to `gawk' by writing extensions in C or C++.
Part IV provides the appendices, the Glossary, and two licenses that
cover the `gawk' source code and this Info file, respectively. It
@@ -1032,8 +1032,7 @@ directions for `gawk' development.
*note Basic Concepts::, provides some very cursory background
material for those who are completely unfamiliar with computer
-programming. Also centralized there is a discussion of some of the
-issues surrounding floating-point numbers.
+programming.
The *note Glossary::, defines most, if not all, the significant
terms used throughout the book. If you find terms that you aren't
@@ -1155,10 +1154,11 @@ Guide'.
This edition maintains the basic structure of the previous editions.
For Edition 4.0, the content has been thoroughly reviewed and updated.
All references to `gawk' versions prior to 4.0 have been removed. Of
-significant note for this edition is *note Debugger::.
+significant note for this edition was *note Debugger::.
- For edition 4.1, the content has been reorganized into parts, and
-the major new addition is *note Dynamic Extensions::.
+ For edition 4, the content has been reorganized into parts, and the
+major new additions are *note Arbitrary Precision Arithmetic::, and
+*note Dynamic Extensions::.
`GAWK: Effective AWK Programming' will undoubtedly continue to
evolve. An electronic version comes with the `gawk' distribution from
@@ -1289,7 +1289,7 @@ to take advantage of those opportunities.
Arnold Robbins
Nof Ayalon
ISRAEL
-April, 2013
+May, 2013
File: gawk.info, Node: Getting Started, Next: Invoking Gawk, Prev: Preface,
Up: Top
@@ -7143,8 +7143,8 @@ decimal point when reading the `awk' program source code,
and for
command-line variable assignments (*note Other Arguments::). However,
when interpreting input data, for `print' and `printf' output, and for
number to string conversion, the local decimal point character is used.
-Here are some examples indicating the difference in behavior, on a
-GNU/Linux system:
+(d.c.). Here are some examples indicating the difference in behavior,
+on a GNU/Linux system:
$ export POSIXLY_CORRECT=1 Force POSIX behavior
$ gawk 'BEGIN { printf "%g\n", 3.1415927 }'
@@ -7241,17 +7241,17 @@ scores:
The following list provides the arithmetic operators in `awk', in
order from the highest precedence to the lowest:
+`X ^ Y'
+`X ** Y'
+ Exponentiation; X raised to the Y power. `2 ^ 3' has the value
+ eight; the character sequence `**' is equivalent to `^'. (c.e.)
+
`- X'
Negation.
`+ X'
Unary plus; the expression is converted to a number.
-`X ^ Y'
-`X ** Y'
- Exponentiation; X raised to the Y power. `2 ^ 3' has the value
- eight; the character sequence `**' is equivalent to `^'. (c.e.)
-
`X * Y'
Multiplication.
@@ -8669,8 +8669,8 @@ program are merged, in the order they are read by `gawk',
and all
reads the first record from a file. `FILENAME' is set to the name of
the current file, and `FNR' is set to zero.
- The `BEGINFILE' rule provides you the opportunity for two tasks that
-would otherwise be difficult or impossible to perform:
+ The `BEGINFILE' rule provides you the opportunity to accomplish two
+tasks that would otherwise be difficult or impossible to perform:
* You can test if the file is readable. Normally, it is a fatal
error if a file named on the command line cannot be opened for
@@ -18651,7 +18651,8 @@ output. They are as follows:
scalar, it gets parenthesized.
* `gawk' supplies leading comments in front of the `BEGIN' and `END'
- rules, the pattern/action rules, and the functions.
+ rules, the `BEGINFILE' and `ENDFILE' rules, the pattern/action
+ rules, and the functions.
The profiled version of your program may not look exactly like what
@@ -18807,7 +18808,7 @@ in this order:
`fr.po' for a French translation.
5. Each language's `.po' file is converted into a binary message
- object (`.mo') file. A message object file contains the original
+ object (`.gmo') file. A message object file contains the original
messages and their translations in a binary format that allows
fast lookup of translations at runtime.
@@ -18815,7 +18816,7 @@ in this order:
are installed in a standard place.
7. For testing and development, it is possible to tell `gettext' to
- use `.mo' files in a different directory than the standard one by
+ use `.gmo' files in a different directory than the standard one by
using the `bindtextdomain()' function.
8. At runtime, `guide' looks up each string via a call to
@@ -18946,7 +18947,7 @@ internationalization:
function apply.
`bindtextdomain(DIRECTORY [, DOMAIN])'
- Change the directory in which `gettext' looks for `.mo' files, in
+ Change the directory in which `gettext' looks for `.gmo' files, in
case they will not or cannot be placed in the standard locations
(e.g., during testing). Return the directory in which DOMAIN is
"bound."
@@ -18986,7 +18987,7 @@ outlined in *note Explaining gettext::, like so:
(`"adminprog"') in which to find the message, but it uses the
default `"LC_MESSAGES"' category.
- 4. During development, you might want to put the `.mo' file in a
+ 4. During development, you might want to put the `.gmo' file in a
private directory for testing. This is done with the
`bindtextdomain()' built-in function:
@@ -19250,19 +19251,19 @@ Following are the translations:
msgstr "Like, the scoop is"
The next step is to make the directory to hold the binary message
-object file and then to create the `guide.mo' file. The directory
+object file and then to create the `guide.gmo' file. The directory
layout shown here is standard for GNU `gettext' on GNU/Linux systems.
Other versions of `gettext' may use a different layout:
$ mkdir en_US en_US/LC_MESSAGES
The `msgfmt' utility does the conversion from human-readable `.po'
-file to machine-readable `.mo' file. By default, `msgfmt' creates a
+file to machine-readable `.gmo' file. By default, `msgfmt' creates a
file named `messages'. This file must be renamed and placed in the
proper directory so that `gawk' can find it:
$ msgfmt guide-mellow.po
- $ mv messages en_US/LC_MESSAGES/guide.mo
+ $ mv messages en_US/LC_MESSAGES/guide.gmo
Finally, we run the program to test it:
@@ -25143,6 +25144,10 @@ Feature BWK Awk Mawk GNU Awk
`BINMODE' variable X X
Time related functions X X
+ (Technically speaking, as of late 2012, `fflush()', `delete ARRAY',
+and `nextfile' are no longer extensions, since they have been added to
+POSIX.)
+
File: gawk.info, Node: Ranges and Locales, Next: Contributors, Prev: Common
Extensions, Up: Language History
@@ -25317,7 +25322,8 @@ Info file, in approximate chronological order:
various PC platforms.
* Christos Zoulas provided the `extension()' built-in function for
- dynamically adding new modules. (This was removed at `gawk' 4.1.)
+ dynamically adding new modules. (This was obsoleted at `gawk'
+ 4.1.)
* Ju"rgen Kahrs contributed the initial version of the TCP/IP
networking code and documentation, and motivated the inclusion of
@@ -25365,6 +25371,8 @@ Info file, in approximate chronological order:
- The work to merge the three versions of `gawk' into one, for
the 4.1 release.
+ - Improved array internals for arrays indexed by integers.
+
* Efraim Yawitz contributed the original text for *note Debugger::.
* The development of the extension API first released with `gawk'
@@ -27851,7 +27859,7 @@ Octal
Thus, `013' is 11 (one times 8 plus 3). *Note
Nondecimal-numbers::.
-P1003.1, P1003.2
+P1003.1
See "POSIX."
Pattern
@@ -29269,11 +29277,9 @@ Index
* ! (exclamation point), !~ operator: Regexp Usage. (line 19)
* " (double quote) <1>: Quoting. (line 37)
* " (double quote): Read Terminal. (line 25)
-* " (double quote), regexp constants: Computed Regexps. (line 28)
+* " (double quote), in regexp constants: Computed Regexps. (line 28)
* # (number sign), #! (executable scripts): Executable Scripts.
(line 6)
-* # (number sign), #! (executable scripts), portability issues with:
Executable Scripts.
- (line 6)
* # (number sign), commenting: Comments. (line 6)
* $ (dollar sign): Regexp Operators. (line 35)
* $ (dollar sign), $ field operator <1>: Precedence. (line 43)
@@ -29308,15 +29314,13 @@ Index
* * (asterisk), *= operator: Assignment Ops. (line 129)
* + (plus sign): Regexp Operators. (line 102)
* + (plus sign), + operator: Precedence. (line 52)
-* + (plus sign), ++ (decrement/increment operators): Increment Ops.
- (line 11)
* + (plus sign), ++ operator <1>: Precedence. (line 46)
-* + (plus sign), ++ operator: Increment Ops. (line 40)
+* + (plus sign), ++ operator: Increment Ops. (line 11)
* + (plus sign), += operator <1>: Precedence. (line 95)
* + (plus sign), += operator: Assignment Ops. (line 82)
* , (comma), in range patterns: Ranges. (line 6)
* - (hyphen), - operator: Precedence. (line 52)
-* - (hyphen), -- (decrement/increment) operator: Precedence. (line 46)
+* - (hyphen), -- operator <1>: Precedence. (line 46)
* - (hyphen), -- operator: Increment Ops. (line 48)
* - (hyphen), -= operator <1>: Precedence. (line 95)
* - (hyphen), -= operator: Assignment Ops. (line 129)
@@ -29382,7 +29386,7 @@ Index
* -F option: Options. (line 21)
* -f option: Long. (line 12)
* -F option, -Ft sets FS to TAB: Options. (line 301)
-* -f option, on command line: Options. (line 306)
+* -f option, multiple uses: Options. (line 306)
* -g option: Options. (line 161)
* -h option: Options. (line 168)
* -i option: Options. (line 32)
@@ -29396,18 +29400,18 @@ Index
* -p option: Options. (line 235)
* -r option: Options. (line 272)
* -S option: Options. (line 279)
+* -v option: Assignment Options. (line 12)
* -V option: Options. (line 293)
* -v option: Options. (line 46)
-* -v option, variables, assigning: Assignment Options. (line 12)
* -W option: Options. (line 60)
* . (period): Regexp Operators. (line 43)
-* .mo files: Explaining gettext. (line 41)
-* .mo files, converting from .po: I18N Example. (line 62)
-* .mo files, specifying directory of <1>: Programmer i18n. (line 47)
-* .mo files, specifying directory of: Explaining gettext. (line 53)
+* .gmo files: Explaining gettext. (line 41)
+* .gmo files, converting from .po: I18N Example. (line 62)
+* .gmo files, specifying directory of <1>: Programmer i18n. (line 47)
+* .gmo files, specifying directory of: Explaining gettext. (line 53)
* .po files <1>: Translator i18n. (line 6)
* .po files: Explaining gettext. (line 36)
-* .po files, converting to .mo: I18N Example. (line 62)
+* .po files, converting to .gmo: I18N Example. (line 62)
* .pot files: Explaining gettext. (line 30)
* / (forward slash): Regexp. (line 10)
* / (forward slash), / operator: Precedence. (line 55)
@@ -29488,7 +29492,7 @@ Index
* \ (backslash), \x escape sequence: Escape Sequences. (line 61)
* \ (backslash), \y operator (gawk): GNU Regexp Operators.
(line 38)
-* \ (backslash), as field separators: Command Line Field Separator.
+* \ (backslash), as field separator: Command Line Field Separator.
(line 27)
* \ (backslash), continuing lines and <1>: Egrep Program. (line 220)
* \ (backslash), continuing lines and: Statements/Lines. (line 19)
@@ -29502,17 +29506,17 @@ Index
* \ (backslash), in escape sequences: Escape Sequences. (line 6)
* \ (backslash), in escape sequences, POSIX and: Escape Sequences.
(line 112)
-* \ (backslash), regexp constants: Computed Regexps. (line 28)
-* ^ (caret) <1>: GNU Regexp Operators.
+* \ (backslash), in regexp constants: Computed Regexps. (line 28)
+* ^ (caret): GNU Regexp Operators.
(line 59)
-* ^ (caret): Regexp Operators. (line 22)
* ^ (caret), ^ operator: Precedence. (line 49)
* ^ (caret), ^= operator <1>: Precedence. (line 95)
* ^ (caret), ^= operator: Assignment Ops. (line 129)
* ^ (caret), in bracket expressions: Bracket Expressions. (line 17)
+* ^ (caret), regexp operator: Regexp Operators. (line 22)
* ^, in FS: Regexp Field Splitting.
(line 59)
-* _ (underscore), _ C macro: Explaining gettext. (line 70)
+* _ (underscore), C macro: Explaining gettext. (line 70)
* _ (underscore), in names of private variables: Library Names.
(line 29)
* _ (underscore), translatable string: Programmer i18n. (line 69)
@@ -29530,14 +29534,12 @@ Index
* adding, fields: Changing Fields. (line 53)
* advanced features, fixed-width data: Constant Size. (line 9)
* advanced features, gawk: Advanced Features. (line 6)
-* advanced features, gawk, network programming: TCP/IP Networking.
- (line 6)
-* advanced features, gawk, nondecimal input data: Nondecimal Data.
- (line 6)
-* advanced features, gawk, processes, communicating with: Two-way I/O.
- (line 23)
* advanced features, network connections, See Also networks, connections:
Advanced Features.
(line 6)
+* advanced features, network programming: TCP/IP Networking. (line 6)
+* advanced features, nondecimal input data: Nondecimal Data. (line 6)
+* advanced features, processes, communicating with: Two-way I/O.
+ (line 23)
* advanced features, specifying field content: Splitting By Content.
(line 9)
* Aho, Alfred <1>: Contributors. (line 12)
@@ -29638,7 +29640,6 @@ Index
* atan2() function: Numeric Functions. (line 11)
* awf (amazingly workable formatter) program: Glossary. (line 25)
* awk debugging, enabling: Options. (line 122)
-* awk enabling: Options. (line 220)
* awk language, POSIX version: Assignment Ops. (line 136)
* awk profiling, enabling: Options. (line 235)
* awk programs <1>: Two Rules. (line 6)
@@ -29733,7 +29734,7 @@ Index
* backslash (\), \x escape sequence: Escape Sequences. (line 61)
* backslash (\), \y operator (gawk): GNU Regexp Operators.
(line 38)
-* backslash (\), as field separators: Command Line Field Separator.
+* backslash (\), as field separator: Command Line Field Separator.
(line 27)
* backslash (\), continuing lines and <1>: Egrep Program. (line 220)
* backslash (\), continuing lines and: Statements/Lines. (line 19)
@@ -29747,7 +29748,7 @@ Index
* backslash (\), in escape sequences: Escape Sequences. (line 6)
* backslash (\), in escape sequences, POSIX and: Escape Sequences.
(line 112)
-* backslash (\), regexp constants: Computed Regexps. (line 28)
+* backslash (\), in regexp constants: Computed Regexps. (line 28)
* backtrace debugger command: Execution Stack. (line 13)
* BBS-list file: Sample Data Files. (line 6)
* Beebe, Nelson <1>: Other Versions. (line 78)
@@ -29777,7 +29778,7 @@ Index
* BEGINFILE pattern, Boolean patterns and: Expression Patterns.
(line 73)
* beginfile() user-defined function: Filetrans Function. (line 62)
-* Benzinger, Michael: Contributors. (line 97)
+* Benzinger, Michael: Contributors. (line 98)
* Berry, Karl: Acknowledgments. (line 33)
* binary input/output: User-modified. (line 10)
* bindtextdomain() function (C library): Explaining gettext. (line 49)
@@ -29820,14 +29821,14 @@ Index
* Brennan, Michael <2>: Two-way I/O. (line 6)
* Brennan, Michael <3>: Simple Sed. (line 25)
* Brennan, Michael: Delete. (line 56)
-* Brian Kernighan's awk, extensions <1>: Other Versions. (line 13)
+* Brian Kernighan's awk: Other Versions. (line 13)
* Brian Kernighan's awk, extensions: BTL. (line 6)
-* Broder, Alan J.: Contributors. (line 88)
-* Brown, Martin: Contributors. (line 82)
+* Broder, Alan J.: Contributors. (line 89)
+* Brown, Martin: Contributors. (line 83)
* BSD-based operating systems: Glossary. (line 624)
* bt debugger command (alias for backtrace): Execution Stack. (line 13)
* Buening, Andreas <1>: Bugs. (line 71)
-* Buening, Andreas <2>: Contributors. (line 92)
+* Buening, Andreas <2>: Contributors. (line 93)
* Buening, Andreas: Acknowledgments. (line 60)
* buffering, input/output <1>: Two-way I/O. (line 70)
* buffering, input/output: I/O Functions. (line 137)
@@ -29848,13 +29849,13 @@ Index
(line 47)
* call by value: Pass By Value/Reference.
(line 18)
-* caret (^) <1>: GNU Regexp Operators.
+* caret (^): GNU Regexp Operators.
(line 59)
-* caret (^): Regexp Operators. (line 22)
* caret (^), ^ operator: Precedence. (line 49)
* caret (^), ^= operator <1>: Precedence. (line 95)
* caret (^), ^= operator: Assignment Ops. (line 129)
* caret (^), in bracket expressions: Bracket Expressions. (line 17)
+* caret (^), regexp operator: Regexp Operators. (line 22)
* case keyword: Switch Statement. (line 6)
* case sensitivity, array indices and: Array Intro. (line 92)
* case sensitivity, converting case: String Functions. (line 524)
@@ -29874,7 +29875,11 @@ Index
* characters, transliterating: Translate Program. (line 6)
* characters, values of as numbers: Ordinal Functions. (line 6)
* Chassell, Robert J.: Acknowledgments. (line 33)
+* chdir extension function: Extension Sample File Functions.
+ (line 12)
* chem utility: Glossary. (line 151)
+* chr extension function: Extension Sample Ord.
+ (line 15)
* chr() user-defined function: Ordinal Functions. (line 16)
* clear debugger command: Breakpoint Control. (line 36)
* Cliff random numbers: Cliff Random Function.
@@ -29887,7 +29892,7 @@ Index
* close() function <3>: Getline/Pipe. (line 28)
* close() function: Getline/Variable/File.
(line 30)
-* close() function, return values: Close Files And Pipes.
+* close() function, return value: Close Files And Pipes.
(line 130)
* close() function, two-way pipes and: Two-way I/O. (line 77)
* Close, Diane <1>: Contributors. (line 21)
@@ -29920,7 +29925,7 @@ Index
(line 10)
* commenting: Comments. (line 6)
* commenting, backslash continuation and: Statements/Lines. (line 76)
-* common extensions, ** operator: Arithmetic Ops. (line 36)
+* common extensions, ** operator: Arithmetic Ops. (line 30)
* common extensions, **= operator: Assignment Ops. (line 136)
* common extensions, /dev/stderr special file: Special FD. (line 46)
* common extensions, /dev/stdin special file: Special FD. (line 46)
@@ -29928,11 +29933,9 @@ Index
* common extensions, \x escape sequence: Escape Sequences. (line 61)
* common extensions, BINMODE variable: PC Using. (line 34)
* common extensions, delete to delete entire arrays: Delete. (line 39)
-* common extensions, fflush() function: I/O Functions. (line 25)
* common extensions, func keyword: Definition Syntax. (line 83)
* common extensions, length() applied to an array: String Functions.
(line 198)
-* common extensions, nextfile statement: Nextfile Statement. (line 6)
* common extensions, RS as a regexp: Records. (line 120)
* common extensions, single character fields: Single Character Fields.
(line 6)
@@ -30009,9 +30012,10 @@ Index
* d debugger command (alias for delete): Breakpoint Control. (line 64)
* d.c., See dark corner: Conventions. (line 38)
* dark corner <1>: Glossary. (line 197)
-* dark corner <2>: Truth Values. (line 24)
-* dark corner <3>: Assignment Ops. (line 147)
* dark corner: Conventions. (line 38)
+* dark corner, "0" is actually true: Truth Values. (line 24)
+* dark corner, /= operator vs. /=.../ regexp constant: Assignment Ops.
+ (line 147)
* dark corner, ^, in FS: Regexp Field Splitting.
(line 59)
* dark corner, array subscripts: Uninitialized Subscripts.
@@ -30037,6 +30041,7 @@ Index
* dark corner, input files: Records. (line 103)
* dark corner, invoking awk: Command Line. (line 16)
* dark corner, length() function: String Functions. (line 184)
+* dark corner, locale's decimal point character: Conversion. (line 77)
* dark corner, multiline records: Multiple Line. (line 35)
* dark corner, NF variable, decrementing: Changing Fields. (line 107)
* dark corner, OFMT variable: OFMT. (line 27)
@@ -30058,7 +30063,7 @@ Index
* dates, converting to timestamps: Time Functions. (line 75)
* dates, information related to, localization: Explaining gettext.
(line 115)
-* Davies, Stephen <1>: Contributors. (line 74)
+* Davies, Stephen <1>: Contributors. (line 75)
* Davies, Stephen: Acknowledgments. (line 60)
* dcgettext() function (gawk) <1>: Programmer i18n. (line 19)
* dcgettext() function (gawk): I18N Functions. (line 22)
@@ -30190,6 +30195,8 @@ Index
(line 6)
* differences in awk and gawk, BEGIN/END patterns: I/O And BEGIN/END.
(line 16)
+* differences in awk and gawk, BEGINFILE/ENDFILE patterns: BEGINFILE/ENDFILE.
+ (line 6)
* differences in awk and gawk, BINMODE variable <1>: PC Using.
(line 34)
* differences in awk and gawk, BINMODE variable: User-modified.
@@ -30222,8 +30229,6 @@ Index
* differences in awk and gawk, LINT variable: User-modified. (line 98)
* differences in awk and gawk, match() function: String Functions.
(line 261)
-* differences in awk and gawk, next/nextfile statements: Nextfile Statement.
- (line 6)
* differences in awk and gawk, print/printf statements: Format Modifiers.
(line 13)
* differences in awk and gawk, PROCINFO array: Auto-set. (line 130)
@@ -30269,7 +30274,7 @@ Index
* double precision floating-point: General Arithmetic. (line 21)
* double quote (") <1>: Quoting. (line 37)
* double quote ("): Read Terminal. (line 25)
-* double quote ("), regexp constants: Computed Regexps. (line 28)
+* double quote ("), in regexp constants: Computed Regexps. (line 28)
* down debugger command: Execution Stack. (line 21)
* Drepper, Ulrich: Acknowledgments. (line 52)
* dump debugger command: Miscellaneous Debugger Commands.
@@ -30359,6 +30364,7 @@ Index
* exit status, of gawk: Exit Status. (line 6)
* exp() function: Numeric Functions. (line 18)
* expand utility: Very Simple. (line 69)
+* Expat XML parser library: gawkextlib. (line 33)
* expressions: Expressions. (line 6)
* expressions, as patterns: Expression Patterns. (line 6)
* expressions, assignment: Assignment Ops. (line 6)
@@ -30370,9 +30376,9 @@ Index
(line 9)
* expressions, selecting: Conditional Exp. (line 6)
* Extended Regular Expressions (EREs): Bracket Expressions. (line 24)
-* extensions, Brian Kernighan's awk <1>: Other Versions. (line 13)
+* extensions, Brian Kernighan's awk <1>: Common Extensions. (line 6)
* extensions, Brian Kernighan's awk: BTL. (line 6)
-* extensions, common, ** operator: Arithmetic Ops. (line 36)
+* extensions, common, ** operator: Arithmetic Ops. (line 30)
* extensions, common, **= operator: Assignment Ops. (line 136)
* extensions, common, /dev/stderr special file: Special FD. (line 46)
* extensions, common, /dev/stdin special file: Special FD. (line 46)
@@ -30380,15 +30386,14 @@ Index
* extensions, common, \x escape sequence: Escape Sequences. (line 61)
* extensions, common, BINMODE variable: PC Using. (line 34)
* extensions, common, delete to delete entire arrays: Delete. (line 39)
-* extensions, common, fflush() function: I/O Functions. (line 25)
* extensions, common, func keyword: Definition Syntax. (line 83)
* extensions, common, length() applied to an array: String Functions.
(line 198)
-* extensions, common, nextfile statement: Nextfile Statement. (line 6)
* extensions, common, RS as a regexp: Records. (line 120)
* extensions, common, single character fields: Single Character Fields.
(line 6)
* extensions, in gawk, not in POSIX awk: POSIX/GNU. (line 6)
+* extensions, mawk: Common Extensions. (line 6)
* extract.awk program: Extract Program. (line 79)
* extraction, of marked strings (internationalization): String Extraction.
(line 6)
@@ -30445,13 +30450,13 @@ Index
* FILENAME variable: Reading Files. (line 6)
* FILENAME variable, getline, setting with: Getline Notes. (line 19)
* filenames, assignments as: Ignoring Assigns. (line 6)
-* files, .mo: Explaining gettext. (line 41)
-* files, .mo, converting from .po: I18N Example. (line 62)
-* files, .mo, specifying directory of <1>: Programmer i18n. (line 47)
-* files, .mo, specifying directory of: Explaining gettext. (line 53)
+* files, .gmo: Explaining gettext. (line 41)
+* files, .gmo, converting from .po: I18N Example. (line 62)
+* files, .gmo, specifying directory of <1>: Programmer i18n. (line 47)
+* files, .gmo, specifying directory of: Explaining gettext. (line 53)
* files, .po <1>: Translator i18n. (line 6)
* files, .po: Explaining gettext. (line 36)
-* files, .po, converting to .mo: I18N Example. (line 62)
+* files, .po, converting to .gmo: I18N Example. (line 62)
* files, .pot: Explaining gettext. (line 30)
* files, /dev/... special files: Special FD. (line 46)
* files, /inet/... (gawk): TCP/IP Networking. (line 6)
@@ -30506,11 +30511,15 @@ Index
(line 6)
* floating-point, numbers <1>: Unexpected Results. (line 6)
* floating-point, numbers: General Arithmetic. (line 6)
+* fnmatch extension function: Extension Sample Fnmatch.
+ (line 6)
* FNR variable <1>: Auto-set. (line 103)
* FNR variable: Records. (line 6)
* FNR variable, changing: Auto-set. (line 311)
* for statement: For Statement. (line 6)
-* for statement, in arrays: Scanning an Array. (line 20)
+* for statement, looping over arrays: Scanning an Array. (line 20)
+* fork extension function: Extension Sample Fork.
+ (line 11)
* format specifiers, mixing regular with positional specifiers: Printf
Ordering.
(line 57)
* format specifiers, printf statement: Control Letters. (line 6)
@@ -30551,6 +30560,8 @@ Index
* FSF (Free Software Foundation) <1>: Glossary. (line 305)
* FSF (Free Software Foundation) <2>: Getting. (line 10)
* FSF (Free Software Foundation): Manual History. (line 6)
+* fts extension function: Extension Sample File Functions.
+ (line 77)
* FUNCTAB array: Auto-set. (line 119)
* function calls: Function Calls. (line 6)
* function calls, indirect: Indirect Calls. (line 6)
@@ -30599,7 +30610,7 @@ Index
(line 45)
* G-d: Acknowledgments. (line 78)
* Garfinkle, Scott: Contributors. (line 35)
-* gawk program, dynamic profiling: Profiling. (line 171)
+* gawk program, dynamic profiling: Profiling. (line 172)
* gawk, ARGIND variable in: Other Arguments. (line 12)
* gawk, awk and <1>: This Manual. (line 14)
* gawk, awk and: Preface. (line 23)
@@ -30693,6 +30704,7 @@ Index
* gawk, VMS version of: VMS Installation. (line 6)
* gawk, word-boundary operator: GNU Regexp Operators.
(line 63)
+* gawkextlib project: gawkextlib. (line 6)
* General Public License (GPL): Glossary. (line 314)
* General Public License, See GPL: Manual History. (line 11)
* gensub() function (gawk) <1>: String Functions. (line 86)
@@ -30736,7 +30748,7 @@ Index
* gettext library: Explaining gettext. (line 6)
* gettext library, locale categories: Explaining gettext. (line 80)
* gettext() function (C library): Explaining gettext. (line 62)
-* gettimeofday time extension function: Extension Sample Time.
+* gettimeofday extension function: Extension Sample Time.
(line 13)
* GMP: Arbitrary Precision Arithmetic.
(line 6)
@@ -30771,19 +30783,19 @@ Index
(line 66)
* Hankerson, Darrel <1>: Contributors. (line 61)
* Hankerson, Darrel: Acknowledgments. (line 60)
-* Haque, John: Contributors. (line 103)
+* Haque, John: Contributors. (line 104)
* Hartholz, Elaine: Acknowledgments. (line 38)
* Hartholz, Marshall: Acknowledgments. (line 38)
-* Hasegawa, Isamu: Contributors. (line 94)
+* Hasegawa, Isamu: Contributors. (line 95)
* help debugger command: Miscellaneous Debugger Commands.
(line 66)
* hexadecimal numbers: Nondecimal-numbers. (line 6)
* hexadecimal values, enabling interpretation of: Options. (line 207)
* histsort.awk program: History Sorting. (line 25)
* Hughes, Phil: Acknowledgments. (line 43)
-* HUP signal: Profiling. (line 203)
+* HUP signal: Profiling. (line 204)
* hyphen (-), - operator: Precedence. (line 52)
-* hyphen (-), -- (decrement/increment) operators: Precedence. (line 46)
+* hyphen (-), -- operator <1>: Precedence. (line 46)
* hyphen (-), -- operator: Increment Ops. (line 48)
* hyphen (-), -= operator <1>: Precedence. (line 95)
* hyphen (-), -= operator: Assignment Ops. (line 129)
@@ -30815,13 +30827,13 @@ Index
* implementation issues, gawk, limits <1>: Redirection. (line 135)
* implementation issues, gawk, limits: Getline Notes. (line 14)
* in operator <1>: Id Program. (line 93)
-* in operator <2>: For Statement. (line 75)
-* in operator <3>: Precedence. (line 83)
+* in operator <2>: Scanning an Array. (line 17)
+* in operator <3>: Reference to Elements.
+ (line 37)
+* in operator <4>: For Statement. (line 75)
+* in operator <5>: Precedence. (line 83)
* in operator: Comparison Operators.
(line 11)
-* in operator, arrays and <1>: Scanning an Array. (line 17)
-* in operator, arrays and: Reference to Elements.
- (line 37)
* increment operators: Increment Ops. (line 6)
* index() function: String Functions. (line 155)
* indexing arrays: Array Intro. (line 50)
@@ -30830,6 +30842,8 @@ Index
(line 6)
* info debugger command: Debugger Info. (line 13)
* initialization, automatic: More Complex. (line 38)
+* inplace extension: Extension Sample Inplace.
+ (line 6)
* input files: Reading Files. (line 6)
* input files, closing: Close Files And Pipes.
(line 6)
@@ -30853,7 +30867,7 @@ Index
* insomnia, cure for: Alarm Program. (line 6)
* installation, VMS: VMS Installation. (line 6)
* installing gawk: Installation. (line 6)
-* INT signal (MS-Windows): Profiling. (line 206)
+* INT signal (MS-Windows): Profiling. (line 207)
* int() function: Numeric Functions. (line 23)
* integer, arbitrary precision: Arbitrary Precision Integers.
(line 6)
@@ -30892,7 +30906,7 @@ Index
* jawk: Other Versions. (line 106)
* Jedi knights: Undocumented. (line 6)
* join() user-defined function: Join Function. (line 18)
-* Kahrs, Ju"rgen <1>: Contributors. (line 70)
+* Kahrs, Ju"rgen <1>: Contributors. (line 71)
* Kahrs, Ju"rgen: Acknowledgments. (line 60)
* Kasal, Stepan: Acknowledgments. (line 60)
* Kenobi, Obi-Wan: Undocumented. (line 6)
@@ -30904,7 +30918,7 @@ Index
* Kernighan, Brian <6>: Acknowledgments. (line 72)
* Kernighan, Brian <7>: Conventions. (line 34)
* Kernighan, Brian: History. (line 17)
-* kill command, dynamic profiling: Profiling. (line 180)
+* kill command, dynamic profiling: Profiling. (line 181)
* Knights, jedi: Undocumented. (line 6)
* Knuth, Donald: Arbitrary Precision Arithmetic.
(line 6)
@@ -31023,7 +31037,7 @@ Index
* matching, leftmost longest: Multiple Line. (line 26)
* matching, null strings: Gory Details. (line 164)
* mawk program: Other Versions. (line 44)
-* McPhee, Patrick: Contributors. (line 100)
+* McPhee, Patrick: Contributors. (line 101)
* message object files: Explaining gettext. (line 41)
* message object files, converting from portable object files: I18N Example.
(line 62)
@@ -31106,8 +31120,6 @@ Index
* null strings, quoting and: Quoting. (line 62)
* number sign (#), #! (executable scripts): Executable Scripts.
(line 6)
-* number sign (#), #! (executable scripts), portability issues with:
Executable Scripts.
- (line 6)
* number sign (#), commenting: Comments. (line 6)
* numbers, as array subscripts: Numeric Array Subscripts.
(line 6)
@@ -31186,6 +31198,8 @@ Index
* OR bitwise operation: Bitwise Functions. (line 6)
* or Boolean-logic operator: Boolean Ops. (line 6)
* or() function (gawk): Bitwise Functions. (line 49)
+* ord extension function: Extension Sample Ord.
+ (line 12)
* ord() user-defined function: Ordinal Functions. (line 16)
* order of evaluation, concatenation: Concatenation. (line 42)
* ORS variable <1>: User-modified. (line 129)
@@ -31207,11 +31221,10 @@ Index
* p debugger command (alias for print): Viewing And Changing Data.
(line 36)
* P1003.1 POSIX standard: Glossary. (line 462)
-* P1003.2 POSIX standard: Glossary. (line 462)
* parentheses () <1>: Profiling. (line 138)
* parentheses (): Regexp Operators. (line 79)
* password file: Passwd Functions. (line 16)
-* patsplit() function: String Functions. (line 295)
+* patsplit() function (gawk): String Functions. (line 295)
* patterns: Patterns and Actions.
(line 6)
* patterns, comparison expressions as: Expression Patterns. (line 14)
@@ -31232,7 +31245,7 @@ Index
* percent sign (%), %= operator: Assignment Ops. (line 129)
* period (.): Regexp Operators. (line 43)
* Perl: Future Extensions. (line 6)
-* Peters, Arno: Contributors. (line 85)
+* Peters, Arno: Contributors. (line 86)
* Peterson, Hal: Contributors. (line 40)
* pipes, closing: Close Files And Pipes.
(line 6)
@@ -31242,10 +31255,8 @@ Index
* Pitts, Dave: Acknowledgments. (line 60)
* plus sign (+): Regexp Operators. (line 102)
* plus sign (+), + operator: Precedence. (line 52)
-* plus sign (+), ++ (decrement/increment operators): Increment Ops.
- (line 11)
* plus sign (+), ++ operator <1>: Precedence. (line 46)
-* plus sign (+), ++ operator: Increment Ops. (line 40)
+* plus sign (+), ++ operator: Increment Ops. (line 11)
* plus sign (+), += operator <1>: Precedence. (line 95)
* plus sign (+), += operator: Assignment Ops. (line 82)
* pointers to functions: Indirect Calls. (line 6)
@@ -31262,7 +31273,6 @@ Index
* portability, data files as single record: Records. (line 179)
* portability, deleting array elements: Delete. (line 56)
* portability, example programs: Library Functions. (line 42)
-* portability, fflush() function and: I/O Functions. (line 29)
* portability, functions, defining: Definition Syntax. (line 99)
* portability, gawk: New Ports. (line 6)
* portability, gettext library and: Explaining gettext. (line 10)
@@ -31294,7 +31304,7 @@ Index
* POSIX awk, ** operator and: Precedence. (line 98)
* POSIX awk, **= operator and: Assignment Ops. (line 142)
* POSIX awk, < operator and: Getline/File. (line 26)
-* POSIX awk, arithmetic operators and: Arithmetic Ops. (line 36)
+* POSIX awk, arithmetic operators and: Arithmetic Ops. (line 30)
* POSIX awk, backslashes in string constants: Escape Sequences.
(line 112)
* POSIX awk, BEGIN/END patterns: I/O And BEGIN/END. (line 16)
@@ -31379,8 +31389,7 @@ Index
* PROCINFO array <6>: Auto-set. (line 130)
* PROCINFO array: Obsolete. (line 11)
* profiling awk programs: Profiling. (line 6)
-* profiling awk programs, dynamically: Profiling. (line 171)
-* profiling gawk: Profiling. (line 6)
+* profiling awk programs, dynamically: Profiling. (line 172)
* program, definition of: Getting Started. (line 21)
* programmers, attractiveness of: Two-way I/O. (line 6)
* programming conventions, --non-decimal-data option: Nondecimal Data.
@@ -31393,7 +31402,8 @@ Index
(line 10)
* programming conventions, functions, writing: Definition Syntax.
(line 55)
-* programming conventions, gawk internals: Internal File Ops. (line 45)
+* programming conventions, gawk extensions: Internal File Ops.
+ (line 45)
* programming conventions, private variable names: Library Names.
(line 23)
* programming language, recipe for: History. (line 6)
@@ -31414,7 +31424,7 @@ Index
* QuikTrim Awk: Other Versions. (line 128)
* quit debugger command: Miscellaneous Debugger Commands.
(line 99)
-* QUIT signal (MS-Windows): Profiling. (line 206)
+* QUIT signal (MS-Windows): Profiling. (line 207)
* quoting <1>: Comments. (line 27)
* quoting <2>: Long. (line 26)
* quoting: Read Terminal. (line 25)
@@ -31436,8 +31446,14 @@ Index
* Rankin, Pat <2>: Contributors. (line 38)
* Rankin, Pat <3>: Assignment Ops. (line 100)
* Rankin, Pat: Acknowledgments. (line 60)
+* reada extension function: Extension Sample Read write array.
+ (line 15)
* readable data files, checking: File Checking. (line 6)
* readable.awk program: File Checking. (line 11)
+* readdir extension: Extension Sample Readdir.
+ (line 9)
+* readfile extension function: Extension Sample Readfile.
+ (line 11)
* recipe for a programming language: History. (line 6)
* record separators <1>: User-modified. (line 143)
* record separators: Records. (line 14)
@@ -31504,9 +31520,13 @@ Index
* return debugger command: Debugger Execution Control.
(line 54)
* return statement, user-defined functions: Return Statement. (line 6)
-* return values, close() function: Close Files And Pipes.
+* return value, close() function: Close Files And Pipes.
(line 130)
* rev() user-defined function: Function Example. (line 52)
+* revoutput extension: Extension Sample Revout.
+ (line 11)
+* revtwoway extension: Extension Sample Rev2way.
+ (line 12)
* rewind() user-defined function: Rewind Function. (line 16)
* right angle bracket (>), > operator <1>: Precedence. (line 65)
* right angle bracket (>), > operator: Comparison Operators.
@@ -31523,7 +31543,7 @@ Index
* RLENGTH variable, match() function and: String Functions. (line 225)
* Robbins, Arnold <1>: Future Extensions. (line 6)
* Robbins, Arnold <2>: Bugs. (line 32)
-* Robbins, Arnold <3>: Contributors. (line 122)
+* Robbins, Arnold <3>: Contributors. (line 125)
* Robbins, Arnold <4>: Alarm Program. (line 6)
* Robbins, Arnold <5>: Passwd Functions. (line 90)
* Robbins, Arnold <6>: Getline/Pipe. (line 40)
@@ -31563,7 +31583,7 @@ Index
(line 68)
* sandbox mode: Options. (line 279)
* scalar values: Basic Data Typing. (line 13)
-* Schorr, Andrew <1>: Contributors. (line 118)
+* Schorr, Andrew <1>: Contributors. (line 121)
* Schorr, Andrew: Acknowledgments. (line 60)
* Schreiber, Bert: Acknowledgments. (line 38)
* Schreiber, Rita: Acknowledgments. (line 38)
@@ -31655,14 +31675,14 @@ Index
(line 56)
* sidebar, Using close()'s Return Value: Close Files And Pipes.
(line 128)
-* SIGHUP signal: Profiling. (line 203)
-* SIGINT signal (MS-Windows): Profiling. (line 206)
-* signals, HUP/SIGHUP: Profiling. (line 203)
-* signals, INT/SIGINT (MS-Windows): Profiling. (line 206)
-* signals, QUIT/SIGQUIT (MS-Windows): Profiling. (line 206)
-* signals, USR1/SIGUSR1: Profiling. (line 180)
-* SIGQUIT signal (MS-Windows): Profiling. (line 206)
-* SIGUSR1 signal: Profiling. (line 180)
+* SIGHUP signal: Profiling. (line 204)
+* SIGINT signal (MS-Windows): Profiling. (line 207)
+* signals, HUP/SIGHUP: Profiling. (line 204)
+* signals, INT/SIGINT (MS-Windows): Profiling. (line 207)
+* signals, QUIT/SIGQUIT (MS-Windows): Profiling. (line 207)
+* signals, USR1/SIGUSR1: Profiling. (line 181)
+* SIGQUIT signal (MS-Windows): Profiling. (line 207)
+* SIGUSR1 signal: Profiling. (line 181)
* silent debugger command: Debugger Execution Control.
(line 10)
* sin() function: Numeric Functions. (line 75)
@@ -31675,9 +31695,7 @@ Index
* single-character fields: Single Character Fields.
(line 6)
* Skywalker, Luke: Undocumented. (line 6)
-* sleep: Extension Sample Time.
- (line 6)
-* sleep time extension function: Extension Sample Time.
+* sleep extension function: Extension Sample Time.
(line 23)
* sleep utility: Alarm Program. (line 109)
* Solaris, POSIX-compliant awk: Other Versions. (line 96)
@@ -31722,6 +31740,8 @@ Index
* standard input <1>: Special FD. (line 6)
* standard input: Read Terminal. (line 6)
* standard output: Special FD. (line 6)
+* stat extension function: Extension Sample File Functions.
+ (line 18)
* statements, compound, control statements and: Statements. (line 10)
* statements, control, in actions: Statements. (line 6)
* statements, multiple: Statements/Lines. (line 91)
@@ -31787,6 +31807,8 @@ Index
* tee.awk program: Tee Program. (line 26)
* terminating records: Records. (line 117)
* testbits.awk program: Bitwise Functions. (line 70)
+* testext extension: Extension Sample API Tests.
+ (line 6)
* Texinfo <1>: Adding Code. (line 99)
* Texinfo <2>: Distribution contents.
(line 80)
@@ -31813,8 +31835,6 @@ Index
* tilde (~), ~ operator <5>: Computed Regexps. (line 6)
* tilde (~), ~ operator <6>: Case-sensitivity. (line 26)
* tilde (~), ~ operator: Regexp Usage. (line 19)
-* time: Extension Sample Time.
- (line 6)
* time, alarm clock example program: Alarm Program. (line 9)
* time, localization and: Explaining gettext. (line 115)
* time, managing: Getlocaltime Function.
@@ -31875,7 +31895,7 @@ Index
(line 83)
* undefined functions: Pass By Value/Reference.
(line 71)
-* underscore (_), _ C macro: Explaining gettext. (line 70)
+* underscore (_), C macro: Explaining gettext. (line 70)
* underscore (_), in names of private variables: Library Names.
(line 29)
* underscore (_), translatable string: Programmer i18n. (line 69)
@@ -31909,7 +31929,7 @@ Index
* user-modifiable variables: User-modified. (line 6)
* users, information about, printing: Id Program. (line 6)
* users, information about, retrieving: Passwd Functions. (line 16)
-* USR1 signal: Profiling. (line 180)
+* USR1 signal: Profiling. (line 181)
* values, numeric: Basic Data Typing. (line 13)
* values, string: Basic Data Typing. (line 13)
* variable typing: Typing and Comparison.
@@ -31955,6 +31975,10 @@ Index
* w debugger command (alias for watch): Viewing And Changing Data.
(line 67)
* w utility: Constant Size. (line 22)
+* wait extension function: Extension Sample Fork.
+ (line 22)
+* waitpid extension function: Extension Sample Fork.
+ (line 18)
* walk_array() user-defined function: Walking Arrays. (line 14)
* Wall, Larry <1>: Future Extensions. (line 6)
* Wall, Larry: Array Intro. (line 6)
@@ -31973,7 +31997,7 @@ Index
* whitespace, functions, calling: Calling Built-in. (line 10)
* whitespace, newlines as: Options. (line 253)
* Williams, Kent: Contributors. (line 35)
-* Woehlke, Matthew: Contributors. (line 79)
+* Woehlke, Matthew: Contributors. (line 80)
* Woods, John: Contributors. (line 28)
* word boundaries, matching: GNU Regexp Operators.
(line 38)
@@ -31985,10 +32009,12 @@ Index
* words, counting: Wc Program. (line 6)
* words, duplicate, searching for: Dupword Program. (line 6)
* words, usage counts, generating: Word Sorting. (line 6)
+* writea extension function: Extension Sample Read write array.
+ (line 9)
* xgettext utility: String Extraction. (line 13)
* XOR bitwise operation: Bitwise Functions. (line 6)
* xor() function (gawk): Bitwise Functions. (line 55)
-* Yawitz, Efraim: Contributors. (line 116)
+* Yawitz, Efraim: Contributors. (line 119)
* Zaretskii, Eli <1>: Bugs. (line 70)
* Zaretskii, Eli <2>: Contributors. (line 56)
* Zaretskii, Eli: Acknowledgments. (line 60)
@@ -32031,512 +32057,512 @@ Node: History48060
Node: Names50434
Ref: Names-Footnote-151911
Node: This Manual51983
-Ref: This Manual-Footnote-157848
-Node: Conventions57948
-Node: Manual History60100
-Ref: Manual History-Footnote-163501
-Ref: Manual History-Footnote-263542
-Node: How To Contribute63616
-Node: Acknowledgments64760
-Node: Getting Started68971
-Node: Running gawk71350
-Node: One-shot72536
-Node: Read Terminal73761
-Ref: Read Terminal-Footnote-175411
-Ref: Read Terminal-Footnote-275687
-Node: Long75858
-Node: Executable Scripts77234
-Ref: Executable Scripts-Footnote-179067
-Ref: Executable Scripts-Footnote-279169
-Node: Comments79716
-Node: Quoting82183
-Node: DOS Quoting86806
-Node: Sample Data Files87481
-Node: Very Simple90513
-Node: Two Rules95112
-Node: More Complex97259
-Ref: More Complex-Footnote-1100189
-Node: Statements/Lines100274
-Ref: Statements/Lines-Footnote-1104736
-Node: Other Features105001
-Node: When105929
-Node: Invoking Gawk108076
-Node: Command Line109537
-Node: Options110320
-Ref: Options-Footnote-1125712
-Node: Other Arguments125737
-Node: Naming Standard Input128395
-Node: Environment Variables129489
-Node: AWKPATH Variable130047
-Ref: AWKPATH Variable-Footnote-1132805
-Node: AWKLIBPATH Variable133065
-Node: Other Environment Variables133783
-Node: Exit Status136278
-Node: Include Files136953
-Node: Loading Shared Libraries140522
-Node: Obsolete141886
-Node: Undocumented142583
-Node: Regexp142826
-Node: Regexp Usage144215
-Node: Escape Sequences146241
-Node: Regexp Operators151910
-Ref: Regexp Operators-Footnote-1159290
-Ref: Regexp Operators-Footnote-2159437
-Node: Bracket Expressions159535
-Ref: table-char-classes161425
-Node: GNU Regexp Operators163948
-Node: Case-sensitivity167671
-Ref: Case-sensitivity-Footnote-1170639
-Ref: Case-sensitivity-Footnote-2170874
-Node: Leftmost Longest170982
-Node: Computed Regexps172183
-Node: Reading Files175520
-Node: Records177523
-Ref: Records-Footnote-1186412
-Node: Fields186449
-Ref: Fields-Footnote-1189482
-Node: Nonconstant Fields189568
-Node: Changing Fields191770
-Node: Field Separators197729
-Node: Default Field Splitting200358
-Node: Regexp Field Splitting201475
-Node: Single Character Fields204817
-Node: Command Line Field Separator205876
-Node: Field Splitting Summary209317
-Ref: Field Splitting Summary-Footnote-1212428
-Node: Constant Size212529
-Node: Splitting By Content217113
-Ref: Splitting By Content-Footnote-1220839
-Node: Multiple Line220879
-Ref: Multiple Line-Footnote-1226726
-Node: Getline226905
-Node: Plain Getline229121
-Node: Getline/Variable231216
-Node: Getline/File232363
-Node: Getline/Variable/File233704
-Ref: Getline/Variable/File-Footnote-1235303
-Node: Getline/Pipe235390
-Node: Getline/Variable/Pipe238090
-Node: Getline/Coprocess239197
-Node: Getline/Variable/Coprocess240449
-Node: Getline Notes241186
-Node: Getline Summary243973
-Ref: table-getline-variants244381
-Node: Read Timeout245293
-Ref: Read Timeout-Footnote-1249034
-Node: Command line directories249091
-Node: Printing249721
-Node: Print251352
-Node: Print Examples252689
-Node: Output Separators255473
-Node: OFMT257233
-Node: Printf258591
-Node: Basic Printf259497
-Node: Control Letters261036
-Node: Format Modifiers264848
-Node: Printf Examples270857
-Node: Redirection273572
-Node: Special Files280537
-Node: Special FD281070
-Ref: Special FD-Footnote-1284695
-Node: Special Network284769
-Node: Special Caveats285619
-Node: Close Files And Pipes286415
-Ref: Close Files And Pipes-Footnote-1293398
-Ref: Close Files And Pipes-Footnote-2293546
-Node: Expressions293696
-Node: Values294828
-Node: Constants295504
-Node: Scalar Constants296184
-Ref: Scalar Constants-Footnote-1297043
-Node: Nondecimal-numbers297225
-Node: Regexp Constants300225
-Node: Using Constant Regexps300700
-Node: Variables303755
-Node: Using Variables304410
-Node: Assignment Options306134
-Node: Conversion308006
-Ref: table-locale-affects313497
-Ref: Conversion-Footnote-1314121
-Node: All Operators314230
-Node: Arithmetic Ops314860
-Node: Concatenation317365
-Ref: Concatenation-Footnote-1320158
-Node: Assignment Ops320278
-Ref: table-assign-ops325266
-Node: Increment Ops326597
-Node: Truth Values and Conditions330032
-Node: Truth Values331115
-Node: Typing and Comparison332164
-Node: Variable Typing332953
-Ref: Variable Typing-Footnote-1336850
-Node: Comparison Operators336972
-Ref: table-relational-ops337382
-Node: POSIX String Comparison340931
-Ref: POSIX String Comparison-Footnote-1341887
-Node: Boolean Ops342025
-Ref: Boolean Ops-Footnote-1346103
-Node: Conditional Exp346194
-Node: Function Calls347926
-Node: Precedence351520
-Node: Locales355189
-Node: Patterns and Actions356278
-Node: Pattern Overview357332
-Node: Regexp Patterns359001
-Node: Expression Patterns359544
-Node: Ranges363229
-Node: BEGIN/END366195
-Node: Using BEGIN/END366957
-Ref: Using BEGIN/END-Footnote-1369688
-Node: I/O And BEGIN/END369794
-Node: BEGINFILE/ENDFILE372076
-Node: Empty374980
-Node: Using Shell Variables375296
-Node: Action Overview377581
-Node: Statements379938
-Node: If Statement381792
-Node: While Statement383291
-Node: Do Statement385335
-Node: For Statement386491
-Node: Switch Statement389643
-Node: Break Statement391740
-Node: Continue Statement393730
-Node: Next Statement395523
-Node: Nextfile Statement397913
-Node: Exit Statement400556
-Node: Built-in Variables402972
-Node: User-modified404067
-Ref: User-modified-Footnote-1412427
-Node: Auto-set412489
-Ref: Auto-set-Footnote-1425420
-Ref: Auto-set-Footnote-2425625
-Node: ARGC and ARGV425681
-Node: Arrays429532
-Node: Array Basics431037
-Node: Array Intro431863
-Node: Reference to Elements436181
-Node: Assigning Elements438451
-Node: Array Example438942
-Node: Scanning an Array440674
-Node: Controlling Scanning442988
-Ref: Controlling Scanning-Footnote-1447911
-Node: Delete448227
-Ref: Delete-Footnote-1450992
-Node: Numeric Array Subscripts451049
-Node: Uninitialized Subscripts453232
-Node: Multi-dimensional454860
-Node: Multi-scanning457954
-Node: Arrays of Arrays459545
-Node: Functions464186
-Node: Built-in465005
-Node: Calling Built-in466083
-Node: Numeric Functions468071
-Ref: Numeric Functions-Footnote-1471903
-Ref: Numeric Functions-Footnote-2472260
-Ref: Numeric Functions-Footnote-3472308
-Node: String Functions472577
-Ref: String Functions-Footnote-1496135
-Ref: String Functions-Footnote-2496264
-Ref: String Functions-Footnote-3496512
-Node: Gory Details496599
-Ref: table-sub-escapes498278
-Ref: table-sub-posix-92499632
-Ref: table-sub-proposed500983
-Ref: table-posix-sub502337
-Ref: table-gensub-escapes503882
-Ref: Gory Details-Footnote-1505058
-Ref: Gory Details-Footnote-2505109
-Node: I/O Functions505260
-Ref: I/O Functions-Footnote-1512245
-Node: Time Functions512392
-Ref: Time Functions-Footnote-1523325
-Ref: Time Functions-Footnote-2523393
-Ref: Time Functions-Footnote-3523551
-Ref: Time Functions-Footnote-4523662
-Ref: Time Functions-Footnote-5523774
-Ref: Time Functions-Footnote-6524001
-Node: Bitwise Functions524267
-Ref: table-bitwise-ops524825
-Ref: Bitwise Functions-Footnote-1529046
-Node: Type Functions529230
-Node: I18N Functions529700
-Node: User-defined531327
-Node: Definition Syntax532131
-Ref: Definition Syntax-Footnote-1537041
-Node: Function Example537110
-Node: Function Caveats539704
-Node: Calling A Function540125
-Node: Variable Scope541240
-Node: Pass By Value/Reference544203
-Node: Return Statement547711
-Node: Dynamic Typing550692
-Node: Indirect Calls551623
-Node: Library Functions561308
-Ref: Library Functions-Footnote-1564821
-Ref: Library Functions-Footnote-2564964
-Node: Library Names565135
-Ref: Library Names-Footnote-1568606
-Ref: Library Names-Footnote-2568826
-Node: General Functions568912
-Node: Strtonum Function569865
-Node: Assert Function572795
-Node: Round Function576121
-Node: Cliff Random Function577664
-Node: Ordinal Functions578680
-Ref: Ordinal Functions-Footnote-1581750
-Ref: Ordinal Functions-Footnote-2582002
-Node: Join Function582211
-Ref: Join Function-Footnote-1583982
-Node: Getlocaltime Function584182
-Node: Data File Management587897
-Node: Filetrans Function588529
-Node: Rewind Function592598
-Node: File Checking593985
-Node: Empty Files595079
-Node: Ignoring Assigns597309
-Node: Getopt Function598862
-Ref: Getopt Function-Footnote-1610166
-Node: Passwd Functions610369
-Ref: Passwd Functions-Footnote-1619344
-Node: Group Functions619432
-Node: Walking Arrays627516
-Node: Sample Programs629653
-Node: Running Examples630327
-Node: Clones631055
-Node: Cut Program632279
-Node: Egrep Program642124
-Ref: Egrep Program-Footnote-1649897
-Node: Id Program650007
-Node: Split Program653623
-Ref: Split Program-Footnote-1657142
-Node: Tee Program657270
-Node: Uniq Program660073
-Node: Wc Program667502
-Ref: Wc Program-Footnote-1671768
-Ref: Wc Program-Footnote-2671968
-Node: Miscellaneous Programs672060
-Node: Dupword Program673248
-Node: Alarm Program675279
-Node: Translate Program680028
-Ref: Translate Program-Footnote-1684415
-Ref: Translate Program-Footnote-2684643
-Node: Labels Program684777
-Ref: Labels Program-Footnote-1688148
-Node: Word Sorting688232
-Node: History Sorting692116
-Node: Extract Program693955
-Ref: Extract Program-Footnote-1701456
-Node: Simple Sed701584
-Node: Igawk Program704646
-Ref: Igawk Program-Footnote-1719803
-Ref: Igawk Program-Footnote-2720004
-Node: Anagram Program720142
-Node: Signature Program723210
-Node: Advanced Features724310
-Node: Nondecimal Data726192
-Node: Array Sorting727775
-Node: Controlling Array Traversal728472
-Node: Array Sorting Functions736710
-Ref: Array Sorting Functions-Footnote-1740384
-Ref: Array Sorting Functions-Footnote-2740477
-Node: Two-way I/O740671
-Ref: Two-way I/O-Footnote-1746103
-Node: TCP/IP Networking746173
-Node: Profiling749017
-Node: Internationalization756472
-Node: I18N and L10N757897
-Node: Explaining gettext758583
-Ref: Explaining gettext-Footnote-1763649
-Ref: Explaining gettext-Footnote-2763833
-Node: Programmer i18n763998
-Node: Translator i18n768198
-Node: String Extraction768991
-Ref: String Extraction-Footnote-1769952
-Node: Printf Ordering770038
-Ref: Printf Ordering-Footnote-1772822
-Node: I18N Portability772886
-Ref: I18N Portability-Footnote-1775335
-Node: I18N Example775398
-Ref: I18N Example-Footnote-1778033
-Node: Gawk I18N778105
-Node: Debugger778726
-Node: Debugging779697
-Node: Debugging Concepts780130
-Node: Debugging Terms781986
-Node: Awk Debugging784583
-Node: Sample Debugging Session785475
-Node: Debugger Invocation785995
-Node: Finding The Bug787327
-Node: List of Debugger Commands793815
-Node: Breakpoint Control795149
-Node: Debugger Execution Control798813
-Node: Viewing And Changing Data802173
-Node: Execution Stack805529
-Node: Debugger Info806996
-Node: Miscellaneous Debugger Commands810978
-Node: Readline Support816154
-Node: Limitations816985
-Node: Arbitrary Precision Arithmetic819237
-Ref: Arbitrary Precision Arithmetic-Footnote-1820888
-Node: General Arithmetic821036
-Node: Floating Point Issues822756
-Node: String Conversion Precision823637
-Ref: String Conversion Precision-Footnote-1825343
-Node: Unexpected Results825452
-Node: POSIX Floating Point Problems827605
-Ref: POSIX Floating Point Problems-Footnote-1831430
-Node: Integer Programming831468
-Node: Floating-point Programming833207
-Ref: Floating-point Programming-Footnote-1839538
-Ref: Floating-point Programming-Footnote-2839808
-Node: Floating-point Representation840072
-Node: Floating-point Context841237
-Ref: table-ieee-formats842076
-Node: Rounding Mode843460
-Ref: table-rounding-modes843939
-Ref: Rounding Mode-Footnote-1846954
-Node: Gawk and MPFR847133
-Node: Arbitrary Precision Floats848388
-Ref: Arbitrary Precision Floats-Footnote-1850831
-Node: Setting Precision851147
-Ref: table-predefined-precision-strings851833
-Node: Setting Rounding Mode853978
-Ref: table-gawk-rounding-modes854382
-Node: Floating-point Constants855569
-Node: Changing Precision856998
-Ref: Changing Precision-Footnote-1858398
-Node: Exact Arithmetic858572
-Node: Arbitrary Precision Integers861710
-Ref: Arbitrary Precision Integers-Footnote-1864728
-Node: Dynamic Extensions864875
-Node: Extension Intro866333
-Node: Plugin License867598
-Node: Extension Mechanism Outline868283
-Ref: load-extension868700
-Ref: load-new-function870178
-Ref: call-new-function871173
-Node: Extension API Description873188
-Node: Extension API Functions Introduction874401
-Node: General Data Types879267
-Ref: General Data Types-Footnote-1884869
-Node: Requesting Values885168
-Ref: table-value-types-returned885899
-Node: Constructor Functions886853
-Node: Registration Functions889873
-Node: Extension Functions890558
-Node: Exit Callback Functions892783
-Node: Extension Version String894032
-Node: Input Parsers894682
-Node: Output Wrappers904439
-Node: Two-way processors908949
-Node: Printing Messages911157
-Ref: Printing Messages-Footnote-1912234
-Node: Updating `ERRNO'912386
-Node: Accessing Parameters913125
-Node: Symbol Table Access914355
-Node: Symbol table by name914867
-Node: Symbol table by cookie916614
-Ref: Symbol table by cookie-Footnote-1920744
-Node: Cached values920807
-Ref: Cached values-Footnote-1924256
-Node: Array Manipulation924347
-Ref: Array Manipulation-Footnote-1925445
-Node: Array Data Types925484
-Ref: Array Data Types-Footnote-1928187
-Node: Array Functions928279
-Node: Flattening Arrays932045
-Node: Creating Arrays938897
-Node: Extension API Variables943622
-Node: Extension Versioning944258
-Node: Extension API Informational Variables946159
-Node: Extension API Boilerplate947245
-Node: Finding Extensions951049
-Node: Extension Example951609
-Node: Internal File Description952340
-Node: Internal File Ops956028
-Ref: Internal File Ops-Footnote-1967512
-Node: Using Internal File Ops967652
-Ref: Using Internal File Ops-Footnote-1970005
-Node: Extension Samples970271
-Node: Extension Sample File Functions971795
-Node: Extension Sample Fnmatch980282
-Node: Extension Sample Fork982008
-Node: Extension Sample Inplace983226
-Node: Extension Sample Ord985004
-Node: Extension Sample Readdir985840
-Node: Extension Sample Revout987372
-Node: Extension Sample Rev2way987965
-Node: Extension Sample Read write array988655
-Node: Extension Sample Readfile990538
-Node: Extension Sample API Tests991356
-Node: Extension Sample Time991881
-Node: gawkextlib993245
-Node: Language History995676
-Node: V7/SVR3.1997198
-Node: SVR4999519
-Node: POSIX1000961
-Node: BTL1002347
-Node: POSIX/GNU1003081
-Node: Common Extensions1008616
-Node: Ranges and Locales1009771
-Ref: Ranges and Locales-Footnote-11014389
-Ref: Ranges and Locales-Footnote-21014416
-Ref: Ranges and Locales-Footnote-31014676
-Node: Contributors1014897
-Node: Installation1019701
-Node: Gawk Distribution1020595
-Node: Getting1021079
-Node: Extracting1021905
-Node: Distribution contents1023597
-Node: Unix Installation1028858
-Node: Quick Installation1029475
-Node: Additional Configuration Options1031437
-Node: Configuration Philosophy1032914
-Node: Non-Unix Installation1035256
-Node: PC Installation1035714
-Node: PC Binary Installation1037013
-Node: PC Compiling1038861
-Node: PC Testing1041805
-Node: PC Using1042981
-Node: Cygwin1047166
-Node: MSYS1048166
-Node: VMS Installation1048680
-Node: VMS Compilation1049283
-Ref: VMS Compilation-Footnote-11050290
-Node: VMS Installation Details1050348
-Node: VMS Running1051983
-Node: VMS Old Gawk1053590
-Node: Bugs1054064
-Node: Other Versions1057916
-Node: Notes1063517
-Node: Compatibility Mode1064317
-Node: Additions1065100
-Node: Accessing The Source1066027
-Node: Adding Code1067467
-Node: New Ports1073512
-Node: Derived Files1077647
-Ref: Derived Files-Footnote-11082968
-Ref: Derived Files-Footnote-21083002
-Ref: Derived Files-Footnote-31083602
-Node: Future Extensions1083700
-Node: Implementation Limitations1084281
-Node: Extension Design1085533
-Node: Old Extension Problems1086687
-Ref: Old Extension Problems-Footnote-11088195
-Node: Extension New Mechanism Goals1088252
-Ref: Extension New Mechanism Goals-Footnote-11091618
-Node: Extension Other Design Decisions1091804
-Node: Extension Future Growth1093910
-Node: Old Extension Mechanism1094746
-Node: Basic Concepts1096486
-Node: Basic High Level1097167
-Ref: figure-general-flow1097438
-Ref: figure-process-flow1098037
-Ref: Basic High Level-Footnote-11101266
-Node: Basic Data Typing1101451
-Node: Glossary1104806
-Node: Copying1130277
-Node: GNU Free Documentation License1167834
-Node: Index1192971
+Ref: This Manual-Footnote-157757
+Node: Conventions57857
+Node: Manual History60009
+Ref: Manual History-Footnote-163455
+Ref: Manual History-Footnote-263496
+Node: How To Contribute63570
+Node: Acknowledgments64714
+Node: Getting Started68923
+Node: Running gawk71302
+Node: One-shot72488
+Node: Read Terminal73713
+Ref: Read Terminal-Footnote-175363
+Ref: Read Terminal-Footnote-275639
+Node: Long75810
+Node: Executable Scripts77186
+Ref: Executable Scripts-Footnote-179019
+Ref: Executable Scripts-Footnote-279121
+Node: Comments79668
+Node: Quoting82135
+Node: DOS Quoting86758
+Node: Sample Data Files87433
+Node: Very Simple90465
+Node: Two Rules95064
+Node: More Complex97211
+Ref: More Complex-Footnote-1100141
+Node: Statements/Lines100226
+Ref: Statements/Lines-Footnote-1104688
+Node: Other Features104953
+Node: When105881
+Node: Invoking Gawk108028
+Node: Command Line109489
+Node: Options110272
+Ref: Options-Footnote-1125664
+Node: Other Arguments125689
+Node: Naming Standard Input128347
+Node: Environment Variables129441
+Node: AWKPATH Variable129999
+Ref: AWKPATH Variable-Footnote-1132757
+Node: AWKLIBPATH Variable133017
+Node: Other Environment Variables133735
+Node: Exit Status136230
+Node: Include Files136905
+Node: Loading Shared Libraries140474
+Node: Obsolete141838
+Node: Undocumented142535
+Node: Regexp142778
+Node: Regexp Usage144167
+Node: Escape Sequences146193
+Node: Regexp Operators151862
+Ref: Regexp Operators-Footnote-1159242
+Ref: Regexp Operators-Footnote-2159389
+Node: Bracket Expressions159487
+Ref: table-char-classes161377
+Node: GNU Regexp Operators163900
+Node: Case-sensitivity167623
+Ref: Case-sensitivity-Footnote-1170591
+Ref: Case-sensitivity-Footnote-2170826
+Node: Leftmost Longest170934
+Node: Computed Regexps172135
+Node: Reading Files175472
+Node: Records177475
+Ref: Records-Footnote-1186364
+Node: Fields186401
+Ref: Fields-Footnote-1189434
+Node: Nonconstant Fields189520
+Node: Changing Fields191722
+Node: Field Separators197681
+Node: Default Field Splitting200310
+Node: Regexp Field Splitting201427
+Node: Single Character Fields204769
+Node: Command Line Field Separator205828
+Node: Field Splitting Summary209269
+Ref: Field Splitting Summary-Footnote-1212380
+Node: Constant Size212481
+Node: Splitting By Content217065
+Ref: Splitting By Content-Footnote-1220791
+Node: Multiple Line220831
+Ref: Multiple Line-Footnote-1226678
+Node: Getline226857
+Node: Plain Getline229073
+Node: Getline/Variable231168
+Node: Getline/File232315
+Node: Getline/Variable/File233656
+Ref: Getline/Variable/File-Footnote-1235255
+Node: Getline/Pipe235342
+Node: Getline/Variable/Pipe238042
+Node: Getline/Coprocess239149
+Node: Getline/Variable/Coprocess240401
+Node: Getline Notes241138
+Node: Getline Summary243925
+Ref: table-getline-variants244333
+Node: Read Timeout245245
+Ref: Read Timeout-Footnote-1248986
+Node: Command line directories249043
+Node: Printing249673
+Node: Print251304
+Node: Print Examples252641
+Node: Output Separators255425
+Node: OFMT257185
+Node: Printf258543
+Node: Basic Printf259449
+Node: Control Letters260988
+Node: Format Modifiers264800
+Node: Printf Examples270809
+Node: Redirection273524
+Node: Special Files280489
+Node: Special FD281022
+Ref: Special FD-Footnote-1284647
+Node: Special Network284721
+Node: Special Caveats285571
+Node: Close Files And Pipes286367
+Ref: Close Files And Pipes-Footnote-1293350
+Ref: Close Files And Pipes-Footnote-2293498
+Node: Expressions293648
+Node: Values294780
+Node: Constants295456
+Node: Scalar Constants296136
+Ref: Scalar Constants-Footnote-1296995
+Node: Nondecimal-numbers297177
+Node: Regexp Constants300177
+Node: Using Constant Regexps300652
+Node: Variables303707
+Node: Using Variables304362
+Node: Assignment Options306086
+Node: Conversion307958
+Ref: table-locale-affects313458
+Ref: Conversion-Footnote-1314082
+Node: All Operators314191
+Node: Arithmetic Ops314821
+Node: Concatenation317326
+Ref: Concatenation-Footnote-1320119
+Node: Assignment Ops320239
+Ref: table-assign-ops325227
+Node: Increment Ops326558
+Node: Truth Values and Conditions329993
+Node: Truth Values331076
+Node: Typing and Comparison332125
+Node: Variable Typing332914
+Ref: Variable Typing-Footnote-1336811
+Node: Comparison Operators336933
+Ref: table-relational-ops337343
+Node: POSIX String Comparison340892
+Ref: POSIX String Comparison-Footnote-1341848
+Node: Boolean Ops341986
+Ref: Boolean Ops-Footnote-1346064
+Node: Conditional Exp346155
+Node: Function Calls347887
+Node: Precedence351481
+Node: Locales355150
+Node: Patterns and Actions356239
+Node: Pattern Overview357293
+Node: Regexp Patterns358962
+Node: Expression Patterns359505
+Node: Ranges363190
+Node: BEGIN/END366156
+Node: Using BEGIN/END366918
+Ref: Using BEGIN/END-Footnote-1369649
+Node: I/O And BEGIN/END369755
+Node: BEGINFILE/ENDFILE372037
+Node: Empty374951
+Node: Using Shell Variables375267
+Node: Action Overview377552
+Node: Statements379909
+Node: If Statement381763
+Node: While Statement383262
+Node: Do Statement385306
+Node: For Statement386462
+Node: Switch Statement389614
+Node: Break Statement391711
+Node: Continue Statement393701
+Node: Next Statement395494
+Node: Nextfile Statement397884
+Node: Exit Statement400527
+Node: Built-in Variables402943
+Node: User-modified404038
+Ref: User-modified-Footnote-1412398
+Node: Auto-set412460
+Ref: Auto-set-Footnote-1425391
+Ref: Auto-set-Footnote-2425596
+Node: ARGC and ARGV425652
+Node: Arrays429503
+Node: Array Basics431008
+Node: Array Intro431834
+Node: Reference to Elements436152
+Node: Assigning Elements438422
+Node: Array Example438913
+Node: Scanning an Array440645
+Node: Controlling Scanning442959
+Ref: Controlling Scanning-Footnote-1447882
+Node: Delete448198
+Ref: Delete-Footnote-1450963
+Node: Numeric Array Subscripts451020
+Node: Uninitialized Subscripts453203
+Node: Multi-dimensional454831
+Node: Multi-scanning457925
+Node: Arrays of Arrays459516
+Node: Functions464157
+Node: Built-in464976
+Node: Calling Built-in466054
+Node: Numeric Functions468042
+Ref: Numeric Functions-Footnote-1471874
+Ref: Numeric Functions-Footnote-2472231
+Ref: Numeric Functions-Footnote-3472279
+Node: String Functions472548
+Ref: String Functions-Footnote-1496106
+Ref: String Functions-Footnote-2496235
+Ref: String Functions-Footnote-3496483
+Node: Gory Details496570
+Ref: table-sub-escapes498249
+Ref: table-sub-posix-92499603
+Ref: table-sub-proposed500954
+Ref: table-posix-sub502308
+Ref: table-gensub-escapes503853
+Ref: Gory Details-Footnote-1505029
+Ref: Gory Details-Footnote-2505080
+Node: I/O Functions505231
+Ref: I/O Functions-Footnote-1512216
+Node: Time Functions512363
+Ref: Time Functions-Footnote-1523296
+Ref: Time Functions-Footnote-2523364
+Ref: Time Functions-Footnote-3523522
+Ref: Time Functions-Footnote-4523633
+Ref: Time Functions-Footnote-5523745
+Ref: Time Functions-Footnote-6523972
+Node: Bitwise Functions524238
+Ref: table-bitwise-ops524796
+Ref: Bitwise Functions-Footnote-1529017
+Node: Type Functions529201
+Node: I18N Functions529671
+Node: User-defined531298
+Node: Definition Syntax532102
+Ref: Definition Syntax-Footnote-1537012
+Node: Function Example537081
+Node: Function Caveats539675
+Node: Calling A Function540096
+Node: Variable Scope541211
+Node: Pass By Value/Reference544174
+Node: Return Statement547682
+Node: Dynamic Typing550663
+Node: Indirect Calls551594
+Node: Library Functions561279
+Ref: Library Functions-Footnote-1564792
+Ref: Library Functions-Footnote-2564935
+Node: Library Names565106
+Ref: Library Names-Footnote-1568577
+Ref: Library Names-Footnote-2568797
+Node: General Functions568883
+Node: Strtonum Function569836
+Node: Assert Function572766
+Node: Round Function576092
+Node: Cliff Random Function577635
+Node: Ordinal Functions578651
+Ref: Ordinal Functions-Footnote-1581721
+Ref: Ordinal Functions-Footnote-2581973
+Node: Join Function582182
+Ref: Join Function-Footnote-1583953
+Node: Getlocaltime Function584153
+Node: Data File Management587868
+Node: Filetrans Function588500
+Node: Rewind Function592569
+Node: File Checking593956
+Node: Empty Files595050
+Node: Ignoring Assigns597280
+Node: Getopt Function598833
+Ref: Getopt Function-Footnote-1610137
+Node: Passwd Functions610340
+Ref: Passwd Functions-Footnote-1619315
+Node: Group Functions619403
+Node: Walking Arrays627487
+Node: Sample Programs629624
+Node: Running Examples630298
+Node: Clones631026
+Node: Cut Program632250
+Node: Egrep Program642095
+Ref: Egrep Program-Footnote-1649868
+Node: Id Program649978
+Node: Split Program653594
+Ref: Split Program-Footnote-1657113
+Node: Tee Program657241
+Node: Uniq Program660044
+Node: Wc Program667473
+Ref: Wc Program-Footnote-1671739
+Ref: Wc Program-Footnote-2671939
+Node: Miscellaneous Programs672031
+Node: Dupword Program673219
+Node: Alarm Program675250
+Node: Translate Program679999
+Ref: Translate Program-Footnote-1684386
+Ref: Translate Program-Footnote-2684614
+Node: Labels Program684748
+Ref: Labels Program-Footnote-1688119
+Node: Word Sorting688203
+Node: History Sorting692087
+Node: Extract Program693926
+Ref: Extract Program-Footnote-1701427
+Node: Simple Sed701555
+Node: Igawk Program704617
+Ref: Igawk Program-Footnote-1719774
+Ref: Igawk Program-Footnote-2719975
+Node: Anagram Program720113
+Node: Signature Program723181
+Node: Advanced Features724281
+Node: Nondecimal Data726163
+Node: Array Sorting727746
+Node: Controlling Array Traversal728443
+Node: Array Sorting Functions736681
+Ref: Array Sorting Functions-Footnote-1740355
+Ref: Array Sorting Functions-Footnote-2740448
+Node: Two-way I/O740642
+Ref: Two-way I/O-Footnote-1746074
+Node: TCP/IP Networking746144
+Node: Profiling748988
+Node: Internationalization756485
+Node: I18N and L10N757910
+Node: Explaining gettext758596
+Ref: Explaining gettext-Footnote-1763664
+Ref: Explaining gettext-Footnote-2763848
+Node: Programmer i18n764013
+Node: Translator i18n768215
+Node: String Extraction769008
+Ref: String Extraction-Footnote-1769969
+Node: Printf Ordering770055
+Ref: Printf Ordering-Footnote-1772839
+Node: I18N Portability772903
+Ref: I18N Portability-Footnote-1775352
+Node: I18N Example775415
+Ref: I18N Example-Footnote-1778053
+Node: Gawk I18N778125
+Node: Debugger778746
+Node: Debugging779717
+Node: Debugging Concepts780150
+Node: Debugging Terms782006
+Node: Awk Debugging784603
+Node: Sample Debugging Session785495
+Node: Debugger Invocation786015
+Node: Finding The Bug787347
+Node: List of Debugger Commands793835
+Node: Breakpoint Control795169
+Node: Debugger Execution Control798833
+Node: Viewing And Changing Data802193
+Node: Execution Stack805549
+Node: Debugger Info807016
+Node: Miscellaneous Debugger Commands810998
+Node: Readline Support816174
+Node: Limitations817005
+Node: Arbitrary Precision Arithmetic819257
+Ref: Arbitrary Precision Arithmetic-Footnote-1820908
+Node: General Arithmetic821056
+Node: Floating Point Issues822776
+Node: String Conversion Precision823657
+Ref: String Conversion Precision-Footnote-1825363
+Node: Unexpected Results825472
+Node: POSIX Floating Point Problems827625
+Ref: POSIX Floating Point Problems-Footnote-1831450
+Node: Integer Programming831488
+Node: Floating-point Programming833227
+Ref: Floating-point Programming-Footnote-1839558
+Ref: Floating-point Programming-Footnote-2839828
+Node: Floating-point Representation840092
+Node: Floating-point Context841257
+Ref: table-ieee-formats842096
+Node: Rounding Mode843480
+Ref: table-rounding-modes843959
+Ref: Rounding Mode-Footnote-1846974
+Node: Gawk and MPFR847153
+Node: Arbitrary Precision Floats848408
+Ref: Arbitrary Precision Floats-Footnote-1850851
+Node: Setting Precision851167
+Ref: table-predefined-precision-strings851853
+Node: Setting Rounding Mode853998
+Ref: table-gawk-rounding-modes854402
+Node: Floating-point Constants855589
+Node: Changing Precision857018
+Ref: Changing Precision-Footnote-1858418
+Node: Exact Arithmetic858592
+Node: Arbitrary Precision Integers861730
+Ref: Arbitrary Precision Integers-Footnote-1864748
+Node: Dynamic Extensions864895
+Node: Extension Intro866353
+Node: Plugin License867618
+Node: Extension Mechanism Outline868303
+Ref: load-extension868720
+Ref: load-new-function870198
+Ref: call-new-function871193
+Node: Extension API Description873208
+Node: Extension API Functions Introduction874421
+Node: General Data Types879287
+Ref: General Data Types-Footnote-1884889
+Node: Requesting Values885188
+Ref: table-value-types-returned885919
+Node: Constructor Functions886873
+Node: Registration Functions889893
+Node: Extension Functions890578
+Node: Exit Callback Functions892803
+Node: Extension Version String894052
+Node: Input Parsers894702
+Node: Output Wrappers904459
+Node: Two-way processors908969
+Node: Printing Messages911177
+Ref: Printing Messages-Footnote-1912254
+Node: Updating `ERRNO'912406
+Node: Accessing Parameters913145
+Node: Symbol Table Access914375
+Node: Symbol table by name914887
+Node: Symbol table by cookie916634
+Ref: Symbol table by cookie-Footnote-1920764
+Node: Cached values920827
+Ref: Cached values-Footnote-1924276
+Node: Array Manipulation924367
+Ref: Array Manipulation-Footnote-1925465
+Node: Array Data Types925504
+Ref: Array Data Types-Footnote-1928207
+Node: Array Functions928299
+Node: Flattening Arrays932065
+Node: Creating Arrays938917
+Node: Extension API Variables943642
+Node: Extension Versioning944278
+Node: Extension API Informational Variables946179
+Node: Extension API Boilerplate947265
+Node: Finding Extensions951069
+Node: Extension Example951629
+Node: Internal File Description952360
+Node: Internal File Ops956048
+Ref: Internal File Ops-Footnote-1967532
+Node: Using Internal File Ops967672
+Ref: Using Internal File Ops-Footnote-1970025
+Node: Extension Samples970291
+Node: Extension Sample File Functions971815
+Node: Extension Sample Fnmatch980302
+Node: Extension Sample Fork982028
+Node: Extension Sample Inplace983246
+Node: Extension Sample Ord985024
+Node: Extension Sample Readdir985860
+Node: Extension Sample Revout987392
+Node: Extension Sample Rev2way987985
+Node: Extension Sample Read write array988675
+Node: Extension Sample Readfile990558
+Node: Extension Sample API Tests991376
+Node: Extension Sample Time991901
+Node: gawkextlib993265
+Node: Language History995696
+Node: V7/SVR3.1997218
+Node: SVR4999539
+Node: POSIX1000981
+Node: BTL1002367
+Node: POSIX/GNU1003101
+Node: Common Extensions1008636
+Node: Ranges and Locales1009942
+Ref: Ranges and Locales-Footnote-11014560
+Ref: Ranges and Locales-Footnote-21014587
+Ref: Ranges and Locales-Footnote-31014847
+Node: Contributors1015068
+Node: Installation1019947
+Node: Gawk Distribution1020841
+Node: Getting1021325
+Node: Extracting1022151
+Node: Distribution contents1023843
+Node: Unix Installation1029104
+Node: Quick Installation1029721
+Node: Additional Configuration Options1031683
+Node: Configuration Philosophy1033160
+Node: Non-Unix Installation1035502
+Node: PC Installation1035960
+Node: PC Binary Installation1037259
+Node: PC Compiling1039107
+Node: PC Testing1042051
+Node: PC Using1043227
+Node: Cygwin1047412
+Node: MSYS1048412
+Node: VMS Installation1048926
+Node: VMS Compilation1049529
+Ref: VMS Compilation-Footnote-11050536
+Node: VMS Installation Details1050594
+Node: VMS Running1052229
+Node: VMS Old Gawk1053836
+Node: Bugs1054310
+Node: Other Versions1058162
+Node: Notes1063763
+Node: Compatibility Mode1064563
+Node: Additions1065346
+Node: Accessing The Source1066273
+Node: Adding Code1067713
+Node: New Ports1073758
+Node: Derived Files1077893
+Ref: Derived Files-Footnote-11083214
+Ref: Derived Files-Footnote-21083248
+Ref: Derived Files-Footnote-31083848
+Node: Future Extensions1083946
+Node: Implementation Limitations1084527
+Node: Extension Design1085779
+Node: Old Extension Problems1086933
+Ref: Old Extension Problems-Footnote-11088441
+Node: Extension New Mechanism Goals1088498
+Ref: Extension New Mechanism Goals-Footnote-11091864
+Node: Extension Other Design Decisions1092050
+Node: Extension Future Growth1094156
+Node: Old Extension Mechanism1094992
+Node: Basic Concepts1096732
+Node: Basic High Level1097413
+Ref: figure-general-flow1097684
+Ref: figure-process-flow1098283
+Ref: Basic High Level-Footnote-11101512
+Node: Basic Data Typing1101697
+Node: Glossary1105052
+Node: Copying1130514
+Node: GNU Free Documentation License1168071
+Node: Index1193208
End Tag Table
diff --git a/doc/gawk.texi b/doc/gawk.texi
index d323ff6..e4f8f85 100644
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -26,7 +26,7 @@
@c applies to and all the info about who's publishing this edition
@c These apply across the board.
address@hidden UPDATE-MONTH April, 2013
address@hidden UPDATE-MONTH May, 2013
@set VERSION 4.0
@set PATCHLEVEL 2
@@ -1369,7 +1369,7 @@ describes advanced arithmetic facilities provided by
@command{gawk}.
@ref{Dynamic Extensions}, describes how to add new variables and
-functions to @command{gawk} by writing extensions in C.
+functions to @command{gawk} by writing extensions in C or C++.
Part IV provides the appendices, the Glossary, and two licenses that cover
the @command{gawk} source code and this @value{DOCUMENT}, respectively.
@@ -1396,14 +1396,10 @@ and some possible future directions for @command{gawk}
development.
@ref{Basic Concepts},
provides some very cursory background material for those who
are completely unfamiliar with computer programming.
-Also centralized there is a discussion of some of the issues
-surrounding floating-point numbers.
-The
address@hidden,
-defines most, if not all, the significant terms used
-throughout the book.
-If you find terms that you aren't familiar with, try looking them up here.
+The @ref{Glossary}, defines most, if not all, the significant terms used
+throughout the book. If you find terms that you aren't familiar with,
+try looking them up here.
@ref{Copying}, and
@ref{GNU Free Documentation License},
@@ -1631,10 +1627,11 @@ This edition maintains the basic structure of the
previous editions.
For Edition 4.0, the content has been thoroughly reviewed
and updated. All references to @command{gawk} versions prior to 4.0 have been
removed.
-Of significant note for this edition is @ref{Debugger}.
+Of significant note for this edition was @ref{Debugger}.
-For edition 4.1, the content has been reorganized into parts,
-and the major new addition is @ref{Dynamic Extensions}.
+For edition @value{EDITION}, the content has been reorganized into parts,
+and the major new additions are @ref{Arbitrary Precision Arithmetic},
+and @ref{Dynamic Extensions}.
@address@hidden will undoubtedly continue to evolve.
An electronic version
@@ -1836,7 +1833,7 @@ take advantage of those opportunities.
Arnold Robbins @*
Nof Ayalon @*
ISRAEL @*
-April, 2013
+May, 2013
@iftex
@part Part I:@* The @command{awk} Language
@@ -2149,10 +2146,8 @@ affect the execution of the @command{awk} program but it
does make
@subsection Executable @command{awk} Programs
@cindex @command{awk} programs
@cindex @code{#} (number sign), @code{#!} (executable scripts)
address@hidden number sign (@code{#}), @code{#!} (executable scripts)
@cindex Unix, @command{awk} scripts and
address@hidden @code{#} (number sign), @code{#!} (executable scripts),
portability issues with
address@hidden number sign (@code{#}), @code{#!} (executable scripts),
portability issues with
address@hidden number sign (@code{#}), @code{#!} (executable scripts)
Once you have learned @command{awk}, you may want to write self-contained
@command{awk} scripts, using the @samp{#!} script mechanism. You can do
@@ -3515,7 +3510,6 @@ when parsing numeric input data (@pxref{Locales}).
@itemx address@hidden@address@hidden
@cindex @code{-o} option
@cindex @code{--pretty-print} option
address@hidden @command{awk} enabling
Enable pretty-printing of @command{awk} programs.
By default, output program is created in a file named @file{awkprof.out}.
The optional @var{file} argument allows you to specify a different
@@ -3654,7 +3648,7 @@ character (@code{"\t"}). This is true only for
@option{--traditional} and not
for @option{--posix}
(@pxref{Field Separators}).
address@hidden @code{-f} option, on command line
address@hidden @code{-f} option, multiple uses
The @option{-f} option may be used more than once on the command line.
If it is, @command{awk} reads its program source from all of the named files,
as
if they had been concatenated together into one big file. This is
@@ -4729,8 +4723,8 @@ matches the character @samp{$}.
@cindex regular expressions, anchors in
@cindex Texinfo, chapter beginnings in files
address@hidden @code{^} (caret)
address@hidden caret (@code{^})
address@hidden @code{^} (caret), regexp operator
address@hidden caret (@code{^}), regexp operator
@item ^
This matches the beginning of a string. For example, @samp{^@@chapter}
matches @samp{@@chapter} at the beginning of a string and can be used
@@ -5424,10 +5418,10 @@ on the right. This is true of any string-valued
expression (such as
@end quotation
@cindex regexp constants, slashes vs.@: quotes
address@hidden @code{\} (backslash), regexp constants
address@hidden backslash (@code{\}), regexp constants
address@hidden @code{"} (double quote), regexp constants
address@hidden double quote (@code{"}), regexp constants
address@hidden @code{\} (backslash), in regexp constants
address@hidden backslash (@code{\}), in regexp constants
address@hidden @code{"} (double quote), in regexp constants
address@hidden double quote (@code{"}), in regexp constants
What difference does it make if the string is
scanned twice? The answer has to do with escape sequences, and particularly
with backslashes. To get a backslash into a regular expression inside a
@@ -6591,8 +6585,8 @@ awk -F\\\\ '@dots{}' files @dots{}
@end example
@noindent
address@hidden @code{\} (backslash), as field separators
address@hidden backslash (@code{\}), as field separators
address@hidden @code{\} (backslash), as field separator
address@hidden backslash (@code{\}), as field separator
Because @samp{\} is used for quoting in the shell, @command{awk} sees
@samp{-F\\}. Then @command{awk} processes the @samp{\\} for escape
characters (@pxref{Escape Sequences}), finally yielding
@@ -9414,8 +9408,8 @@ which discusses it in more detail and gives an example.
@end docbook
@cindex dark corner, @code{close()} function
address@hidden @code{close()} function, return values
address@hidden return address@hidden @code{close()} function
address@hidden @code{close()} function, return value
address@hidden return address@hidden @code{close()} function
@cindex differences in @command{awk} and @command{gawk}, @code{close()}
function
@cindex Unix @command{awk}, @code{close()} function and
@@ -9470,8 +9464,8 @@ when closing a pipe.
@cindex dark corner, @code{close()} function
address@hidden @code{close()} function, return values
address@hidden return address@hidden @code{close()} function
address@hidden @code{close()} function, return value
address@hidden return address@hidden @code{close()} function
@cindex differences in @command{awk} and @command{gawk}, @code{close()}
function
@cindex Unix @command{awk}, @code{close()} function and
@@ -9940,7 +9934,7 @@ Such an assignment has the following form:
@address@hidden
@end example
address@hidden @code{-v} option, address@hidden assigning
address@hidden @code{-v} option
@noindent
With it, a variable is set either at the beginning of the
@command{awk} run or in between input files.
@@ -10092,11 +10086,13 @@ locales, use the period character (@samp{.}) as the
decimal point.
However, many (if not most) European and non-English locales use the comma
(@samp{,}) as the decimal point character.
address@hidden dark corner, locale's decimal point character
The POSIX standard says that @command{awk} always uses the period as the
decimal
point when reading the @command{awk} program source code, and for command-line
variable assignments (@pxref{Other Arguments}).
However, when interpreting input data, for @code{print} and @code{printf}
output,
and for number to string conversion, the local decimal point character is used.
address@hidden
Here are some examples indicating the difference in behavior,
on a GNU/Linux system:
@@ -10200,16 +10196,10 @@ $ @kbd{awk '@{ sum = $2 + $3 + $4 ; avg = sum / 3}
@print{} Chris 84.3333
@end example
-The following list provides the arithmetic operators in @command{awk}, in
order from
-the highest precedence to the lowest:
+The following list provides the arithmetic operators in @command{awk},
+in order from the highest precedence to the lowest:
@table @code
address@hidden - @var{x}
-Negation.
-
address@hidden + @var{x}
-Unary plus; the expression is converted to a number.
-
@cindex common extensions, @code{**} operator
@cindex extensions, address@hidden @code{**} operator
@cindex POSIX @command{awk}, arithmetic operators and
@@ -10219,6 +10209,12 @@ Exponentiation; @var{x} raised to the @var{y} power.
@samp{2 ^ 3} has
the value eight; the character sequence @samp{**} is equivalent to
@samp{^}. @value{COMMONEXT}
address@hidden - @var{x}
+Negation.
+
address@hidden + @var{x}
+Unary plus; the expression is converted to a number.
+
@item @var{x} * @var{y}
Multiplication.
@@ -10643,7 +10639,7 @@ For maximum portability, do not use the @samp{**=}
operator.
@c derived from email from "Nelson H. F. Beebe" <address@hidden>
@c Date: Mon, 1 Sep 1997 13:38:35 -0600 (MDT)
address@hidden dark corner
address@hidden dark corner, @code{/=} operator vs. @code{/address@hidden/}
regexp constant
@cindex ambiguity, syntactic: @code{/=} operator vs. @code{/address@hidden/}
regexp constant
@cindex syntactic ambiguity: @code{/=} operator vs. @code{/address@hidden/}
regexp constant
@cindex @code{/=} operator vs. @code{/address@hidden/} regexp constant
@@ -10691,7 +10687,7 @@ freely available versions described in
@c derived from email from "Nelson H. F. Beebe" <address@hidden>
@c Date: Mon, 1 Sep 1997 13:38:35 -0600 (MDT)
address@hidden dark corner
address@hidden dark corner, @code{/=} operator vs. @code{/address@hidden/}
regexp constant
@cindex ambiguity, syntactic: @code{/=} operator vs. @code{/address@hidden/}
regexp constant
@cindex syntactic ambiguity: @code{/=} operator vs. @code{/address@hidden/}
regexp constant
@cindex @code{/=} operator vs. @code{/address@hidden/} regexp constant
@@ -10739,8 +10735,8 @@ the increment operators add no power to the
@command{awk} language; however, the
are convenient abbreviations for very common operations.
@cindex side effects
address@hidden @code{+} (plus sign), @code{++} (decrement/increment operators)
address@hidden plus sign (@code{+}), @code{++} (decrement/increment operators)
address@hidden @code{+} (plus sign), @code{++} operator
address@hidden plus sign (@code{+}), @code{++} operator
@cindex side effects, decrement/increment operators
The operator used for adding one is written @samp{++}. It can be used to
increment
a variable either before or after taking its value.
@@ -10957,7 +10953,7 @@ BEGIN @{
@}
@end example
address@hidden dark corner
address@hidden dark corner, @code{"0"} is actually true
There is a surprising consequence of the ``nonzero or non-null'' rule:
the string constant @code{"0"} is actually true, because it is non-null.
@value{DARKCORNER}
@@ -11714,8 +11710,8 @@ Field reference.
@cindex @code{+} (plus sign), @code{++} operator
@cindex plus sign (@code{+}), @code{++} operator
address@hidden @code{-} (hyphen), @code{--} (decrement/increment) operator
address@hidden hyphen (@code{-}), @code{--} (decrement/increment) operators
address@hidden @code{-} (hyphen), @code{--} operator
address@hidden hyphen (@code{-}), @code{--} operator
@item ++ --
Increment, decrement.
@@ -12309,6 +12305,7 @@ are not valid in an @code{END} rule, since all the
input has been read.
@subsection The @code{BEGINFILE} and @code{ENDFILE} Special Patterns
@cindex @code{BEGINFILE} pattern
@cindex @code{ENDFILE} pattern
address@hidden differences in @command{awk} and @command{gawk},
@code{BEGINFILE}/@code{ENDFILE} patterns
This @value{SECTION} describes a @command{gawk}-specific feature.
@@ -12322,7 +12319,7 @@ The body of the @code{BEGINFILE} rules is executed just
before
@command{gawk} reads the first record from a file. @code{FILENAME}
is set to the name of the current file, and @code{FNR} is set to zero.
-The @code{BEGINFILE} rule provides you the opportunity for two tasks
+The @code{BEGINFILE} rule provides you the opportunity to accomplish two tasks
that would otherwise be difficult or impossible to perform:
@itemize @bullet
@@ -13140,10 +13137,7 @@ first rule in the program.
@node Nextfile Statement
@subsection The @code{nextfile} Statement
@cindex @code{nextfile} statement
address@hidden differences in @command{awk} and @command{gawk},
@code{next}/@code{nextfile} statements
address@hidden common extensions, @code{nextfile} statement
address@hidden extensions, address@hidden @code{nextfile} statement
The @code{nextfile} statement
is similar to the @code{next} statement.
However, instead of abandoning processing of the current record, the
@@ -14449,7 +14443,7 @@ if it didn't exist before!
@end quotation
@c @cindex arrays, @code{in} operator and
address@hidden @code{in} operator, arrays and
address@hidden @code{in} operator
To determine whether an element exists in an array at a certain index, use
the following expression:
@@ -14588,12 +14582,12 @@ for (@var{var} in @var{array})
@end example
@noindent
address@hidden @code{in} operator, arrays and
address@hidden @code{in} operator
This loop executes @var{body} once for each index in @var{array} that the
program has previously used, with the variable @var{var} set to that index.
@cindex arrays, @code{for} statement and
address@hidden @code{for} statement, in arrays
address@hidden @code{for} statement, looping over arrays
The following program uses this form of the @code{for} statement. The
first rule scans the input records and notes which words appear (at
least once) in the input, by storing a one into the array @code{used} with
@@ -15944,7 +15938,7 @@ The @var{array} argument to @code{match()} is a
using a third argument is a fatal error.
@item patsplit(@var{string}, @var{array} @r{[}, @var{fieldpat} @r{[},
@var{seps} @r{]} @r{]}) #
address@hidden @code{patsplit()} function
address@hidden @code{patsplit()} function (@command{gawk})
Divide
@var{string} into pieces defined by @var{fieldpat}
and store the pieces in @var{array} and the separator strings in the
@@ -16716,13 +16710,10 @@ which discusses this feature in more detail and gives
an example.
@item fflush(@address@hidden@r{]})
@cindex @code{fflush()} function
address@hidden common extensions, @code{fflush()} function
address@hidden extensions, address@hidden @code{fflush()} function
Flush any buffered output associated with @var{filename}, which is either a
file opened for writing or a shell command for redirecting output to
a pipe or coprocess.
address@hidden portability, @code{fflush()} function and
@cindex buffers, flushing
@cindex output, buffering
Many utility programs @dfn{buffer} their output; i.e., they save information
@@ -24886,7 +24877,7 @@ discusses the ability to dynamically add new built-in
functions to
@node Nondecimal Data
@section Allowing Nondecimal Input Data
@cindex @code{--non-decimal-data} option
address@hidden advanced features, @command{gawk}, nondecimal input data
address@hidden advanced features, nondecimal input data
@cindex input, address@hidden nondecimal
@cindex constants, nondecimal
@@ -25369,7 +25360,7 @@ Mike Brennan
@c brennan@@whidbey.com
@end smallexample
address@hidden advanced features, @command{gawk}, address@hidden communicating
with
address@hidden advanced features, address@hidden communicating with
@cindex processes, two-way communications with
It is often useful to be able to
send data to a separate program for
@@ -25519,7 +25510,7 @@ using regular pipes.
@node TCP/IP Networking
@section Using @command{gawk} for Network Programming
address@hidden advanced features, @command{gawk}, network programming
address@hidden advanced features, network programming
@cindex networks, programming
@c STARTOFRANGE tcpip
@cindex TCP/IP
@@ -25630,7 +25621,6 @@ extensive examples.
@cindex @command{awk} programs, profiling
@c STARTOFRANGE proawk
@cindex profiling @command{awk} programs
address@hidden profiling @command{gawk}
@cindex @code{awkprof.out} file
@cindex files, @code{awkprof.out}
@@ -25825,6 +25815,7 @@ the target of a redirection isn't a scalar, it gets
parenthesized.
@item
@command{gawk} supplies leading comments in
front of the @code{BEGIN} and @code{END} rules,
+the @code{BEGINFILE} and @code{ENDFILE} rules,
the pattern/action rules, and the functions.
@end itemize
@@ -26044,13 +26035,13 @@ is copied to a portable object file (@code{.po})
and translations are created and shipped with the application.
For example, there might be a @file{fr.po} for a French translation.
address@hidden @code{.mo} files
address@hidden files, @code{.mo}
address@hidden @code{.gmo} files
address@hidden files, @code{.gmo}
@cindex message object files
@cindex files, message object
@item
Each language's @file{.po} file is converted into a binary
-message object (@file{.mo}) file.
+message object (@file{.gmo}) file.
A message object file contains the original messages and their
translations in a binary format that allows fast lookup of translations
at runtime.
@@ -26062,11 +26053,11 @@ are installed in a standard place.
@cindex @code{bindtextdomain()} function (C library)
@item
For testing and development, it is possible to tell @code{gettext}
-to use @file{.mo} files in a different directory than the standard
+to use @file{.gmo} files in a different directory than the standard
one by using the @code{bindtextdomain()} function.
address@hidden @code{.mo} files, specifying directory of
address@hidden files, @code{.mo}, specifying directory of
address@hidden @code{.gmo} files, specifying directory of
address@hidden files, @code{.gmo}, specifying directory of
@cindex message object files, specifying directory of
@cindex files, message object, specifying directory of
@item
@@ -26092,8 +26083,8 @@ printf("%s", gettext("Don't Panic!\n"));
The tools that extract messages from source code pull out all
strings enclosed in calls to @code{gettext()}.
address@hidden @code{_} (underscore), @code{_} C macro
address@hidden underscore (@code{_}), @code{_} C macro
address@hidden @code{_} (underscore), C macro
address@hidden underscore (@code{_}), C macro
The GNU @code{gettext} developers, recognizing that typing
@samp{gettext(@dots{})} over and over again is both painful and ugly to look
at, use the macro @samp{_} (an underscore) to make things easier:
@@ -26232,14 +26223,14 @@ The default value for @var{category} is
@code{"LC_MESSAGES"}.
The same remarks about argument order as for the @code{dcgettext()} function
apply.
address@hidden @code{.mo} files, specifying directory of
address@hidden files, @code{.mo}, specifying directory of
address@hidden @code{.gmo} files, specifying directory of
address@hidden files, @code{.gmo}, specifying directory of
@cindex message object files, specifying directory of
@cindex files, message object, specifying directory of
@cindex @code{bindtextdomain()} function (@command{gawk})
@item bindtextdomain(@var{directory} @r{[}, @address@hidden)
Change the directory in which
address@hidden looks for @file{.mo} files, in case they
address@hidden looks for @file{.gmo} files, in case they
will not or cannot be placed in the standard locations
(e.g., during testing).
Return the directory in which @var{domain} is ``bound.''
@@ -26307,7 +26298,7 @@ message, but it uses the default @code{"LC_MESSAGES"}
category.
@cindex @code{LC_MESSAGES} locale category, @code{bindtextdomain()} function
(@command{gawk})
@item
-During development, you might want to put the @file{.mo}
+During development, you might want to put the @file{.gmo}
file in a private directory for testing. This is done
with the @code{bindtextdomain()} built-in function:
@@ -26647,7 +26638,7 @@ msgstr "Like, the scoop is"
@cindex Linux
@cindex GNU/Linux
The next step is to make the directory to hold the binary message object
-file and then to create the @file{guide.mo} file.
+file and then to create the @file{guide.gmo} file.
The directory layout shown here is standard for GNU @code{gettext} on
GNU/Linux systems. Other versions of @code{gettext} may use a different
layout:
@@ -26656,24 +26647,24 @@ layout:
$ @kbd{mkdir en_US en_US/LC_MESSAGES}
@end example
address@hidden @code{.po} files, converting to @code{.mo}
address@hidden files, @code{.po}, converting to @code{.mo}
address@hidden @code{.mo} files, converting from @code{.po}
address@hidden files, @code{.mo}, converting from @code{.po}
address@hidden @code{.po} files, converting to @code{.gmo}
address@hidden files, @code{.po}, converting to @code{.gmo}
address@hidden @code{.gmo} files, converting from @code{.po}
address@hidden files, @code{.gmo}, converting from @code{.po}
@cindex portable object files, converting to message object files
@cindex files, portable object, converting to message object files
@cindex message object files, converting from portable object files
@cindex files, message object, converting from portable object files
@cindex @command{msgfmt} utility
The @command{msgfmt} utility does the conversion from human-readable
address@hidden file to machine-readable @file{.mo} file.
address@hidden file to machine-readable @file{.gmo} file.
By default, @command{msgfmt} creates a file named @file{messages}.
This file must be renamed and placed in the proper directory so that
@command{gawk} can find it:
@example
$ @kbd{msgfmt guide-mellow.po}
-$ @kbd{mv messages en_US/LC_MESSAGES/guide.mo}
+$ @kbd{mv messages en_US/LC_MESSAGES/guide.gmo}
@end example
Finally, we run the program to test it:
@@ -31677,7 +31668,7 @@ static const char *ext_version = "filefuncs extension:
version 1.0";
int plugin_is_GPL_compatible;
@end example
address@hidden programming conventions, @command{gawk} internals
address@hidden programming conventions, @command{gawk} extensions
By convention, for an @command{awk} function @code{foo()}, the C function
that implements it is called @code{do_foo()}. The function should have
two arguments: the first is an @code{int} usually called @code{nargs},
@@ -31980,7 +31971,6 @@ earlier. When done, return the result from
@code{fill_stat_array()}:
@}
@end example
address@hidden programming conventions, @command{gawk} internals
Finally, it's necessary to provide the ``glue'' that loads the
new function(s) into @command{gawk}.
@@ -32141,12 +32131,14 @@ The usage is:
@item @@load "filefuncs"
This is how you load the extension.
address@hidden @code{chdir} extension function
@item result = chdir("/some/directory")
The @code{chdir()} function is a direct hook to the @code{chdir()}
system call to change the current directory. It returns zero
upon success or less than zero upon error. In the latter case it updates
@code{ERRNO}.
address@hidden @code{stat} extension function
@item result = stat("/some/path", statdata [, follow])
The @code{stat()} function provides a hook into the
@code{stat()} system call.
@@ -32236,6 +32228,7 @@ or
Not all systems support all file types.
@end multitable
address@hidden @code{fts} extension function
@item flags = or(FTS_PHYSICAL, ...)
@itemx result = fts(pathlist, flags, filedata)
Walk the file trees provided in @code{pathlist} and fill in the
@@ -32356,6 +32349,7 @@ See @file{test/fts.awk} in the @command{gawk}
distribution for an example.
@node Extension Sample Fnmatch
@subsection Interface To @code{fnmatch()}
address@hidden @code{fnmatch} extension function
This extension provides an interface to the C library
@code{fnmatch()} function. The usage is:
@@ -32428,6 +32422,7 @@ The @code{fork} extension adds three functions, as
follows.
@item @@load "fork"
This is how you load the extension.
address@hidden @code{fork} extension function
@item pid = fork()
This function creates a new process. The return value is the zero in the
child and the process-id number of the child in the parent, or @minus{}1
@@ -32435,11 +32430,13 @@ upon error. In the latter case, @code{ERRNO}
indicates the problem.
In the child, @code{PROCINFO["pid"]} and @code{PROCINFO["ppid"]} are
updated to reflect the correct values.
address@hidden @code{waitpid} extension function
@item ret = waitpid(pid)
This function takes a numeric argument, which is the process-id to
wait for. The return value is that of the
@code{waitpid()} system call.
address@hidden @code{wait} extension function
@item ret = wait()
This function waits for the first child to die.
The return value is that of the
@@ -32462,6 +32459,7 @@ else
@node Extension Sample Inplace
@subsection Enabling In-Place File Editing
address@hidden @code{inplace} extension
The @code{inplace} extension emulates GNU @command{sed}'s @option{-i} option
which performs ``in place'' editing of each input file.
It uses the bundled @file{inplace.awk} include file to invoke the extension
@@ -32525,9 +32523,11 @@ The @code{ordchr} extension adds two functions, named
@item @@load "ordchr"
This is how you load the extension.
address@hidden @code{ord} extension function
@item number = ord(string)
Return the numeric value of the first character in @code{string}.
address@hidden @code{chr} extension function
@item char = chr(number)
Return a string whose first character is that represented by @code{number}.
@end table
@@ -32548,6 +32548,7 @@ printf("The string value of 65 is %s\n", chr(65))
The @code{readdir} extension adds an input parser for directories.
The usage is as follows:
address@hidden @code{readdir} extension
@example
@@load "readdir"
@end example
@@ -32601,6 +32602,7 @@ the characters in each output line. It's main purpose
is to show how to
write an output wrapper, although it may be mildly amusing for the unwary.
Here is an example:
address@hidden @code{revoutput} extension
@example
@@load "revoutput"
@@ -32622,6 +32624,7 @@ the @command{awk} program. It's main purpose is to
show how to write
a two-way processor, although it may also be mildly amusing.
The following example shows how to use it:
address@hidden @code{revtwoway} extension
@example
@@load "revtwoway"
@@ -32641,12 +32644,14 @@ The @code{rwarray} extension adds two functions,
named @code{writea()} and @code{reada()}, as follows:
@table @code
address@hidden @code{writea} extension function
@item ret = writea(file, array)
This function takes a string argument, which is the name of the file
to which dump the array, and the array itself as the second argument.
@code{writea()} understands multidimensional arrays. It returns one on
success, or zero upon failure.
address@hidden @code{reada} extension function
@item ret = reada(file, array)
@code{reada()} is the inverse of @code{writea()};
it reads the file named as its first argument, filling in
@@ -32689,6 +32694,7 @@ named @code{readfile()}:
@item @@load "readfile"
This is how you load the extension.
address@hidden @code{readfile} extension function
@item result = readfile("/some/path")
The argument is the name of the file to read. The return value is a
string containing the entire contents of the requested file. Upon error,
@@ -32709,6 +32715,7 @@ if (contents == "" && ERRNO != "") @{
@node Extension Sample API Tests
@subsection API Tests
address@hidden @code{testext} extension
The @code{testext} extension exercises parts of the extension API that
are not tested by the other samples. The @file{extension/testext.c}
@@ -32720,9 +32727,6 @@ for more information.
@node Extension Sample Time
@subsection Extension Time Functions
address@hidden time
address@hidden sleep
-
These functions can be used either by invoking @command{gawk}
with a command-line argument of @samp{-l time} or by
inserting @samp{@@load "time"} in your script.
@@ -32731,7 +32735,7 @@ inserting @samp{@@load "time"} in your script.
@item @@load "time"
This is how you load the extension.
address@hidden @code{gettimeofday} time extension function
address@hidden @code{gettimeofday} extension function
@item the_time = gettimeofday()
Return the time in seconds that has elapsed since 1970-01-01 UTC as a
floating point value. If the time is unavailable on this platform, return
@@ -32741,7 +32745,7 @@ If the standard C @code{gettimeofday()} system call is
available on this
platform, then it simply returns the value. Otherwise, if on Windows,
it tries to use @code{GetSystemTimeAsFileTime()}.
address@hidden @code{sleep} time extension function
address@hidden @code{sleep} extension function
@item result = sleep(@var{seconds})
Attempt to sleep for @var{seconds} seconds. If @var{seconds} is negative,
or the attempt to sleep fails, return @minus{}1 and set @code{ERRNO}.
@@ -32754,6 +32758,7 @@ tries to use @code{nanosleep()} or @code{select()} to
implement the delay.
@node gawkextlib
@section The @code{gawkextlib} Project
address@hidden @code{gawkextlib} project
The @uref{http://sourceforge.net/projects/gawkextlib/, @code{gawkextlib}}
project provides a number of @command{gawk} extensions, including one for
processing XML files. This is the evolution of the original @command{xgawk}
@@ -32790,6 +32795,7 @@ code control system. The command is as follows:
git clone git://git.code.sf.net/p/gawkextlib/code gawkextlib-code
@end example
address@hidden Expat XML parser library
You will need to have the @uref{http://expat.sourceforge.net, Expat}
XML parser library installed in order to build and use the XML extension.
@@ -33466,6 +33472,8 @@ Prestandard VAX C compiler for VAX/VMS
@node Common Extensions
@appendixsec Common Extensions Summary
address@hidden extensions, Brian Kernighan's @command{awk}
address@hidden extensions, @command{mawk}
This @value{SECTION} summarizes the common extensions supported
by @command{gawk}, Brian Kernighan's @command{awk}, and @command{mawk},
the three most widely-used freely available versions of @command{awk}
@@ -33489,6 +33497,10 @@ the three most widely-used freely available versions
of @command{awk}
@item Time related functions @tab @tab X @tab X
@end multitable
+(Technically speaking, as of late 2012, @code{fflush()}, @samp{delete
@var{array}},
+and @code{nextfile} are no longer extensions, since they have been added
+to POSIX.)
+
@node Ranges and Locales
@appendixsec Regexp Ranges and Locales: A Long Sad Story
@@ -33721,7 +33733,7 @@ the various PC platforms.
Christos Zoulas
provided the @code{extension()}
built-in function for dynamically adding new modules.
-(This was removed at @command{gawk} 4.1.)
+(This was obsoleted at @command{gawk} 4.1.)
@item
@cindex Kahrs, J@"urgen
@@ -33781,7 +33793,6 @@ Patrick T.J.@: McPhee contributed the code for dynamic
loading in Windows32
environments.
(This is no longer supported)
-
@item
@cindex Haque, John
John Haque made the following contributions:
@@ -33801,6 +33812,9 @@ The initial text of
@item
The work to merge the three versions of @command{gawk}
into one, for the 4.1 release.
+
address@hidden
+Improved array internals for arrays indexed by integers.
@end itemize
@item
@@ -34520,7 +34534,7 @@ at least the @samp{|&} operator.
@cindex @command{gawk}, MS-Windows version of
@cindex @code{;} (semicolon), @code{AWKPATH} variable and
@cindex semicolon (@code{;}), @code{AWKPATH} variable and
address@hidden @code{AWKPATH} environment variable
address@hidden @env{AWKPATH} environment variable
The MS-DOS and MS-Windows versions of @command{gawk} search for
program files as described in @ref{AWKPATH Variable}. However,
semicolons (rather than colons) separate elements in the @env{AWKPATH}
@@ -34997,8 +35011,7 @@ This @value{SECTION} briefly describes where to get
them:
@cindex Kernighan, Brian
@cindex source code, Brian Kernighan's @command{awk}
@cindex @command{awk}, versions of, See Also Brian Kernighan's @command{awk}
address@hidden extensions, Brian Kernighan's @command{awk}
address@hidden Brian Kernighan's @command{awk}, extensions
address@hidden Brian Kernighan's @command{awk}
@item Unix @command{awk}
Brian Kernighan, one of the original designers of Unix @command{awk},
has made his implementation of
@@ -36884,8 +36897,7 @@ to indicate their base. Thus, @code{013} is 11 (one
times 8 plus 3).
@xref{Nondecimal-numbers}.
@cindex P1003.1 POSIX standard
address@hidden P1003.2 POSIX standard
address@hidden P1003.1, P1003.2
address@hidden P1003.1
See ``POSIX.''
@item Pattern
@@ -36904,7 +36916,6 @@ Keyboard And Chair.)
@item POSIX
The name for a series of standards
address@hidden being developed by the IEEE
that specify a Portable Operating System interface. The ``IX'' denotes
the Unix heritage of these standards. The main standard of interest for
@command{awk} users is
diff --git a/doc/gawktexi.in b/doc/gawktexi.in
index b5e682b..f836690 100644
--- a/doc/gawktexi.in
+++ b/doc/gawktexi.in
@@ -21,7 +21,7 @@
@c applies to and all the info about who's publishing this edition
@c These apply across the board.
address@hidden UPDATE-MONTH April, 2013
address@hidden UPDATE-MONTH May, 2013
@set VERSION 4.0
@set PATCHLEVEL 2
@@ -1336,7 +1336,7 @@ describes advanced arithmetic facilities provided by
@command{gawk}.
@ref{Dynamic Extensions}, describes how to add new variables and
-functions to @command{gawk} by writing extensions in C.
+functions to @command{gawk} by writing extensions in C or C++.
Part IV provides the appendices, the Glossary, and two licenses that cover
the @command{gawk} source code and this @value{DOCUMENT}, respectively.
@@ -1363,14 +1363,10 @@ and some possible future directions for @command{gawk}
development.
@ref{Basic Concepts},
provides some very cursory background material for those who
are completely unfamiliar with computer programming.
-Also centralized there is a discussion of some of the issues
-surrounding floating-point numbers.
-The
address@hidden,
-defines most, if not all, the significant terms used
-throughout the book.
-If you find terms that you aren't familiar with, try looking them up here.
+The @ref{Glossary}, defines most, if not all, the significant terms used
+throughout the book. If you find terms that you aren't familiar with,
+try looking them up here.
@ref{Copying}, and
@ref{GNU Free Documentation License},
@@ -1598,10 +1594,11 @@ This edition maintains the basic structure of the
previous editions.
For Edition 4.0, the content has been thoroughly reviewed
and updated. All references to @command{gawk} versions prior to 4.0 have been
removed.
-Of significant note for this edition is @ref{Debugger}.
+Of significant note for this edition was @ref{Debugger}.
-For edition 4.1, the content has been reorganized into parts,
-and the major new addition is @ref{Dynamic Extensions}.
+For edition @value{EDITION}, the content has been reorganized into parts,
+and the major new additions are @ref{Arbitrary Precision Arithmetic},
+and @ref{Dynamic Extensions}.
@address@hidden will undoubtedly continue to evolve.
An electronic version
@@ -1803,7 +1800,7 @@ take advantage of those opportunities.
Arnold Robbins @*
Nof Ayalon @*
ISRAEL @*
-April, 2013
+May, 2013
@iftex
@part Part I:@* The @command{awk} Language
@@ -2116,10 +2113,8 @@ affect the execution of the @command{awk} program but it
does make
@subsection Executable @command{awk} Programs
@cindex @command{awk} programs
@cindex @code{#} (number sign), @code{#!} (executable scripts)
address@hidden number sign (@code{#}), @code{#!} (executable scripts)
@cindex Unix, @command{awk} scripts and
address@hidden @code{#} (number sign), @code{#!} (executable scripts),
portability issues with
address@hidden number sign (@code{#}), @code{#!} (executable scripts),
portability issues with
address@hidden number sign (@code{#}), @code{#!} (executable scripts)
Once you have learned @command{awk}, you may want to write self-contained
@command{awk} scripts, using the @samp{#!} script mechanism. You can do
@@ -3443,7 +3438,6 @@ when parsing numeric input data (@pxref{Locales}).
@itemx address@hidden@address@hidden
@cindex @code{-o} option
@cindex @code{--pretty-print} option
address@hidden @command{awk} enabling
Enable pretty-printing of @command{awk} programs.
By default, output program is created in a file named @file{awkprof.out}.
The optional @var{file} argument allows you to specify a different
@@ -3582,7 +3576,7 @@ character (@code{"\t"}). This is true only for
@option{--traditional} and not
for @option{--posix}
(@pxref{Field Separators}).
address@hidden @code{-f} option, on command line
address@hidden @code{-f} option, multiple uses
The @option{-f} option may be used more than once on the command line.
If it is, @command{awk} reads its program source from all of the named files,
as
if they had been concatenated together into one big file. This is
@@ -4576,8 +4570,8 @@ matches the character @samp{$}.
@cindex regular expressions, anchors in
@cindex Texinfo, chapter beginnings in files
address@hidden @code{^} (caret)
address@hidden caret (@code{^})
address@hidden @code{^} (caret), regexp operator
address@hidden caret (@code{^}), regexp operator
@item ^
This matches the beginning of a string. For example, @samp{^@@chapter}
matches @samp{@@chapter} at the beginning of a string and can be used
@@ -5271,10 +5265,10 @@ on the right. This is true of any string-valued
expression (such as
@end quotation
@cindex regexp constants, slashes vs.@: quotes
address@hidden @code{\} (backslash), regexp constants
address@hidden backslash (@code{\}), regexp constants
address@hidden @code{"} (double quote), regexp constants
address@hidden double quote (@code{"}), regexp constants
address@hidden @code{\} (backslash), in regexp constants
address@hidden backslash (@code{\}), in regexp constants
address@hidden @code{"} (double quote), in regexp constants
address@hidden double quote (@code{"}), in regexp constants
What difference does it make if the string is
scanned twice? The answer has to do with escape sequences, and particularly
with backslashes. To get a backslash into a regular expression inside a
@@ -6312,8 +6306,8 @@ awk -F\\\\ '@dots{}' files @dots{}
@end example
@noindent
address@hidden @code{\} (backslash), as field separators
address@hidden backslash (@code{\}), as field separators
address@hidden @code{\} (backslash), as field separator
address@hidden backslash (@code{\}), as field separator
Because @samp{\} is used for quoting in the shell, @command{awk} sees
@samp{-F\\}. Then @command{awk} processes the @samp{\\} for escape
characters (@pxref{Escape Sequences}), finally yielding
@@ -8997,8 +8991,8 @@ which discusses it in more detail and gives an example.
@sidebar Using @code{close()}'s Return Value
@cindex dark corner, @code{close()} function
address@hidden @code{close()} function, return values
address@hidden return address@hidden @code{close()} function
address@hidden @code{close()} function, return value
address@hidden return address@hidden @code{close()} function
@cindex differences in @command{awk} and @command{gawk}, @code{close()}
function
@cindex Unix @command{awk}, @code{close()} function and
@@ -9437,7 +9431,7 @@ Such an assignment has the following form:
@address@hidden
@end example
address@hidden @code{-v} option, address@hidden assigning
address@hidden @code{-v} option
@noindent
With it, a variable is set either at the beginning of the
@command{awk} run or in between input files.
@@ -9589,11 +9583,13 @@ locales, use the period character (@samp{.}) as the
decimal point.
However, many (if not most) European and non-English locales use the comma
(@samp{,}) as the decimal point character.
address@hidden dark corner, locale's decimal point character
The POSIX standard says that @command{awk} always uses the period as the
decimal
point when reading the @command{awk} program source code, and for command-line
variable assignments (@pxref{Other Arguments}).
However, when interpreting input data, for @code{print} and @code{printf}
output,
and for number to string conversion, the local decimal point character is used.
address@hidden
Here are some examples indicating the difference in behavior,
on a GNU/Linux system:
@@ -9697,16 +9693,10 @@ $ @kbd{awk '@{ sum = $2 + $3 + $4 ; avg = sum / 3}
@print{} Chris 84.3333
@end example
-The following list provides the arithmetic operators in @command{awk}, in
order from
-the highest precedence to the lowest:
+The following list provides the arithmetic operators in @command{awk},
+in order from the highest precedence to the lowest:
@table @code
address@hidden - @var{x}
-Negation.
-
address@hidden + @var{x}
-Unary plus; the expression is converted to a number.
-
@cindex common extensions, @code{**} operator
@cindex extensions, address@hidden @code{**} operator
@cindex POSIX @command{awk}, arithmetic operators and
@@ -9716,6 +9706,12 @@ Exponentiation; @var{x} raised to the @var{y} power.
@samp{2 ^ 3} has
the value eight; the character sequence @samp{**} is equivalent to
@samp{^}. @value{COMMONEXT}
address@hidden - @var{x}
+Negation.
+
address@hidden + @var{x}
+Unary plus; the expression is converted to a number.
+
@item @var{x} * @var{y}
Multiplication.
@@ -10135,7 +10131,7 @@ For maximum portability, do not use the @samp{**=}
operator.
@c derived from email from "Nelson H. F. Beebe" <address@hidden>
@c Date: Mon, 1 Sep 1997 13:38:35 -0600 (MDT)
address@hidden dark corner
address@hidden dark corner, @code{/=} operator vs. @code{/address@hidden/}
regexp constant
@cindex ambiguity, syntactic: @code{/=} operator vs. @code{/address@hidden/}
regexp constant
@cindex syntactic ambiguity: @code{/=} operator vs. @code{/address@hidden/}
regexp constant
@cindex @code{/=} operator vs. @code{/address@hidden/} regexp constant
@@ -10182,8 +10178,8 @@ the increment operators add no power to the
@command{awk} language; however, the
are convenient abbreviations for very common operations.
@cindex side effects
address@hidden @code{+} (plus sign), @code{++} (decrement/increment operators)
address@hidden plus sign (@code{+}), @code{++} (decrement/increment operators)
address@hidden @code{+} (plus sign), @code{++} operator
address@hidden plus sign (@code{+}), @code{++} operator
@cindex side effects, decrement/increment operators
The operator used for adding one is written @samp{++}. It can be used to
increment
a variable either before or after taking its value.
@@ -10342,7 +10338,7 @@ BEGIN @{
@}
@end example
address@hidden dark corner
address@hidden dark corner, @code{"0"} is actually true
There is a surprising consequence of the ``nonzero or non-null'' rule:
the string constant @code{"0"} is actually true, because it is non-null.
@value{DARKCORNER}
@@ -11099,8 +11095,8 @@ Field reference.
@cindex @code{+} (plus sign), @code{++} operator
@cindex plus sign (@code{+}), @code{++} operator
address@hidden @code{-} (hyphen), @code{--} (decrement/increment) operator
address@hidden hyphen (@code{-}), @code{--} (decrement/increment) operators
address@hidden @code{-} (hyphen), @code{--} operator
address@hidden hyphen (@code{-}), @code{--} operator
@item ++ --
Increment, decrement.
@@ -11694,6 +11690,7 @@ are not valid in an @code{END} rule, since all the
input has been read.
@subsection The @code{BEGINFILE} and @code{ENDFILE} Special Patterns
@cindex @code{BEGINFILE} pattern
@cindex @code{ENDFILE} pattern
address@hidden differences in @command{awk} and @command{gawk},
@code{BEGINFILE}/@code{ENDFILE} patterns
This @value{SECTION} describes a @command{gawk}-specific feature.
@@ -11707,7 +11704,7 @@ The body of the @code{BEGINFILE} rules is executed just
before
@command{gawk} reads the first record from a file. @code{FILENAME}
is set to the name of the current file, and @code{FNR} is set to zero.
-The @code{BEGINFILE} rule provides you the opportunity for two tasks
+The @code{BEGINFILE} rule provides you the opportunity to accomplish two tasks
that would otherwise be difficult or impossible to perform:
@itemize @bullet
@@ -12525,10 +12522,7 @@ first rule in the program.
@node Nextfile Statement
@subsection The @code{nextfile} Statement
@cindex @code{nextfile} statement
address@hidden differences in @command{awk} and @command{gawk},
@code{next}/@code{nextfile} statements
address@hidden common extensions, @code{nextfile} statement
address@hidden extensions, address@hidden @code{nextfile} statement
The @code{nextfile} statement
is similar to the @code{next} statement.
However, instead of abandoning processing of the current record, the
@@ -13788,7 +13782,7 @@ if it didn't exist before!
@end quotation
@c @cindex arrays, @code{in} operator and
address@hidden @code{in} operator, arrays and
address@hidden @code{in} operator
To determine whether an element exists in an array at a certain index, use
the following expression:
@@ -13927,12 +13921,12 @@ for (@var{var} in @var{array})
@end example
@noindent
address@hidden @code{in} operator, arrays and
address@hidden @code{in} operator
This loop executes @var{body} once for each index in @var{array} that the
program has previously used, with the variable @var{var} set to that index.
@cindex arrays, @code{for} statement and
address@hidden @code{for} statement, in arrays
address@hidden @code{for} statement, looping over arrays
The following program uses this form of the @code{for} statement. The
first rule scans the input records and notes which words appear (at
least once) in the input, by storing a one into the array @code{used} with
@@ -15283,7 +15277,7 @@ The @var{array} argument to @code{match()} is a
using a third argument is a fatal error.
@item patsplit(@var{string}, @var{array} @r{[}, @var{fieldpat} @r{[},
@var{seps} @r{]} @r{]}) #
address@hidden @code{patsplit()} function
address@hidden @code{patsplit()} function (@command{gawk})
Divide
@var{string} into pieces defined by @var{fieldpat}
and store the pieces in @var{array} and the separator strings in the
@@ -16022,13 +16016,10 @@ which discusses this feature in more detail and gives
an example.
@item fflush(@address@hidden@r{]})
@cindex @code{fflush()} function
address@hidden common extensions, @code{fflush()} function
address@hidden extensions, address@hidden @code{fflush()} function
Flush any buffered output associated with @var{filename}, which is either a
file opened for writing or a shell command for redirecting output to
a pipe or coprocess.
address@hidden portability, @code{fflush()} function and
@cindex buffers, flushing
@cindex output, buffering
Many utility programs @dfn{buffer} their output; i.e., they save information
@@ -24035,7 +24026,7 @@ discusses the ability to dynamically add new built-in
functions to
@node Nondecimal Data
@section Allowing Nondecimal Input Data
@cindex @code{--non-decimal-data} option
address@hidden advanced features, @command{gawk}, nondecimal input data
address@hidden advanced features, nondecimal input data
@cindex input, address@hidden nondecimal
@cindex constants, nondecimal
@@ -24518,7 +24509,7 @@ Mike Brennan
@c brennan@@whidbey.com
@end smallexample
address@hidden advanced features, @command{gawk}, address@hidden communicating
with
address@hidden advanced features, address@hidden communicating with
@cindex processes, two-way communications with
It is often useful to be able to
send data to a separate program for
@@ -24668,7 +24659,7 @@ using regular pipes.
@node TCP/IP Networking
@section Using @command{gawk} for Network Programming
address@hidden advanced features, @command{gawk}, network programming
address@hidden advanced features, network programming
@cindex networks, programming
@c STARTOFRANGE tcpip
@cindex TCP/IP
@@ -24779,7 +24770,6 @@ extensive examples.
@cindex @command{awk} programs, profiling
@c STARTOFRANGE proawk
@cindex profiling @command{awk} programs
address@hidden profiling @command{gawk}
@cindex @code{awkprof.out} file
@cindex files, @code{awkprof.out}
@@ -24974,6 +24964,7 @@ the target of a redirection isn't a scalar, it gets
parenthesized.
@item
@command{gawk} supplies leading comments in
front of the @code{BEGIN} and @code{END} rules,
+the @code{BEGINFILE} and @code{ENDFILE} rules,
the pattern/action rules, and the functions.
@end itemize
@@ -25193,13 +25184,13 @@ is copied to a portable object file (@code{.po})
and translations are created and shipped with the application.
For example, there might be a @file{fr.po} for a French translation.
address@hidden @code{.mo} files
address@hidden files, @code{.mo}
address@hidden @code{.gmo} files
address@hidden files, @code{.gmo}
@cindex message object files
@cindex files, message object
@item
Each language's @file{.po} file is converted into a binary
-message object (@file{.mo}) file.
+message object (@file{.gmo}) file.
A message object file contains the original messages and their
translations in a binary format that allows fast lookup of translations
at runtime.
@@ -25211,11 +25202,11 @@ are installed in a standard place.
@cindex @code{bindtextdomain()} function (C library)
@item
For testing and development, it is possible to tell @code{gettext}
-to use @file{.mo} files in a different directory than the standard
+to use @file{.gmo} files in a different directory than the standard
one by using the @code{bindtextdomain()} function.
address@hidden @code{.mo} files, specifying directory of
address@hidden files, @code{.mo}, specifying directory of
address@hidden @code{.gmo} files, specifying directory of
address@hidden files, @code{.gmo}, specifying directory of
@cindex message object files, specifying directory of
@cindex files, message object, specifying directory of
@item
@@ -25241,8 +25232,8 @@ printf("%s", gettext("Don't Panic!\n"));
The tools that extract messages from source code pull out all
strings enclosed in calls to @code{gettext()}.
address@hidden @code{_} (underscore), @code{_} C macro
address@hidden underscore (@code{_}), @code{_} C macro
address@hidden @code{_} (underscore), C macro
address@hidden underscore (@code{_}), C macro
The GNU @code{gettext} developers, recognizing that typing
@samp{gettext(@dots{})} over and over again is both painful and ugly to look
at, use the macro @samp{_} (an underscore) to make things easier:
@@ -25381,14 +25372,14 @@ The default value for @var{category} is
@code{"LC_MESSAGES"}.
The same remarks about argument order as for the @code{dcgettext()} function
apply.
address@hidden @code{.mo} files, specifying directory of
address@hidden files, @code{.mo}, specifying directory of
address@hidden @code{.gmo} files, specifying directory of
address@hidden files, @code{.gmo}, specifying directory of
@cindex message object files, specifying directory of
@cindex files, message object, specifying directory of
@cindex @code{bindtextdomain()} function (@command{gawk})
@item bindtextdomain(@var{directory} @r{[}, @address@hidden)
Change the directory in which
address@hidden looks for @file{.mo} files, in case they
address@hidden looks for @file{.gmo} files, in case they
will not or cannot be placed in the standard locations
(e.g., during testing).
Return the directory in which @var{domain} is ``bound.''
@@ -25456,7 +25447,7 @@ message, but it uses the default @code{"LC_MESSAGES"}
category.
@cindex @code{LC_MESSAGES} locale category, @code{bindtextdomain()} function
(@command{gawk})
@item
-During development, you might want to put the @file{.mo}
+During development, you might want to put the @file{.gmo}
file in a private directory for testing. This is done
with the @code{bindtextdomain()} built-in function:
@@ -25796,7 +25787,7 @@ msgstr "Like, the scoop is"
@cindex Linux
@cindex GNU/Linux
The next step is to make the directory to hold the binary message object
-file and then to create the @file{guide.mo} file.
+file and then to create the @file{guide.gmo} file.
The directory layout shown here is standard for GNU @code{gettext} on
GNU/Linux systems. Other versions of @code{gettext} may use a different
layout:
@@ -25805,24 +25796,24 @@ layout:
$ @kbd{mkdir en_US en_US/LC_MESSAGES}
@end example
address@hidden @code{.po} files, converting to @code{.mo}
address@hidden files, @code{.po}, converting to @code{.mo}
address@hidden @code{.mo} files, converting from @code{.po}
address@hidden files, @code{.mo}, converting from @code{.po}
address@hidden @code{.po} files, converting to @code{.gmo}
address@hidden files, @code{.po}, converting to @code{.gmo}
address@hidden @code{.gmo} files, converting from @code{.po}
address@hidden files, @code{.gmo}, converting from @code{.po}
@cindex portable object files, converting to message object files
@cindex files, portable object, converting to message object files
@cindex message object files, converting from portable object files
@cindex files, message object, converting from portable object files
@cindex @command{msgfmt} utility
The @command{msgfmt} utility does the conversion from human-readable
address@hidden file to machine-readable @file{.mo} file.
address@hidden file to machine-readable @file{.gmo} file.
By default, @command{msgfmt} creates a file named @file{messages}.
This file must be renamed and placed in the proper directory so that
@command{gawk} can find it:
@example
$ @kbd{msgfmt guide-mellow.po}
-$ @kbd{mv messages en_US/LC_MESSAGES/guide.mo}
+$ @kbd{mv messages en_US/LC_MESSAGES/guide.gmo}
@end example
Finally, we run the program to test it:
@@ -30826,7 +30817,7 @@ static const char *ext_version = "filefuncs extension:
version 1.0";
int plugin_is_GPL_compatible;
@end example
address@hidden programming conventions, @command{gawk} internals
address@hidden programming conventions, @command{gawk} extensions
By convention, for an @command{awk} function @code{foo()}, the C function
that implements it is called @code{do_foo()}. The function should have
two arguments: the first is an @code{int} usually called @code{nargs},
@@ -31129,7 +31120,6 @@ earlier. When done, return the result from
@code{fill_stat_array()}:
@}
@end example
address@hidden programming conventions, @command{gawk} internals
Finally, it's necessary to provide the ``glue'' that loads the
new function(s) into @command{gawk}.
@@ -31290,12 +31280,14 @@ The usage is:
@item @@load "filefuncs"
This is how you load the extension.
address@hidden @code{chdir} extension function
@item result = chdir("/some/directory")
The @code{chdir()} function is a direct hook to the @code{chdir()}
system call to change the current directory. It returns zero
upon success or less than zero upon error. In the latter case it updates
@code{ERRNO}.
address@hidden @code{stat} extension function
@item result = stat("/some/path", statdata [, follow])
The @code{stat()} function provides a hook into the
@code{stat()} system call.
@@ -31385,6 +31377,7 @@ or
Not all systems support all file types.
@end multitable
address@hidden @code{fts} extension function
@item flags = or(FTS_PHYSICAL, ...)
@itemx result = fts(pathlist, flags, filedata)
Walk the file trees provided in @code{pathlist} and fill in the
@@ -31505,6 +31498,7 @@ See @file{test/fts.awk} in the @command{gawk}
distribution for an example.
@node Extension Sample Fnmatch
@subsection Interface To @code{fnmatch()}
address@hidden @code{fnmatch} extension function
This extension provides an interface to the C library
@code{fnmatch()} function. The usage is:
@@ -31577,6 +31571,7 @@ The @code{fork} extension adds three functions, as
follows.
@item @@load "fork"
This is how you load the extension.
address@hidden @code{fork} extension function
@item pid = fork()
This function creates a new process. The return value is the zero in the
child and the process-id number of the child in the parent, or @minus{}1
@@ -31584,11 +31579,13 @@ upon error. In the latter case, @code{ERRNO}
indicates the problem.
In the child, @code{PROCINFO["pid"]} and @code{PROCINFO["ppid"]} are
updated to reflect the correct values.
address@hidden @code{waitpid} extension function
@item ret = waitpid(pid)
This function takes a numeric argument, which is the process-id to
wait for. The return value is that of the
@code{waitpid()} system call.
address@hidden @code{wait} extension function
@item ret = wait()
This function waits for the first child to die.
The return value is that of the
@@ -31611,6 +31608,7 @@ else
@node Extension Sample Inplace
@subsection Enabling In-Place File Editing
address@hidden @code{inplace} extension
The @code{inplace} extension emulates GNU @command{sed}'s @option{-i} option
which performs ``in place'' editing of each input file.
It uses the bundled @file{inplace.awk} include file to invoke the extension
@@ -31674,9 +31672,11 @@ The @code{ordchr} extension adds two functions, named
@item @@load "ordchr"
This is how you load the extension.
address@hidden @code{ord} extension function
@item number = ord(string)
Return the numeric value of the first character in @code{string}.
address@hidden @code{chr} extension function
@item char = chr(number)
Return a string whose first character is that represented by @code{number}.
@end table
@@ -31697,6 +31697,7 @@ printf("The string value of 65 is %s\n", chr(65))
The @code{readdir} extension adds an input parser for directories.
The usage is as follows:
address@hidden @code{readdir} extension
@example
@@load "readdir"
@end example
@@ -31750,6 +31751,7 @@ the characters in each output line. It's main purpose
is to show how to
write an output wrapper, although it may be mildly amusing for the unwary.
Here is an example:
address@hidden @code{revoutput} extension
@example
@@load "revoutput"
@@ -31771,6 +31773,7 @@ the @command{awk} program. It's main purpose is to
show how to write
a two-way processor, although it may also be mildly amusing.
The following example shows how to use it:
address@hidden @code{revtwoway} extension
@example
@@load "revtwoway"
@@ -31790,12 +31793,14 @@ The @code{rwarray} extension adds two functions,
named @code{writea()} and @code{reada()}, as follows:
@table @code
address@hidden @code{writea} extension function
@item ret = writea(file, array)
This function takes a string argument, which is the name of the file
to which dump the array, and the array itself as the second argument.
@code{writea()} understands multidimensional arrays. It returns one on
success, or zero upon failure.
address@hidden @code{reada} extension function
@item ret = reada(file, array)
@code{reada()} is the inverse of @code{writea()};
it reads the file named as its first argument, filling in
@@ -31838,6 +31843,7 @@ named @code{readfile()}:
@item @@load "readfile"
This is how you load the extension.
address@hidden @code{readfile} extension function
@item result = readfile("/some/path")
The argument is the name of the file to read. The return value is a
string containing the entire contents of the requested file. Upon error,
@@ -31858,6 +31864,7 @@ if (contents == "" && ERRNO != "") @{
@node Extension Sample API Tests
@subsection API Tests
address@hidden @code{testext} extension
The @code{testext} extension exercises parts of the extension API that
are not tested by the other samples. The @file{extension/testext.c}
@@ -31869,9 +31876,6 @@ for more information.
@node Extension Sample Time
@subsection Extension Time Functions
address@hidden time
address@hidden sleep
-
These functions can be used either by invoking @command{gawk}
with a command-line argument of @samp{-l time} or by
inserting @samp{@@load "time"} in your script.
@@ -31880,7 +31884,7 @@ inserting @samp{@@load "time"} in your script.
@item @@load "time"
This is how you load the extension.
address@hidden @code{gettimeofday} time extension function
address@hidden @code{gettimeofday} extension function
@item the_time = gettimeofday()
Return the time in seconds that has elapsed since 1970-01-01 UTC as a
floating point value. If the time is unavailable on this platform, return
@@ -31890,7 +31894,7 @@ If the standard C @code{gettimeofday()} system call is
available on this
platform, then it simply returns the value. Otherwise, if on Windows,
it tries to use @code{GetSystemTimeAsFileTime()}.
address@hidden @code{sleep} time extension function
address@hidden @code{sleep} extension function
@item result = sleep(@var{seconds})
Attempt to sleep for @var{seconds} seconds. If @var{seconds} is negative,
or the attempt to sleep fails, return @minus{}1 and set @code{ERRNO}.
@@ -31903,6 +31907,7 @@ tries to use @code{nanosleep()} or @code{select()} to
implement the delay.
@node gawkextlib
@section The @code{gawkextlib} Project
address@hidden @code{gawkextlib} project
The @uref{http://sourceforge.net/projects/gawkextlib/, @code{gawkextlib}}
project provides a number of @command{gawk} extensions, including one for
processing XML files. This is the evolution of the original @command{xgawk}
@@ -31939,6 +31944,7 @@ code control system. The command is as follows:
git clone git://git.code.sf.net/p/gawkextlib/code gawkextlib-code
@end example
address@hidden Expat XML parser library
You will need to have the @uref{http://expat.sourceforge.net, Expat}
XML parser library installed in order to build and use the XML extension.
@@ -32615,6 +32621,8 @@ Prestandard VAX C compiler for VAX/VMS
@node Common Extensions
@appendixsec Common Extensions Summary
address@hidden extensions, Brian Kernighan's @command{awk}
address@hidden extensions, @command{mawk}
This @value{SECTION} summarizes the common extensions supported
by @command{gawk}, Brian Kernighan's @command{awk}, and @command{mawk},
the three most widely-used freely available versions of @command{awk}
@@ -32638,6 +32646,10 @@ the three most widely-used freely available versions
of @command{awk}
@item Time related functions @tab @tab X @tab X
@end multitable
+(Technically speaking, as of late 2012, @code{fflush()}, @samp{delete
@var{array}},
+and @code{nextfile} are no longer extensions, since they have been added
+to POSIX.)
+
@node Ranges and Locales
@appendixsec Regexp Ranges and Locales: A Long Sad Story
@@ -32870,7 +32882,7 @@ the various PC platforms.
Christos Zoulas
provided the @code{extension()}
built-in function for dynamically adding new modules.
-(This was removed at @command{gawk} 4.1.)
+(This was obsoleted at @command{gawk} 4.1.)
@item
@cindex Kahrs, J@"urgen
@@ -32930,7 +32942,6 @@ Patrick T.J.@: McPhee contributed the code for dynamic
loading in Windows32
environments.
(This is no longer supported)
-
@item
@cindex Haque, John
John Haque made the following contributions:
@@ -32950,6 +32961,9 @@ The initial text of
@item
The work to merge the three versions of @command{gawk}
into one, for the 4.1 release.
+
address@hidden
+Improved array internals for arrays indexed by integers.
@end itemize
@item
@@ -33669,7 +33683,7 @@ at least the @samp{|&} operator.
@cindex @command{gawk}, MS-Windows version of
@cindex @code{;} (semicolon), @code{AWKPATH} variable and
@cindex semicolon (@code{;}), @code{AWKPATH} variable and
address@hidden @code{AWKPATH} environment variable
address@hidden @env{AWKPATH} environment variable
The MS-DOS and MS-Windows versions of @command{gawk} search for
program files as described in @ref{AWKPATH Variable}. However,
semicolons (rather than colons) separate elements in the @env{AWKPATH}
@@ -34146,8 +34160,7 @@ This @value{SECTION} briefly describes where to get
them:
@cindex Kernighan, Brian
@cindex source code, Brian Kernighan's @command{awk}
@cindex @command{awk}, versions of, See Also Brian Kernighan's @command{awk}
address@hidden extensions, Brian Kernighan's @command{awk}
address@hidden Brian Kernighan's @command{awk}, extensions
address@hidden Brian Kernighan's @command{awk}
@item Unix @command{awk}
Brian Kernighan, one of the original designers of Unix @command{awk},
has made his implementation of
@@ -36033,8 +36046,7 @@ to indicate their base. Thus, @code{013} is 11 (one
times 8 plus 3).
@xref{Nondecimal-numbers}.
@cindex P1003.1 POSIX standard
address@hidden P1003.2 POSIX standard
address@hidden P1003.1, P1003.2
address@hidden P1003.1
See ``POSIX.''
@item Pattern
@@ -36053,7 +36065,6 @@ Keyboard And Chair.)
@item POSIX
The name for a series of standards
address@hidden being developed by the IEEE
that specify a Portable Operating System interface. The ``IX'' denotes
the Unix heritage of these standards. The main standard of interest for
@command{awk} users is
-----------------------------------------------------------------------
Summary of changes:
TODO | 5 +-
doc/ChangeLog | 1 +
doc/gawk.info | 1300 ++++++++++++++++++++++++++++---------------------------
doc/gawk.texi | 201 +++++----
doc/gawktexi.in | 195 +++++----
5 files changed, 877 insertions(+), 825 deletions(-)
hooks/post-receive
--
gawk
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [gawk-diffs] [SCM] gawk branch, master, updated. 440d03600a15452975c8fe2e0c1bf349cd452bad,
Arnold Robbins <=