gawk-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[gawk-diffs] [SCM] gawk branch, gawk-4.1-stable, updated. gawk-4.1.0-570


From: Arnold Robbins
Subject: [gawk-diffs] [SCM] gawk branch, gawk-4.1-stable, updated. gawk-4.1.0-570-g5153d0f
Date: Tue, 27 Jan 2015 18:58:18 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "gawk".

The branch, gawk-4.1-stable has been updated
       via  5153d0f04b7ad460b23ae5a011061f7b93a122ef (commit)
      from  62fe40d1944810a79c13bd519a5f1157c49cefb6 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://git.sv.gnu.org/cgit/gawk.git/commit/?id=5153d0f04b7ad460b23ae5a011061f7b93a122ef

commit 5153d0f04b7ad460b23ae5a011061f7b93a122ef
Author: Arnold D. Robbins <address@hidden>
Date:   Tue Jan 27 20:57:58 2015 +0200

    O'Reilly edits and other fixes.

diff --git a/awklib/eg/lib/bits2str.awk b/awklib/eg/lib/bits2str.awk
index 9725ee8..a10ffad 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 6efc88b..ecf05de 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,6 +1,7 @@
 2015-01-27         Arnold D. Robbins     <address@hidden>
 
        * gawktexi.in: O'Reilly fixes.
+       And still more. Also, fix @code --> @command in a number of places.
 
 2015-01-26         Arnold D. Robbins     <address@hidden>
 
diff --git a/doc/gawk.info b/doc/gawk.info
index 80cca4b..6a107df 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -11796,7 +11796,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:
 
@@ -11808,7 +11810,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
@@ -11833,7 +11835,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
@@ -11870,9 +11872,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
@@ -11913,7 +11916,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)
           {
@@ -12003,7 +12006,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()'
@@ -12074,7 +12077,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:
@@ -12162,7 +12165,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,
@@ -12206,9 +12209,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
@@ -12216,7 +12219,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
@@ -12283,8 +12286,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
@@ -12317,12 +12320,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:
@@ -12346,17 +12349,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
@@ -12457,7 +12461,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
@@ -12582,11 +12586,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
       -------         ---------          --------------
@@ -12601,10 +12605,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
@@ -12628,10 +12632,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.
@@ -12661,7 +12665,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
@@ -12688,9 +12692,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 ----------
 
@@ -12717,10 +12721,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::).
@@ -12738,7 +12742,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
@@ -12755,16 +12759,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'),
@@ -12773,9 +12778,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
@@ -12804,7 +12809,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'
@@ -12893,14 +12898,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
@@ -12923,9 +12928,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.
 
@@ -13066,23 +13071,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
@@ -13099,8 +13104,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
@@ -13217,7 +13222,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
@@ -13273,7 +13278,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)
      {
@@ -13331,9 +13336,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
@@ -31453,7 +31458,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)
@@ -31512,7 +31517,7 @@ Index
 * --re-interval option:                  Options.             (line 281)
 * --sandbox option:                      Options.             (line 288)
 * --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)
@@ -31814,7 +31819,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)
@@ -32021,7 +32026,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)
@@ -32047,8 +32052,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)
@@ -32074,7 +32079,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)
@@ -32203,9 +32208,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)
@@ -32283,7 +32288,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)
@@ -32819,7 +32824,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)
@@ -33078,7 +33083,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)
@@ -33181,7 +33186,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.
@@ -33202,7 +33207,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)
@@ -33362,7 +33367,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)
@@ -33453,7 +33458,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.
@@ -33623,7 +33628,7 @@ Index
 * portability, operators:                Increment Ops.       (line  60)
 * portability, operators, not in POSIX awk: Precedence.       (line  98)
 * portability, POSIXLY_CORRECT environment variable: Options. (line 361)
-* 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.
@@ -33872,7 +33877,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)
@@ -34029,14 +34034,14 @@ Index
                                                               (line  14)
 * sidebar, Changing NR and FNR:          Auto-set.            (line 312)
 * sidebar, Controlling Output Buffering with system(): I/O Functions.
-                                                              (line 138)
+                                                              (line 139)
 * sidebar, Escape Sequences for Metacharacters: Escape Sequences.
                                                               (line 134)
 * 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.
@@ -34110,7 +34115,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.
@@ -34156,7 +34161,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)
@@ -34166,13 +34171,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)
@@ -34186,15 +34191,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 237)
 * switch statement:                      Switch Statement.    (line   6)
 * SYMTAB array:                          Auto-set.            (line 269)
 * 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)
@@ -34244,8 +34249,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)
@@ -34264,14 +34269,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)
@@ -34281,8 +34286,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)
@@ -34686,334 +34691,334 @@ Node: Multiscanning490548
 Node: Arrays of Arrays492137
 Node: Arrays Summary496891
 Node: Functions498982
