aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2015-01-27 20:59:16 +0200
committerArnold D. Robbins <arnold@skeeve.com>2015-01-27 20:59:16 +0200
commit2fc1e9855f7983fb75a7f72d3ec97eec467e4709 (patch)
tree6efa2f0036144e2257712cec29047ebff1a0f38b
parent2f80bf28898274324a07d0b0d7c0e955f591c0df (diff)
parent5153d0f04b7ad460b23ae5a011061f7b93a122ef (diff)
downloadegawk-2fc1e9855f7983fb75a7f72d3ec97eec467e4709.tar.gz
egawk-2fc1e9855f7983fb75a7f72d3ec97eec467e4709.tar.bz2
egawk-2fc1e9855f7983fb75a7f72d3ec97eec467e4709.zip
Merge branch 'gawk-4.1-stable'
-rw-r--r--awklib/eg/lib/bits2str.awk2
-rw-r--r--doc/ChangeLog1
-rw-r--r--doc/gawk.info901
-rw-r--r--doc/gawk.texi120
-rw-r--r--doc/gawktexi.in116
5 files changed, 575 insertions, 565 deletions
diff --git a/awklib/eg/lib/bits2str.awk b/awklib/eg/lib/bits2str.awk
index 9725ee8f..a10ffad1 100644
--- a/awklib/eg/lib/bits2str.awk
+++ b/awklib/eg/lib/bits2str.awk
@@ -1,4 +1,4 @@
-# bits2str --- turn a byte into readable 1's and 0's
+# bits2str --- turn a byte into readable ones and zeros
function bits2str(bits, data, mask)
{
diff --git a/doc/ChangeLog b/doc/ChangeLog
index 2d924497..c91e2d4a 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,6 +1,7 @@
2015-01-27 Arnold D. Robbins <arnold@skeeve.com>
* gawktexi.in: O'Reilly fixes.
+ And still more. Also, fix @code --> @command in a number of places.
2015-01-26 Arnold D. Robbins <arnold@skeeve.com>
diff --git a/doc/gawk.info b/doc/gawk.info
index 3bcfde12..caa2ead8 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -11811,7 +11811,9 @@ internationalize and localize programs.
Besides the built-in functions, `awk' has provisions for writing new
functions that the rest of a program can use. The second half of this
-major node describes these "user-defined" functions.
+major node describes these "user-defined" functions. Finally, we
+explore indirect function calls, a `gawk'-specific extension that lets
+you determine at runtime what function is to be called.
* Menu:
@@ -11823,7 +11825,7 @@ major node describes these "user-defined" functions.

File: gawk.info, Node: Built-in, Next: User-defined, Up: Functions
-9.1 Built-In Functions
+9.1 Built-in Functions
======================
"Built-in" functions are always available for your `awk' program to
@@ -11848,7 +11850,7 @@ for your convenience.

File: gawk.info, Node: Calling Built-in, Next: Numeric Functions, Up: Built-in
-9.1.1 Calling Built-In Functions
+9.1.1 Calling Built-in Functions
--------------------------------
To call one of `awk''s built-in functions, write the name of the
@@ -11885,9 +11887,10 @@ are evaluated from left to right or from right to left. For example:
j = atan2(++i, i *= 2)
If the order of evaluation is left to right, then `i' first becomes
-6, and then 12, and `atan2()' is called with the two arguments 6 and
-12. But if the order of evaluation is right to left, `i' first becomes
-10, then 11, and `atan2()' is called with the two arguments 11 and 10.
+six, and then 12, and `atan2()' is called with the two arguments six
+and 12. But if the order of evaluation is right to left, `i' first
+becomes 10, then 11, and `atan2()' is called with the two arguments 11
+and 10.

File: gawk.info, Node: Numeric Functions, Next: String Functions, Prev: Calling Built-in, Up: Built-in
@@ -11943,7 +11946,7 @@ brackets ([ ]):
Often random integers are needed instead. Following is a
user-defined function that can be used to obtain a random
- non-negative integer less than N:
+ nonnegative integer less than N:
function randint(n)
{
@@ -12033,7 +12036,7 @@ File: gawk.info, Node: String Functions, Next: I/O Functions, Prev: Numeric F
The functions in this minor node look at or change the text of one or
more strings.
- `gawk' understands locales (*note Locales::), and does all string
+ `gawk' understands locales (*note Locales::) and does all string
processing in terms of _characters_, not _bytes_. This distinction is
particularly important to understand for locales where one character
may be represented by multiple bytes. Thus, for example, `length()'
@@ -12104,7 +12107,7 @@ Options::):
a[2] = "de"
a[3] = "sac"
- The `asorti()' function works similarly to `asort()', however, the
+ The `asorti()' function works similarly to `asort()'; however, the
_indices_ are sorted, instead of the values. Thus, in the previous
example, starting with the same initial set of indices and values
in `a', calling `asorti(a)' would yield:
@@ -12192,7 +12195,7 @@ Options::):
With BWK `awk' and `gawk', it is a fatal error to use a regexp
constant for FIND. Other implementations allow it, simply
treating the regexp constant as an expression meaning `$0 ~
- /regexp/'. (d.c.).
+ /regexp/'. (d.c.)
`length('[STRING]`)'
Return the number of characters in STRING. If STRING is a number,
@@ -12236,9 +12239,9 @@ Options::):
`match(STRING, REGEXP' [`, ARRAY']`)'
Search STRING for the longest, leftmost substring matched by the
- regular expression, REGEXP and return the character position
- (index) at which that substring begins (one, if it starts at the
- beginning of STRING). If no match is found, return zero.
+ regular expression REGEXP and return the character position (index)
+ at which that substring begins (one, if it starts at the beginning
+ of STRING). If no match is found, return zero.
The REGEXP argument may be either a regexp constant (`/'...`/') or
a string constant (`"'...`"'). In the latter case, the string is
@@ -12246,7 +12249,7 @@ Options::):
discussion of the difference between the two forms, and the
implications for writing your program correctly.
- The order of the first two arguments is backwards from most other
+ The order of the first two arguments is the opposite of most other
string functions that work with regular expressions, such as
`sub()' and `gsub()'. It might help to remember that for
`match()', the order is the same as for the `~' operator: `STRING
@@ -12313,8 +12316,8 @@ Options::):
There may not be subscripts for the start and index for every
parenthesized subexpression, because they may not all have matched
- text; thus they should be tested for with the `in' operator (*note
- Reference to Elements::).
+ text; thus, they should be tested for with the `in' operator
+ (*note Reference to Elements::).
The ARRAY argument to `match()' is a `gawk' extension. In
compatibility mode (*note Options::), using a third argument is a
@@ -12347,12 +12350,12 @@ Options::):
FIELDSEP, is a regexp describing where to split STRING (much as
`FS' can be a regexp describing where to split input records). If
FIELDSEP is omitted, the value of `FS' is used. `split()' returns
- the number of elements created. SEPS is a `gawk' extension with
+ the number of elements created. SEPS is a `gawk' extension, with
`SEPS[I]' being the separator string between `ARRAY[I]' and
- `ARRAY[I+1]'. If FIELDSEP is a single space then any leading
+ `ARRAY[I+1]'. If FIELDSEP is a single space, then any leading
whitespace goes into `SEPS[0]' and any trailing whitespace goes
- into `SEPS[N]' where N is the return value of `split()' (i.e., the
- number of elements in ARRAY).
+ into `SEPS[N]', where N is the return value of `split()' (i.e.,
+ the number of elements in ARRAY).
The `split()' function splits strings into pieces in a manner
similar to the way input lines are split into fields. For example:
@@ -12376,17 +12379,18 @@ Options::):
As with input field-splitting, when the value of FIELDSEP is
`" "', leading and trailing whitespace is ignored in values
assigned to the elements of ARRAY but not in SEPS, and the elements
- are separated by runs of whitespace. Also, as with input
- field-splitting, if FIELDSEP is the null string, each individual
+ are separated by runs of whitespace. Also, as with input field
+ splitting, if FIELDSEP is the null string, each individual
character in the string is split into its own array element.
(c.e.)
Note, however, that `RS' has no effect on the way `split()' works.
- Even though `RS = ""' causes newline to also be an input field
- separator, this does not affect how `split()' splits strings.
+ Even though `RS = ""' causes the newline character to also be an
+ input field separator, this does not affect how `split()' splits
+ strings.
Modern implementations of `awk', including `gawk', allow the third
- argument to be a regexp constant (`/abc/') as well as a string.
+ argument to be a regexp constant (`/'...`/') as well as a string.
(d.c.) The POSIX standard allows this as well. *Note Computed
Regexps::, for a discussion of the difference between using a
string constant or a regexp constant, and the implications for
@@ -12487,7 +12491,7 @@ Options::):
{ sub(/\|/, "\\&"); print }
As mentioned, the third argument to `sub()' must be a variable,
- field or array element. Some versions of `awk' allow the third
+ field, or array element. Some versions of `awk' allow the third
argument to be an expression that is not an lvalue. In such a
case, `sub()' still searches for the pattern and returns zero or
one, but the result of the substitution (if any) is thrown away
@@ -12612,11 +12616,11 @@ example, `"a\qb"' is treated as `"aqb"'.
At the runtime level, the various functions handle sequences of `\'
and `&' differently. The situation is (sadly) somewhat complex.
-Historically, the `sub()' and `gsub()' functions treated the two
-character sequence `\&' specially; this sequence was replaced in the
-generated text with a single `&'. Any other `\' within the REPLACEMENT
-string that did not precede an `&' was passed through unchanged. This
-is illustrated in *note table-sub-escapes::.
+Historically, the `sub()' and `gsub()' functions treated the
+two-character sequence `\&' specially; this sequence was replaced in
+the generated text with a single `&'. Any other `\' within the
+REPLACEMENT string that did not precede an `&' was passed through
+unchanged. This is illustrated in *note table-sub-escapes::.
You type `sub()' sees `sub()' generates
------- --------- --------------
@@ -12631,10 +12635,10 @@ is illustrated in *note table-sub-escapes::.
Table 9.1: Historical escape sequence processing for `sub()' and
`gsub()'
-This table shows both the lexical-level processing, where an odd number
-of backslashes becomes an even number at the runtime level, as well as
-the runtime processing done by `sub()'. (For the sake of simplicity,
-the rest of the following tables only show the case of even numbers of
+This table shows the lexical-level processing, where an odd number of
+backslashes becomes an even number at the runtime level, as well as the
+runtime processing done by `sub()'. (For the sake of simplicity, the
+rest of the following tables only show the case of even numbers of
backslashes entered at the lexical level.)
The problem with the historical approach is that there is no way to
@@ -12658,10 +12662,10 @@ This is shown in *note table-sub-proposed::.
`\\q' `\q' A literal `\q'
`\\\\' `\\' `\\'
-Table 9.2: GNU `awk' rules for `sub()' and backslash
+Table 9.2: `gawk' rules for `sub()' and backslash
In a nutshell, at the runtime level, there are now three special
-sequences of characters (`\\\&', `\\&' and `\&') whereas historically
+sequences of characters (`\\\&', `\\&', and `\&') whereas historically
there was only one. However, as in the historical case, any `\' that
is not part of one of these three sequences is not special and appears
in the output literally.
@@ -12691,7 +12695,7 @@ Table 9.3: POSIX rules for `sub()' and `gsub()'
`\\\\' is seen as `\\' and produces `\' instead of `\\'.
Starting with version 3.1.4, `gawk' followed the POSIX rules when
-`--posix' is specified (*note Options::). Otherwise, it continued to
+`--posix' was specified (*note Options::). Otherwise, it continued to
follow the proposed rules, as that had been its behavior for many years.
When version 4.0.0 was released, the `gawk' maintainer made the
@@ -12718,9 +12722,9 @@ the `\' does not, as shown in *note table-gensub-escapes::.
Table 9.4: Escape sequence processing for `gensub()'
- Because of the complexity of the lexical and runtime level processing
-and the special cases for `sub()' and `gsub()', we recommend the use of
-`gawk' and `gensub()' when you have to do substitutions.
+ Because of the complexity of the lexical- and runtime-level
+processing and the special cases for `sub()' and `gsub()', we recommend
+the use of `gawk' and `gensub()' when you have to do substitutions.
---------- Footnotes ----------
@@ -12747,10 +12751,10 @@ parameters are enclosed in square brackets ([ ]):
When closing a coprocess, it is occasionally useful to first close
one end of the two-way pipe and then to close the other. This is
done by providing a second argument to `close()'. This second
- argument should be one of the two string values `"to"' or `"from"',
- indicating which end of the pipe to close. Case in the string does
- not matter. *Note Two-way I/O::, which discusses this feature in
- more detail and gives an example.
+ argument (HOW) should be one of the two string values `"to"' or
+ `"from"', indicating which end of the pipe to close. Case in the
+ string does not matter. *Note Two-way I/O::, which discusses this
+ feature in more detail and gives an example.
Note that the second argument to `close()' is a `gawk' extension;
it is not available in compatibility mode (*note Options::).
@@ -12768,7 +12772,7 @@ parameters are enclosed in square brackets ([ ]):
sometimes it is necessary to force a program to "flush" its
buffers (i.e., write the information to its destination, even if a
buffer is not full). This is the purpose of the `fflush()'
- function--`gawk' also buffers its output and the `fflush()'
+ function--`gawk' also buffers its output, and the `fflush()'
function forces `gawk' to flush its buffers.
Brian Kernighan added `fflush()' to his `awk' in April 1992. For
@@ -12785,16 +12789,17 @@ parameters are enclosed in square brackets ([ ]):
output files and pipes if the argument was the null string.
This was changed in order to be compatible with Brian
Kernighan's `awk', in the hope that standardizing this
- feature in POSIX would then be easier (which indeed helped).
+ feature in POSIX would then be easier (which indeed proved to
+ be the case).
With `gawk', you can use `fflush("/dev/stdout")' if you wish
to flush only the standard output.
`fflush()' returns zero if the buffer is successfully flushed;
- otherwise, it returns non-zero. (`gawk' returns -1.) In the case
- where all buffers are flushed, the return value is zero only if
- all buffers were flushed successfully. Otherwise, it is -1, and
- `gawk' warns about the problem FILENAME.
+ otherwise, it returns a nonzero value. (`gawk' returns -1.) In
+ the case where all buffers are flushed, the return value is zero
+ only if all buffers were flushed successfully. Otherwise, it is
+ -1, and `gawk' warns about the problem FILENAME.
`gawk' also issues a warning message if you attempt to flush a
file or pipe that was opened for reading (such as with `getline'),
@@ -12803,9 +12808,9 @@ parameters are enclosed in square brackets ([ ]):
Interactive Versus Noninteractive Buffering
- As a side point, buffering issues can be even more confusing,
- depending upon whether your program is "interactive" (i.e.,
- communicating with a user sitting at a keyboard).(1)
+ As a side point, buffering issues can be even more confusing if
+ your program is "interactive" (i.e., communicating with a user
+ sitting at a keyboard).(1)
Interactive programs generally "line buffer" their output (i.e.,
they write out every line). Noninteractive programs wait until
@@ -12834,7 +12839,7 @@ parameters are enclosed in square brackets ([ ]):
shot.
`system(COMMAND)'
- Execute the operating-system command COMMAND and then return to
+ Execute the operating system command COMMAND and then return to
the `awk' program. Return COMMAND's exit status.
For example, if the following fragment of code is put in your `awk'
@@ -12923,14 +12928,14 @@ File: gawk.info, Node: Time Functions, Next: Bitwise Functions, Prev: I/O Fun
`awk' programs are commonly used to process log files containing
timestamp information, indicating when a particular log record was
-written. Many programs log their timestamp in the form returned by the
-`time()' system call, which is the number of seconds since a particular
-epoch. On POSIX-compliant systems, it is the number of seconds since
-1970-01-01 00:00:00 UTC, not counting leap seconds.(1) All known
-POSIX-compliant systems support timestamps from 0 through 2^31 - 1,
-which is sufficient to represent times through 2038-01-19 03:14:07 UTC.
-Many systems support a wider range of timestamps, including negative
-timestamps that represent times before the epoch.
+written. Many programs log their timestamps in the form returned by
+the `time()' system call, which is the number of seconds since a
+particular epoch. On POSIX-compliant systems, it is the number of
+seconds since 1970-01-01 00:00:00 UTC, not counting leap seconds.(1)
+All known POSIX-compliant systems support timestamps from 0 through
+2^31 - 1, which is sufficient to represent times through 2038-01-19
+03:14:07 UTC. Many systems support a wider range of timestamps,
+including negative timestamps that represent times before the epoch.
In order to make it easier to process such log files and to produce
useful reports, `gawk' provides the following functions for working
@@ -12953,9 +12958,9 @@ enclosed in square brackets ([ ]):
specified; for example, an hour of -1 means 1 hour before midnight.
The origin-zero Gregorian calendar is assumed, with year 0
preceding year 1 and year -1 preceding year 0. The time is
- assumed to be in the local timezone. If the daylight-savings flag
- is positive, the time is assumed to be daylight savings time; if
- zero, the time is assumed to be standard time; and if negative
+ assumed to be in the local time zone. If the daylight-savings
+ flag is positive, the time is assumed to be daylight savings time;
+ if zero, the time is assumed to be standard time; and if negative
(the default), `mktime()' attempts to determine whether daylight
savings time is in effect for the specified time.
@@ -13096,23 +13101,23 @@ the following date format specifications:
The weekday as a decimal number (1-7). Monday is day one.
`%U'
- The week number of the year (the first Sunday as the first day of
- week one) as a decimal number (00-53).
+ The week number of the year (with the first Sunday as the first
+ day of week one) as a decimal number (00-53).
`%V'
- The week number of the year (the first Monday as the first day of
- week one) as a decimal number (01-53). The method for determining
- the week number is as specified by ISO 8601. (To wit: if the week
- containing January 1 has four or more days in the new year, then
- it is week one; otherwise it is week 53 of the previous year and
- the next week is week one.)
+ The week number of the year (with the first Monday as the first
+ day of week one) as a decimal number (01-53). The method for
+ determining the week number is as specified by ISO 8601. (To wit:
+ if the week containing January 1 has four or more days in the new
+ year, then it is week one; otherwise it is week 53 of the previous
+ year and the next week is week one.)
`%w'
The weekday as a decimal number (0-6). Sunday is day zero.
`%W'
- The week number of the year (the first Monday as the first day of
- week one) as a decimal number (00-53).
+ The week number of the year (with the first Monday as the first
+ day of week one) as a decimal number (00-53).
`%x'
The locale's "appropriate" date representation. (This is `%A %B
@@ -13129,8 +13134,8 @@ the following date format specifications:
The full year as a decimal number (e.g., 2015).
`%z'
- The timezone offset in a +HHMM format (e.g., the format necessary
- to produce RFC 822/RFC 1036 date headers).
+ The time zone offset in a `+HHMM' format (e.g., the format
+ necessary to produce RFC 822/RFC 1036 date headers).
`%Z'
The time zone name or abbreviation; no characters if no time zone
@@ -13247,7 +13252,7 @@ each successive pair of bits in the operands. Three common operations
are bitwise AND, OR, and XOR. The operations are described in *note
table-bitwise-ops::.
- Bit Operator
+ Bit operator
| AND | OR | XOR
|--+--+--+--+--+--
Operands | 0 | 1 | 0 | 1 | 0 | 1
@@ -13303,7 +13308,7 @@ paragraph, don't worry about it.)
Here is a user-defined function (*note User-defined::) that
illustrates the use of these functions:
- # bits2str --- turn a byte into readable 1's and 0's
+ # bits2str --- turn a byte into readable ones and zeros
function bits2str(bits, data, mask)
{
@@ -13361,9 +13366,9 @@ Nondecimal-numbers::), and then demonstrates the results of the
---------- Footnotes ----------
- (1) This example shows that 0's come in on the left side. For
+ (1) This example shows that zeros come in on the left side. For
`gawk', this is always true, but in some languages, it's possible to
-have the left side fill with 1's.
+have the left side fill with ones.

