summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2015-01-20 22:04:06 +0200
committerArnold D. Robbins <arnold@skeeve.com>2015-01-20 22:04:06 +0200
commit4c01db1833a02173c910d463eaed77ad6ed66195 (patch)
treed42d520181c3aaf4ad9d2aefc6fa38417a0013ea
parentf77c13a546af58cb8cdb593f49bbfa844b10dd7e (diff)
parent501f5c4fc53a1c74a8a4074832dcc2bd72224ed6 (diff)
downloadgawk-4c01db1833a02173c910d463eaed77ad6ed66195.tar.gz
Merge branch 'gawk-4.1-stable'
-rw-r--r--ChangeLog9
-rw-r--r--doc/ChangeLog4
-rw-r--r--doc/gawk.info1220
-rw-r--r--doc/gawk.texi106
-rw-r--r--doc/gawktexi.in106
-rw-r--r--gawkapi.c1
-rw-r--r--symbol.c1
7 files changed, 733 insertions, 714 deletions
diff --git a/ChangeLog b/ChangeLog
index a8079e05..75a049da 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2015-01-20 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawkapi.c (api_set_array_element): Remove useless call to
+ make_aname.
+ * symbol.c (load_symbols): Ditto.
+ Thanks to Andrew Schorr for pointing out the problem.
+
2015-01-19 Arnold D. Robbins <arnold@skeeve.com>
* awkgram.c: Update to bison 3.0.3.
@@ -1798,7 +1805,7 @@
2012-12-25 Arnold D. Robbins <arnold@skeeve.com>
Remove sym-constant from API after discussions with John
- Haque and Andy Schorr.
+ Haque and Andrew Schorr.
* gawkapi.h (api_sym_constant): Removed field in API struct.
(sym_constant): Remove macro.
diff --git a/doc/ChangeLog b/doc/ChangeLog
index e16bf9e9..020057bb 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,3 +1,7 @@
+2015-01-20 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawktexi.in: O'Reilly fixes.
+
2015-01-19 Arnold D. Robbins <arnold@skeeve.com>
* gawkinet.texi: Fix capitalization in document title.
diff --git a/doc/gawk.info b/doc/gawk.info
index 376076d9..fe51de53 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -1048,8 +1048,8 @@ in *note Sample Programs::, should be of interest.
- *note Arrays::, covers `awk''s one-and-only data structure:
the associative array. Deleting array elements and whole
- arrays is also described, as well as sorting arrays in
- `gawk'. It also describes how `gawk' provides arrays of
+ arrays is described, as well as sorting arrays in `gawk'.
+ The major node also describes how `gawk' provides arrays of
arrays.
- *note Functions::, describes the built-in functions `awk' and
@@ -1058,14 +1058,13 @@ in *note Sample Programs::, should be of interest.
indirectly.
* Part II shows how to use `awk' and `gawk' for problem solving.
- There is lots of code here for you to read and learn from. It
- contains the following chapters:
+ There is lots of code here for you to read and learn from. This
+ part contains the following chapters:
- - *note Library Functions::, which provides a number of
- functions meant to be used from main `awk' programs.
+ - *note Library Functions::, provides a number of functions
+ meant to be used from main `awk' programs.
- - *note Sample Programs::, which provides many sample `awk'
- programs.
+ - *note Sample Programs::, provides many sample `awk' programs.
Reading these two chapters allows you to see `awk' solving real
problems.
@@ -1097,7 +1096,7 @@ in *note Sample Programs::, should be of interest.
It contains the following appendices:
- *note Language History::, describes how the `awk' language
- has evolved since its first release to present. It also
+ has evolved since its first release to the present. It also
describes how `gawk' has acquired features over time.
- *note Installation::, describes how to get `gawk', how to
@@ -1114,7 +1113,7 @@ in *note Sample Programs::, should be of interest.
material for those who are completely unfamiliar with
computer programming.
- The *note Glossary::, defines most, if not all of, the
+ The *note Glossary::, defines most, if not all, of the
significant terms used throughout the Info file. If you find
terms that you aren't familiar with, try looking them up here.
@@ -1143,8 +1142,8 @@ node briefly documents the typographical conventions used in Texinfo.
common shell primary and secondary prompts, `$' and `>'. Input that
you type is shown `like this'. Output from the command is preceded by
the glyph "-|". This typically represents the command's standard
-output. Error messages, and other output on the command's standard
-error, are preceded by the glyph "error-->". For example:
+output. Error messages and other output on the command's standard
+error are preceded by the glyph "error-->". For example:
$ echo hi on stdout
-| hi on stdout
@@ -1156,7 +1155,7 @@ particular, there are special characters called "control characters."
These are characters that you type by holding down both the `CONTROL'
key and another key, at the same time. For example, a `Ctrl-d' is typed
by first pressing and holding the `CONTROL' key, next pressing the `d'
-key and finally releasing both keys.
+key, and finally releasing both keys.
For the sake of brevity, throughout this Info file, we refer to
Brian Kernighan's version of `awk' as "BWK `awk'." (*Note Other
@@ -1172,7 +1171,7 @@ Dark Corners
Until the POSIX standard (and `GAWK: Effective AWK Programming'),
many features of `awk' were either poorly documented or not documented
at all. Descriptions of such features (often called "dark corners")
-are noted in this Info file with "(d.c.)". They also appear in the
+are noted in this Info file with "(d.c.)." They also appear in the
index under the heading "dark corner."
But, as noted by the opening quote, any coverage of dark corners is
@@ -1195,8 +1194,8 @@ editor. GNU Emacs is the most widely used version of Emacs today.
The GNU(1) Project is an ongoing effort on the part of the Free
Software Foundation to create a complete, freely distributable,
-POSIX-compliant computing environment. The FSF uses the "GNU General
-Public License" (GPL) to ensure that their software's source code is
+POSIX-compliant computing environment. The FSF uses the GNU General
+Public License (GPL) to ensure that its software's source code is
always available to the end user. A copy of the GPL is included for
your reference (*note Copying::). The GPL applies to the C language
source code for `gawk'. To find out more about the FSF and the GNU
@@ -1224,26 +1223,26 @@ original, "old" version of `awk'.
I started working with that version in the fall of 1988. As work on
it progressed, the FSF published several preliminary versions (numbered
-0.X). In 1996, Edition 1.0 was released with `gawk' 3.0.0. The FSF
+0.X). In 1996, edition 1.0 was released with `gawk' 3.0.0. The FSF
published the first two editions under the title `The GNU Awk User's
Guide'.
This edition maintains the basic structure of the previous editions.
For FSF edition 4.0, the content was thoroughly reviewed and updated.
All references to `gawk' versions prior to 4.0 were removed. Of
-significant note for that edition was *note Debugger::.
+significant note for that edition was the addition of *note Debugger::.
For FSF edition 4.1, the content has been reorganized into parts,
and the major new additions are *note Arbitrary Precision Arithmetic::,
and *note Dynamic Extensions::.
This Info file will undoubtedly continue to evolve. If you find an
-error in this Info file, please report it! *Note Bugs::, for
+error in the Info file, please report it! *Note Bugs::, for
information on submitting problem reports electronically.
---------- Footnotes ----------
- (1) GNU stands for "GNU's not Unix."
+ (1) GNU stands for "GNU's Not Unix."
(2) The terminology "GNU/Linux" is explained in the *note Glossary::.
@@ -1287,7 +1286,7 @@ acknowledgments:
this manual. Jay Fenlason contributed many ideas and sample
programs. Richard Mlynarik and Robert Chassell gave helpful
comments on drafts of this manual. The paper `A Supplemental
- Document for `awk'' by John W. Pierce of the Chemistry Department
+ Document for AWK' by John W. Pierce of the Chemistry Department
at UC San Diego, pinpointed several issues relevant both to `awk'
implementation and to this manual, that would otherwise have
escaped us.
@@ -1300,7 +1299,7 @@ GNU Project.
acknowledgements:
The following people (in alphabetical order) provided helpful
- comments on various versions of this book, Rick Adams, Dr. Nelson
+ comments on various versions of this book: Rick Adams, Dr. Nelson
H.F. Beebe, Karl Berry, Dr. Michael Brennan, Rich Burridge, Claire
Cloutier, Diane Close, Scott Deifik, Christopher ("Topher") Eliot,
Jeffrey Friedl, Dr. Darrel Hankerson, Michal Jaegermann, Dr.
@@ -1309,7 +1308,7 @@ acknowledgements:
Robert J. Chassell provided much valuable advice on the use of
Texinfo. He also deserves special thanks for convincing me _not_
- to title this Info file `How To Gawk Politely'. Karl Berry helped
+ to title this Info file `How to Gawk Politely'. Karl Berry helped
significantly with the TeX part of Texinfo.
I would like to thank Marshall and Elaine Hartholz of Seattle and
@@ -1349,18 +1348,18 @@ of people. *Note Contributors::, for the full list.
Thanks to Michael Brennan for the Forewords.
Thanks to Patrice Dumas for the new `makeinfo' program. Thanks to
-Karl Berry who continues to work to keep the Texinfo markup language
+Karl Berry, who continues to work to keep the Texinfo markup language
sane.
Robert P.J. Day, Michael Brennan, and Brian Kernighan kindly acted as
reviewers for the 2015 edition of this Info file. Their feedback helped
improve the final work.
- I would like to thank Brian Kernighan for invaluable assistance
-during the testing and debugging of `gawk', and for ongoing help and
-advice in clarifying numerous points about the language. We could not
-have done nearly as good a job on either `gawk' or its documentation
-without his help.
+ I would also like to thank Brian Kernighan for his invaluable
+assistance during the testing and debugging of `gawk', and for his
+ongoing help and advice in clarifying numerous points about the
+language. We could not have done nearly as good a job on either `gawk'
+or its documentation without his help.
Brian is in a class by himself as a programmer and technical author.
I have to thank him (yet again) for his ongoing friendship and for
@@ -1403,10 +1402,10 @@ contain "function definitions", an advanced feature that we will ignore
for now; *note User-defined::). Each rule specifies one pattern to
search for and one action to perform upon finding the pattern.
- Syntactically, a rule consists of a pattern followed by an action.
-The action is enclosed in braces to separate it from the pattern.
-Newlines usually separate rules. Therefore, an `awk' program looks
-like this:
+ Syntactically, a rule consists of a "pattern" followed by an
+"action". The action is enclosed in braces to separate it from the
+pattern. Newlines usually separate rules. Therefore, an `awk' program
+looks like this:
PATTERN { ACTION }
PATTERN { ACTION }
@@ -1474,7 +1473,7 @@ program as the first argument of the `awk' command, like this:
awk 'PROGRAM' INPUT-FILE1 INPUT-FILE2 ...
-where PROGRAM consists of a series of PATTERNS and ACTIONS, as
+where PROGRAM consists of a series of patterns and actions, as
described earlier.
This command format instructs the "shell", or command interpreter,
@@ -1489,8 +1488,8 @@ programs from shell scripts, because it avoids the need for a separate
file for the `awk' program. A self-contained shell script is more
reliable because there are no other files to misplace.
- Later in this chapter, *note Very Simple::, presents several short,
-self-contained programs.
+ Later in this chapter, in *note Very Simple::, we'll see examples of
+several short, self-contained programs.

File: gawk.info, Node: Read Terminal, Next: Long, Prev: One-shot, Up: Running gawk
@@ -1505,7 +1504,7 @@ following command line:
`awk' applies the PROGRAM to the "standard input", which usually means
whatever you type on the keyboard. This continues until you indicate
-end-of-file by typing `Ctrl-d'. (On other operating systems, the
+end-of-file by typing `Ctrl-d'. (On non-POSIX operating systems, the
end-of-file character may be different. For example, on OS/2, it is
`Ctrl-z'.)
@@ -1580,10 +1579,9 @@ that are provided on the `awk' command line. (Also, placing the
program in a file allows us to use a literal single quote in the program
text, instead of the magic `\47'.)
- If you want to clearly identify your `awk' program files as such,
-you can add the extension `.awk' to the file name. This doesn't affect
-the execution of the `awk' program but it does make "housekeeping"
-easier.
+ If you want to clearly identify an `awk' program file as such, you
+can add the extension `.awk' to the file name. This doesn't affect the
+execution of the `awk' program but it does make "housekeeping" easier.

File: gawk.info, Node: Executable Scripts, Next: Comments, Prev: Long, Up: Running gawk
@@ -1712,7 +1710,7 @@ at a later time.

File: gawk.info, Node: Quoting, Prev: Comments, Up: Running gawk
-1.1.6 Shell-Quoting Issues
+1.1.6 Shell Quoting Issues
--------------------------
* Menu:
@@ -1807,7 +1805,7 @@ shell quoting tricks, like this:
-| Here is a single quote <'>
This program consists of three concatenated quoted strings. The first
-and the third are single quoted, the second is double quoted.
+and the third are single-quoted, and the second is double-quoted.
This can be "simplified" to:
@@ -1834,8 +1832,7 @@ like so:
$ awk 'BEGIN { print "Here is a double quote <\42>" }'
-| Here is a double quote <">
-This works nicely, except that you should comment clearly what the
-escapes mean.
+This works nicely, but you should comment clearly what the escapes mean.
A fourth option is to use command-line variable assignment, like
this:
@@ -1844,11 +1841,11 @@ this:
-| Here is a single quote <'>
(Here, the two string constants and the value of `sq' are
-concatenated into a single string which is printed by `print'.)
+concatenated into a single string that is printed by `print'.)
If you really need both single and double quotes in your `awk'
program, it is probably best to move it into a separate file, where the
-shell won't be part of the picture, and you can say what you mean.
+shell won't be part of the picture and you can say what you mean.

File: gawk.info, Node: DOS Quoting, Up: Quoting
@@ -1906,7 +1903,7 @@ of green crates shipped, the number of red boxes shipped, the number of
orange bags shipped, and the number of blue packages shipped,
respectively. There are 16 entries, covering the 12 months of last year
and the first four months of the current year. An empty line separates
-the data for the two years.
+the data for the two years:
Jan 13 25 15 115
Feb 15 32 24 226
@@ -1938,7 +1935,7 @@ File: gawk.info, Node: Very Simple, Next: Two Rules, Prev: Sample Data Files,
The following command runs a simple `awk' program that searches the
input file `mail-list' for the character string `li' (a grouping of
characters is usually called a "string"; the term "string" is based on
-similar usage in English, such as "a string of pearls," or "a string of
+similar usage in English, such as "a string of pearls" or "a string of
cars in a train"):
awk '/li/ { print $0 }' mail-list
@@ -1974,24 +1971,25 @@ prints all lines matching the pattern `li'. By comparison, omitting
the `print' statement but retaining the braces makes an empty action
that does nothing (i.e., no lines are printed).
- Many practical `awk' programs are just a line or two. Following is a
-collection of useful, short programs to get you started. Some of these
-programs contain constructs that haven't been covered yet. (The
-description of the program will give you a good idea of what is going
-on, but you'll need to read the rest of the Info file to become an
-`awk' expert!) Most of the examples use a data file named `data'.
-This is just a placeholder; if you use these programs yourself,
-substitute your own file names for `data'. For future reference, note
-that there is often more than one way to do things in `awk'. At some
-point, you may want to look back at these examples and see if you can
-come up with different ways to do the same things shown here:
+ Many practical `awk' programs are just a line or two long.
+Following is a collection of useful, short programs to get you started.
+Some of these programs contain constructs that haven't been covered
+yet. (The description of the program will give you a good idea of what
+is going on, but you'll need to read the rest of the Info file to
+become an `awk' expert!) Most of the examples use a data file named
+`data'. This is just a placeholder; if you use these programs
+yourself, substitute your own file names for `data'. For future
+reference, note that there is often more than one way to do things in
+`awk'. At some point, you may want to look back at these examples and
+see if you can come up with different ways to do the same things shown
+here:
* Print every line that is longer than 80 characters:
awk 'length($0) > 80' data
- The sole rule has a relational expression as its pattern and it
- has no action--so it uses the default action, printing the record.
+ The sole rule has a relational expression as its pattern and has no
+ action--so it uses the default action, printing the record.
* Print the length of the longest input line:
@@ -2046,8 +2044,8 @@ come up with different ways to do the same things shown here:
awk 'NR % 2 == 0' data
- If you use the expression `NR % 2 == 1' instead, the program would
- print the odd-numbered lines.
+ If you used the expression `NR % 2 == 1' instead, the program
+ would print the odd-numbered lines.

File: gawk.info, Node: Two Rules, Next: More Complex, Prev: Very Simple, Up: Getting Started
@@ -5919,7 +5917,7 @@ the same as specifying no timeout at all.
implicit loop that reads input records and matches them against
patterns, like so:
- $ gawk 'BEGIN { PROCINFO["-", "READ_TIMEOUT"] = 5000 }
+ $ gawk 'BEGIN { PROCINFO["-", "READ_TIMEOUT"] = 5000 }
> { print "You entered: " $0 }'
gawk
-| You entered: gawk
@@ -32621,7 +32619,7 @@ Index
* exit the debugger: Miscellaneous Debugger Commands.
(line 99)
* exp: Numeric Functions. (line 33)
-* expand utility: Very Simple. (line 72)
+* expand utility: Very Simple. (line 73)
* Expat XML parser library: gawkextlib. (line 33)
* exponent: Numeric Functions. (line 33)
* expressions: Expressions. (line 6)
@@ -34464,550 +34462,550 @@ Node: History51553
Node: Names53904
Ref: Names-Footnote-154997
Node: This Manual55143
-Ref: This Manual-Footnote-161648
-Node: Conventions61748
-Node: Manual History64086
-Ref: Manual History-Footnote-167068
-Ref: Manual History-Footnote-267109
-Node: How To Contribute67183
-Node: Acknowledgments68312
-Node: Getting Started73117
-Node: Running gawk75550
-Node: One-shot76740
-Node: Read Terminal77988
-Node: Long80015
-Node: Executable Scripts81531
-Ref: Executable Scripts-Footnote-184320
-Node: Comments84423
-Node: Quoting86905
-Node: DOS Quoting92429
-Node: Sample Data Files93104
-Node: Very Simple95699
-Node: Two Rules100597
-Node: More Complex102483
-Node: Statements/Lines105345
-Ref: Statements/Lines-Footnote-1109800
-Node: Other Features110065
-Node: When110996
-Ref: When-Footnote-1112750
-Node: Intro Summary112815
-Node: Invoking Gawk113698
-Node: Command Line115212
-Node: Options116010
-Ref: Options-Footnote-1131814
-Ref: Options-Footnote-2132043
-Node: Other Arguments132068
-Node: Naming Standard Input135016
-Node: Environment Variables136109
-Node: AWKPATH Variable136667
-Ref: AWKPATH Variable-Footnote-1140080
-Ref: AWKPATH Variable-Footnote-2140125
-Node: AWKLIBPATH Variable140385
-Node: Other Environment Variables141641
-Node: Exit Status145129
-Node: Include Files145805
-Node: Loading Shared Libraries149402
-Node: Obsolete150829
-Node: Undocumented151526
-Node: Invoking Summary151793
-Node: Regexp153457
-Node: Regexp Usage154911
-Node: Escape Sequences156948
-Node: Regexp Operators163189
-Ref: Regexp Operators-Footnote-1170615
-Ref: Regexp Operators-Footnote-2170762
-Node: Bracket Expressions170860
-Ref: table-char-classes172875
-Node: Leftmost Longest175799
-Node: Computed Regexps177101
-Node: GNU Regexp Operators180498
-Node: Case-sensitivity184171
-Ref: Case-sensitivity-Footnote-1187056
-Ref: Case-sensitivity-Footnote-2187291
-Node: Regexp Summary187399
-Node: Reading Files188866
-Node: Records190960
-Node: awk split records191693
-Node: gawk split records196608
-Ref: gawk split records-Footnote-1201152
-Node: Fields201189
-Ref: Fields-Footnote-1203965
-Node: Nonconstant Fields204051
-Ref: Nonconstant Fields-Footnote-1206294
-Node: Changing Fields206498
-Node: Field Separators212427
-Node: Default Field Splitting215132
-Node: Regexp Field Splitting216249
-Node: Single Character Fields219599
-Node: Command Line Field Separator220658
-Node: Full Line Fields223870
-Ref: Full Line Fields-Footnote-1225387
-Ref: Full Line Fields-Footnote-2225433
-Node: Field Splitting Summary225534
-Node: Constant Size227608
-Node: Splitting By Content232197
-Ref: Splitting By Content-Footnote-1236191
-Node: Multiple Line236354
-Ref: Multiple Line-Footnote-1242240
-Node: Getline242419
-Node: Plain Getline244631
-Node: Getline/Variable247271
-Node: Getline/File248419
-Node: Getline/Variable/File249803
-Ref: Getline/Variable/File-Footnote-1251406
-Node: Getline/Pipe251493
-Node: Getline/Variable/Pipe254176
-Node: Getline/Coprocess255307
-Node: Getline/Variable/Coprocess256559
-Node: Getline Notes257298
-Node: Getline Summary260090
-Ref: table-getline-variants260502
-Node: Read Timeout261331
-Ref: Read Timeout-Footnote-1265156
-Node: Command-line directories265214
-Node: Input Summary266119
-Node: Input Exercises269420
-Node: Printing270148
-Node: Print271925
-Node: Print Examples273382
-Node: Output Separators276161
-Node: OFMT278179
-Node: Printf279533
-Node: Basic Printf280318
-Node: Control Letters281888
-Node: Format Modifiers285871
-Node: Printf Examples291880
-Node: Redirection294366
-Node: Special FD301207
-Ref: Special FD-Footnote-1304367
-Node: Special Files304441
-Node: Other Inherited Files305058
-Node: Special Network306058
-Node: Special Caveats306920
-Node: Close Files And Pipes307871
-Ref: Close Files And Pipes-Footnote-1315053
-Ref: Close Files And Pipes-Footnote-2315201
-Node: Output Summary315351
-Node: Output Exercises316349
-Node: Expressions317029
-Node: Values318214
-Node: Constants318892
-Node: Scalar Constants319583
-Ref: Scalar Constants-Footnote-1320442
-Node: Nondecimal-numbers320692
-Node: Regexp Constants323710
-Node: Using Constant Regexps324235
-Node: Variables327378
-Node: Using Variables328033
-Node: Assignment Options329944
-Node: Conversion331819
-Node: Strings And Numbers332343
-Ref: Strings And Numbers-Footnote-1335408
-Node: Locale influences conversions335517
-Ref: table-locale-affects338264
-Node: All Operators338852
-Node: Arithmetic Ops339482
-Node: Concatenation341987
-Ref: Concatenation-Footnote-1344806
-Node: Assignment Ops344912
-Ref: table-assign-ops349891
-Node: Increment Ops351163
-Node: Truth Values and Conditions354601
-Node: Truth Values355686
-Node: Typing and Comparison356735
-Node: Variable Typing357545
-Node: Comparison Operators361198
-Ref: table-relational-ops361608
-Node: POSIX String Comparison365103
-Ref: POSIX String Comparison-Footnote-1366175
-Node: Boolean Ops366313
-Ref: Boolean Ops-Footnote-1370792
-Node: Conditional Exp370883
-Node: Function Calls372610
-Node: Precedence376490
-Node: Locales380151
-Node: Expressions Summary381783
-Node: Patterns and Actions384343
-Node: Pattern Overview385463
-Node: Regexp Patterns387142
-Node: Expression Patterns387685
-Node: Ranges391395
-Node: BEGIN/END394501
-Node: Using BEGIN/END395262
-Ref: Using BEGIN/END-Footnote-1397996
-Node: I/O And BEGIN/END398102
-Node: BEGINFILE/ENDFILE400416
-Node: Empty403317
-Node: Using Shell Variables403634
-Node: Action Overview405907
-Node: Statements408233
-Node: If Statement410081
-Node: While Statement411576
-Node: Do Statement413605
-Node: For Statement414749
-Node: Switch Statement417906
-Node: Break Statement420288
-Node: Continue Statement422329
-Node: Next Statement424156
-Node: Nextfile Statement426537
-Node: Exit Statement429167
-Node: Built-in Variables431570
-Node: User-modified432703
-Ref: User-modified-Footnote-1440384
-Node: Auto-set440446
-Ref: Auto-set-Footnote-1454138
-Ref: Auto-set-Footnote-2454343
-Node: ARGC and ARGV454399
-Node: Pattern Action Summary458617
-Node: Arrays461044
-Node: Array Basics462373
-Node: Array Intro463217
-Ref: figure-array-elements465181
-Ref: Array Intro-Footnote-1467707
-Node: Reference to Elements467835
-Node: Assigning Elements470287
-Node: Array Example470778
-Node: Scanning an Array472536
-Node: Controlling Scanning475552
-Ref: Controlling Scanning-Footnote-1480748
-Node: Numeric Array Subscripts481064
-Node: Uninitialized Subscripts483249
-Node: Delete484866
-Ref: Delete-Footnote-1487609
-Node: Multidimensional487666
-Node: Multiscanning490763
-Node: Arrays of Arrays492352
-Node: Arrays Summary497111
-Node: Functions499203
-Node: Built-in500102
-Node: Calling Built-in501180
-Node: Numeric Functions503171
-Ref: Numeric Functions-Footnote-1507990
-Ref: Numeric Functions-Footnote-2508347
-Ref: Numeric Functions-Footnote-3508395
-Node: String Functions508667
-Ref: String Functions-Footnote-1532142
-Ref: String Functions-Footnote-2532271
-Ref: String Functions-Footnote-3532519
-Node: Gory Details532606
-Ref: table-sub-escapes534387
-Ref: table-sub-proposed535907
-Ref: table-posix-sub537271
-Ref: table-gensub-escapes538807
-Ref: Gory Details-Footnote-1539639
-Node: I/O Functions539790
-Ref: I/O Functions-Footnote-1547008
-Node: Time Functions547155
-Ref: Time Functions-Footnote-1557643
-Ref: Time Functions-Footnote-2557711
-Ref: Time Functions-Footnote-3557869
-Ref: Time Functions-Footnote-4557980
-Ref: Time Functions-Footnote-5558092
-Ref: Time Functions-Footnote-6558319
-Node: Bitwise Functions558585
-Ref: table-bitwise-ops559147
-Ref: Bitwise Functions-Footnote-1563456
-Node: Type Functions563625
-Node: I18N Functions564776
-Node: User-defined566421
-Node: Definition Syntax567226
-Ref: Definition Syntax-Footnote-1572633
-Node: Function Example572704
-Ref: Function Example-Footnote-1575623
-Node: Function Caveats575645
-Node: Calling A Function576163
-Node: Variable Scope577121
-Node: Pass By Value/Reference580109
-Node: Return Statement583604
-Node: Dynamic Typing586585
-Node: Indirect Calls587514
-Ref: Indirect Calls-Footnote-1598816
-Node: Functions Summary598944
-Node: Library Functions601646
-Ref: Library Functions-Footnote-1605255
-Ref: Library Functions-Footnote-2605398
-Node: Library Names605569
-Ref: Library Names-Footnote-1609023
-Ref: Library Names-Footnote-2609246
-Node: General Functions609332
-Node: Strtonum Function610435
-Node: Assert Function613457
-Node: Round Function616781
-Node: Cliff Random Function618322
-Node: Ordinal Functions619338
-Ref: Ordinal Functions-Footnote-1622401
-Ref: Ordinal Functions-Footnote-2622653
-Node: Join Function622864
-Ref: Join Function-Footnote-1624633
-Node: Getlocaltime Function624833
-Node: Readfile Function628577
-Node: Shell Quoting630547
-Node: Data File Management631948
-Node: Filetrans Function632580
-Node: Rewind Function636636
-Node: File Checking638023
-Ref: File Checking-Footnote-1639355
-Node: Empty Files639556
-Node: Ignoring Assigns641535
-Node: Getopt Function643086
-Ref: Getopt Function-Footnote-1654548
-Node: Passwd Functions654748
-Ref: Passwd Functions-Footnote-1663585
-Node: Group Functions663673
-Ref: Group Functions-Footnote-1671567
-Node: Walking Arrays671780
-Node: Library Functions Summary673383
-Node: Library Exercises674784
-Node: Sample Programs676064
-Node: Running Examples676834
-Node: Clones677562
-Node: Cut Program678786
-Node: Egrep Program688505
-Ref: Egrep Program-Footnote-1696003
-Node: Id Program696113
-Node: Split Program699758
-Ref: Split Program-Footnote-1703206
-Node: Tee Program703334
-Node: Uniq Program706123
-Node: Wc Program713542
-Ref: Wc Program-Footnote-1717792
-Node: Miscellaneous Programs717886
-Node: Dupword Program719099
-Node: Alarm Program721130
-Node: Translate Program725934
-Ref: Translate Program-Footnote-1730499
-Node: Labels Program730769
-Ref: Labels Program-Footnote-1734120
-Node: Word Sorting734204
-Node: History Sorting738275
-Node: Extract Program740111
-Node: Simple Sed747636
-Node: Igawk Program750704
-Ref: Igawk Program-Footnote-1765028
-Ref: Igawk Program-Footnote-2765229
-Ref: Igawk Program-Footnote-3765351
-Node: Anagram Program765466
-Node: Signature Program768523
-Node: Programs Summary769770
-Node: Programs Exercises770963
-Ref: Programs Exercises-Footnote-1775094
-Node: Advanced Features775185
-Node: Nondecimal Data777133
-Node: Array Sorting778723
-Node: Controlling Array Traversal779420
-Ref: Controlling Array Traversal-Footnote-1787753
-Node: Array Sorting Functions787871
-Ref: Array Sorting Functions-Footnote-1791760
-Node: Two-way I/O791956
-Ref: Two-way I/O-Footnote-1796901
-Ref: Two-way I/O-Footnote-2797087
-Node: TCP/IP Networking797169
-Node: Profiling800042
-Node: Advanced Features Summary808319
-Node: Internationalization810252
-Node: I18N and L10N811732
-Node: Explaining gettext812418
-Ref: Explaining gettext-Footnote-1817443
-Ref: Explaining gettext-Footnote-2817627
-Node: Programmer i18n817792
-Ref: Programmer i18n-Footnote-1822658
-Node: Translator i18n822707
-Node: String Extraction823501
-Ref: String Extraction-Footnote-1824632
-Node: Printf Ordering824718
-Ref: Printf Ordering-Footnote-1827504
-Node: I18N Portability827568
-Ref: I18N Portability-Footnote-1830023
-Node: I18N Example830086
-Ref: I18N Example-Footnote-1832889
-Node: Gawk I18N832961
-Node: I18N Summary833599
-Node: Debugger834938
-Node: Debugging835960
-Node: Debugging Concepts836401
-Node: Debugging Terms838254
-Node: Awk Debugging840826
-Node: Sample Debugging Session841720
-Node: Debugger Invocation842240
-Node: Finding The Bug843624
-Node: List of Debugger Commands850099
-Node: Breakpoint Control851432
-Node: Debugger Execution Control855128
-Node: Viewing And Changing Data858492
-Node: Execution Stack861870
-Node: Debugger Info863507
-Node: Miscellaneous Debugger Commands867524
-Node: Readline Support872553
-Node: Limitations873445
-Node: Debugging Summary875559
-Node: Arbitrary Precision Arithmetic876727
-Node: Computer Arithmetic878143
-Ref: table-numeric-ranges881741
-Ref: Computer Arithmetic-Footnote-1882600
-Node: Math Definitions882657
-Ref: table-ieee-formats885945
-Ref: Math Definitions-Footnote-1886549
-Node: MPFR features886654
-Node: FP Math Caution888325
-Ref: FP Math Caution-Footnote-1889375
-Node: Inexactness of computations889744
-Node: Inexact representation890703
-Node: Comparing FP Values892060
-Node: Errors accumulate893142
-Node: Getting Accuracy894575
-Node: Try To Round897237
-Node: Setting precision898136
-Ref: table-predefined-precision-strings898820
-Node: Setting the rounding mode900609
-Ref: table-gawk-rounding-modes900973
-Ref: Setting the rounding mode-Footnote-1904428
-Node: Arbitrary Precision Integers904607
-Ref: Arbitrary Precision Integers-Footnote-1909506
-Node: POSIX Floating Point Problems909655
-Ref: POSIX Floating Point Problems-Footnote-1913528
-Node: Floating point summary913566
-Node: Dynamic Extensions915760
-Node: Extension Intro917312
-Node: Plugin License918578
-Node: Extension Mechanism Outline919375
-Ref: figure-load-extension919803
-Ref: figure-register-new-function921283
-Ref: figure-call-new-function922287
-Node: Extension API Description924273
-Node: Extension API Functions Introduction925723
-Node: General Data Types930547
-Ref: General Data Types-Footnote-1936286
-Node: Memory Allocation Functions936585
-Ref: Memory Allocation Functions-Footnote-1939424
-Node: Constructor Functions939520
-Node: Registration Functions941254
-Node: Extension Functions941939
-Node: Exit Callback Functions944236
-Node: Extension Version String945484
-Node: Input Parsers946149
-Node: Output Wrappers956028
-Node: Two-way processors960543
-Node: Printing Messages962747
-Ref: Printing Messages-Footnote-1963823
-Node: Updating `ERRNO'963975
-Node: Requesting Values964715
-Ref: table-value-types-returned965443
-Node: Accessing Parameters966400
-Node: Symbol Table Access967631
-Node: Symbol table by name968145
-Node: Symbol table by cookie970126
-Ref: Symbol table by cookie-Footnote-1974270
-Node: Cached values974333
-Ref: Cached values-Footnote-1977832
-Node: Array Manipulation977923
-Ref: Array Manipulation-Footnote-1979021
-Node: Array Data Types979058
-Ref: Array Data Types-Footnote-1981713
-Node: Array Functions981805
-Node: Flattening Arrays985659
-Node: Creating Arrays992551
-Node: Extension API Variables997322
-Node: Extension Versioning997958
-Node: Extension API Informational Variables999859
-Node: Extension API Boilerplate1000924
-Node: Finding Extensions1004733
-Node: Extension Example1005293
-Node: Internal File Description1006065
-Node: Internal File Ops1010132
-Ref: Internal File Ops-Footnote-11021802
-Node: Using Internal File Ops1021942
-Ref: Using Internal File Ops-Footnote-11024325
-Node: Extension Samples1024598
-Node: Extension Sample File Functions1026124
-Node: Extension Sample Fnmatch1033762
-Node: Extension Sample Fork1035253
-Node: Extension Sample Inplace1036468
-Node: Extension Sample Ord1038143
-Node: Extension Sample Readdir1038979
-Ref: table-readdir-file-types1039855
-Node: Extension Sample Revout1040666
-Node: Extension Sample Rev2way1041256
-Node: Extension Sample Read write array1041996
-Node: Extension Sample Readfile1043936
-Node: Extension Sample Time1045031
-Node: Extension Sample API Tests1046380
-Node: gawkextlib1046871
-Node: Extension summary1049529
-Node: Extension Exercises1053218
-Node: Language History1053940
-Node: V7/SVR3.11055596
-Node: SVR41057777
-Node: POSIX1059222
-Node: BTL1060611
-Node: POSIX/GNU1061345
-Node: Feature History1066969
-Node: Common Extensions1080067
-Node: Ranges and Locales1081391
-Ref: Ranges and Locales-Footnote-11086009
-Ref: Ranges and Locales-Footnote-21086036
-Ref: Ranges and Locales-Footnote-31086270
-Node: Contributors1086491
-Node: History summary1092032
-Node: Installation1093402
-Node: Gawk Distribution1094348
-Node: Getting1094832
-Node: Extracting1095655
-Node: Distribution contents1097290
-Node: Unix Installation1103355
-Node: Quick Installation1104038
-Node: Shell Startup Files1106449
-Node: Additional Configuration Options1107528
-Node: Configuration Philosophy1109267
-Node: Non-Unix Installation1111636
-Node: PC Installation1112094
-Node: PC Binary Installation1113413
-Node: PC Compiling1115261
-Ref: PC Compiling-Footnote-11118282
-Node: PC Testing1118391
-Node: PC Using1119567
-Node: Cygwin1123682
-Node: MSYS1124505
-Node: VMS Installation1125005
-Node: VMS Compilation1125797
-Ref: VMS Compilation-Footnote-11127019
-Node: VMS Dynamic Extensions1127077
-Node: VMS Installation Details1128761
-Node: VMS Running1131013
-Node: VMS GNV1133849
-Node: VMS Old Gawk1134583
-Node: Bugs1135053
-Node: Other Versions1138936
-Node: Installation summary1145364
-Node: Notes1146420
-Node: Compatibility Mode1147285
-Node: Additions1148067
-Node: Accessing The Source1148992
-Node: Adding Code1150428
-Node: New Ports1156593
-Node: Derived Files1161075
-Ref: Derived Files-Footnote-11166550
-Ref: Derived Files-Footnote-21166584
-Ref: Derived Files-Footnote-31167180
-Node: Future Extensions1167294
-Node: Implementation Limitations1167900
-Node: Extension Design1169148
-Node: Old Extension Problems1170302
-Ref: Old Extension Problems-Footnote-11171819
-Node: Extension New Mechanism Goals1171876
-Ref: Extension New Mechanism Goals-Footnote-11175236
-Node: Extension Other Design Decisions1175425
-Node: Extension Future Growth1177533
-Node: Old Extension Mechanism1178369
-Node: Notes summary1180131
-Node: Basic Concepts1181317
-Node: Basic High Level1181998
-Ref: figure-general-flow1182270
-Ref: figure-process-flow1182869
-Ref: Basic High Level-Footnote-11186098
-Node: Basic Data Typing1186283
-Node: Glossary1189611
-Node: Copying1214769
-Node: GNU Free Documentation License1252325
-Node: Index1277461
+Ref: This Manual-Footnote-161643
+Node: Conventions61743
+Node: Manual History64080
+Ref: Manual History-Footnote-167073
+Ref: Manual History-Footnote-267114
+Node: How To Contribute67188
+Node: Acknowledgments68317
+Node: Getting Started73134
+Node: Running gawk75573
+Node: One-shot76763
+Node: Read Terminal78027
+Node: Long80058
+Node: Executable Scripts81571
+Ref: Executable Scripts-Footnote-184360
+Node: Comments84463
+Node: Quoting86945
+Node: DOS Quoting92463
+Node: Sample Data Files93138
+Node: Very Simple95733
+Node: Two Rules100632
+Node: More Complex102518
+Node: Statements/Lines105380
+Ref: Statements/Lines-Footnote-1109835
+Node: Other Features110100
+Node: When111031
+Ref: When-Footnote-1112785
+Node: Intro Summary112850
+Node: Invoking Gawk113733
+Node: Command Line115247
+Node: Options116045
+Ref: Options-Footnote-1131849
+Ref: Options-Footnote-2132078
+Node: Other Arguments132103
+Node: Naming Standard Input135051
+Node: Environment Variables136144
+Node: AWKPATH Variable136702
+Ref: AWKPATH Variable-Footnote-1140115
+Ref: AWKPATH Variable-Footnote-2140160
+Node: AWKLIBPATH Variable140420
+Node: Other Environment Variables141676
+Node: Exit Status145164
+Node: Include Files145840
+Node: Loading Shared Libraries149437
+Node: Obsolete150864
+Node: Undocumented151561
+Node: Invoking Summary151828
+Node: Regexp153492
+Node: Regexp Usage154946
+Node: Escape Sequences156983
+Node: Regexp Operators163224
+Ref: Regexp Operators-Footnote-1170650
+Ref: Regexp Operators-Footnote-2170797
+Node: Bracket Expressions170895
+Ref: table-char-classes172910
+Node: Leftmost Longest175834
+Node: Computed Regexps177136
+Node: GNU Regexp Operators180533
+Node: Case-sensitivity184206
+Ref: Case-sensitivity-Footnote-1187091
+Ref: Case-sensitivity-Footnote-2187326
+Node: Regexp Summary187434
+Node: Reading Files188901
+Node: Records190995
+Node: awk split records191728
+Node: gawk split records196643
+Ref: gawk split records-Footnote-1201187
+Node: Fields201224
+Ref: Fields-Footnote-1204000
+Node: Nonconstant Fields204086
+Ref: Nonconstant Fields-Footnote-1206329
+Node: Changing Fields206533
+Node: Field Separators212462
+Node: Default Field Splitting215167
+Node: Regexp Field Splitting216284
+Node: Single Character Fields219634
+Node: Command Line Field Separator220693
+Node: Full Line Fields223905
+Ref: Full Line Fields-Footnote-1225422
+Ref: Full Line Fields-Footnote-2225468
+Node: Field Splitting Summary225569
+Node: Constant Size227643
+Node: Splitting By Content232232
+Ref: Splitting By Content-Footnote-1236226
+Node: Multiple Line236389
+Ref: Multiple Line-Footnote-1242275
+Node: Getline242454
+Node: Plain Getline244666
+Node: Getline/Variable247306
+Node: Getline/File248454
+Node: Getline/Variable/File249838
+Ref: Getline/Variable/File-Footnote-1251441
+Node: Getline/Pipe251528
+Node: Getline/Variable/Pipe254211
+Node: Getline/Coprocess255342
+Node: Getline/Variable/Coprocess256594
+Node: Getline Notes257333
+Node: Getline Summary260125
+Ref: table-getline-variants260537
+Node: Read Timeout261366
+Ref: Read Timeout-Footnote-1265190
+Node: Command-line directories265248
+Node: Input Summary266153
+Node: Input Exercises269454
+Node: Printing270182
+Node: Print271959
+Node: Print Examples273416
+Node: Output Separators276195
+Node: OFMT278213
+Node: Printf279567
+Node: Basic Printf280352
+Node: Control Letters281922
+Node: Format Modifiers285905
+Node: Printf Examples291914
+Node: Redirection294400
+Node: Special FD301241
+Ref: Special FD-Footnote-1304401
+Node: Special Files304475
+Node: Other Inherited Files305092
+Node: Special Network306092
+Node: Special Caveats306954
+Node: Close Files And Pipes307905
+Ref: Close Files And Pipes-Footnote-1315087
+Ref: Close Files And Pipes-Footnote-2315235
+Node: Output Summary315385
+Node: Output Exercises316383
+Node: Expressions317063
+Node: Values318248
+Node: Constants318926
+Node: Scalar Constants319617
+Ref: Scalar Constants-Footnote-1320476
+Node: Nondecimal-numbers320726
+Node: Regexp Constants323744
+Node: Using Constant Regexps324269
+Node: Variables327412
+Node: Using Variables328067
+Node: Assignment Options329978
+Node: Conversion331853
+Node: Strings And Numbers332377
+Ref: Strings And Numbers-Footnote-1335442
+Node: Locale influences conversions335551
+Ref: table-locale-affects338298
+Node: All Operators338886
+Node: Arithmetic Ops339516
+Node: Concatenation342021
+Ref: Concatenation-Footnote-1344840
+Node: Assignment Ops344946
+Ref: table-assign-ops349925
+Node: Increment Ops351197
+Node: Truth Values and Conditions354635
+Node: Truth Values355720
+Node: Typing and Comparison356769
+Node: Variable Typing357579
+Node: Comparison Operators361232
+Ref: table-relational-ops361642
+Node: POSIX String Comparison365137
+Ref: POSIX String Comparison-Footnote-1366209
+Node: Boolean Ops366347
+Ref: Boolean Ops-Footnote-1370826
+Node: Conditional Exp370917
+Node: Function Calls372644
+Node: Precedence376524
+Node: Locales380185
+Node: Expressions Summary381817
+Node: Patterns and Actions384377
+Node: Pattern Overview385497
+Node: Regexp Patterns387176
+Node: Expression Patterns387719
+Node: Ranges391429
+Node: BEGIN/END394535
+Node: Using BEGIN/END395296
+Ref: Using BEGIN/END-Footnote-1398030
+Node: I/O And BEGIN/END398136
+Node: BEGINFILE/ENDFILE400450
+Node: Empty403351
+Node: Using Shell Variables403668
+Node: Action Overview405941
+Node: Statements408267
+Node: If Statement410115
+Node: While Statement411610
+Node: Do Statement413639
+Node: For Statement414783
+Node: Switch Statement417940
+Node: Break Statement420322
+Node: Continue Statement422363
+Node: Next Statement424190
+Node: Nextfile Statement426571
+Node: Exit Statement429201
+Node: Built-in Variables431604
+Node: User-modified432737
+Ref: User-modified-Footnote-1440418
+Node: Auto-set440480
+Ref: Auto-set-Footnote-1454172
+Ref: Auto-set-Footnote-2454377
+Node: ARGC and ARGV454433
+Node: Pattern Action Summary458651
+Node: Arrays461078
+Node: Array Basics462407
+Node: Array Intro463251
+Ref: figure-array-elements465215
+Ref: Array Intro-Footnote-1467741
+Node: Reference to Elements467869
+Node: Assigning Elements470321
+Node: Array Example470812
+Node: Scanning an Array472570
+Node: Controlling Scanning475586
+Ref: Controlling Scanning-Footnote-1480782
+Node: Numeric Array Subscripts481098
+Node: Uninitialized Subscripts483283
+Node: Delete484900
+Ref: Delete-Footnote-1487643
+Node: Multidimensional487700
+Node: Multiscanning490797
+Node: Arrays of Arrays492386
+Node: Arrays Summary497145
+Node: Functions499237
+Node: Built-in500136
+Node: Calling Built-in501214
+Node: Numeric Functions503205
+Ref: Numeric Functions-Footnote-1508024
+Ref: Numeric Functions-Footnote-2508381
+Ref: Numeric Functions-Footnote-3508429
+Node: String Functions508701
+Ref: String Functions-Footnote-1532176
+Ref: String Functions-Footnote-2532305
+Ref: String Functions-Footnote-3532553
+Node: Gory Details532640
+Ref: table-sub-escapes534421
+Ref: table-sub-proposed535941
+Ref: table-posix-sub537305
+Ref: table-gensub-escapes538841
+Ref: Gory Details-Footnote-1539673
+Node: I/O Functions539824
+Ref: I/O Functions-Footnote-1547042
+Node: Time Functions547189
+Ref: Time Functions-Footnote-1557677
+Ref: Time Functions-Footnote-2557745
+Ref: Time Functions-Footnote-3557903
+Ref: Time Functions-Footnote-4558014
+Ref: Time Functions-Footnote-5558126
+Ref: Time Functions-Footnote-6558353
+Node: Bitwise Functions558619
+Ref: table-bitwise-ops559181
+Ref: Bitwise Functions-Footnote-1563490
+Node: Type Functions563659
+Node: I18N Functions564810
+Node: User-defined566455
+Node: Definition Syntax567260
+Ref: Definition Syntax-Footnote-1572667
+Node: Function Example572738
+Ref: Function Example-Footnote-1575657
+Node: Function Caveats575679
+Node: Calling A Function576197
+Node: Variable Scope577155
+Node: Pass By Value/Reference580143
+Node: Return Statement583638
+Node: Dynamic Typing586619
+Node: Indirect Calls587548
+Ref: Indirect Calls-Footnote-1598850
+Node: Functions Summary598978
+Node: Library Functions601680
+Ref: Library Functions-Footnote-1605289
+Ref: Library Functions-Footnote-2605432
+Node: Library Names605603
+Ref: Library Names-Footnote-1609057
+Ref: Library Names-Footnote-2609280
+Node: General Functions609366
+Node: Strtonum Function610469
+Node: Assert Function613491
+Node: Round Function616815
+Node: Cliff Random Function618356
+Node: Ordinal Functions619372
+Ref: Ordinal Functions-Footnote-1622435
+Ref: Ordinal Functions-Footnote-2622687
+Node: Join Function622898
+Ref: Join Function-Footnote-1624667
+Node: Getlocaltime Function624867
+Node: Readfile Function628611
+Node: Shell Quoting630581
+Node: Data File Management631982
+Node: Filetrans Function632614
+Node: Rewind Function636670
+Node: File Checking638057
+Ref: File Checking-Footnote-1639389
+Node: Empty Files639590
+Node: Ignoring Assigns641569
+Node: Getopt Function643120
+Ref: Getopt Function-Footnote-1654582
+Node: Passwd Functions654782
+Ref: Passwd Functions-Footnote-1663619
+Node: Group Functions663707
+Ref: Group Functions-Footnote-1671601
+Node: Walking Arrays671814
+Node: Library Functions Summary673417
+Node: Library Exercises674818
+Node: Sample Programs676098
+Node: Running Examples676868
+Node: Clones677596
+Node: Cut Program678820
+Node: Egrep Program688539
+Ref: Egrep Program-Footnote-1696037
+Node: Id Program696147
+Node: Split Program699792
+Ref: Split Program-Footnote-1703240
+Node: Tee Program703368
+Node: Uniq Program706157
+Node: Wc Program713576
+Ref: Wc Program-Footnote-1717826
+Node: Miscellaneous Programs717920
+Node: Dupword Program719133
+Node: Alarm Program721164
+Node: Translate Program725968
+Ref: Translate Program-Footnote-1730533
+Node: Labels Program730803
+Ref: Labels Program-Footnote-1734154
+Node: Word Sorting734238
+Node: History Sorting738309
+Node: Extract Program740145
+Node: Simple Sed747670
+Node: Igawk Program750738
+Ref: Igawk Program-Footnote-1765062
+Ref: Igawk Program-Footnote-2765263
+Ref: Igawk Program-Footnote-3765385
+Node: Anagram Program765500
+Node: Signature Program768557
+Node: Programs Summary769804
+Node: Programs Exercises770997
+Ref: Programs Exercises-Footnote-1775128
+Node: Advanced Features775219
+Node: Nondecimal Data777167
+Node: Array Sorting778757
+Node: Controlling Array Traversal779454
+Ref: Controlling Array Traversal-Footnote-1787787
+Node: Array Sorting Functions787905
+Ref: Array Sorting Functions-Footnote-1791794
+Node: Two-way I/O791990
+Ref: Two-way I/O-Footnote-1796935
+Ref: Two-way I/O-Footnote-2797121
+Node: TCP/IP Networking797203
+Node: Profiling800076
+Node: Advanced Features Summary808353
+Node: Internationalization810286
+Node: I18N and L10N811766
+Node: Explaining gettext812452
+Ref: Explaining gettext-Footnote-1817477
+Ref: Explaining gettext-Footnote-2817661
+Node: Programmer i18n817826
+Ref: Programmer i18n-Footnote-1822692
+Node: Translator i18n822741
+Node: String Extraction823535
+Ref: String Extraction-Footnote-1824666
+Node: Printf Ordering824752
+Ref: Printf Ordering-Footnote-1827538
+Node: I18N Portability827602
+Ref: I18N Portability-Footnote-1830057
+Node: I18N Example830120
+Ref: I18N Example-Footnote-1832923
+Node: Gawk I18N832995
+Node: I18N Summary833633
+Node: Debugger834972
+Node: Debugging835994
+Node: Debugging Concepts836435
+Node: Debugging Terms838288
+Node: Awk Debugging840860
+Node: Sample Debugging Session841754
+Node: Debugger Invocation842274
+Node: Finding The Bug843658
+Node: List of Debugger Commands850133
+Node: Breakpoint Control851466
+Node: Debugger Execution Control855162
+Node: Viewing And Changing Data858526
+Node: Execution Stack861904
+Node: Debugger Info863541
+Node: Miscellaneous Debugger Commands867558
+Node: Readline Support872587
+Node: Limitations873479
+Node: Debugging Summary875593
+Node: Arbitrary Precision Arithmetic876761
+Node: Computer Arithmetic878177
+Ref: table-numeric-ranges881775
+Ref: Computer Arithmetic-Footnote-1882634
+Node: Math Definitions882691
+Ref: table-ieee-formats885979
+Ref: Math Definitions-Footnote-1886583
+Node: MPFR features886688
+Node: FP Math Caution888359
+Ref: FP Math Caution-Footnote-1889409
+Node: Inexactness of computations889778
+Node: Inexact representation890737
+Node: Comparing FP Values892094
+Node: Errors accumulate893176
+Node: Getting Accuracy894609
+Node: Try To Round897271
+Node: Setting precision898170
+Ref: table-predefined-precision-strings898854
+Node: Setting the rounding mode900643
+Ref: table-gawk-rounding-modes901007
+Ref: Setting the rounding mode-Footnote-1904462
+Node: Arbitrary Precision Integers904641
+Ref: Arbitrary Precision Integers-Footnote-1909540
+Node: POSIX Floating Point Problems909689
+Ref: POSIX Floating Point Problems-Footnote-1913562
+Node: Floating point summary913600
+Node: Dynamic Extensions915794
+Node: Extension Intro917346
+Node: Plugin License918612
+Node: Extension Mechanism Outline919409
+Ref: figure-load-extension919837
+Ref: figure-register-new-function921317
+Ref: figure-call-new-function922321
+Node: Extension API Description924307
+Node: Extension API Functions Introduction925757
+Node: General Data Types930581
+Ref: General Data Types-Footnote-1936320
+Node: Memory Allocation Functions936619
+Ref: Memory Allocation Functions-Footnote-1939458
+Node: Constructor Functions939554
+Node: Registration Functions941288
+Node: Extension Functions941973
+Node: Exit Callback Functions944270
+Node: Extension Version String945518
+Node: Input Parsers946183
+Node: Output Wrappers956062
+Node: Two-way processors960577
+Node: Printing Messages962781
+Ref: Printing Messages-Footnote-1963857
+Node: Updating `ERRNO'964009
+Node: Requesting Values964749
+Ref: table-value-types-returned965477
+Node: Accessing Parameters966434
+Node: Symbol Table Access967665
+Node: Symbol table by name968179
+Node: Symbol table by cookie970160
+Ref: Symbol table by cookie-Footnote-1974304
+Node: Cached values974367
+Ref: Cached values-Footnote-1977866
+Node: Array Manipulation977957
+Ref: Array Manipulation-Footnote-1979055
+Node: Array Data Types979092
+Ref: Array Data Types-Footnote-1981747
+Node: Array Functions981839
+Node: Flattening Arrays985693
+Node: Creating Arrays992585
+Node: Extension API Variables997356
+Node: Extension Versioning997992
+Node: Extension API Informational Variables999893
+Node: Extension API Boilerplate1000958
+Node: Finding Extensions1004767
+Node: Extension Example1005327
+Node: Internal File Description1006099
+Node: Internal File Ops1010166
+Ref: Internal File Ops-Footnote-11021836
+Node: Using Internal File Ops1021976
+Ref: Using Internal File Ops-Footnote-11024359
+Node: Extension Samples1024632
+Node: Extension Sample File Functions1026158
+Node: Extension Sample Fnmatch1033796
+Node: Extension Sample Fork1035287
+Node: Extension Sample Inplace1036502
+Node: Extension Sample Ord1038177
+Node: Extension Sample Readdir1039013
+Ref: table-readdir-file-types1039889
+Node: Extension Sample Revout1040700
+Node: Extension Sample Rev2way1041290
+Node: Extension Sample Read write array1042030
+Node: Extension Sample Readfile1043970
+Node: Extension Sample Time1045065
+Node: Extension Sample API Tests1046414
+Node: gawkextlib1046905
+Node: Extension summary1049563
+Node: Extension Exercises1053252
+Node: Language History1053974
+Node: V7/SVR3.11055630
+Node: SVR41057811
+Node: POSIX1059256
+Node: BTL1060645
+Node: POSIX/GNU1061379
+Node: Feature History1067003
+Node: Common Extensions1080101
+Node: Ranges and Locales1081425
+Ref: Ranges and Locales-Footnote-11086043
+Ref: Ranges and Locales-Footnote-21086070
+Ref: Ranges and Locales-Footnote-31086304
+Node: Contributors1086525
+Node: History summary1092066
+Node: Installation1093436
+Node: Gawk Distribution1094382
+Node: Getting1094866
+Node: Extracting1095689
+Node: Distribution contents1097324
+Node: Unix Installation1103389
+Node: Quick Installation1104072
+Node: Shell Startup Files1106483
+Node: Additional Configuration Options1107562
+Node: Configuration Philosophy1109301
+Node: Non-Unix Installation1111670
+Node: PC Installation1112128
+Node: PC Binary Installation1113447
+Node: PC Compiling1115295
+Ref: PC Compiling-Footnote-11118316
+Node: PC Testing1118425
+Node: PC Using1119601
+Node: Cygwin1123716
+Node: MSYS1124539
+Node: VMS Installation1125039
+Node: VMS Compilation1125831
+Ref: VMS Compilation-Footnote-11127053
+Node: VMS Dynamic Extensions1127111
+Node: VMS Installation Details1128795
+Node: VMS Running1131047
+Node: VMS GNV1133883
+Node: VMS Old Gawk1134617
+Node: Bugs1135087
+Node: Other Versions1138970
+Node: Installation summary1145398
+Node: Notes1146454
+Node: Compatibility Mode1147319
+Node: Additions1148101
+Node: Accessing The Source1149026
+Node: Adding Code1150462
+Node: New Ports1156627
+Node: Derived Files1161109
+Ref: Derived Files-Footnote-11166584
+Ref: Derived Files-Footnote-21166618
+Ref: Derived Files-Footnote-31167214
+Node: Future Extensions1167328
+Node: Implementation Limitations1167934
+Node: Extension Design1169182
+Node: Old Extension Problems1170336
+Ref: Old Extension Problems-Footnote-11171853
+Node: Extension New Mechanism Goals1171910
+Ref: Extension New Mechanism Goals-Footnote-11175270
+Node: Extension Other Design Decisions1175459
+Node: Extension Future Growth1177567
+Node: Old Extension Mechanism1178403
+Node: Notes summary1180165
+Node: Basic Concepts1181351
+Node: Basic High Level1182032
+Ref: figure-general-flow1182304
+Ref: figure-process-flow1182903
+Ref: Basic High Level-Footnote-11186132
+Node: Basic Data Typing1186317
+Node: Glossary1189645
+Node: Copying1214803
+Node: GNU Free Documentation License1252359
+Node: Index1277495

End Tag Table
diff --git a/doc/gawk.texi b/doc/gawk.texi
index facb8b0a..035d1476 100644
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -56,7 +56,7 @@
@set PATCHLEVEL 2
@ifset FOR_PRINT
-@set TITLE Effective Awk Programming
+@set TITLE Effective awk Programming
@end ifset
@ifclear FOR_PRINT
@set TITLE GAWK: Effective AWK Programming
@@ -1580,7 +1580,7 @@ This @value{DOCUMENT} has the difficult task of being both a tutorial and a refe
If you are a novice, feel free to skip over details that seem too complex.
You should also ignore the many cross-references; they are for the
expert user and for the Info and
-@ulink{http://www.gnu.org/software/gawk/manual/, HTML}
+@uref{http://www.gnu.org/software/gawk/manual/, HTML}
versions of the @value{DOCUMENT}.
@end ifnotinfo
@@ -1662,9 +1662,9 @@ doing something when a record is matched, and the predefined variables
@item
@ref{Arrays},
covers @command{awk}'s one-and-only data structure: the associative array.
-Deleting array elements and whole arrays is also described, as well as
-sorting arrays in @command{gawk}. It also describes how @command{gawk}
-provides arrays of arrays.
+Deleting array elements and whole arrays is described, as well as
+sorting arrays in @command{gawk}. The @value{CHAPTER} also describes how
+@command{gawk} provides arrays of arrays.
@item
@ref{Functions},
@@ -1676,17 +1676,17 @@ as well as how to define your own functions. It also discusses how
@item
Part II shows how to use @command{awk} and @command{gawk} for problem solving.
There is lots of code here for you to read and learn from.
-It contains the following chapters:
+This part contains the following chapters:
@c nested
@itemize @value{MINUS}
@item
-@ref{Library Functions}, which provides a number of functions meant to
+@ref{Library Functions}, provides a number of functions meant to
be used from main @command{awk} programs.
@item
@ref{Sample Programs},
-which provides many sample @command{awk} programs.
+provides many sample @command{awk} programs.
@end itemize
Reading these two chapters allows you to see @command{awk}
@@ -1739,7 +1739,7 @@ including the GNU General Public License:
@item
@ref{Language History},
describes how the @command{awk} language has evolved since
-its first release to present. It also describes how @command{gawk}
+its first release to the present. It also describes how @command{gawk}
has acquired features over time.
@item
@@ -1782,7 +1782,7 @@ are completely unfamiliar with computer programming.
@item
@uref{http://www.gnu.org/software/gawk/manual/html_node/Glossary.html,
The Glossary}
-defines most, if not all of, the significant terms used
+defines most, if not all, of the significant terms used
throughout the @value{DOCUMENT}. If you find terms that you aren't familiar with,
try looking them up here.
@@ -1809,7 +1809,7 @@ and some possible future directions for @command{gawk} development.
provides some very cursory background material for those who
are completely unfamiliar with computer programming.
-The @ref{Glossary}, defines most, if not all of, the significant terms used
+The @ref{Glossary}, defines most, if not all, of the significant terms used
throughout the @value{DOCUMENT}. If you find terms that you aren't familiar with,
try looking them up here.
@@ -1852,7 +1852,7 @@ This typically represents the command's standard output.
Output from the command, usually its standard output, appears
@code{like this}.
@end ifset
-Error messages, and other output on the command's standard error, are preceded
+Error messages and other output on the command's standard error are preceded
by the glyph ``@error{}''. For example:
@example
@@ -1879,7 +1879,7 @@ there are special characters called ``control characters.'' These are
characters that you type by holding down both the @kbd{CONTROL} key and
another key, at the same time. For example, a @kbd{Ctrl-d} is typed
by first pressing and holding the @kbd{CONTROL} key, next
-pressing the @kbd{d} key and finally releasing both keys.
+pressing the @kbd{d} key, and finally releasing both keys.
For the sake of brevity, throughout this @value{DOCUMENT}, we refer to
Brian Kernighan's version of @command{awk} as ``BWK @command{awk}.''
@@ -1915,7 +1915,7 @@ the picture of a flashlight in the margin, as shown here.
@value{DARKCORNER}
@end iftex
@ifnottex
-``(d.c.)''.
+``(d.c.).''
@end ifnottex
@ifclear FOR_PRINT
They also appear in the index under the heading ``dark corner.''
@@ -1950,12 +1950,12 @@ Emacs editor. GNU Emacs is the most widely used version of Emacs today.
@cindex GPL (General Public License)
@cindex General Public License, See GPL
@cindex documentation, online
-The GNU@footnote{GNU stands for ``GNU's not Unix.''}
+The GNU@footnote{GNU stands for ``GNU's Not Unix.''}
Project is an ongoing effort on the part of the Free Software
Foundation to create a complete, freely distributable, POSIX-compliant
computing environment.
-The FSF uses the ``GNU General Public License'' (GPL) to ensure that
-their software's
+The FSF uses the GNU General Public License (GPL) to ensure that
+its software's
source code is always available to the end user.
@ifclear FOR_PRINT
A copy of the GPL is included
@@ -2015,7 +2015,7 @@ version of @command{awk}.
I started working with that version in the fall of 1988.
As work on it progressed,
the FSF published several preliminary versions (numbered 0.@var{x}).
-In 1996, Edition 1.0 was released with @command{gawk} 3.0.0.
+In 1996, edition 1.0 was released with @command{gawk} 3.0.0.
The FSF published the first two editions under
the title @cite{The GNU Awk User's Guide}.
@ifset FOR_PRINT
@@ -2027,7 +2027,7 @@ the third edition in 2001.
This edition maintains the basic structure of the previous editions.
For FSF edition 4.0, the content was thoroughly reviewed and updated. All
references to @command{gawk} versions prior to 4.0 were removed.
-Of significant note for that edition was @ref{Debugger}.
+Of significant note for that edition was the addition of @ref{Debugger}.
For FSF edition
@ifclear FOR_PRINT
@@ -2042,7 +2042,7 @@ and the major new additions are @ref{Arbitrary Precision Arithmetic},
and @ref{Dynamic Extensions}.
This @value{DOCUMENT} will undoubtedly continue to evolve. If you
-find an error in this @value{DOCUMENT}, please report it! @DBXREF{Bugs}
+find an error in the @value{DOCUMENT}, please report it! @DBXREF{Bugs}
for information on submitting problem reports electronically.
@ifset FOR_PRINT
@@ -2052,7 +2052,7 @@ for information on submitting problem reports electronically.
You may have a newer version of @command{gawk} than the
one described here. To find out what has changed,
you should first look at the @file{NEWS} file in the @command{gawk}
-distribution, which provides a high-level summary of what changed in
+distribution, which provides a high-level summary of the changes in
each release.
You can then look at the @uref{http://www.gnu.org/software/gawk/manual/,
@@ -2106,7 +2106,7 @@ The initial draft of @cite{The GAWK Manual} had the following acknowledgments:
Many people need to be thanked for their assistance in producing this
manual. Jay Fenlason contributed many ideas and sample programs. Richard
Mlynarik and Robert Chassell gave helpful comments on drafts of this
-manual. The paper @cite{A Supplemental Document for @command{awk}} by John W.@:
+manual. The paper @cite{A Supplemental Document for AWK} by John W.@:
Pierce of the Chemistry Department at UC San Diego, pinpointed several
issues relevant both to @command{awk} implementation and to this manual, that
would otherwise have escaped us.
@@ -2117,12 +2117,18 @@ I would like to acknowledge Richard M.@: Stallman, for his vision of a
better world and for his courage in founding the FSF and starting the
GNU Project.
+@ifclear FOR_PRINT
Earlier editions of this @value{DOCUMENT} had the following acknowledgements:
+@end ifclear
+@ifset FOR_PRINT
+The previous edition of this @value{DOCUMENT} had
+the following acknowledgements:
+@end ifset
@quotation
The following people (in alphabetical order)
provided helpful comments on various
-versions of this book,
+versions of this book:
Rick Adams,
Dr.@: Nelson H.F. Beebe,
Karl Berry,
@@ -2150,7 +2156,7 @@ Robert J.@: Chassell provided much valuable advice on
the use of Texinfo.
He also deserves special thanks for
convincing me @emph{not} to title this @value{DOCUMENT}
-@cite{How To Gawk Politely}.
+@cite{How to Gawk Politely}.
Karl Berry helped significantly with the @TeX{} part of Texinfo.
@cindex Hartholz, Marshall
@@ -2234,9 +2240,9 @@ a number of people. @DBXREF{Contributors} for the full list.
@ifset FOR_PRINT
@cindex Oram, Andy
-Thanks to Andy Oram, of O'Reilly Media, for initiating
+Thanks to Andy Oram of O'Reilly Media for initiating
the fourth edition and for his support during the work.
-Thanks to Jasmine Kwityn for her copy-editing work.
+Thanks to Jasmine Kwityn for her copyediting work.
@end ifset
Thanks to Michael Brennan for the Forewords.
@@ -2244,7 +2250,7 @@ Thanks to Michael Brennan for the Forewords.
@cindex Duman, Patrice
@cindex Berry, Karl
Thanks to Patrice Dumas for the new @command{makeinfo} program.
-Thanks to Karl Berry who continues to work to keep
+Thanks to Karl Berry, who continues to work to keep
the Texinfo markup language sane.
@cindex Kernighan, Brian
@@ -2254,8 +2260,8 @@ Robert P.J.@: Day, Michael Brennan, and Brian Kernighan kindly acted as
reviewers for the 2015 edition of this @value{DOCUMENT}. Their feedback
helped improve the final work.
-I would like to thank Brian Kernighan for invaluable assistance during the
-testing and debugging of @command{gawk}, and for ongoing
+I would also like to thank Brian Kernighan for his invaluable assistance during the
+testing and debugging of @command{gawk}, and for his ongoing
help and advice in clarifying numerous points about the language.
We could not have done nearly as good a job on either @command{gawk}
or its documentation without his help.
@@ -2366,9 +2372,9 @@ an advanced feature that we will ignore for now;
pattern to search for and one action to perform
upon finding the pattern.
-Syntactically, a rule consists of a pattern followed by an action. The
-action is enclosed in braces to separate it from the pattern.
-Newlines usually separate rules. Therefore, an @command{awk}
+Syntactically, a rule consists of a @dfn{pattern} followed by an
+@dfn{action}. The action is enclosed in braces to separate it from the
+pattern. Newlines usually separate rules. Therefore, an @command{awk}
program looks like this:
@example
@@ -2442,8 +2448,8 @@ awk '@var{program}' @var{input-file1} @var{input-file2} @dots{}
@end example
@noindent
-where @var{program} consists of a series of @var{patterns} and
-@var{actions}, as described earlier.
+where @var{program} consists of a series of patterns and
+actions, as described earlier.
@cindex single quote (@code{'})
@cindex @code{'} (single quote)
@@ -2462,12 +2468,12 @@ programs from shell scripts, because it avoids the need for a separate
file for the @command{awk} program. A self-contained shell script is more
reliable because there are no other files to misplace.
-Later in this chapter,
+Later in this chapter, in
@ifdocbook
the section
@end ifdocbook
@ref{Very Simple},
-presents several short,
+we'll see examples of several short,
self-contained programs.
@node Read Terminal
@@ -2488,10 +2494,10 @@ awk '@var{program}'
which usually means whatever you type on the keyboard. This continues
until you indicate end-of-file by typing @kbd{Ctrl-d}.
@ifset FOR_PRINT
-(On other operating systems, the end-of-file character may be different.)
+(On non-POSIX operating systems, the end-of-file character may be different.)
@end ifset
@ifclear FOR_PRINT
-(On other operating systems, the end-of-file character may be different.
+(On non-POSIX operating systems, the end-of-file character may be different.
For example, on OS/2, it is @kbd{Ctrl-z}.)
@end ifclear
@@ -2595,7 +2601,7 @@ text, instead of the magic @samp{\47}.)
@cindex single quote (@code{'}) in @command{gawk} command lines
@c STARTOFRANGE qs2x
@cindex @code{'} (single quote) in @command{gawk} command lines
-If you want to clearly identify your @command{awk} program files as such,
+If you want to clearly identify an @command{awk} program file as such,
you can add the extension @file{.awk} to the @value{FN}. This doesn't
affect the execution of the @command{awk} program but it does make
``housekeeping'' easier.
@@ -2809,7 +2815,7 @@ The next @value{SUBSECTION} describes the shell's quoting rules.
@end quotation
@node Quoting
-@subsection Shell-Quoting Issues
+@subsection Shell Quoting Issues
@cindex shell quoting, rules for
@menu
@@ -2946,7 +2952,7 @@ $ @kbd{awk 'BEGIN @{ print "Here is a single quote <'"'"'>" @}'}
@noindent
This program consists of three concatenated quoted strings. The first and the
-third are single quoted, the second is double quoted.
+third are single-quoted, and the second is double-quoted.
This can be ``simplified'' to:
@@ -2985,7 +2991,7 @@ $ @kbd{awk 'BEGIN @{ print "Here is a double quote <\42>" @}'}
@end example
@noindent
-This works nicely, except that you should comment clearly what the
+This works nicely, but you should comment clearly what the
escapes mean.
A fourth option is to use command-line variable assignment, like this:
@@ -2996,11 +3002,11 @@ $ @kbd{awk -v sq="'" 'BEGIN @{ print "Here is a single quote <" sq ">" @}'}
@end example
(Here, the two string constants and the value of @code{sq} are concatenated
-into a single string which is printed by @code{print}.)
+into a single string that is printed by @code{print}.)
If you really need both single and double quotes in your @command{awk}
program, it is probably best to move it into a separate file, where
-the shell won't be part of the picture, and you can say what you mean.
+the shell won't be part of the picture and you can say what you mean.
@node DOS Quoting
@subsubsection Quoting in MS-Windows Batch Files
@@ -3099,7 +3105,7 @@ of green crates shipped, the number of red boxes shipped, the number of
orange bags shipped, and the number of blue packages shipped,
respectively. There are 16 entries, covering the 12 months of last year
and the first four months of the current year.
-An empty line separates the data for the two years.
+An empty line separates the data for the two years:
@example
@c file eg/data/inventory-shipped
@@ -3133,7 +3139,7 @@ The following command runs a simple @command{awk} program that searches the
input file @file{mail-list} for the character string @samp{li} (a
grouping of characters is usually called a @dfn{string};
the term @dfn{string} is based on similar usage in English, such
-as ``a string of pearls,'' or ``a string of cars in a train''):
+as ``a string of pearls'' or ``a string of cars in a train''):
@example
awk '/li/ @{ print $0 @}' mail-list
@@ -3180,7 +3186,7 @@ omitting the @code{print} statement but retaining the braces makes an
empty action that does nothing (i.e., no lines are printed).
@cindex @command{awk} programs, one-line examples
-Many practical @command{awk} programs are just a line or two. Following is a
+Many practical @command{awk} programs are just a line or two long. Following is a
collection of useful, short programs to get you started. Some of these
programs contain constructs that haven't been covered yet. (The description
of the program will give you a good idea of what is going on, but you'll
@@ -3201,7 +3207,7 @@ Print every line that is longer than 80 characters:
awk 'length($0) > 80' data
@end example
-The sole rule has a relational expression as its pattern and it has no
+The sole rule has a relational expression as its pattern and has no
action---so it uses the default action, printing the record.
@item
@@ -3288,7 +3294,7 @@ Print the even-numbered lines in the @value{DF}:
awk 'NR % 2 == 0' data
@end example
-If you use the expression @samp{NR % 2 == 1} instead,
+If you used the expression @samp{NR % 2 == 1} instead,
the program would print the odd-numbered lines.
@end itemize
@@ -8750,7 +8756,7 @@ loop that reads input records and matches them against patterns,
like so:
@example
-$ @kbd{ gawk 'BEGIN @{ PROCINFO["-", "READ_TIMEOUT"] = 5000 @}}
+$ @kbd{gawk 'BEGIN @{ PROCINFO["-", "READ_TIMEOUT"] = 5000 @}}
> @kbd{@{ print "You entered: " $0 @}'}
@kbd{gawk}
@print{} You entered: gawk
diff --git a/doc/gawktexi.in b/doc/gawktexi.in
index 87655ef7..8034a6b6 100644
--- a/doc/gawktexi.in
+++ b/doc/gawktexi.in
@@ -51,7 +51,7 @@
@set PATCHLEVEL 2
@ifset FOR_PRINT
-@set TITLE Effective Awk Programming
+@set TITLE Effective awk Programming
@end ifset
@ifclear FOR_PRINT
@set TITLE GAWK: Effective AWK Programming
@@ -1547,7 +1547,7 @@ This @value{DOCUMENT} has the difficult task of being both a tutorial and a refe
If you are a novice, feel free to skip over details that seem too complex.
You should also ignore the many cross-references; they are for the
expert user and for the Info and
-@ulink{http://www.gnu.org/software/gawk/manual/, HTML}
+@uref{http://www.gnu.org/software/gawk/manual/, HTML}
versions of the @value{DOCUMENT}.
@end ifnotinfo
@@ -1629,9 +1629,9 @@ doing something when a record is matched, and the predefined variables
@item
@ref{Arrays},
covers @command{awk}'s one-and-only data structure: the associative array.
-Deleting array elements and whole arrays is also described, as well as
-sorting arrays in @command{gawk}. It also describes how @command{gawk}
-provides arrays of arrays.
+Deleting array elements and whole arrays is described, as well as
+sorting arrays in @command{gawk}. The @value{CHAPTER} also describes how
+@command{gawk} provides arrays of arrays.
@item
@ref{Functions},
@@ -1643,17 +1643,17 @@ as well as how to define your own functions. It also discusses how
@item
Part II shows how to use @command{awk} and @command{gawk} for problem solving.
There is lots of code here for you to read and learn from.
-It contains the following chapters:
+This part contains the following chapters:
@c nested
@itemize @value{MINUS}
@item
-@ref{Library Functions}, which provides a number of functions meant to
+@ref{Library Functions}, provides a number of functions meant to
be used from main @command{awk} programs.
@item
@ref{Sample Programs},
-which provides many sample @command{awk} programs.
+provides many sample @command{awk} programs.
@end itemize
Reading these two chapters allows you to see @command{awk}
@@ -1706,7 +1706,7 @@ including the GNU General Public License:
@item
@ref{Language History},
describes how the @command{awk} language has evolved since
-its first release to present. It also describes how @command{gawk}
+its first release to the present. It also describes how @command{gawk}
has acquired features over time.
@item
@@ -1749,7 +1749,7 @@ are completely unfamiliar with computer programming.
@item
@uref{http://www.gnu.org/software/gawk/manual/html_node/Glossary.html,
The Glossary}
-defines most, if not all of, the significant terms used
+defines most, if not all, of the significant terms used
throughout the @value{DOCUMENT}. If you find terms that you aren't familiar with,
try looking them up here.
@@ -1776,7 +1776,7 @@ and some possible future directions for @command{gawk} development.
provides some very cursory background material for those who
are completely unfamiliar with computer programming.
-The @ref{Glossary}, defines most, if not all of, the significant terms used
+The @ref{Glossary}, defines most, if not all, of the significant terms used
throughout the @value{DOCUMENT}. If you find terms that you aren't familiar with,
try looking them up here.
@@ -1819,7 +1819,7 @@ This typically represents the command's standard output.
Output from the command, usually its standard output, appears
@code{like this}.
@end ifset
-Error messages, and other output on the command's standard error, are preceded
+Error messages and other output on the command's standard error are preceded
by the glyph ``@error{}''. For example:
@example
@@ -1846,7 +1846,7 @@ there are special characters called ``control characters.'' These are
characters that you type by holding down both the @kbd{CONTROL} key and
another key, at the same time. For example, a @kbd{Ctrl-d} is typed
by first pressing and holding the @kbd{CONTROL} key, next
-pressing the @kbd{d} key and finally releasing both keys.
+pressing the @kbd{d} key, and finally releasing both keys.
For the sake of brevity, throughout this @value{DOCUMENT}, we refer to
Brian Kernighan's version of @command{awk} as ``BWK @command{awk}.''
@@ -1882,7 +1882,7 @@ the picture of a flashlight in the margin, as shown here.
@value{DARKCORNER}
@end iftex
@ifnottex
-``(d.c.)''.
+``(d.c.).''
@end ifnottex
@ifclear FOR_PRINT
They also appear in the index under the heading ``dark corner.''
@@ -1917,12 +1917,12 @@ Emacs editor. GNU Emacs is the most widely used version of Emacs today.
@cindex GPL (General Public License)
@cindex General Public License, See GPL
@cindex documentation, online
-The GNU@footnote{GNU stands for ``GNU's not Unix.''}
+The GNU@footnote{GNU stands for ``GNU's Not Unix.''}
Project is an ongoing effort on the part of the Free Software
Foundation to create a complete, freely distributable, POSIX-compliant
computing environment.
-The FSF uses the ``GNU General Public License'' (GPL) to ensure that
-their software's
+The FSF uses the GNU General Public License (GPL) to ensure that
+its software's
source code is always available to the end user.
@ifclear FOR_PRINT
A copy of the GPL is included
@@ -1982,7 +1982,7 @@ version of @command{awk}.
I started working with that version in the fall of 1988.
As work on it progressed,
the FSF published several preliminary versions (numbered 0.@var{x}).
-In 1996, Edition 1.0 was released with @command{gawk} 3.0.0.
+In 1996, edition 1.0 was released with @command{gawk} 3.0.0.
The FSF published the first two editions under
the title @cite{The GNU Awk User's Guide}.
@ifset FOR_PRINT
@@ -1994,7 +1994,7 @@ the third edition in 2001.
This edition maintains the basic structure of the previous editions.
For FSF edition 4.0, the content was thoroughly reviewed and updated. All
references to @command{gawk} versions prior to 4.0 were removed.
-Of significant note for that edition was @ref{Debugger}.
+Of significant note for that edition was the addition of @ref{Debugger}.
For FSF edition
@ifclear FOR_PRINT
@@ -2009,7 +2009,7 @@ and the major new additions are @ref{Arbitrary Precision Arithmetic},
and @ref{Dynamic Extensions}.
This @value{DOCUMENT} will undoubtedly continue to evolve. If you
-find an error in this @value{DOCUMENT}, please report it! @DBXREF{Bugs}
+find an error in the @value{DOCUMENT}, please report it! @DBXREF{Bugs}
for information on submitting problem reports electronically.
@ifset FOR_PRINT
@@ -2019,7 +2019,7 @@ for information on submitting problem reports electronically.
You may have a newer version of @command{gawk} than the
one described here. To find out what has changed,
you should first look at the @file{NEWS} file in the @command{gawk}
-distribution, which provides a high-level summary of what changed in
+distribution, which provides a high-level summary of the changes in
each release.
You can then look at the @uref{http://www.gnu.org/software/gawk/manual/,
@@ -2073,7 +2073,7 @@ The initial draft of @cite{The GAWK Manual} had the following acknowledgments:
Many people need to be thanked for their assistance in producing this
manual. Jay Fenlason contributed many ideas and sample programs. Richard
Mlynarik and Robert Chassell gave helpful comments on drafts of this
-manual. The paper @cite{A Supplemental Document for @command{awk}} by John W.@:
+manual. The paper @cite{A Supplemental Document for AWK} by John W.@:
Pierce of the Chemistry Department at UC San Diego, pinpointed several
issues relevant both to @command{awk} implementation and to this manual, that
would otherwise have escaped us.
@@ -2084,12 +2084,18 @@ I would like to acknowledge Richard M.@: Stallman, for his vision of a
better world and for his courage in founding the FSF and starting the
GNU Project.
+@ifclear FOR_PRINT
Earlier editions of this @value{DOCUMENT} had the following acknowledgements:
+@end ifclear
+@ifset FOR_PRINT
+The previous edition of this @value{DOCUMENT} had
+the following acknowledgements:
+@end ifset
@quotation
The following people (in alphabetical order)
provided helpful comments on various
-versions of this book,
+versions of this book:
Rick Adams,
Dr.@: Nelson H.F. Beebe,
Karl Berry,
@@ -2117,7 +2123,7 @@ Robert J.@: Chassell provided much valuable advice on
the use of Texinfo.
He also deserves special thanks for
convincing me @emph{not} to title this @value{DOCUMENT}
-@cite{How To Gawk Politely}.
+@cite{How to Gawk Politely}.
Karl Berry helped significantly with the @TeX{} part of Texinfo.
@cindex Hartholz, Marshall
@@ -2201,9 +2207,9 @@ a number of people. @DBXREF{Contributors} for the full list.
@ifset FOR_PRINT
@cindex Oram, Andy
-Thanks to Andy Oram, of O'Reilly Media, for initiating
+Thanks to Andy Oram of O'Reilly Media for initiating
the fourth edition and for his support during the work.
-Thanks to Jasmine Kwityn for her copy-editing work.
+Thanks to Jasmine Kwityn for her copyediting work.
@end ifset
Thanks to Michael Brennan for the Forewords.
@@ -2211,7 +2217,7 @@ Thanks to Michael Brennan for the Forewords.
@cindex Duman, Patrice
@cindex Berry, Karl
Thanks to Patrice Dumas for the new @command{makeinfo} program.
-Thanks to Karl Berry who continues to work to keep
+Thanks to Karl Berry, who continues to work to keep
the Texinfo markup language sane.
@cindex Kernighan, Brian
@@ -2221,8 +2227,8 @@ Robert P.J.@: Day, Michael Brennan, and Brian Kernighan kindly acted as
reviewers for the 2015 edition of this @value{DOCUMENT}. Their feedback
helped improve the final work.
-I would like to thank Brian Kernighan for invaluable assistance during the
-testing and debugging of @command{gawk}, and for ongoing
+I would also like to thank Brian Kernighan for his invaluable assistance during the
+testing and debugging of @command{gawk}, and for his ongoing
help and advice in clarifying numerous points about the language.
We could not have done nearly as good a job on either @command{gawk}
or its documentation without his help.
@@ -2333,9 +2339,9 @@ an advanced feature that we will ignore for now;
pattern to search for and one action to perform
upon finding the pattern.
-Syntactically, a rule consists of a pattern followed by an action. The
-action is enclosed in braces to separate it from the pattern.
-Newlines usually separate rules. Therefore, an @command{awk}
+Syntactically, a rule consists of a @dfn{pattern} followed by an
+@dfn{action}. The action is enclosed in braces to separate it from the
+pattern. Newlines usually separate rules. Therefore, an @command{awk}
program looks like this:
@example
@@ -2409,8 +2415,8 @@ awk '@var{program}' @var{input-file1} @var{input-file2} @dots{}
@end example
@noindent
-where @var{program} consists of a series of @var{patterns} and
-@var{actions}, as described earlier.
+where @var{program} consists of a series of patterns and
+actions, as described earlier.
@cindex single quote (@code{'})
@cindex @code{'} (single quote)
@@ -2429,12 +2435,12 @@ programs from shell scripts, because it avoids the need for a separate
file for the @command{awk} program. A self-contained shell script is more
reliable because there are no other files to misplace.
-Later in this chapter,
+Later in this chapter, in
@ifdocbook
the section
@end ifdocbook
@ref{Very Simple},
-presents several short,
+we'll see examples of several short,
self-contained programs.
@node Read Terminal
@@ -2455,10 +2461,10 @@ awk '@var{program}'
which usually means whatever you type on the keyboard. This continues
until you indicate end-of-file by typing @kbd{Ctrl-d}.
@ifset FOR_PRINT
-(On other operating systems, the end-of-file character may be different.)
+(On non-POSIX operating systems, the end-of-file character may be different.)
@end ifset
@ifclear FOR_PRINT
-(On other operating systems, the end-of-file character may be different.
+(On non-POSIX operating systems, the end-of-file character may be different.
For example, on OS/2, it is @kbd{Ctrl-z}.)
@end ifclear
@@ -2562,7 +2568,7 @@ text, instead of the magic @samp{\47}.)
@cindex single quote (@code{'}) in @command{gawk} command lines
@c STARTOFRANGE qs2x
@cindex @code{'} (single quote) in @command{gawk} command lines
-If you want to clearly identify your @command{awk} program files as such,
+If you want to clearly identify an @command{awk} program file as such,
you can add the extension @file{.awk} to the @value{FN}. This doesn't
affect the execution of the @command{awk} program but it does make
``housekeeping'' easier.
@@ -2720,7 +2726,7 @@ The next @value{SUBSECTION} describes the shell's quoting rules.
@end quotation
@node Quoting
-@subsection Shell-Quoting Issues
+@subsection Shell Quoting Issues
@cindex shell quoting, rules for
@menu
@@ -2857,7 +2863,7 @@ $ @kbd{awk 'BEGIN @{ print "Here is a single quote <'"'"'>" @}'}
@noindent
This program consists of three concatenated quoted strings. The first and the
-third are single quoted, the second is double quoted.
+third are single-quoted, and the second is double-quoted.
This can be ``simplified'' to:
@@ -2896,7 +2902,7 @@ $ @kbd{awk 'BEGIN @{ print "Here is a double quote <\42>" @}'}
@end example
@noindent
-This works nicely, except that you should comment clearly what the
+This works nicely, but you should comment clearly what the
escapes mean.
A fourth option is to use command-line variable assignment, like this:
@@ -2907,11 +2913,11 @@ $ @kbd{awk -v sq="'" 'BEGIN @{ print "Here is a single quote <" sq ">" @}'}
@end example
(Here, the two string constants and the value of @code{sq} are concatenated
-into a single string which is printed by @code{print}.)
+into a single string that is printed by @code{print}.)
If you really need both single and double quotes in your @command{awk}
program, it is probably best to move it into a separate file, where
-the shell won't be part of the picture, and you can say what you mean.
+the shell won't be part of the picture and you can say what you mean.
@node DOS Quoting
@subsubsection Quoting in MS-Windows Batch Files
@@ -3010,7 +3016,7 @@ of green crates shipped, the number of red boxes shipped, the number of
orange bags shipped, and the number of blue packages shipped,
respectively. There are 16 entries, covering the 12 months of last year
and the first four months of the current year.
-An empty line separates the data for the two years.
+An empty line separates the data for the two years:
@example
@c file eg/data/inventory-shipped
@@ -3044,7 +3050,7 @@ The following command runs a simple @command{awk} program that searches the
input file @file{mail-list} for the character string @samp{li} (a
grouping of characters is usually called a @dfn{string};
the term @dfn{string} is based on similar usage in English, such
-as ``a string of pearls,'' or ``a string of cars in a train''):
+as ``a string of pearls'' or ``a string of cars in a train''):
@example
awk '/li/ @{ print $0 @}' mail-list
@@ -3091,7 +3097,7 @@ omitting the @code{print} statement but retaining the braces makes an
empty action that does nothing (i.e., no lines are printed).
@cindex @command{awk} programs, one-line examples
-Many practical @command{awk} programs are just a line or two. Following is a
+Many practical @command{awk} programs are just a line or two long. Following is a
collection of useful, short programs to get you started. Some of these
programs contain constructs that haven't been covered yet. (The description
of the program will give you a good idea of what is going on, but you'll
@@ -3112,7 +3118,7 @@ Print every line that is longer than 80 characters:
awk 'length($0) > 80' data
@end example
-The sole rule has a relational expression as its pattern and it has no
+The sole rule has a relational expression as its pattern and has no
action---so it uses the default action, printing the record.
@item
@@ -3199,7 +3205,7 @@ Print the even-numbered lines in the @value{DF}:
awk 'NR % 2 == 0' data
@end example
-If you use the expression @samp{NR % 2 == 1} instead,
+If you used the expression @samp{NR % 2 == 1} instead,
the program would print the odd-numbered lines.
@end itemize
@@ -8351,7 +8357,7 @@ loop that reads input records and matches them against patterns,
like so:
@example
-$ @kbd{ gawk 'BEGIN @{ PROCINFO["-", "READ_TIMEOUT"] = 5000 @}}
+$ @kbd{gawk 'BEGIN @{ PROCINFO["-", "READ_TIMEOUT"] = 5000 @}}
> @kbd{@{ print "You entered: " $0 @}'}
@kbd{gawk}
@print{} You entered: gawk
diff --git a/gawkapi.c b/gawkapi.c
index 06f31929..fc6e159a 100644
--- a/gawkapi.c
+++ b/gawkapi.c
@@ -790,7 +790,6 @@ api_set_array_element(awk_ext_id_t id, awk_array_t a_cookie,
elem->parent_array = array;
elem->vname = estrdup(index->str_value.str,
index->str_value.len);
- make_aname(elem);
}
return awk_true;
diff --git a/symbol.c b/symbol.c
index e89214c0..23e04c03 100644
--- a/symbol.c
+++ b/symbol.c
@@ -565,7 +565,6 @@ load_symbols()
sym_array->parent_array = PROCINFO_node;
sym_array->vname = estrdup("identifiers", 11);
- make_aname(sym_array);
user = make_string("user", 4);
extension = make_string("extension", 9);