-Node: Built-in499881
-Node: Calling Built-in500959
-Node: Numeric Functions502950
-Ref: Numeric Functions-Footnote-1506967
-Ref: Numeric Functions-Footnote-2507324
-Ref: Numeric Functions-Footnote-3507372
-Node: String Functions507644
-Ref: String Functions-Footnote-1531121
-Ref: String Functions-Footnote-2531250
-Ref: String Functions-Footnote-3531498
-Node: Gory Details531585
-Ref: table-sub-escapes533366
-Ref: table-sub-proposed534886
-Ref: table-posix-sub536250
-Ref: table-gensub-escapes537786
-Ref: Gory Details-Footnote-1538618
-Node: I/O Functions538769
-Ref: I/O Functions-Footnote-1545987
-Node: Time Functions546134
-Ref: Time Functions-Footnote-1556622
-Ref: Time Functions-Footnote-2556690
-Ref: Time Functions-Footnote-3556848
-Ref: Time Functions-Footnote-4556959
-Ref: Time Functions-Footnote-5557071
-Ref: Time Functions-Footnote-6557298
-Node: Bitwise Functions557564
-Ref: table-bitwise-ops558126
-Ref: Bitwise Functions-Footnote-1562435
-Node: Type Functions562604
-Node: I18N Functions563755
-Node: User-defined565400
-Node: Definition Syntax566205
-Ref: Definition Syntax-Footnote-1571612
-Node: Function Example571683
-Ref: Function Example-Footnote-1574602
-Node: Function Caveats574624
-Node: Calling A Function575142
-Node: Variable Scope576100
-Node: Pass By Value/Reference579088
-Node: Return Statement582583
-Node: Dynamic Typing585564
-Node: Indirect Calls586493
-Ref: Indirect Calls-Footnote-1597795
-Node: Functions Summary597923
-Node: Library Functions600625
-Ref: Library Functions-Footnote-1604234
-Ref: Library Functions-Footnote-2604377
-Node: Library Names604548
-Ref: Library Names-Footnote-1608002
-Ref: Library Names-Footnote-2608225
-Node: General Functions608311
-Node: Strtonum Function609414
-Node: Assert Function612436
-Node: Round Function615760
-Node: Cliff Random Function617301
-Node: Ordinal Functions618317
-Ref: Ordinal Functions-Footnote-1621380
-Ref: Ordinal Functions-Footnote-2621632
-Node: Join Function621843
-Ref: Join Function-Footnote-1623612
-Node: Getlocaltime Function623812
-Node: Readfile Function627556
-Node: Shell Quoting629526
-Node: Data File Management630927
-Node: Filetrans Function631559
-Node: Rewind Function635615
-Node: File Checking637002
-Ref: File Checking-Footnote-1638334
-Node: Empty Files638535
-Node: Ignoring Assigns640514
-Node: Getopt Function642065
-Ref: Getopt Function-Footnote-1653527
-Node: Passwd Functions653727
-Ref: Passwd Functions-Footnote-1662564
-Node: Group Functions662652
-Ref: Group Functions-Footnote-1670546
-Node: Walking Arrays670759
-Node: Library Functions Summary672362
-Node: Library Exercises673763
-Node: Sample Programs675043
-Node: Running Examples675813
-Node: Clones676541
-Node: Cut Program677765
-Node: Egrep Program687484
-Ref: Egrep Program-Footnote-1694982
-Node: Id Program695092
-Node: Split Program698737
-Ref: Split Program-Footnote-1702185
-Node: Tee Program702313
-Node: Uniq Program705102
-Node: Wc Program712521
-Ref: Wc Program-Footnote-1716771
-Node: Miscellaneous Programs716865
-Node: Dupword Program718078
-Node: Alarm Program720109
-Node: Translate Program724913
-Ref: Translate Program-Footnote-1729478
-Node: Labels Program729748
-Ref: Labels Program-Footnote-1733099
-Node: Word Sorting733183
-Node: History Sorting737254
-Node: Extract Program739090
-Node: Simple Sed746615
-Node: Igawk Program749683
-Ref: Igawk Program-Footnote-1764007
-Ref: Igawk Program-Footnote-2764208
-Ref: Igawk Program-Footnote-3764330
-Node: Anagram Program764445
-Node: Signature Program767502
-Node: Programs Summary768749
-Node: Programs Exercises769942
-Ref: Programs Exercises-Footnote-1774073
-Node: Advanced Features774164
-Node: Nondecimal Data776112
-Node: Array Sorting777702
-Node: Controlling Array Traversal778399
-Ref: Controlling Array Traversal-Footnote-1786732
-Node: Array Sorting Functions786850
-Ref: Array Sorting Functions-Footnote-1790739
-Node: Two-way I/O790935
-Ref: Two-way I/O-Footnote-1795880
-Ref: Two-way I/O-Footnote-2796066
-Node: TCP/IP Networking796148
-Node: Profiling799021
-Node: Advanced Features Summary806568
-Node: Internationalization808501
-Node: I18N and L10N809981
-Node: Explaining gettext810667
-Ref: Explaining gettext-Footnote-1815692
-Ref: Explaining gettext-Footnote-2815876
-Node: Programmer i18n816041
-Ref: Programmer i18n-Footnote-1820907
-Node: Translator i18n820956
-Node: String Extraction821750
-Ref: String Extraction-Footnote-1822881
-Node: Printf Ordering822967
-Ref: Printf Ordering-Footnote-1825753
-Node: I18N Portability825817
-Ref: I18N Portability-Footnote-1828272
-Node: I18N Example828335
-Ref: I18N Example-Footnote-1831138
-Node: Gawk I18N831210
-Node: I18N Summary831848
-Node: Debugger833187
-Node: Debugging834209
-Node: Debugging Concepts834650
-Node: Debugging Terms836503
-Node: Awk Debugging839075
-Node: Sample Debugging Session839969
-Node: Debugger Invocation840489
-Node: Finding The Bug841873
-Node: List of Debugger Commands848348
-Node: Breakpoint Control849681
-Node: Debugger Execution Control853377
-Node: Viewing And Changing Data856741
-Node: Execution Stack860119
-Node: Debugger Info861756
-Node: Miscellaneous Debugger Commands865773
-Node: Readline Support870802
-Node: Limitations871694
-Node: Debugging Summary873808
-Node: Arbitrary Precision Arithmetic874976
-Node: Computer Arithmetic876392
-Ref: table-numeric-ranges879990
-Ref: Computer Arithmetic-Footnote-1880849
-Node: Math Definitions880906
-Ref: table-ieee-formats884194
-Ref: Math Definitions-Footnote-1884798
-Node: MPFR features884903
-Node: FP Math Caution886574
-Ref: FP Math Caution-Footnote-1887624
-Node: Inexactness of computations887993
-Node: Inexact representation888952
-Node: Comparing FP Values890309
-Node: Errors accumulate891391
-Node: Getting Accuracy892824
-Node: Try To Round895486
-Node: Setting precision896385
-Ref: table-predefined-precision-strings897069
-Node: Setting the rounding mode898858
-Ref: table-gawk-rounding-modes899222
-Ref: Setting the rounding mode-Footnote-1902677
-Node: Arbitrary Precision Integers902856
-Ref: Arbitrary Precision Integers-Footnote-1905842
-Node: POSIX Floating Point Problems905991
-Ref: POSIX Floating Point Problems-Footnote-1909864
-Node: Floating point summary909902
-Node: Dynamic Extensions912096
-Node: Extension Intro913648
-Node: Plugin License914914
-Node: Extension Mechanism Outline915711
-Ref: figure-load-extension916139
-Ref: figure-register-new-function917619
-Ref: figure-call-new-function918623
-Node: Extension API Description920609
-Node: Extension API Functions Introduction922059
-Node: General Data Types926883
-Ref: General Data Types-Footnote-1932622
-Node: Memory Allocation Functions932921
-Ref: Memory Allocation Functions-Footnote-1935760
-Node: Constructor Functions935856
-Node: Registration Functions937590
-Node: Extension Functions938275
-Node: Exit Callback Functions940572
-Node: Extension Version String941820
-Node: Input Parsers942485
-Node: Output Wrappers952364
-Node: Two-way processors956879
-Node: Printing Messages959083
-Ref: Printing Messages-Footnote-1960159
-Node: Updating `ERRNO'960311
-Node: Requesting Values961051
-Ref: table-value-types-returned961779
-Node: Accessing Parameters962736
-Node: Symbol Table Access963967
-Node: Symbol table by name964481
-Node: Symbol table by cookie966462
-Ref: Symbol table by cookie-Footnote-1970606
-Node: Cached values970669
-Ref: Cached values-Footnote-1974168
-Node: Array Manipulation974259
-Ref: Array Manipulation-Footnote-1975357
-Node: Array Data Types975394
-Ref: Array Data Types-Footnote-1978049
-Node: Array Functions978141
-Node: Flattening Arrays981995
-Node: Creating Arrays988887
-Node: Extension API Variables993658
-Node: Extension Versioning994294
-Node: Extension API Informational Variables996195
-Node: Extension API Boilerplate997260
-Node: Finding Extensions1001069
-Node: Extension Example1001629
-Node: Internal File Description1002401
-Node: Internal File Ops1006468
-Ref: Internal File Ops-Footnote-11018138
-Node: Using Internal File Ops1018278
-Ref: Using Internal File Ops-Footnote-11020661
-Node: Extension Samples1020934
-Node: Extension Sample File Functions1022460
-Node: Extension Sample Fnmatch1030098
-Node: Extension Sample Fork1031589
-Node: Extension Sample Inplace1032804
-Node: Extension Sample Ord1034479
-Node: Extension Sample Readdir1035315
-Ref: table-readdir-file-types1036191
-Node: Extension Sample Revout1037002
-Node: Extension Sample Rev2way1037592
-Node: Extension Sample Read write array1038332
-Node: Extension Sample Readfile1040272
-Node: Extension Sample Time1041367
-Node: Extension Sample API Tests1042716
-Node: gawkextlib1043207
-Node: Extension summary1045865
-Node: Extension Exercises1049554
-Node: Language History1050276
-Node: V7/SVR3.11051932
-Node: SVR41054113
-Node: POSIX1055558
-Node: BTL1056947
-Node: POSIX/GNU1057681
-Node: Feature History1063245
-Node: Common Extensions1076343
-Node: Ranges and Locales1077667
-Ref: Ranges and Locales-Footnote-11082285
-Ref: Ranges and Locales-Footnote-21082312
-Ref: Ranges and Locales-Footnote-31082546
-Node: Contributors1082767
-Node: History summary1088308
-Node: Installation1089678
-Node: Gawk Distribution1090624
-Node: Getting1091108
-Node: Extracting1091931
-Node: Distribution contents1093566
-Node: Unix Installation1099283
-Node: Quick Installation1099900
-Node: Additional Configuration Options1102324
-Node: Configuration Philosophy1104062
-Node: Non-Unix Installation1106431
-Node: PC Installation1106889
-Node: PC Binary Installation1108208
-Node: PC Compiling1110056
-Ref: PC Compiling-Footnote-11113077
-Node: PC Testing1113186
-Node: PC Using1114362
-Node: Cygwin1118477
-Node: MSYS1119300
-Node: VMS Installation1119800
-Node: VMS Compilation1120592
-Ref: VMS Compilation-Footnote-11121814
-Node: VMS Dynamic Extensions1121872
-Node: VMS Installation Details1123556
-Node: VMS Running1125808
-Node: VMS GNV1128644
-Node: VMS Old Gawk1129378
-Node: Bugs1129848
-Node: Other Versions1133731
-Node: Installation summary1140155
-Node: Notes1141211
-Node: Compatibility Mode1142076
-Node: Additions1142858
-Node: Accessing The Source1143783
-Node: Adding Code1145218
-Node: New Ports1151375
-Node: Derived Files1155857
-Ref: Derived Files-Footnote-11161332
-Ref: Derived Files-Footnote-21161366
-Ref: Derived Files-Footnote-31161962
-Node: Future Extensions1162076
-Node: Implementation Limitations1162682
-Node: Extension Design1163930
-Node: Old Extension Problems1165084
-Ref: Old Extension Problems-Footnote-11166601
-Node: Extension New Mechanism Goals1166658
-Ref: Extension New Mechanism Goals-Footnote-11170018
-Node: Extension Other Design Decisions1170207
-Node: Extension Future Growth1172315
-Node: Old Extension Mechanism1173151
-Node: Notes summary1174913
-Node: Basic Concepts1176099
-Node: Basic High Level1176780
-Ref: figure-general-flow1177052
-Ref: figure-process-flow1177651
-Ref: Basic High Level-Footnote-11180880
-Node: Basic Data Typing1181065
-Node: Glossary1184393
-Node: Copying1216322
-Node: GNU Free Documentation License1253878
-Node: Index1279014
+Node: Built-in500021
+Node: Calling Built-in501099
+Node: Numeric Functions503094
+Ref: Numeric Functions-Footnote-1507110
+Ref: Numeric Functions-Footnote-2507467
+Ref: Numeric Functions-Footnote-3507515
+Node: String Functions507787
+Ref: String Functions-Footnote-1531288
+Ref: String Functions-Footnote-2531417
+Ref: String Functions-Footnote-3531665
+Node: Gory Details531752
+Ref: table-sub-escapes533533
+Ref: table-sub-proposed535048
+Ref: table-posix-sub536410
+Ref: table-gensub-escapes537947
+Ref: Gory Details-Footnote-1538780
+Node: I/O Functions538931
+Ref: I/O Functions-Footnote-1546167
+Node: Time Functions546314
+Ref: Time Functions-Footnote-1556823
+Ref: Time Functions-Footnote-2556891
+Ref: Time Functions-Footnote-3557049
+Ref: Time Functions-Footnote-4557160
+Ref: Time Functions-Footnote-5557272
+Ref: Time Functions-Footnote-6557499
+Node: Bitwise Functions557765
+Ref: table-bitwise-ops558327
+Ref: Bitwise Functions-Footnote-1562639
+Node: Type Functions562811
+Node: I18N Functions563962
+Node: User-defined565607
+Node: Definition Syntax566412
+Ref: Definition Syntax-Footnote-1571819
+Node: Function Example571890
+Ref: Function Example-Footnote-1574809
+Node: Function Caveats574831
+Node: Calling A Function575349
+Node: Variable Scope576307
+Node: Pass By Value/Reference579295
+Node: Return Statement582790
+Node: Dynamic Typing585771
+Node: Indirect Calls586700
+Ref: Indirect Calls-Footnote-1598002
+Node: Functions Summary598130
+Node: Library Functions600832
+Ref: Library Functions-Footnote-1604441
+Ref: Library Functions-Footnote-2604584
+Node: Library Names604755
+Ref: Library Names-Footnote-1608209
+Ref: Library Names-Footnote-2608432
+Node: General Functions608518
+Node: Strtonum Function609621
+Node: Assert Function612643
+Node: Round Function615967
+Node: Cliff Random Function617508
+Node: Ordinal Functions618524
+Ref: Ordinal Functions-Footnote-1621587
+Ref: Ordinal Functions-Footnote-2621839
+Node: Join Function622050
+Ref: Join Function-Footnote-1623819
+Node: Getlocaltime Function624019
+Node: Readfile Function627763
+Node: Shell Quoting629733
+Node: Data File Management631134
+Node: Filetrans Function631766
+Node: Rewind Function635822
+Node: File Checking637209
+Ref: File Checking-Footnote-1638541
+Node: Empty Files638742
+Node: Ignoring Assigns640721
+Node: Getopt Function642272
+Ref: Getopt Function-Footnote-1653734
+Node: Passwd Functions653934
+Ref: Passwd Functions-Footnote-1662771
+Node: Group Functions662859
+Ref: Group Functions-Footnote-1670753
+Node: Walking Arrays670966
+Node: Library Functions Summary672569
+Node: Library Exercises673970
+Node: Sample Programs675250
+Node: Running Examples676020
+Node: Clones676748
+Node: Cut Program677972
+Node: Egrep Program687691
+Ref: Egrep Program-Footnote-1695189
+Node: Id Program695299
+Node: Split Program698944
+Ref: Split Program-Footnote-1702392
+Node: Tee Program702520
+Node: Uniq Program705309
+Node: Wc Program712728
+Ref: Wc Program-Footnote-1716978
+Node: Miscellaneous Programs717072
+Node: Dupword Program718285
+Node: Alarm Program720316
+Node: Translate Program725120
+Ref: Translate Program-Footnote-1729685
+Node: Labels Program729955
+Ref: Labels Program-Footnote-1733306
+Node: Word Sorting733390
+Node: History Sorting737461
+Node: Extract Program739297
+Node: Simple Sed746822
+Node: Igawk Program749890
+Ref: Igawk Program-Footnote-1764214
+Ref: Igawk Program-Footnote-2764415
+Ref: Igawk Program-Footnote-3764537
+Node: Anagram Program764652
+Node: Signature Program767709
+Node: Programs Summary768956
+Node: Programs Exercises770149
+Ref: Programs Exercises-Footnote-1774280
+Node: Advanced Features774371
+Node: Nondecimal Data776319
+Node: Array Sorting777909
+Node: Controlling Array Traversal778606
+Ref: Controlling Array Traversal-Footnote-1786939
+Node: Array Sorting Functions787057
+Ref: Array Sorting Functions-Footnote-1790946
+Node: Two-way I/O791142
+Ref: Two-way I/O-Footnote-1796087
+Ref: Two-way I/O-Footnote-2796273
+Node: TCP/IP Networking796355
+Node: Profiling799228
+Node: Advanced Features Summary806775
+Node: Internationalization808708
+Node: I18N and L10N810188
+Node: Explaining gettext810874
+Ref: Explaining gettext-Footnote-1815899
+Ref: Explaining gettext-Footnote-2816083
+Node: Programmer i18n816248
+Ref: Programmer i18n-Footnote-1821114
+Node: Translator i18n821163
+Node: String Extraction821957
+Ref: String Extraction-Footnote-1823088
+Node: Printf Ordering823174
+Ref: Printf Ordering-Footnote-1825960
+Node: I18N Portability826024
+Ref: I18N Portability-Footnote-1828479
+Node: I18N Example828542
+Ref: I18N Example-Footnote-1831345
+Node: Gawk I18N831417
+Node: I18N Summary832055
+Node: Debugger833394
+Node: Debugging834416
+Node: Debugging Concepts834857
+Node: Debugging Terms836710
+Node: Awk Debugging839282
+Node: Sample Debugging Session840176
+Node: Debugger Invocation840696
+Node: Finding The Bug842080
+Node: List of Debugger Commands848555
+Node: Breakpoint Control849888
+Node: Debugger Execution Control853584
+Node: Viewing And Changing Data856948
+Node: Execution Stack860326
+Node: Debugger Info861963
+Node: Miscellaneous Debugger Commands865980
+Node: Readline Support871009
+Node: Limitations871901
+Node: Debugging Summary874015
+Node: Arbitrary Precision Arithmetic875183
+Node: Computer Arithmetic876599
+Ref: table-numeric-ranges880197
+Ref: Computer Arithmetic-Footnote-1881056
+Node: Math Definitions881113
+Ref: table-ieee-formats884401
+Ref: Math Definitions-Footnote-1885005
+Node: MPFR features885110
+Node: FP Math Caution886781
+Ref: FP Math Caution-Footnote-1887831
+Node: Inexactness of computations888200
+Node: Inexact representation889159
+Node: Comparing FP Values890516
+Node: Errors accumulate891598
+Node: Getting Accuracy893031
+Node: Try To Round895693
+Node: Setting precision896592
+Ref: table-predefined-precision-strings897276
+Node: Setting the rounding mode899065
+Ref: table-gawk-rounding-modes899429
+Ref: Setting the rounding mode-Footnote-1902884
+Node: Arbitrary Precision Integers903063
+Ref: Arbitrary Precision Integers-Footnote-1906049
+Node: POSIX Floating Point Problems906198
+Ref: POSIX Floating Point Problems-Footnote-1910071
+Node: Floating point summary910109
+Node: Dynamic Extensions912303
+Node: Extension Intro913855
+Node: Plugin License915121
+Node: Extension Mechanism Outline915918
+Ref: figure-load-extension916346
+Ref: figure-register-new-function917826
+Ref: figure-call-new-function918830
+Node: Extension API Description920816
+Node: Extension API Functions Introduction922266
+Node: General Data Types927090
+Ref: General Data Types-Footnote-1932829
+Node: Memory Allocation Functions933128
+Ref: Memory Allocation Functions-Footnote-1935967
+Node: Constructor Functions936063
+Node: Registration Functions937797
+Node: Extension Functions938482
+Node: Exit Callback Functions940779
+Node: Extension Version String942027
+Node: Input Parsers942692
+Node: Output Wrappers952571
+Node: Two-way processors957086
+Node: Printing Messages959290
+Ref: Printing Messages-Footnote-1960366
+Node: Updating `ERRNO'960518
+Node: Requesting Values961258
+Ref: table-value-types-returned961986
+Node: Accessing Parameters962943
+Node: Symbol Table Access964174
+Node: Symbol table by name964688
+Node: Symbol table by cookie966669
+Ref: Symbol table by cookie-Footnote-1970813
+Node: Cached values970876
+Ref: Cached values-Footnote-1974375
+Node: Array Manipulation974466
+Ref: Array Manipulation-Footnote-1975564
+Node: Array Data Types975601
+Ref: Array Data Types-Footnote-1978256
+Node: Array Functions978348
+Node: Flattening Arrays982202
+Node: Creating Arrays989094
+Node: Extension API Variables993865
+Node: Extension Versioning994501
+Node: Extension API Informational Variables996402
+Node: Extension API Boilerplate997467
+Node: Finding Extensions1001276
+Node: Extension Example1001836
+Node: Internal File Description1002608
+Node: Internal File Ops1006675
+Ref: Internal File Ops-Footnote-11018345
+Node: Using Internal File Ops1018485
+Ref: Using Internal File Ops-Footnote-11020868
+Node: Extension Samples1021141
+Node: Extension Sample File Functions1022667
+Node: Extension Sample Fnmatch1030305
+Node: Extension Sample Fork1031796
+Node: Extension Sample Inplace1033011
+Node: Extension Sample Ord1034686
+Node: Extension Sample Readdir1035522
+Ref: table-readdir-file-types1036398
+Node: Extension Sample Revout1037209
+Node: Extension Sample Rev2way1037799
+Node: Extension Sample Read write array1038539
+Node: Extension Sample Readfile1040479
+Node: Extension Sample Time1041574
+Node: Extension Sample API Tests1042923
+Node: gawkextlib1043414
+Node: Extension summary1046072
+Node: Extension Exercises1049761
+Node: Language History1050483
+Node: V7/SVR3.11052139
+Node: SVR41054320
+Node: POSIX1055765
+Node: BTL1057154
+Node: POSIX/GNU1057888
+Node: Feature History1063452
+Node: Common Extensions1076550
+Node: Ranges and Locales1077874
+Ref: Ranges and Locales-Footnote-11082492
+Ref: Ranges and Locales-Footnote-21082519
+Ref: Ranges and Locales-Footnote-31082753
+Node: Contributors1082974
+Node: History summary1088515
+Node: Installation1089885
+Node: Gawk Distribution1090831
+Node: Getting1091315
+Node: Extracting1092138
+Node: Distribution contents1093773
+Node: Unix Installation1099490
+Node: Quick Installation1100107
+Node: Additional Configuration Options1102531
+Node: Configuration Philosophy1104269
+Node: Non-Unix Installation1106638
+Node: PC Installation1107096
+Node: PC Binary Installation1108415
+Node: PC Compiling1110263
+Ref: PC Compiling-Footnote-11113284
+Node: PC Testing1113393
+Node: PC Using1114569
+Node: Cygwin1118684
+Node: MSYS1119507
+Node: VMS Installation1120007
+Node: VMS Compilation1120799
+Ref: VMS Compilation-Footnote-11122021
+Node: VMS Dynamic Extensions1122079
+Node: VMS Installation Details1123763
+Node: VMS Running1126015
+Node: VMS GNV1128851
+Node: VMS Old Gawk1129585
+Node: Bugs1130055
+Node: Other Versions1133938
+Node: Installation summary1140362
+Node: Notes1141418
+Node: Compatibility Mode1142283
+Node: Additions1143065
+Node: Accessing The Source1143990
+Node: Adding Code1145425
+Node: New Ports1151582
+Node: Derived Files1156064
+Ref: Derived Files-Footnote-11161539
+Ref: Derived Files-Footnote-21161573
+Ref: Derived Files-Footnote-31162169
+Node: Future Extensions1162283
+Node: Implementation Limitations1162889
+Node: Extension Design1164137
+Node: Old Extension Problems1165291
+Ref: Old Extension Problems-Footnote-11166808
+Node: Extension New Mechanism Goals1166865
+Ref: Extension New Mechanism Goals-Footnote-11170225
+Node: Extension Other Design Decisions1170414
+Node: Extension Future Growth1172522
+Node: Old Extension Mechanism1173358
+Node: Notes summary1175120
+Node: Basic Concepts1176306
+Node: Basic High Level1176987
+Ref: figure-general-flow1177259
+Ref: figure-process-flow1177858
+Ref: Basic High Level-Footnote-11181087
+Node: Basic Data Typing1181272
+Node: Glossary1184600
+Node: Copying1216529
+Node: GNU Free Documentation License1254085
+Node: Index1279221
 
 End Tag Table