File: gawk.info, Node: Type Functions, Next: I18N Functions, Prev: Bitwise Functions, Up: Built-in
@@ -31599,7 +31604,7 @@ Index
* * (asterisk), * operator, as regexp operator: Regexp Operators.
(line 89)
* * (asterisk), * operator, null strings, matching: String Functions.
- (line 536)
+ (line 537)
* * (asterisk), ** operator <1>: Precedence. (line 49)
* * (asterisk), ** operator: Arithmetic Ops. (line 81)
* * (asterisk), **= operator <1>: Precedence. (line 95)
@@ -31658,7 +31663,7 @@ Index
* --re-interval option: Options. (line 279)
* --sandbox option: Options. (line 286)
* --sandbox option, disabling system() function: I/O Functions.
- (line 128)
+ (line 129)
* --sandbox option, input redirection with getline: Getline. (line 19)
* --sandbox option, output redirection with print, printf: Redirection.
(line 6)
@@ -31960,7 +31965,7 @@ Index
* asterisk (*), * operator, as regexp operator: Regexp Operators.
(line 89)
* asterisk (*), * operator, null strings, matching: String Functions.
- (line 536)
+ (line 537)
* asterisk (*), ** operator <1>: Precedence. (line 49)
* asterisk (*), ** operator: Arithmetic Ops. (line 81)
* asterisk (*), **= operator <1>: Precedence. (line 95)
@@ -32167,7 +32172,7 @@ Index
* Brennan, Michael: Foreword3. (line 84)
* Brian Kernighan's awk <1>: I/O Functions. (line 43)
* Brian Kernighan's awk <2>: Gory Details. (line 19)
-* Brian Kernighan's awk <3>: String Functions. (line 492)
+* Brian Kernighan's awk <3>: String Functions. (line 493)
* Brian Kernighan's awk <4>: Delete. (line 51)
* Brian Kernighan's awk <5>: Nextfile Statement. (line 47)
* Brian Kernighan's awk <6>: Continue Statement. (line 44)
@@ -32193,8 +32198,8 @@ Index
* Buening, Andreas <2>: Contributors. (line 92)
* Buening, Andreas: Acknowledgments. (line 60)
* buffering, input/output <1>: Two-way I/O. (line 52)
-* buffering, input/output: I/O Functions. (line 140)
-* buffering, interactive vs. noninteractive: I/O Functions. (line 75)
+* buffering, input/output: I/O Functions. (line 141)
+* buffering, interactive vs. noninteractive: I/O Functions. (line 76)
* buffers, flushing: I/O Functions. (line 32)
* buffers, operators for: GNU Regexp Operators.
(line 48)
@@ -32220,7 +32225,7 @@ Index
* case sensitivity, and regexps: User-modified. (line 76)
* case sensitivity, and string comparisons: User-modified. (line 76)
* case sensitivity, array indices and: Array Intro. (line 100)
-* case sensitivity, converting case: String Functions. (line 522)
+* case sensitivity, converting case: String Functions. (line 523)
* case sensitivity, example programs: Library Functions. (line 53)
* case sensitivity, gawk: Case-sensitivity. (line 26)
* case sensitivity, regexps and: Case-sensitivity. (line 6)
@@ -32349,9 +32354,9 @@ Index
* control statements: Statements. (line 6)
* controlling array scanning order: Controlling Scanning.
(line 14)
-* convert string to lower case: String Functions. (line 523)
-* convert string to number: String Functions. (line 390)
-* convert string to upper case: String Functions. (line 529)
+* convert string to lower case: String Functions. (line 524)
+* convert string to number: String Functions. (line 391)
+* convert string to upper case: String Functions. (line 530)
* converting integer array subscripts: Numeric Array Subscripts.
(line 31)
* converting, dates to timestamps: Time Functions. (line 76)
@@ -32429,7 +32434,7 @@ Index
(line 148)
* dark corner, regexp constants, as arguments to user-defined functions: Using Constant Regexps.
(line 43)
-* dark corner, split() function: String Functions. (line 361)
+* dark corner, split() function: String Functions. (line 362)
* dark corner, strings, storing: gawk split records. (line 83)
* dark corner, value of ARGV[0]: Auto-set. (line 39)
* data, fixed-width: Constant Size. (line 6)
@@ -32966,7 +32971,7 @@ Index
* format time string: Time Functions. (line 48)
* formats, numeric output: OFMT. (line 6)
* formatting output: Printf. (line 6)
-* formatting strings: String Functions. (line 383)
+* formatting strings: String Functions. (line 384)
* forward slash (/) to enclose regular expressions: Regexp. (line 10)
* forward slash (/), / operator: Precedence. (line 55)
* forward slash (/), /= operator <1>: Precedence. (line 95)
@@ -33231,7 +33236,7 @@ Index
* gsub <1>: String Functions. (line 140)
* gsub: Using Constant Regexps.
(line 43)
-* gsub() function, arguments of: String Functions. (line 462)
+* gsub() function, arguments of: String Functions. (line 463)
* gsub() function, escape processing: Gory Details. (line 6)
* h debugger command (alias for help): Miscellaneous Debugger Commands.
(line 66)
@@ -33334,7 +33339,7 @@ Index
* integers, arbitrary precision: Arbitrary Precision Integers.
(line 6)
* integers, unsigned: Computer Arithmetic. (line 41)
-* interacting with other programs: I/O Functions. (line 106)
+* interacting with other programs: I/O Functions. (line 107)
* internationalization <1>: I18N and L10N. (line 6)
* internationalization: I18N Functions. (line 6)
* internationalization, localization <1>: Internationalization.
@@ -33355,7 +33360,7 @@ Index
* interpreted programs: Basic High Level. (line 15)
* interval expressions, regexp operator: Regexp Operators. (line 116)
* inventory-shipped file: Sample Data Files. (line 32)
-* invoke shell command: I/O Functions. (line 106)
+* invoke shell command: I/O Functions. (line 107)
* isarray: Type Functions. (line 11)
* ISO: Glossary. (line 461)
* ISO 8859-1: Glossary. (line 197)
@@ -33515,7 +33520,7 @@ Index
* matching, expressions, See comparison expressions: Typing and Comparison.
(line 9)
* matching, leftmost longest: Multiple Line. (line 26)
-* matching, null strings: String Functions. (line 536)
+* matching, null strings: String Functions. (line 537)
* mawk utility <1>: Other Versions. (line 48)
* mawk utility <2>: Nextfile Statement. (line 47)
* mawk utility <3>: Concatenation. (line 36)
@@ -33606,7 +33611,7 @@ Index
(line 43)
* null strings, converting numbers to strings: Strings And Numbers.
(line 21)
-* null strings, matching: String Functions. (line 536)
+* null strings, matching: String Functions. (line 537)
* number as string of bits: Bitwise Functions. (line 110)
* number of array elements: String Functions. (line 201)
* number sign (#), #! (executable scripts): Executable Scripts.
@@ -33776,7 +33781,7 @@ Index
* portability, operators: Increment Ops. (line 60)
* portability, operators, not in POSIX awk: Precedence. (line 98)
* portability, POSIXLY_CORRECT environment variable: Options. (line 359)
-* portability, substr() function: String Functions. (line 512)
+* portability, substr() function: String Functions. (line 513)
* portable object files <1>: Translator i18n. (line 6)
* portable object files: Explaining gettext. (line 37)
* portable object files, converting to message object files: I18N Example.
@@ -34025,7 +34030,7 @@ Index
* regular expressions, searching for: Egrep Program. (line 6)
* relational operators, See comparison operators: Typing and Comparison.
(line 9)
-* replace in string: String Functions. (line 408)
+* replace in string: String Functions. (line 409)
* return debugger command: Debugger Execution Control.
(line 54)
* return statement, user-defined functions: Return Statement. (line 6)
@@ -34182,14 +34187,14 @@ Index
(line 14)
* sidebar, Changing NR and FNR: Auto-set. (line 326)
* sidebar, Controlling Output Buffering with system(): I/O Functions.
- (line 138)
+ (line 139)
* sidebar, Escape Sequences for Metacharacters: Escape Sequences.
(line 137)
* sidebar, FS and IGNORECASE: Field Splitting Summary.
(line 38)
* sidebar, Interactive Versus Noninteractive Buffering: I/O Functions.
- (line 73)
-* sidebar, Matching the Null String: String Functions. (line 534)
+ (line 74)
+* sidebar, Matching the Null String: String Functions. (line 535)
* sidebar, Operator Evaluation Order: Increment Ops. (line 58)
* sidebar, Piping into sh: Redirection. (line 134)
* sidebar, Pre-POSIX awk Used OFMT for String Conversion: Strings And Numbers.
@@ -34263,7 +34268,7 @@ Index
* split utility: Split Program. (line 6)
* split() function, array elements, deleting: Delete. (line 61)
* split.awk program: Split Program. (line 30)
-* sprintf <1>: String Functions. (line 383)
+* sprintf <1>: String Functions. (line 384)
* sprintf: OFMT. (line 15)
* sprintf() function, OFMT variable and: User-modified. (line 114)
* sprintf() function, print/printf statements and: Round Function.
@@ -34309,7 +34314,7 @@ Index
* strings splitting, example: String Functions. (line 335)
* strings, converting <1>: Bitwise Functions. (line 110)
* strings, converting: Strings And Numbers. (line 6)
-* strings, converting letter case: String Functions. (line 522)
+* strings, converting letter case: String Functions. (line 523)
* strings, converting, numbers to: User-modified. (line 30)
* strings, empty, See null strings: awk split records. (line 115)
* strings, extracting: String Extraction. (line 6)
@@ -34319,13 +34324,13 @@ Index
* strings, null: Regexp Field Splitting.
(line 43)
* strings, numeric: Variable Typing. (line 6)
-* strtonum: String Functions. (line 390)
+* strtonum: String Functions. (line 391)
* strtonum() function (gawk), --non-decimal-data option and: Nondecimal Data.
(line 35)
-* sub <1>: String Functions. (line 408)
+* sub <1>: String Functions. (line 409)
* sub: Using Constant Regexps.
(line 43)
-* sub() function, arguments of: String Functions. (line 462)
+* sub() function, arguments of: String Functions. (line 463)
* sub() function, escape processing: Gory Details. (line 6)
* subscript separators: User-modified. (line 146)
* subscripts in arrays, multidimensional: Multidimensional. (line 10)
@@ -34339,15 +34344,15 @@ Index
* SUBSEP variable, and multidimensional arrays: Multidimensional.
(line 16)
* substitute in string: String Functions. (line 90)
-* substr: String Functions. (line 481)
-* substring: String Functions. (line 481)
+* substr: String Functions. (line 482)
+* substring: String Functions. (line 482)
* Sumner, Andrew: Other Versions. (line 68)
* supplementary groups of gawk process: Auto-set. (line 251)
* switch statement: Switch Statement. (line 6)
* SYMTAB array: Auto-set. (line 283)
* syntactic ambiguity: /= operator vs. /=.../ regexp constant: Assignment Ops.
(line 148)
-* system: I/O Functions. (line 106)
+* system: I/O Functions. (line 107)
* systime: Time Functions. (line 66)
* t debugger command (alias for tbreak): Breakpoint Control. (line 90)
* tbreak debugger command: Breakpoint Control. (line 90)
@@ -34397,8 +34402,8 @@ Index
* timestamps, converting dates to: Time Functions. (line 76)
* timestamps, formatted: Getlocaltime Function.
(line 6)
-* tolower: String Functions. (line 523)
-* toupper: String Functions. (line 529)
+* tolower: String Functions. (line 524)
+* toupper: String Functions. (line 530)
* tr utility: Translate Program. (line 6)
* trace debugger command: Miscellaneous Debugger Commands.
(line 108)
@@ -34417,14 +34422,14 @@ Index
(line 22)
* troubleshooting, fatal errors, printf format strings: Format Modifiers.
(line 158)
-* troubleshooting, fflush() function: I/O Functions. (line 62)
+* troubleshooting, fflush() function: I/O Functions. (line 63)
* troubleshooting, function call syntax: Function Calls. (line 30)
* troubleshooting, gawk: Compatibility Mode. (line 6)
* troubleshooting, gawk, bug reports: Bugs. (line 9)
* troubleshooting, gawk, fatal errors, function arguments: Calling Built-in.
(line 16)
* troubleshooting, getline function: File Checking. (line 25)
-* troubleshooting, gsub()/sub() functions: String Functions. (line 472)
+* troubleshooting, gsub()/sub() functions: String Functions. (line 473)
* troubleshooting, match() function: String Functions. (line 292)
* troubleshooting, print statement, omitting commas: Print Examples.
(line 31)
@@ -34434,8 +34439,8 @@ Index
* troubleshooting, regexp constants vs. string constants: Computed Regexps.
(line 40)
* troubleshooting, string concatenation: Concatenation. (line 26)
-* troubleshooting, substr() function: String Functions. (line 499)
-* troubleshooting, system() function: I/O Functions. (line 128)
+* troubleshooting, substr() function: String Functions. (line 500)
+* troubleshooting, system() function: I/O Functions. (line 129)
* troubleshooting, typographical errors, global variables: Options.
(line 98)
* true, logical: Truth Values. (line 6)
@@ -34839,335 +34844,335 @@ Node: Multiscanning491360
Node: Arrays of Arrays492949
Node: Arrays Summary497703
Node: Functions499794
-Node: Built-in500693
-Node: Calling Built-in501771
-Node: Numeric Functions503762
-Ref: Numeric Functions-Footnote-1508581
-Ref: Numeric Functions-Footnote-2508938
-Ref: Numeric Functions-Footnote-3508986
-Node: String Functions509258
-Ref: String Functions-Footnote-1532735
-Ref: String Functions-Footnote-2532864
-Ref: String Functions-Footnote-3533112
-Node: Gory Details533199
-Ref: table-sub-escapes534980
-Ref: table-sub-proposed536500
-Ref: table-posix-sub537864
-Ref: table-gensub-escapes539400
-Ref: Gory Details-Footnote-1540232
-Node: I/O Functions540383
-Ref: I/O Functions-Footnote-1547601
-Node: Time Functions547748
-Ref: Time Functions-Footnote-1558236
-Ref: Time Functions-Footnote-2558304
-Ref: Time Functions-Footnote-3558462
-Ref: Time Functions-Footnote-4558573
-Ref: Time Functions-Footnote-5558685
-Ref: Time Functions-Footnote-6558912
-Node: Bitwise Functions559178
-Ref: table-bitwise-ops559740
-Ref: Bitwise Functions-Footnote-1564049
-Node: Type Functions564218
-Node: I18N Functions565369
-Node: User-defined567014
-Node: Definition Syntax567819
-Ref: Definition Syntax-Footnote-1573226
-Node: Function Example573297
-Ref: Function Example-Footnote-1576216
-Node: Function Caveats576238
-Node: Calling A Function576756
-Node: Variable Scope577714
-Node: Pass By Value/Reference580702
-Node: Return Statement584197
-Node: Dynamic Typing587178
-Node: Indirect Calls588107
-Ref: Indirect Calls-Footnote-1599409
-Node: Functions Summary599537
-Node: Library Functions602239
-Ref: Library Functions-Footnote-1605848
-Ref: Library Functions-Footnote-2605991
-Node: Library Names606162
-Ref: Library Names-Footnote-1609616
-Ref: Library Names-Footnote-2609839
-Node: General Functions609925
-Node: Strtonum Function611028
-Node: Assert Function614050
-Node: Round Function617374
-Node: Cliff Random Function618915
-Node: Ordinal Functions619931
-Ref: Ordinal Functions-Footnote-1622994
-Ref: Ordinal Functions-Footnote-2623246
-Node: Join Function623457
-Ref: Join Function-Footnote-1625226
-Node: Getlocaltime Function625426
-Node: Readfile Function629170
-Node: Shell Quoting631140
-Node: Data File Management632541
-Node: Filetrans Function633173
-Node: Rewind Function637229
-Node: File Checking638616
-Ref: File Checking-Footnote-1639948
-Node: Empty Files640149
-Node: Ignoring Assigns642128
-Node: Getopt Function643679
-Ref: Getopt Function-Footnote-1655141
-Node: Passwd Functions655341
-Ref: Passwd Functions-Footnote-1664178
-Node: Group Functions664266
-Ref: Group Functions-Footnote-1672160
-Node: Walking Arrays672373
-Node: Library Functions Summary673976
-Node: Library Exercises675377
-Node: Sample Programs676657
-Node: Running Examples677427
-Node: Clones678155
-Node: Cut Program679379
-Node: Egrep Program689098
-Ref: Egrep Program-Footnote-1696596
-Node: Id Program696706
-Node: Split Program700351
-Ref: Split Program-Footnote-1703799
-Node: Tee Program703927
-Node: Uniq Program706716
-Node: Wc Program714135
-Ref: Wc Program-Footnote-1718385
-Node: Miscellaneous Programs718479
-Node: Dupword Program719692
-Node: Alarm Program721723
-Node: Translate Program726527
-Ref: Translate Program-Footnote-1731092
-Node: Labels Program731362
-Ref: Labels Program-Footnote-1734713
-Node: Word Sorting734797
-Node: History Sorting738868
-Node: Extract Program740704
-Node: Simple Sed748229
-Node: Igawk Program751297
-Ref: Igawk Program-Footnote-1765621
-Ref: Igawk Program-Footnote-2765822
-Ref: Igawk Program-Footnote-3765944
-Node: Anagram Program766059
-Node: Signature Program769116
-Node: Programs Summary770363
-Node: Programs Exercises771556
-Ref: Programs Exercises-Footnote-1775687
-Node: Advanced Features775778
-Node: Nondecimal Data777726
-Node: Array Sorting779316
-Node: Controlling Array Traversal780013
-Ref: Controlling Array Traversal-Footnote-1788346
-Node: Array Sorting Functions788464
-Ref: Array Sorting Functions-Footnote-1792353
-Node: Two-way I/O792549
-Ref: Two-way I/O-Footnote-1797494
-Ref: Two-way I/O-Footnote-2797680
-Node: TCP/IP Networking797762
-Node: Profiling800635
-Node: Advanced Features Summary808912
-Node: Internationalization810845
-Node: I18N and L10N812325
-Node: Explaining gettext813011
-Ref: Explaining gettext-Footnote-1818036
-Ref: Explaining gettext-Footnote-2818220
-Node: Programmer i18n818385
-Ref: Programmer i18n-Footnote-1823251
-Node: Translator i18n823300
-Node: String Extraction824094
-Ref: String Extraction-Footnote-1825225
-Node: Printf Ordering825311
-Ref: Printf Ordering-Footnote-1828097
-Node: I18N Portability828161
-Ref: I18N Portability-Footnote-1830616
-Node: I18N Example830679
-Ref: I18N Example-Footnote-1833482
-Node: Gawk I18N833554
-Node: I18N Summary834192
-Node: Debugger835531
-Node: Debugging836553
-Node: Debugging Concepts836994
-Node: Debugging Terms838847
-Node: Awk Debugging841419
-Node: Sample Debugging Session842313
-Node: Debugger Invocation842833
-Node: Finding The Bug844217
-Node: List of Debugger Commands850692
-Node: Breakpoint Control852025
-Node: Debugger Execution Control855721
-Node: Viewing And Changing Data859085
-Node: Execution Stack862463
-Node: Debugger Info864100
-Node: Miscellaneous Debugger Commands868117
-Node: Readline Support873146
-Node: Limitations874038
-Node: Debugging Summary876152
-Node: Arbitrary Precision Arithmetic877320
-Node: Computer Arithmetic878736
-Ref: table-numeric-ranges882334
-Ref: Computer Arithmetic-Footnote-1883193
-Node: Math Definitions883250
-Ref: table-ieee-formats886538
-Ref: Math Definitions-Footnote-1887142
-Node: MPFR features887247
-Node: FP Math Caution888918
-Ref: FP Math Caution-Footnote-1889968
-Node: Inexactness of computations890337
-Node: Inexact representation891296
-Node: Comparing FP Values892653
-Node: Errors accumulate893735
-Node: Getting Accuracy895168
-Node: Try To Round897830
-Node: Setting precision898729
-Ref: table-predefined-precision-strings899413
-Node: Setting the rounding mode901202
-Ref: table-gawk-rounding-modes901566
-Ref: Setting the rounding mode-Footnote-1905021
-Node: Arbitrary Precision Integers905200
-Ref: Arbitrary Precision Integers-Footnote-1910100
-Node: POSIX Floating Point Problems910249
-Ref: POSIX Floating Point Problems-Footnote-1914122
-Node: Floating point summary914160
-Node: Dynamic Extensions916354
-Node: Extension Intro917906
-Node: Plugin License919172
-Node: Extension Mechanism Outline919969
-Ref: figure-load-extension920397
-Ref: figure-register-new-function921877
-Ref: figure-call-new-function922881
-Node: Extension API Description924867
-Node: Extension API Functions Introduction926317
-Node: General Data Types931141
-Ref: General Data Types-Footnote-1936880
-Node: Memory Allocation Functions937179
-Ref: Memory Allocation Functions-Footnote-1940018
-Node: Constructor Functions940114
-Node: Registration Functions941848
-Node: Extension Functions942533
-Node: Exit Callback Functions944830
-Node: Extension Version String946078
-Node: Input Parsers946743
-Node: Output Wrappers956622
-Node: Two-way processors961137
-Node: Printing Messages963341
-Ref: Printing Messages-Footnote-1964417
-Node: Updating `ERRNO'964569
-Node: Requesting Values965309
-Ref: table-value-types-returned966037
-Node: Accessing Parameters966994
-Node: Symbol Table Access968225
-Node: Symbol table by name968739
-Node: Symbol table by cookie970720
-Ref: Symbol table by cookie-Footnote-1974864
-Node: Cached values974927
-Ref: Cached values-Footnote-1978426
-Node: Array Manipulation978517
-Ref: Array Manipulation-Footnote-1979615
-Node: Array Data Types979652
-Ref: Array Data Types-Footnote-1982307
-Node: Array Functions982399
-Node: Flattening Arrays986253
-Node: Creating Arrays993145
-Node: Extension API Variables997916
-Node: Extension Versioning998552
-Node: Extension API Informational Variables1000453
-Node: Extension API Boilerplate1001518
-Node: Finding Extensions1005327
-Node: Extension Example1005887
-Node: Internal File Description1006659
-Node: Internal File Ops1010726
-Ref: Internal File Ops-Footnote-11022396
-Node: Using Internal File Ops1022536
-Ref: Using Internal File Ops-Footnote-11024919
-Node: Extension Samples1025192
-Node: Extension Sample File Functions1026718
-Node: Extension Sample Fnmatch1034356
-Node: Extension Sample Fork1035847
-Node: Extension Sample Inplace1037062
-Node: Extension Sample Ord1038737
-Node: Extension Sample Readdir1039573
-Ref: table-readdir-file-types1040449
-Node: Extension Sample Revout1041260
-Node: Extension Sample Rev2way1041850
-Node: Extension Sample Read write array1042590
-Node: Extension Sample Readfile1044530
-Node: Extension Sample Time1045625
-Node: Extension Sample API Tests1046974
-Node: gawkextlib1047465
-Node: Extension summary1050123
-Node: Extension Exercises1053812
-Node: Language History1054534
-Node: V7/SVR3.11056190
-Node: SVR41058371
-Node: POSIX1059816
-Node: BTL1061205
-Node: POSIX/GNU1061939
-Node: Feature History1067563
-Node: Common Extensions1080661
-Node: Ranges and Locales1081985
-Ref: Ranges and Locales-Footnote-11086603
-Ref: Ranges and Locales-Footnote-21086630
-Ref: Ranges and Locales-Footnote-31086864
-Node: Contributors1087085
-Node: History summary1092626
-Node: Installation1093996
-Node: Gawk Distribution1094942
-Node: Getting1095426
-Node: Extracting1096249
-Node: Distribution contents1097884
-Node: Unix Installation1103949
-Node: Quick Installation1104632
-Node: Shell Startup Files1107043
-Node: Additional Configuration Options1108122
-Node: Configuration Philosophy1109861
-Node: Non-Unix Installation1112230
-Node: PC Installation1112688
-Node: PC Binary Installation1114007
-Node: PC Compiling1115855
-Ref: PC Compiling-Footnote-11118876
-Node: PC Testing1118985
-Node: PC Using1120161
-Node: Cygwin1124276
-Node: MSYS1125099
-Node: VMS Installation1125599
-Node: VMS Compilation1126391
-Ref: VMS Compilation-Footnote-11127613
-Node: VMS Dynamic Extensions1127671
-Node: VMS Installation Details1129355
-Node: VMS Running1131607
-Node: VMS GNV1134443
-Node: VMS Old Gawk1135177
-Node: Bugs1135647
-Node: Other Versions1139530
-Node: Installation summary1145954
-Node: Notes1147010
-Node: Compatibility Mode1147875
-Node: Additions1148657
-Node: Accessing The Source1149582
-Node: Adding Code1151017
-Node: New Ports1157174
-Node: Derived Files1161656
-Ref: Derived Files-Footnote-11167131
-Ref: Derived Files-Footnote-21167165
-Ref: Derived Files-Footnote-31167761
-Node: Future Extensions1167875
-Node: Implementation Limitations1168481
-Node: Extension Design1169729
-Node: Old Extension Problems1170883
-Ref: Old Extension Problems-Footnote-11172400
-Node: Extension New Mechanism Goals1172457
-Ref: Extension New Mechanism Goals-Footnote-11175817
-Node: Extension Other Design Decisions1176006
-Node: Extension Future Growth1178114
-Node: Old Extension Mechanism1178950
-Node: Notes summary1180712
-Node: Basic Concepts1181898
-Node: Basic High Level1182579
-Ref: figure-general-flow1182851
-Ref: figure-process-flow1183450
-Ref: Basic High Level-Footnote-11186679
-Node: Basic Data Typing1186864
-Node: Glossary1190192
-Node: Copying1222121
-Node: GNU Free Documentation License1259677
-Node: Index1284813
+Node: Built-in500833
+Node: Calling Built-in501911
+Node: Numeric Functions503906
+Ref: Numeric Functions-Footnote-1508724
+Ref: Numeric Functions-Footnote-2509081
+Ref: Numeric Functions-Footnote-3509129
+Node: String Functions509401
+Ref: String Functions-Footnote-1532902
+Ref: String Functions-Footnote-2533031
+Ref: String Functions-Footnote-3533279
+Node: Gory Details533366
+Ref: table-sub-escapes535147
+Ref: table-sub-proposed536662
+Ref: table-posix-sub538024
+Ref: table-gensub-escapes539561
+Ref: Gory Details-Footnote-1540394
+Node: I/O Functions540545
+Ref: I/O Functions-Footnote-1547781
+Node: Time Functions547928
+Ref: Time Functions-Footnote-1558437
+Ref: Time Functions-Footnote-2558505
+Ref: Time Functions-Footnote-3558663
+Ref: Time Functions-Footnote-4558774
+Ref: Time Functions-Footnote-5558886
+Ref: Time Functions-Footnote-6559113
+Node: Bitwise Functions559379
+Ref: table-bitwise-ops559941
+Ref: Bitwise Functions-Footnote-1564253
+Node: Type Functions564425
+Node: I18N Functions565576
+Node: User-defined567221
+Node: Definition Syntax568026
+Ref: Definition Syntax-Footnote-1573433
+Node: Function Example573504
+Ref: Function Example-Footnote-1576423
+Node: Function Caveats576445
+Node: Calling A Function576963
+Node: Variable Scope577921
+Node: Pass By Value/Reference580909
+Node: Return Statement584404
+Node: Dynamic Typing587385
+Node: Indirect Calls588314
+Ref: Indirect Calls-Footnote-1599616
+Node: Functions Summary599744
+Node: Library Functions602446
+Ref: Library Functions-Footnote-1606055
+Ref: Library Functions-Footnote-2606198
+Node: Library Names606369
+Ref: Library Names-Footnote-1609823
+Ref: Library Names-Footnote-2610046
+Node: General Functions610132
+Node: Strtonum Function611235
+Node: Assert Function614257
+Node: Round Function617581
+Node: Cliff Random Function619122
+Node: Ordinal Functions620138
+Ref: Ordinal Functions-Footnote-1623201
+Ref: Ordinal Functions-Footnote-2623453
+Node: Join Function623664
+Ref: Join Function-Footnote-1625433
+Node: Getlocaltime Function625633
+Node: Readfile Function629377
+Node: Shell Quoting631347
+Node: Data File Management632748
+Node: Filetrans Function633380
+Node: Rewind Function637436
+Node: File Checking638823
+Ref: File Checking-Footnote-1640155
+Node: Empty Files640356
+Node: Ignoring Assigns642335
+Node: Getopt Function643886
+Ref: Getopt Function-Footnote-1655348
+Node: Passwd Functions655548
+Ref: Passwd Functions-Footnote-1664385
+Node: Group Functions664473
+Ref: Group Functions-Footnote-1672367
+Node: Walking Arrays672580
+Node: Library Functions Summary674183
+Node: Library Exercises675584
+Node: Sample Programs676864
+Node: Running Examples677634
+Node: Clones678362
+Node: Cut Program679586
+Node: Egrep Program689305
+Ref: Egrep Program-Footnote-1696803
+Node: Id Program696913
+Node: Split Program700558
+Ref: Split Program-Footnote-1704006
+Node: Tee Program704134
+Node: Uniq Program706923
+Node: Wc Program714342
+Ref: Wc Program-Footnote-1718592
+Node: Miscellaneous Programs718686
+Node: Dupword Program719899
+Node: Alarm Program721930
+Node: Translate Program726734
+Ref: Translate Program-Footnote-1731299
+Node: Labels Program731569
+Ref: Labels Program-Footnote-1734920
+Node: Word Sorting735004
+Node: History Sorting739075
+Node: Extract Program740911
+Node: Simple Sed748436
+Node: Igawk Program751504
+Ref: Igawk Program-Footnote-1765828
+Ref: Igawk Program-Footnote-2766029
+Ref: Igawk Program-Footnote-3766151
+Node: Anagram Program766266
+Node: Signature Program769323
+Node: Programs Summary770570
+Node: Programs Exercises771763
+Ref: Programs Exercises-Footnote-1775894
+Node: Advanced Features775985
+Node: Nondecimal Data777933
+Node: Array Sorting779523
+Node: Controlling Array Traversal780220
+Ref: Controlling Array Traversal-Footnote-1788553
+Node: Array Sorting Functions788671
+Ref: Array Sorting Functions-Footnote-1792560
+Node: Two-way I/O792756
+Ref: Two-way I/O-Footnote-1797701
+Ref: Two-way I/O-Footnote-2797887
+Node: TCP/IP Networking797969
+Node: Profiling800842
+Node: Advanced Features Summary809119
+Node: Internationalization811052
+Node: I18N and L10N812532
+Node: Explaining gettext813218
+Ref: Explaining gettext-Footnote-1818243
+Ref: Explaining gettext-Footnote-2818427
+Node: Programmer i18n818592
+Ref: Programmer i18n-Footnote-1823458
+Node: Translator i18n823507
+Node: String Extraction824301
+Ref: String Extraction-Footnote-1825432
+Node: Printf Ordering825518
+Ref: Printf Ordering-Footnote-1828304
+Node: I18N Portability828368
+Ref: I18N Portability-Footnote-1830823
+Node: I18N Example830886
+Ref: I18N Example-Footnote-1833689
+Node: Gawk I18N833761
+Node: I18N Summary834399
+Node: Debugger835738
+Node: Debugging836760
+Node: Debugging Concepts837201
+Node: Debugging Terms839054
+Node: Awk Debugging841626
+Node: Sample Debugging Session842520
+Node: Debugger Invocation843040
+Node: Finding The Bug844424
+Node: List of Debugger Commands850899
+Node: Breakpoint Control852232
+Node: Debugger Execution Control855928
+Node: Viewing And Changing Data859292
+Node: Execution Stack862670
+Node: Debugger Info864307
+Node: Miscellaneous Debugger Commands868324
+Node: Readline Support873353
+Node: Limitations874245
+Node: Debugging Summary876359
+Node: Arbitrary Precision Arithmetic877527
+Node: Computer Arithmetic878943
+Ref: table-numeric-ranges882541
+Ref: Computer Arithmetic-Footnote-1883400
+Node: Math Definitions883457
+Ref: table-ieee-formats886745
+Ref: Math Definitions-Footnote-1887349
+Node: MPFR features887454
+Node: FP Math Caution889125
+Ref: FP Math Caution-Footnote-1890175
+Node: Inexactness of computations890544
+Node: Inexact representation891503
+Node: Comparing FP Values892860
+Node: Errors accumulate893942
+Node: Getting Accuracy895375
+Node: Try To Round898037
+Node: Setting precision898936
+Ref: table-predefined-precision-strings899620
+Node: Setting the rounding mode901409
+Ref: table-gawk-rounding-modes901773
+Ref: Setting the rounding mode-Footnote-1905228
+Node: Arbitrary Precision Integers905407
+Ref: Arbitrary Precision Integers-Footnote-1910307
+Node: POSIX Floating Point Problems910456
+Ref: POSIX Floating Point Problems-Footnote-1914329
+Node: Floating point summary914367
+Node: Dynamic Extensions916561
+Node: Extension Intro918113
+Node: Plugin License919379
+Node: Extension Mechanism Outline920176
+Ref: figure-load-extension920604
+Ref: figure-register-new-function922084
+Ref: figure-call-new-function923088
+Node: Extension API Description925074
+Node: Extension API Functions Introduction926524
+Node: General Data Types931348
+Ref: General Data Types-Footnote-1937087
+Node: Memory Allocation Functions937386
+Ref: Memory Allocation Functions-Footnote-1940225
+Node: Constructor Functions940321
+Node: Registration Functions942055
+Node: Extension Functions942740
+Node: Exit Callback Functions945037
+Node: Extension Version String946285
+Node: Input Parsers946950
+Node: Output Wrappers956829
+Node: Two-way processors961344
+Node: Printing Messages963548
+Ref: Printing Messages-Footnote-1964624
+Node: Updating `ERRNO'964776
+Node: Requesting Values965516
+Ref: table-value-types-returned966244
+Node: Accessing Parameters967201
+Node: Symbol Table Access968432
+Node: Symbol table by name968946
+Node: Symbol table by cookie970927
+Ref: Symbol table by cookie-Footnote-1975071
+Node: Cached values975134
+Ref: Cached values-Footnote-1978633
+Node: Array Manipulation978724
+Ref: Array Manipulation-Footnote-1979822
+Node: Array Data Types979859
+Ref: Array Data Types-Footnote-1982514
+Node: Array Functions982606
+Node: Flattening Arrays986460
+Node: Creating Arrays993352
+Node: Extension API Variables998123
+Node: Extension Versioning998759
+Node: Extension API Informational Variables1000660
+Node: Extension API Boilerplate1001725
+Node: Finding Extensions1005534
+Node: Extension Example1006094
+Node: Internal File Description1006866
+Node: Internal File Ops1010933
+Ref: Internal File Ops-Footnote-11022603
+Node: Using Internal File Ops1022743
+Ref: Using Internal File Ops-Footnote-11025126
+Node: Extension Samples1025399
+Node: Extension Sample File Functions1026925
+Node: Extension Sample Fnmatch1034563
+Node: Extension Sample Fork1036054
+Node: Extension Sample Inplace1037269
+Node: Extension Sample Ord1038944
+Node: Extension Sample Readdir1039780
+Ref: table-readdir-file-types1040656
+Node: Extension Sample Revout1041467
+Node: Extension Sample Rev2way1042057
+Node: Extension Sample Read write array1042797
+Node: Extension Sample Readfile1044737
+Node: Extension Sample Time1045832
+Node: Extension Sample API Tests1047181
+Node: gawkextlib1047672
+Node: Extension summary1050330
+Node: Extension Exercises1054019
+Node: Language History1054741
+Node: V7/SVR3.11056397
+Node: SVR41058578
+Node: POSIX1060023
+Node: BTL1061412
+Node: POSIX/GNU1062146
+Node: Feature History1067770
+Node: Common Extensions1080868
+Node: Ranges and Locales1082192
+Ref: Ranges and Locales-Footnote-11086810
+Ref: Ranges and Locales-Footnote-21086837
+Ref: Ranges and Locales-Footnote-31087071
+Node: Contributors1087292
+Node: History summary1092833
+Node: Installation1094203
+Node: Gawk Distribution1095149
+Node: Getting1095633
+Node: Extracting1096456
+Node: Distribution contents1098091
+Node: Unix Installation1104156
+Node: Quick Installation1104839
+Node: Shell Startup Files1107250
+Node: Additional Configuration Options1108329
+Node: Configuration Philosophy1110068
+Node: Non-Unix Installation1112437
+Node: PC Installation1112895
+Node: PC Binary Installation1114214
+Node: PC Compiling1116062
+Ref: PC Compiling-Footnote-11119083
+Node: PC Testing1119192
+Node: PC Using1120368
+Node: Cygwin1124483
+Node: MSYS1125306
+Node: VMS Installation1125806
+Node: VMS Compilation1126598
+Ref: VMS Compilation-Footnote-11127820
+Node: VMS Dynamic Extensions1127878
+Node: VMS Installation Details1129562
+Node: VMS Running1131814
+Node: VMS GNV1134650
+Node: VMS Old Gawk1135384
+Node: Bugs1135854
+Node: Other Versions1139737
+Node: Installation summary1146161
+Node: Notes1147217
+Node: Compatibility Mode1148082
+Node: Additions1148864
+Node: Accessing The Source1149789
+Node: Adding Code1151224
+Node: New Ports1157381
+Node: Derived Files1161863
+Ref: Derived Files-Footnote-11167338
+Ref: Derived Files-Footnote-21167372
+Ref: Derived Files-Footnote-31167968
+Node: Future Extensions1168082
+Node: Implementation Limitations1168688
+Node: Extension Design1169936
+Node: Old Extension Problems1171090
+Ref: Old Extension Problems-Footnote-11172607
+Node: Extension New Mechanism Goals1172664
+Ref: Extension New Mechanism Goals-Footnote-11176024
+Node: Extension Other Design Decisions1176213
+Node: Extension Future Growth1178321
+Node: Old Extension Mechanism1179157
+Node: Notes summary1180919
+Node: Basic Concepts1182105
+Node: Basic High Level1182786
+Ref: figure-general-flow1183058
+Ref: figure-process-flow1183657
+Ref: Basic High Level-Footnote-11186886
+Node: Basic Data Typing1187071
+Node: Glossary1190399
+Node: Copying1222328
+Node: GNU Free Documentation License1259884
+Node: Index1285020

End Tag Table
diff --git a/doc/gawk.texi b/doc/gawk.texi
index a5243277..f7640b58 100644
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -472,7 +472,7 @@ particular records in a file and perform operations upon them.
@command{gawk}.
* Internationalization:: Getting @command{gawk} to speak your
language.
-* Debugger:: The @code{gawk} debugger.
+* Debugger:: The @command{gawk} debugger.
* Arbitrary Precision Arithmetic:: Arbitrary precision arithmetic with
@command{gawk}.
* Dynamic Extensions:: Adding new built-in functions to
@@ -955,7 +955,7 @@ particular records in a file and perform operations upon them.
* Internal File Ops:: The code for internal file operations.
* Using Internal File Ops:: How to use an external extension.
* Extension Samples:: The sample extensions that ship with
- @code{gawk}.
+ @command{gawk}.
* Extension Sample File Functions:: The file functions sample.
* Extension Sample Fnmatch:: An interface to @code{fnmatch()}.
* Extension Sample Fork:: An interface to @code{fork()} and
@@ -4677,7 +4677,7 @@ $ @kbd{gawk -f test2}
@print{} This is script test2.
@end example
-@code{gawk} runs the @file{test2} script, which includes @file{test1}
+@command{gawk} runs the @file{test2} script, which includes @file{test1}
using the @code{@@include}
keyword. So, to include external @command{awk} source files, you just
use @code{@@include} followed by the name of the file to be included,
@@ -4886,7 +4886,7 @@ This seems to have been a long-undocumented feature in Unix @command{awk}.
Similarly, you may use @code{print} or @code{printf} statements in the
@var{init} and @var{increment} parts of a @code{for} loop. This is another
-long-undocumented ``feature'' of Unix @code{awk}.
+long-undocumented ``feature'' of Unix @command{awk}.
@end ignore
@@ -16834,6 +16834,9 @@ Besides the built-in functions, @command{awk} has provisions for
writing new functions that the rest of a program can use.
The second half of this @value{CHAPTER} describes these
@dfn{user-defined} functions.
+Finally, we explore indirect function calls, a @command{gawk}-specific
+extension that lets you determine at runtime what function is to
+be called.
@menu
* Built-in:: Summarizes the built-in functions.
@@ -16843,7 +16846,7 @@ The second half of this @value{CHAPTER} describes these
@end menu
@node Built-in
-@section Built-In Functions
+@section Built-in Functions
@dfn{Built-in} functions are always available for
your @command{awk} program to call. This @value{SECTION} defines all
@@ -16866,7 +16869,7 @@ but are summarized here for your convenience.
@end menu
@node Calling Built-in
-@subsection Calling Built-In Functions
+@subsection Calling Built-in Functions
To call one of @command{awk}'s built-in functions, write the name of
the function followed
@@ -16917,7 +16920,7 @@ j = atan2(++i, i *= 2)
@end example
If the order of evaluation is left to right, then @code{i} first becomes
-6, and then 12, and @code{atan2()} is called with the two arguments 6
+six, and then 12, and @code{atan2()} is called with the two arguments six
and 12. But if the order of evaluation is right to left, @code{i}
first becomes 10, then 11, and @code{atan2()} is called with the
two arguments 11 and 10.
@@ -16998,7 +17001,7 @@ In fact, @command{gawk} uses the BSD @code{random()} function, which is
considerably better than @code{rand()}, to produce random numbers.}
Often random integers are needed instead. Following is a user-defined function
-that can be used to obtain a random non-negative integer less than @var{n}:
+that can be used to obtain a random nonnegative integer less than @var{n}:
@example
function randint(n)
@@ -17093,7 +17096,7 @@ implementations.
The functions in this @value{SECTION} look at or change the text of one
or more strings.
-@code{gawk} understands locales (@pxref{Locales}), and does all
+@command{gawk} understands locales (@pxref{Locales}) and does all
string processing in terms of @emph{characters}, not @emph{bytes}.
This distinction is particularly important to understand for locales
where one character may be represented by multiple bytes. Thus, for
@@ -17182,7 +17185,7 @@ a[2] = "de"
a[3] = "sac"
@end example
-The @code{asorti()} function works similarly to @code{asort()}, however,
+The @code{asorti()} function works similarly to @code{asort()}; however,
the @emph{indices} are sorted, instead of the values. Thus, in the
previous example, starting with the same initial set of indices and
values in @code{a}, calling @samp{asorti(a)} would yield:
@@ -17297,7 +17300,7 @@ If @var{find} is not found, @code{index()} returns zero.
With BWK @command{awk} and @command{gawk},
it is a fatal error to use a regexp constant for @var{find}.
Other implementations allow it, simply treating the regexp
-constant as an expression meaning @samp{$0 ~ /regexp/}. @value{DARKCORNER}.
+constant as an expression meaning @samp{$0 ~ /regexp/}. @value{DARKCORNER}
@item @code{length(}[@var{string}]@code{)}
@cindexawkfunc{length}
@@ -17380,7 +17383,7 @@ If @option{--posix} is supplied, using an array argument is a fatal error
@cindex string, regular expression match
@cindex match regexp in string
Search @var{string} for the
-longest, leftmost substring matched by the regular expression,
+longest, leftmost substring matched by the regular expression
@var{regexp} and return the character position (index)
at which that substring begins (one, if it starts at the beginning of
@var{string}). If no match is found, return zero.
@@ -17392,7 +17395,7 @@ In the latter case, the string is treated as a regexp to be matched.
discussion of the difference between the two forms, and the
implications for writing your program correctly.
-The order of the first two arguments is backwards from most other string
+The order of the first two arguments is the opposite of most other string
functions that work with regular expressions, such as
@code{sub()} and @code{gsub()}. It might help to remember that
for @code{match()}, the order is the same as for the @samp{~} operator:
@@ -17481,7 +17484,7 @@ $ @kbd{echo foooobazbarrrrr |}
@end example
There may not be subscripts for the start and index for every parenthesized
-subexpression, because they may not all have matched text; thus they
+subexpression, because they may not all have matched text; thus, they
should be tested for with the @code{in} operator
(@pxref{Reference to Elements}).
@@ -17528,13 +17531,13 @@ a regexp describing where to split @var{string} (much as @code{FS} can
be a regexp describing where to split input records).
If @var{fieldsep} is omitted, the value of @code{FS} is used.
@code{split()} returns the number of elements created.
-@var{seps} is a @command{gawk} extension with @code{@var{seps}[@var{i}]}
+@var{seps} is a @command{gawk} extension, with @code{@var{seps}[@var{i}]}
being the separator string
between @code{@var{array}[@var{i}]} and @code{@var{array}[@var{i}+1]}.
If @var{fieldsep} is a single
-space then any leading whitespace goes into @code{@var{seps}[0]} and
+space, then any leading whitespace goes into @code{@var{seps}[0]} and
any trailing
-whitespace goes into @code{@var{seps}[@var{n}]} where @var{n} is the
+whitespace goes into @code{@var{seps}[@var{n}]}, where @var{n} is the
return value of
@code{split()} (i.e., the number of elements in @var{array}).
@@ -17572,19 +17575,18 @@ As with input field-splitting, when the value of @var{fieldsep} is
the elements of
@var{array} but not in @var{seps}, and the elements
are separated by runs of whitespace.
-Also, as with input field-splitting, if @var{fieldsep} is the null string, each
+Also, as with input field splitting, if @var{fieldsep} is the null string, each
individual character in the string is split into its own array element.
@value{COMMONEXT}
Note, however, that @code{RS} has no effect on the way @code{split()}
-works. Even though @samp{RS = ""} causes newline to also be an input
+works. Even though @samp{RS = ""} causes the newline character to also be an input
field separator, this does not affect how @code{split()} splits strings.
@cindex dark corner, @code{split()} function
Modern implementations of @command{awk}, including @command{gawk}, allow
-the third argument to be a regexp constant (@code{/abc/}) as well as a
-string.
-@value{DARKCORNER}
+the third argument to be a regexp constant (@w{@code{/}@dots{}@code{/}})
+as well as a string. @value{DARKCORNER}
The POSIX standard allows this as well.
@DBXREF{Computed Regexps} for a
discussion of the difference between using a string constant or a regexp constant,
@@ -17721,7 +17723,7 @@ an @samp{&}:
@cindex @code{sub()} function, arguments of
@cindex @code{gsub()} function, arguments of
As mentioned, the third argument to @code{sub()} must
-be a variable, field or array element.
+be a variable, field, or array element.
Some versions of @command{awk} allow the third argument to
be an expression that is not an lvalue. In such a case, @code{sub()}
still searches for the pattern and returns zero or one, but the result of
@@ -17913,8 +17915,8 @@ example, @code{"a\qb"} is treated as @code{"aqb"}.
At the runtime level, the various functions handle sequences of
@samp{\} and @samp{&} differently. The situation is (sadly) somewhat complex.
-Historically, the @code{sub()} and @code{gsub()} functions treated the two
-character sequence @samp{\&} specially; this sequence was replaced in
+Historically, the @code{sub()} and @code{gsub()} functions treated the
+two-character sequence @samp{\&} specially; this sequence was replaced in
the generated text with a single @samp{&}. Any other @samp{\} within
the @var{replacement} string that did not precede an @samp{&} was passed
through unchanged. This is illustrated in @ref{table-sub-escapes}.
@@ -17972,7 +17974,7 @@ _bigskip}
@end float
@noindent
-This table shows both the lexical-level processing, where
+This table shows the lexical-level processing, where
an odd number of backslashes becomes an even number at the runtime level,
as well as the runtime processing done by @code{sub()}.
(For the sake of simplicity, the rest of the following tables only show the
@@ -17993,7 +17995,7 @@ This is shown in
@ref{table-sub-proposed}.
@float Table,table-sub-proposed
-@caption{GNU @command{awk} rules for @code{sub()} and backslash}
+@caption{@command{gawk} rules for @code{sub()} and backslash}
@tex
\vbox{\bigskip
% We need more characters for escape and tab ...
@@ -18038,7 +18040,7 @@ _bigskip}
@end float
In a nutshell, at the runtime level, there are now three special sequences
-of characters (@samp{\\\&}, @samp{\\&} and @samp{\&}) whereas historically
+of characters (@samp{\\\&}, @samp{\\&}, and @samp{\&}) whereas historically
there was only one. However, as in the historical case, any @samp{\} that
is not part of one of these three sequences is not special and appears
in the output literally.
@@ -18104,7 +18106,7 @@ The only case where the difference is noticeable is the last one: @samp{\\\\}
is seen as @samp{\\} and produces @samp{\} instead of @samp{\\}.
Starting with @value{PVERSION} 3.1.4, @command{gawk} followed the POSIX rules
-when @option{--posix} is specified (@pxref{Options}). Otherwise,
+when @option{--posix} was specified (@pxref{Options}). Otherwise,
it continued to follow the proposed rules, as
that had been its behavior for many years.
@@ -18172,7 +18174,7 @@ _bigskip}
@end ifnottex
@end float
-Because of the complexity of the lexical and runtime level processing
+Because of the complexity of the lexical- and runtime-level processing
and the special cases for @code{sub()} and @code{gsub()},
we recommend the use of @command{gawk} and @code{gensub()} when you have
to do substitutions.
@@ -18198,6 +18200,7 @@ for more information.
When closing a coprocess, it is occasionally useful to first close
one end of the two-way pipe and then to close the other. This is done
by providing a second argument to @code{close()}. This second argument
+(@var{how})
should be one of the two string values @code{"to"} or @code{"from"},
indicating which end of the pipe to close. Case in the string does
not matter.
@@ -18224,7 +18227,7 @@ every little bit of information as soon as it is ready. However, sometimes
it is necessary to force a program to @dfn{flush} its buffers (i.e.,
write the information to its destination, even if a buffer is not full).
This is the purpose of the @code{fflush()} function---@command{gawk} also
-buffers its output and the @code{fflush()} function forces
+buffers its output, and the @code{fflush()} function forces
@command{gawk} to flush its buffers.
@cindex extensions, common@comma{} @code{fflush()} function
@@ -18245,7 +18248,7 @@ would flush only the standard output if there was no argument,
and flush all output files and pipes if the argument was the null
string. This was changed in order to be compatible with Brian
Kernighan's @command{awk}, in the hope that standardizing this
-feature in POSIX would then be easier (which indeed helped).
+feature in POSIX would then be easier (which indeed proved to be the case).
With @command{gawk},
you can use @samp{fflush("/dev/stdout")} if you wish to flush
@@ -18256,7 +18259,7 @@ only the standard output.
@c @cindex warnings, automatic
@cindex troubleshooting, @code{fflush()} function
@code{fflush()} returns zero if the buffer is successfully flushed;
-otherwise, it returns non-zero. (@command{gawk} returns @minus{}1.)
+otherwise, it returns a nonzero value. (@command{gawk} returns @minus{}1.)
In the case where all buffers are flushed, the return value is zero
only if all buffers were flushed successfully. Otherwise, it is
@minus{}1, and @command{gawk} warns about the problem @var{filename}.
@@ -18274,8 +18277,8 @@ In such a case, @code{fflush()} returns @minus{}1, as well.
@cindex buffering, interactive vs.@: noninteractive
-As a side point, buffering issues can be even more confusing, depending
-upon whether your program is @dfn{interactive} (i.e., communicating
+As a side point, buffering issues can be even more confusing if
+your program is @dfn{interactive} (i.e., communicating
with a user sitting at a keyboard).@footnote{A program is interactive
if the standard output is connected to a terminal device. On modern
systems, this means your keyboard and screen.}
@@ -18325,8 +18328,8 @@ it is all buffered and sent down the pipe to @command{cat} in one shot.
@cindex buffering, interactive vs.@: noninteractive
-As a side point, buffering issues can be even more confusing, depending
-upon whether your program is @dfn{interactive} (i.e., communicating
+As a side point, buffering issues can be even more confusing if
+your program is @dfn{interactive} (i.e., communicating
with a user sitting at a keyboard).@footnote{A program is interactive
if the standard output is connected to a terminal device. On modern
systems, this means your keyboard and screen.}
@@ -18370,7 +18373,7 @@ it is all buffered and sent down the pipe to @command{cat} in one shot.
@cindexawkfunc{system}
@cindex invoke shell command
@cindex interacting with other programs
-Execute the operating-system
+Execute the operating system
command @var{command} and then return to the @command{awk} program.
Return @var{command}'s exit status.
@@ -18550,9 +18553,9 @@ you would see the latter (undesirable) output.
@cindex files, log@comma{} timestamps in
@cindex @command{gawk}, timestamps
@cindex POSIX @command{awk}, timestamps and
-@code{awk} programs are commonly used to process log files
+@command{awk} programs are commonly used to process log files
containing timestamp information, indicating when a
-particular log record was written. Many programs log their timestamp
+particular log record was written. Many programs log their timestamps
in the form returned by the @code{time()} system call, which is the
number of seconds since a particular epoch. On POSIX-compliant systems,
it is the number of seconds since
@@ -18613,7 +18616,7 @@ The values of these numbers need not be within the ranges specified;
for example, an hour of @minus{}1 means 1 hour before midnight.
The origin-zero Gregorian calendar is assumed, with year 0 preceding
year 1 and year @minus{}1 preceding year 0.
-The time is assumed to be in the local timezone.
+The time is assumed to be in the local time zone.
If the daylight-savings flag is positive, the time is assumed to be
daylight savings time; if zero, the time is assumed to be standard
time; and if negative (the default), @code{mktime()} attempts to determine
@@ -18773,12 +18776,12 @@ Equivalent to specifying @samp{%H:%M:%S}.
The weekday as a decimal number (1--7). Monday is day one.
@item %U
-The week number of the year (the first Sunday as the first day of week one)
+The week number of the year (with the first Sunday as the first day of week one)
as a decimal number (00--53).
@c @cindex ISO 8601
@item %V
-The week number of the year (the first Monday as the first
+The week number of the year (with the first Monday as the first
day of week one) as a decimal number (01--53).
The method for determining the week number is as specified by ISO 8601.
(To wit: if the week containing January 1 has four or more days in the
@@ -18789,7 +18792,7 @@ and the next week is week one.)
The weekday as a decimal number (0--6). Sunday is day zero.
@item %W
-The week number of the year (the first Monday as the first day of week one)
+The week number of the year (with the first Monday as the first day of week one)
as a decimal number (00--53).
@item %x
@@ -18809,8 +18812,8 @@ The full year as a decimal number (e.g., 2015).
@c @cindex RFC 822
@c @cindex RFC 1036
@item %z
-The timezone offset in a +HHMM format (e.g., the format necessary to
-produce RFC 822/RFC 1036 date headers).
+The time zone offset in a @samp{+@var{HHMM}} format (e.g., the format
+necessary to produce RFC 822/RFC 1036 date headers).
@item %Z
The time zone name or abbreviation; no characters if
@@ -18950,7 +18953,7 @@ The operations are described in @ref{table-bitwise-ops}.
@ifnottex
@ifnotdocbook
@display
- Bit Operator
+ Bit operator
| AND | OR | XOR
|---+---+---+---+---+---
Operands | 0 | 1 | 0 | 1 | 0 | 1
@@ -19008,7 +19011,7 @@ Operands | 0 | 1 | 0 | 1 | 0 | 1
<tbody>
<row>
<entry colsep="0"></entry>
-<entry spanname="optitle"><emphasis role="bold">Bit Operator</emphasis></entry>
+<entry spanname="optitle"><emphasis role="bold">Bit operator</emphasis></entry>
</row>
<row rowsep="1">
@@ -19072,10 +19075,9 @@ of a given value.
Finally, two other common operations are to shift the bits left or right.
For example, if you have a bit string @samp{10111001} and you shift it
right by three bits, you end up with @samp{00010111}.@footnote{This example
-shows that 0's come in on the left side. For @command{gawk}, this is
+shows that zeros come in on the left side. For @command{gawk}, this is
always true, but in some languages, it's possible to have the left side
-fill with 1's.}
-@c Purposely decided to use 0's and 1's here. 2/2001.
+fill with ones.}
If you start over again with @samp{10111001} and shift it left by three
bits, you end up with @samp{11001000}. The following list describes
@command{gawk}'s built-in functions that implement the bitwise operations.
@@ -19129,7 +19131,7 @@ that illustrates the use of these functions:
@example
@group
@c file eg/lib/bits2str.awk
-# bits2str --- turn a byte into readable 1's and 0's
+# bits2str --- turn a byte into readable ones and zeros
function bits2str(bits, data, mask)
@{
@@ -20423,7 +20425,7 @@ for (i = 1; i <= n; i++)
@end example
@noindent
-@code{gawk} looks up the actual function to call only once.
+@command{gawk} looks up the actual function to call only once.
@node Functions Summary
@section Summary
@@ -31078,7 +31080,7 @@ Allowing completely alphabetic strings to have valid numeric
values is also a very severe departure from historical practice.
@end itemize
-The second problem is that the @code{gawk} maintainer feels that this
+The second problem is that the @command{gawk} maintainer feels that this
interpretation of the standard, which requires a certain amount of
``language lawyering'' to arrive at in the first place, was not even
intended by the standard developers. In other words, ``we see how you
@@ -31237,7 +31239,7 @@ When @option{--sandbox} is specified, extensions are disabled
* Finding Extensions:: How @command{gawk} finds compiled extensions.
* Extension Example:: Example C code for an extension.
* Extension Samples:: The sample extensions that ship with
- @code{gawk}.
+ @command{gawk}.
* gawkextlib:: The @code{gawkextlib} project.
* Extension summary:: Extension summary.
* Extension Exercises:: Exercises.
@@ -32201,7 +32203,7 @@ If the concept of a ``record terminator'' makes sense, then
@code{*rt_start} should be set to point to the data to be used for
@code{RT}, and @code{*rt_len} should be set to the length of the
data. Otherwise, @code{*rt_len} should be set to zero.
-@code{gawk} makes its own copy of this data, so the
+@command{gawk} makes its own copy of this data, so the
extension must manage this storage.
@end table
@@ -32247,7 +32249,7 @@ When writing an input parser, you should think about (and document)
how it is expected to interact with @command{awk} code. You may want
it to always be called, and take effect as appropriate (as the
@code{readdir} extension does). Or you may want it to take effect
-based upon the value of an @code{awk} variable, as the XML extension
+based upon the value of an @command{awk} variable, as the XML extension
from the @code{gawkextlib} project does (@pxref{gawkextlib}).
In the latter case, code in a @code{BEGINFILE} section
can look at @code{FILENAME} and @code{ERRNO} to decide whether or
@@ -33030,7 +33032,7 @@ converts it to a string. Using non-integral values is possible, but
requires that you understand how such values are converted to strings
(@pxref{Conversion}); thus using integral values is safest.
-As with @emph{all} strings passed into @code{gawk} from an extension,
+As with @emph{all} strings passed into @command{gawk} from an extension,
the string value of @code{index} must come from @code{gawk_malloc()},
@code{gawk_calloc()} or @code{gawk_realloc()}, and
@command{gawk} releases the storage.
@@ -37383,7 +37385,7 @@ can be configured and compiled.
@cindex @option{--disable-lint} configuration option
@cindex configuration option, @code{--disable-lint}
@item --disable-lint
-Disable all lint checking within @code{gawk}. The
+Disable all lint checking within @command{gawk}. The
@option{--lint} and @option{--lint-old} options
(@pxref{Options})
are accepted, but silently do nothing.
diff --git a/doc/gawktexi.in b/doc/gawktexi.in
index 897cfefb..1e7a5421 100644
--- a/doc/gawktexi.in
+++ b/doc/gawktexi.in
@@ -467,7 +467,7 @@ particular records in a file and perform operations upon them.
@command{gawk}.
* Internationalization:: Getting @command{gawk} to speak your
language.
-* Debugger:: The @code{gawk} debugger.
+* Debugger:: The @command{gawk} debugger.
* Arbitrary Precision Arithmetic:: Arbitrary precision arithmetic with
@command{gawk}.
* Dynamic Extensions:: Adding new built-in functions to
@@ -950,7 +950,7 @@ particular records in a file and perform operations upon them.
* Internal File Ops:: The code for internal file operations.
* Using Internal File Ops:: How to use an external extension.
* Extension Samples:: The sample extensions that ship with
- @code{gawk}.
+ @command{gawk}.
* Extension Sample File Functions:: The file functions sample.
* Extension Sample Fnmatch:: An interface to @code{fnmatch()}.
* Extension Sample Fork:: An interface to @code{fork()} and
@@ -4588,7 +4588,7 @@ $ @kbd{gawk -f test2}
@print{} This is script test2.
@end example
-@code{gawk} runs the @file{test2} script, which includes @file{test1}
+@command{gawk} runs the @file{test2} script, which includes @file{test1}
using the @code{@@include}
keyword. So, to include external @command{awk} source files, you just
use @code{@@include} followed by the name of the file to be included,
@@ -4797,7 +4797,7 @@ This seems to have been a long-undocumented feature in Unix @command{awk}.
Similarly, you may use @code{print} or @code{printf} statements in the
@var{init} and @var{increment} parts of a @code{for} loop. This is another
-long-undocumented ``feature'' of Unix @code{awk}.
+long-undocumented ``feature'' of Unix @command{awk}.
@end ignore
@@ -16116,6 +16116,9 @@ Besides the built-in functions, @command{awk} has provisions for
writing new functions that the rest of a program can use.
The second half of this @value{CHAPTER} describes these
@dfn{user-defined} functions.
+Finally, we explore indirect function calls, a @command{gawk}-specific
+extension that lets you determine at runtime what function is to
+be called.
@menu
* Built-in:: Summarizes the built-in functions.
@@ -16125,7 +16128,7 @@ The second half of this @value{CHAPTER} describes these
@end menu
@node Built-in
-@section Built-In Functions
+@section Built-in Functions
@dfn{Built-in} functions are always available for
your @command{awk} program to call. This @value{SECTION} defines all
@@ -16148,7 +16151,7 @@ but are summarized here for your convenience.
@end menu
@node Calling Built-in
-@subsection Calling Built-In Functions
+@subsection Calling Built-in Functions
To call one of @command{awk}'s built-in functions, write the name of
the function followed
@@ -16199,7 +16202,7 @@ j = atan2(++i, i *= 2)
@end example
If the order of evaluation is left to right, then @code{i} first becomes
-6, and then 12, and @code{atan2()} is called with the two arguments 6
+six, and then 12, and @code{atan2()} is called with the two arguments six
and 12. But if the order of evaluation is right to left, @code{i}
first becomes 10, then 11, and @code{atan2()} is called with the
two arguments 11 and 10.
@@ -16280,7 +16283,7 @@ In fact, @command{gawk} uses the BSD @code{random()} function, which is
considerably better than @code{rand()}, to produce random numbers.}
Often random integers are needed instead. Following is a user-defined function
-that can be used to obtain a random non-negative integer less than @var{n}:
+that can be used to obtain a random nonnegative integer less than @var{n}:
@example
function randint(n)
@@ -16375,7 +16378,7 @@ implementations.
The functions in this @value{SECTION} look at or change the text of one
or more strings.
-@code{gawk} understands locales (@pxref{Locales}), and does all
+@command{gawk} understands locales (@pxref{Locales}) and does all
string processing in terms of @emph{characters}, not @emph{bytes}.
This distinction is particularly important to understand for locales
where one character may be represented by multiple bytes. Thus, for
@@ -16464,7 +16467,7 @@ a[2] = "de"
a[3] = "sac"
@end example
-The @code{asorti()} function works similarly to @code{asort()}, however,
+The @code{asorti()} function works similarly to @code{asort()}; however,
the @emph{indices} are sorted, instead of the values. Thus, in the
previous example, starting with the same initial set of indices and
values in @code{a}, calling @samp{asorti(a)} would yield:
@@ -16579,7 +16582,7 @@ If @var{find} is not found, @code{index()} returns zero.
With BWK @command{awk} and @command{gawk},
it is a fatal error to use a regexp constant for @var{find}.
Other implementations allow it, simply treating the regexp
-constant as an expression meaning @samp{$0 ~ /regexp/}. @value{DARKCORNER}.
+constant as an expression meaning @samp{$0 ~ /regexp/}. @value{DARKCORNER}
@item @code{length(}[@var{string}]@code{)}
@cindexawkfunc{length}
@@ -16662,7 +16665,7 @@ If @option{--posix} is supplied, using an array argument is a fatal error
@cindex string, regular expression match
@cindex match regexp in string
Search @var{string} for the
-longest, leftmost substring matched by the regular expression,
+longest, leftmost substring matched by the regular expression
@var{regexp} and return the character position (index)
at which that substring begins (one, if it starts at the beginning of
@var{string}). If no match is found, return zero.
@@ -16674,7 +16677,7 @@ In the latter case, the string is treated as a regexp to be matched.
discussion of the difference between the two forms, and the
implications for writing your program correctly.
-The order of the first two arguments is backwards from most other string
+The order of the first two arguments is the opposite of most other string
functions that work with regular expressions, such as
@code{sub()} and @code{gsub()}. It might help to remember that
for @code{match()}, the order is the same as for the @samp{~} operator:
@@ -16763,7 +16766,7 @@ $ @kbd{echo foooobazbarrrrr |}
@end example
There may not be subscripts for the start and index for every parenthesized
-subexpression, because they may not all have matched text; thus they
+subexpression, because they may not all have matched text; thus, they
should be tested for with the @code{in} operator
(@pxref{Reference to Elements}).
@@ -16810,13 +16813,13 @@ a regexp describing where to split @var{string} (much as @code{FS} can
be a regexp describing where to split input records).
If @var{fieldsep} is omitted, the value of @code{FS} is used.
@code{split()} returns the number of elements created.
-@var{seps} is a @command{gawk} extension with @code{@var{seps}[@var{i}]}
+@var{seps} is a @command{gawk} extension, with @code{@var{seps}[@var{i}]}
being the separator string
between @code{@var{array}[@var{i}]} and @code{@var{array}[@var{i}+1]}.
If @var{fieldsep} is a single
-space then any leading whitespace goes into @code{@var{seps}[0]} and
+space, then any leading whitespace goes into @code{@var{seps}[0]} and
any trailing
-whitespace goes into @code{@var{seps}[@var{n}]} where @var{n} is the
+whitespace goes into @code{@var{seps}[@var{n}]}, where @var{n} is the
return value of
@code{split()} (i.e., the number of elements in @var{array}).
@@ -16854,19 +16857,18 @@ As with input field-splitting, when the value of @var{fieldsep} is
the elements of
@var{array} but not in @var{seps}, and the elements
are separated by runs of whitespace.
-Also, as with input field-splitting, if @var{fieldsep} is the null string, each
+Also, as with input field splitting, if @var{fieldsep} is the null string, each
individual character in the string is split into its own array element.
@value{COMMONEXT}
Note, however, that @code{RS} has no effect on the way @code{split()}
-works. Even though @samp{RS = ""} causes newline to also be an input
+works. Even though @samp{RS = ""} causes the newline character to also be an input
field separator, this does not affect how @code{split()} splits strings.
@cindex dark corner, @code{split()} function
Modern implementations of @command{awk}, including @command{gawk}, allow
-the third argument to be a regexp constant (@code{/abc/}) as well as a
-string.
-@value{DARKCORNER}
+the third argument to be a regexp constant (@w{@code{/}@dots{}@code{/}})
+as well as a string. @value{DARKCORNER}
The POSIX standard allows this as well.
@DBXREF{Computed Regexps} for a
discussion of the difference between using a string constant or a regexp constant,
@@ -17003,7 +17005,7 @@ an @samp{&}:
@cindex @code{sub()} function, arguments of
@cindex @code{gsub()} function, arguments of
As mentioned, the third argument to @code{sub()} must
-be a variable, field or array element.
+be a variable, field, or array element.
Some versions of @command{awk} allow the third argument to
be an expression that is not an lvalue. In such a case, @code{sub()}
still searches for the pattern and returns zero or one, but the result of
@@ -17162,8 +17164,8 @@ example, @code{"a\qb"} is treated as @code{"aqb"}.
At the runtime level, the various functions handle sequences of
@samp{\} and @samp{&} differently. The situation is (sadly) somewhat complex.
-Historically, the @code{sub()} and @code{gsub()} functions treated the two
-character sequence @samp{\&} specially; this sequence was replaced in
+Historically, the @code{sub()} and @code{gsub()} functions treated the
+two-character sequence @samp{\&} specially; this sequence was replaced in
the generated text with a single @samp{&}. Any other @samp{\} within
the @var{replacement} string that did not precede an @samp{&} was passed
through unchanged. This is illustrated in @ref{table-sub-escapes}.
@@ -17221,7 +17223,7 @@ _bigskip}
@end float
@noindent
-This table shows both the lexical-level processing, where
+This table shows the lexical-level processing, where
an odd number of backslashes becomes an even number at the runtime level,
as well as the runtime processing done by @code{sub()}.
(For the sake of simplicity, the rest of the following tables only show the
@@ -17242,7 +17244,7 @@ This is shown in
@ref{table-sub-proposed}.
@float Table,table-sub-proposed
-@caption{GNU @command{awk} rules for @code{sub()} and backslash}
+@caption{@command{gawk} rules for @code{sub()} and backslash}
@tex
\vbox{\bigskip
% We need more characters for escape and tab ...
@@ -17287,7 +17289,7 @@ _bigskip}
@end float
In a nutshell, at the runtime level, there are now three special sequences
-of characters (@samp{\\\&}, @samp{\\&} and @samp{\&}) whereas historically
+of characters (@samp{\\\&}, @samp{\\&}, and @samp{\&}) whereas historically
there was only one. However, as in the historical case, any @samp{\} that
is not part of one of these three sequences is not special and appears
in the output literally.
@@ -17353,7 +17355,7 @@ The only case where the difference is noticeable is the last one: @samp{\\\\}
is seen as @samp{\\} and produces @samp{\} instead of @samp{\\}.
Starting with @value{PVERSION} 3.1.4, @command{gawk} followed the POSIX rules
-when @option{--posix} is specified (@pxref{Options}). Otherwise,
+when @option{--posix} was specified (@pxref{Options}). Otherwise,
it continued to follow the proposed rules, as
that had been its behavior for many years.
@@ -17421,7 +17423,7 @@ _bigskip}
@end ifnottex
@end float
-Because of the complexity of the lexical and runtime level processing
+Because of the complexity of the lexical- and runtime-level processing
and the special cases for @code{sub()} and @code{gsub()},
we recommend the use of @command{gawk} and @code{gensub()} when you have
to do substitutions.
@@ -17447,6 +17449,7 @@ for more information.
When closing a coprocess, it is occasionally useful to first close
one end of the two-way pipe and then to close the other. This is done
by providing a second argument to @code{close()}. This second argument
+(@var{how})
should be one of the two string values @code{"to"} or @code{"from"},
indicating which end of the pipe to close. Case in the string does
not matter.
@@ -17473,7 +17476,7 @@ every little bit of information as soon as it is ready. However, sometimes
it is necessary to force a program to @dfn{flush} its buffers (i.e.,
write the information to its destination, even if a buffer is not full).
This is the purpose of the @code{fflush()} function---@command{gawk} also
-buffers its output and the @code{fflush()} function forces
+buffers its output, and the @code{fflush()} function forces
@command{gawk} to flush its buffers.
@cindex extensions, common@comma{} @code{fflush()} function
@@ -17494,7 +17497,7 @@ would flush only the standard output if there was no argument,
and flush all output files and pipes if the argument was the null
string. This was changed in order to be compatible with Brian
Kernighan's @command{awk}, in the hope that standardizing this
-feature in POSIX would then be easier (which indeed helped).
+feature in POSIX would then be easier (which indeed proved to be the case).
With @command{gawk},
you can use @samp{fflush("/dev/stdout")} if you wish to flush
@@ -17505,7 +17508,7 @@ only the standard output.
@c @cindex warnings, automatic
@cindex troubleshooting, @code{fflush()} function
@code{fflush()} returns zero if the buffer is successfully flushed;
-otherwise, it returns non-zero. (@command{gawk} returns @minus{}1.)
+otherwise, it returns a nonzero value. (@command{gawk} returns @minus{}1.)
In the case where all buffers are flushed, the return value is zero
only if all buffers were flushed successfully. Otherwise, it is
@minus{}1, and @command{gawk} warns about the problem @var{filename}.
@@ -17518,8 +17521,8 @@ In such a case, @code{fflush()} returns @minus{}1, as well.
@sidebar Interactive Versus Noninteractive Buffering
@cindex buffering, interactive vs.@: noninteractive
-As a side point, buffering issues can be even more confusing, depending
-upon whether your program is @dfn{interactive} (i.e., communicating
+As a side point, buffering issues can be even more confusing if
+your program is @dfn{interactive} (i.e., communicating
with a user sitting at a keyboard).@footnote{A program is interactive
if the standard output is connected to a terminal device. On modern
systems, this means your keyboard and screen.}
@@ -17562,7 +17565,7 @@ it is all buffered and sent down the pipe to @command{cat} in one shot.
@cindexawkfunc{system}
@cindex invoke shell command
@cindex interacting with other programs
-Execute the operating-system
+Execute the operating system
command @var{command} and then return to the @command{awk} program.
Return @var{command}'s exit status.
@@ -17671,9 +17674,9 @@ you would see the latter (undesirable) output.
@cindex files, log@comma{} timestamps in
@cindex @command{gawk}, timestamps
@cindex POSIX @command{awk}, timestamps and
-@code{awk} programs are commonly used to process log files
+@command{awk} programs are commonly used to process log files
containing timestamp information, indicating when a
-particular log record was written. Many programs log their timestamp
+particular log record was written. Many programs log their timestamps
in the form returned by the @code{time()} system call, which is the
number of seconds since a particular epoch. On POSIX-compliant systems,
it is the number of seconds since
@@ -17734,7 +17737,7 @@ The values of these numbers need not be within the ranges specified;
for example, an hour of @minus{}1 means 1 hour before midnight.
The origin-zero Gregorian calendar is assumed, with year 0 preceding
year 1 and year @minus{}1 preceding year 0.
-The time is assumed to be in the local timezone.
+The time is assumed to be in the local time zone.
If the daylight-savings flag is positive, the time is assumed to be
daylight savings time; if zero, the time is assumed to be standard
time; and if negative (the default), @code{mktime()} attempts to determine
@@ -17894,12 +17897,12 @@ Equivalent to specifying @samp{%H:%M:%S}.
The weekday as a decimal number (1--7). Monday is day one.
@item %U
-The week number of the year (the first Sunday as the first day of week one)
+The week number of the year (with the first Sunday as the first day of week one)
as a decimal number (00--53).
@c @cindex ISO 8601
@item %V
-The week number of the year (the first Monday as the first
+The week number of the year (with the first Monday as the first
day of week one) as a decimal number (01--53).
The method for determining the week number is as specified by ISO 8601.
(To wit: if the week containing January 1 has four or more days in the
@@ -17910,7 +17913,7 @@ and the next week is week one.)
The weekday as a decimal number (0--6). Sunday is day zero.
@item %W
-The week number of the year (the first Monday as the first day of week one)
+The week number of the year (with the first Monday as the first day of week one)
as a decimal number (00--53).
@item %x
@@ -17930,8 +17933,8 @@ The full year as a decimal number (e.g., 2015).
@c @cindex RFC 822
@c @cindex RFC 1036
@item %z
-The timezone offset in a +HHMM format (e.g., the format necessary to
-produce RFC 822/RFC 1036 date headers).
+The time zone offset in a @samp{+@var{HHMM}} format (e.g., the format
+necessary to produce RFC 822/RFC 1036 date headers).
@item %Z
The time zone name or abbreviation; no characters if
@@ -18071,7 +18074,7 @@ The operations are described in @ref{table-bitwise-ops}.
@ifnottex
@ifnotdocbook
@display
- Bit Operator
+ Bit operator
| AND | OR | XOR
|---+---+---+---+---+---
Operands | 0 | 1 | 0 | 1 | 0 | 1
@@ -18129,7 +18132,7 @@ Operands | 0 | 1 | 0 | 1 | 0 | 1
<tbody>
<row>
<entry colsep="0"></entry>
-<entry spanname="optitle"><emphasis role="bold">Bit Operator</emphasis></entry>
+<entry spanname="optitle"><emphasis role="bold">Bit operator</emphasis></entry>
</row>
<row rowsep="1">
@@ -18193,10 +18196,9 @@ of a given value.
Finally, two other common operations are to shift the bits left or right.
For example, if you have a bit string @samp{10111001} and you shift it
right by three bits, you end up with @samp{00010111}.@footnote{This example
-shows that 0's come in on the left side. For @command{gawk}, this is
+shows that zeros come in on the left side. For @command{gawk}, this is
always true, but in some languages, it's possible to have the left side
-fill with 1's.}
-@c Purposely decided to use 0's and 1's here. 2/2001.
+fill with ones.}
If you start over again with @samp{10111001} and shift it left by three
bits, you end up with @samp{11001000}. The following list describes
@command{gawk}'s built-in functions that implement the bitwise operations.
@@ -18250,7 +18252,7 @@ that illustrates the use of these functions:
@example
@group
@c file eg/lib/bits2str.awk
-# bits2str --- turn a byte into readable 1's and 0's
+# bits2str --- turn a byte into readable ones and zeros
function bits2str(bits, data, mask)
@{
@@ -19544,7 +19546,7 @@ for (i = 1; i <= n; i++)
@end example
@noindent
-@code{gawk} looks up the actual function to call only once.
+@command{gawk} looks up the actual function to call only once.
@node Functions Summary
@section Summary
@@ -30170,7 +30172,7 @@ Allowing completely alphabetic strings to have valid numeric
values is also a very severe departure from historical practice.
@end itemize
-The second problem is that the @code{gawk} maintainer feels that this
+The second problem is that the @command{gawk} maintainer feels that this
interpretation of the standard, which requires a certain amount of
``language lawyering'' to arrive at in the first place, was not even
intended by the standard developers. In other words, ``we see how you
@@ -30329,7 +30331,7 @@ When @option{--sandbox} is specified, extensions are disabled
* Finding Extensions:: How @command{gawk} finds compiled extensions.
* Extension Example:: Example C code for an extension.
* Extension Samples:: The sample extensions that ship with
- @code{gawk}.
+ @command{gawk}.
* gawkextlib:: The @code{gawkextlib} project.
* Extension summary:: Extension summary.
* Extension Exercises:: Exercises.
@@ -31293,7 +31295,7 @@ If the concept of a ``record terminator'' makes sense, then
@code{*rt_start} should be set to point to the data to be used for
@code{RT}, and @code{*rt_len} should be set to the length of the
data. Otherwise, @code{*rt_len} should be set to zero.
-@code{gawk} makes its own copy of this data, so the
+@command{gawk} makes its own copy of this data, so the
extension must manage this storage.
@end table
@@ -31339,7 +31341,7 @@ When writing an input parser, you should think about (and document)
how it is expected to interact with @command{awk} code. You may want
it to always be called, and take effect as appropriate (as the
@code{readdir} extension does). Or you may want it to take effect
-based upon the value of an @code{awk} variable, as the XML extension
+based upon the value of an @command{awk} variable, as the XML extension
from the @code{gawkextlib} project does (@pxref{gawkextlib}).
In the latter case, code in a @code{BEGINFILE} section
can look at @code{FILENAME} and @code{ERRNO} to decide whether or
@@ -32122,7 +32124,7 @@ converts it to a string. Using non-integral values is possible, but
requires that you understand how such values are converted to strings
(@pxref{Conversion}); thus using integral values is safest.
-As with @emph{all} strings passed into @code{gawk} from an extension,
+As with @emph{all} strings passed into @command{gawk} from an extension,
the string value of @code{index} must come from @code{gawk_malloc()},
@code{gawk_calloc()} or @code{gawk_realloc()}, and
@command{gawk} releases the storage.
@@ -36475,7 +36477,7 @@ can be configured and compiled.
@cindex @option{--disable-lint} configuration option
@cindex configuration option, @code{--disable-lint}
@item --disable-lint
-Disable all lint checking within @code{gawk}. The
+Disable all lint checking within @command{gawk}. The
@option{--lint} and @option{--lint-old} options
(@pxref{Options})
are accepted, but silently do nothing.