diff --git a/doc/gawk.texi b/doc/gawk.texi
index 48583f4..266b389 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
@@ -4680,7 +4680,7 @@ $ @kbd{gawk -f test2}
 @print{} This is script test2.
 @end example
 
address@hidden runs the @file{test2} script, which includes @file{test1}
address@hidden 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,
@@ -4889,7 +4889,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
 
@@ -16818,6 +16818,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.
@@ -16827,7 +16830,7 @@ The second half of this @value{CHAPTER} describes these
 @end menu
 
 @node Built-in
address@hidden Built-In Functions
address@hidden Built-in Functions
 
 @dfn{Built-in} functions are always available for
 your @command{awk} program to call.  This @value{SECTION} defines all
@@ -16850,7 +16853,7 @@ but are summarized here for your convenience.
 @end menu
 
 @node Calling Built-in
address@hidden Calling Built-In Functions
address@hidden Calling Built-in Functions
 
 To call one of @command{awk}'s built-in functions, write the name of
 the function followed
@@ -16901,7 +16904,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.
@@ -16965,7 +16968,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)
@@ -17060,7 +17063,7 @@ implementations.
 The functions in this @value{SECTION} look at or change the text of one
 or more strings.
 
address@hidden understands locales (@pxref{Locales}), and does all
address@hidden 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
@@ -17149,7 +17152,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:
@@ -17264,7 +17267,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(address@hidden@code{)}
 @cindexawkfunc{length}
@@ -17347,7 +17350,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.
@@ -17359,7 +17362,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:
@@ -17448,7 +17451,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}).
 
@@ -17495,13 +17498,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.
address@hidden is a @command{gawk} extension with @address@hidden@var{i}]}
address@hidden is a @command{gawk} extension, with @address@hidden@var{i}]}
 being the separator string
 between @address@hidden@var{i}]} and @address@hidden@var{i}+1]}.
 If @var{fieldsep} is a single
-space then any leading whitespace goes into @address@hidden and
+space, then any leading whitespace goes into @address@hidden and
 any trailing
-whitespace goes into @address@hidden@var{n}]} where @var{n} is the
+whitespace goes into @address@hidden@var{n}]}, where @var{n} is the
 return value of
 @code{split()} (i.e., the number of elements in @var{array}).
 
@@ -17539,19 +17542,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.
address@hidden
+the third argument to be a regexp constant 
(@address@hidden/address@hidden@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,
@@ -17688,7 +17690,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
@@ -17880,8 +17882,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}.
@@ -17939,7 +17941,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
@@ -17960,7 +17962,7 @@ This is shown in
 @ref{table-sub-proposed}.
 
 @float Table,table-sub-proposed
address@hidden @command{awk} rules for @code{sub()} and backslash}
address@hidden@command{gawk} rules for @code{sub()} and backslash}
 @tex
 \vbox{\bigskip
 % We need more characters for escape and tab ...
@@ -18005,7 +18007,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.
@@ -18071,7 +18073,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.
 
@@ -18139,7 +18141,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.
@@ -18165,6 +18167,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.
@@ -18191,7 +18194,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()} address@hidden 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, address@hidden @code{fflush()} function
@@ -18212,7 +18215,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
@@ -18223,7 +18226,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}.
@@ -18241,8 +18244,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)address@hidden program is interactive
 if the standard output is connected to a terminal device. On modern
 systems, this means your keyboard and screen.}
@@ -18292,8 +18295,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)address@hidden program is interactive
 if the standard output is connected to a terminal device. On modern
 systems, this means your keyboard and screen.}
@@ -18337,7 +18340,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.
 
@@ -18517,9 +18520,9 @@ you would see the latter (undesirable) output.
 @cindex files, address@hidden timestamps in
 @cindex @command{gawk}, timestamps
 @cindex POSIX @command{awk}, timestamps and
address@hidden programs are commonly used to process log files
address@hidden 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
@@ -18580,7 +18583,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
@@ -18740,12 +18743,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
@@ -18756,7 +18759,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
@@ -18776,8 +18779,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 @address@hidden 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
@@ -18917,7 +18920,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
@@ -18975,7 +18978,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">
@@ -19039,10 +19042,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 @address@hidden 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.}
address@hidden 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.
@@ -19096,7 +19098,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)
 @{
@@ -20390,7 +20392,7 @@ for (i = 1; i <= n; i++)
 @end example
 
 @noindent
address@hidden looks up the actual function to call only once.
address@hidden looks up the actual function to call only once.
 
 @node Functions Summary
 @section Summary
@@ -30917,7 +30919,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
@@ -31076,7 +31078,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.
@@ -32040,7 +32042,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.
address@hidden makes its own copy of this data, so the
address@hidden makes its own copy of this data, so the
 extension must manage this storage.
 @end table
 
@@ -32086,7 +32088,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
@@ -32869,7 +32871,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.
@@ -37173,7 +37175,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 8fd8428..7fd947a 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
@@ -4591,7 +4591,7 @@ $ @kbd{gawk -f test2}
 @print{} This is script test2.
 @end example
 
address@hidden runs the @file{test2} script, which includes @file{test1}
address@hidden 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,
@@ -4800,7 +4800,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
 
@@ -16100,6 +16100,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.
@@ -16109,7 +16112,7 @@ The second half of this @value{CHAPTER} describes these
 @end menu
 
 @node Built-in
address@hidden Built-In Functions
address@hidden Built-in Functions
 
 @dfn{Built-in} functions are always available for
 your @command{awk} program to call.  This @value{SECTION} defines all
@@ -16132,7 +16135,7 @@ but are summarized here for your convenience.
 @end menu
 
 @node Calling Built-in
address@hidden Calling Built-In Functions
address@hidden Calling Built-in Functions
 
 To call one of @command{awk}'s built-in functions, write the name of
 the function followed
@@ -16183,7 +16186,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.
@@ -16247,7 +16250,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)
@@ -16342,7 +16345,7 @@ implementations.
 The functions in this @value{SECTION} look at or change the text of one
 or more strings.
 
address@hidden understands locales (@pxref{Locales}), and does all
address@hidden 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
@@ -16431,7 +16434,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:
@@ -16546,7 +16549,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(address@hidden@code{)}
 @cindexawkfunc{length}
@@ -16629,7 +16632,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.
@@ -16641,7 +16644,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:
@@ -16730,7 +16733,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}).
 
@@ -16777,13 +16780,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.
address@hidden is a @command{gawk} extension with @address@hidden@var{i}]}
address@hidden is a @command{gawk} extension, with @address@hidden@var{i}]}
 being the separator string
 between @address@hidden@var{i}]} and @address@hidden@var{i}+1]}.
 If @var{fieldsep} is a single
-space then any leading whitespace goes into @address@hidden and
+space, then any leading whitespace goes into @address@hidden and
 any trailing
-whitespace goes into @address@hidden@var{n}]} where @var{n} is the
+whitespace goes into @address@hidden@var{n}]}, where @var{n} is the
 return value of
 @code{split()} (i.e., the number of elements in @var{array}).
 
@@ -16821,19 +16824,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.
address@hidden
+the third argument to be a regexp constant 
(@address@hidden/address@hidden@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,
@@ -16970,7 +16972,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
@@ -17129,8 +17131,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}.
@@ -17188,7 +17190,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
@@ -17209,7 +17211,7 @@ This is shown in
 @ref{table-sub-proposed}.
 
 @float Table,table-sub-proposed
address@hidden @command{awk} rules for @code{sub()} and backslash}
address@hidden@command{gawk} rules for @code{sub()} and backslash}
 @tex
 \vbox{\bigskip
 % We need more characters for escape and tab ...
@@ -17254,7 +17256,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.
@@ -17320,7 +17322,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.
 
@@ -17388,7 +17390,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.
@@ -17414,6 +17416,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.
@@ -17440,7 +17443,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()} address@hidden 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, address@hidden @code{fflush()} function
@@ -17461,7 +17464,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
@@ -17472,7 +17475,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}.
@@ -17485,8 +17488,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)address@hidden program is interactive
 if the standard output is connected to a terminal device. On modern
 systems, this means your keyboard and screen.}
@@ -17529,7 +17532,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.
 
@@ -17638,9 +17641,9 @@ you would see the latter (undesirable) output.
 @cindex files, address@hidden timestamps in
 @cindex @command{gawk}, timestamps
 @cindex POSIX @command{awk}, timestamps and
address@hidden programs are commonly used to process log files
address@hidden 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
@@ -17701,7 +17704,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
@@ -17861,12 +17864,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
@@ -17877,7 +17880,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
@@ -17897,8 +17900,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 @address@hidden 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
@@ -18038,7 +18041,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
@@ -18096,7 +18099,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">
@@ -18160,10 +18163,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 @address@hidden 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.}
address@hidden 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.
@@ -18217,7 +18219,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)
 @{
@@ -19511,7 +19513,7 @@ for (i = 1; i <= n; i++)
 @end example
 
 @noindent
address@hidden looks up the actual function to call only once.
address@hidden looks up the actual function to call only once.
 
 @node Functions Summary
 @section Summary
@@ -30009,7 +30011,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
@@ -30168,7 +30170,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.
@@ -31132,7 +31134,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.
address@hidden makes its own copy of this data, so the
address@hidden makes its own copy of this data, so the
 extension must manage this storage.
 @end table
 
@@ -31178,7 +31180,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
@@ -31961,7 +31963,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.
@@ -36265,7 +36267,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.

-----------------------------------------------------------------------

Summary of changes:
 awklib/eg/lib/bits2str.awk |    2 +-
 doc/ChangeLog              |    1 +
 doc/gawk.info              |  899 ++++++++++++++++++++++----------------------
 doc/gawk.texi              |  120 +++---
 doc/gawktexi.in            |  116 +++---
 5 files changed, 574 insertions(+), 564 deletions(-)


hooks/post-receive
-- 
gawk



reply via email to

[Prev in Thread] Current Thread [Next in Thread]