aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog4
-rw-r--r--doc/ChangeLog6
-rw-r--r--doc/gawk.145
-rw-r--r--doc/gawk.info1256
-rw-r--r--doc/gawk.texi53
-rw-r--r--doc/gawktexi.in53
-rw-r--r--gawkapi.h2
7 files changed, 813 insertions, 606 deletions
diff --git a/ChangeLog b/ChangeLog
index baa7c003..c93bd631 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2015-01-04 Andrew J. Schorr <aschorr@telemetry-investments.com>
+
+ * gawkapi.h: Fix typo in comment.
+
2015-01-02 Andrew J. Schorr <aschorr@telemetry-investments.com>
* gawkapi.h (gawk_api): Modify api_get_file to remove the typelen
diff --git a/doc/ChangeLog b/doc/ChangeLog
index 19278667..31bcecce 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,3 +1,9 @@
+2015-01-04 Andrew J. Schorr <aschorr@telemetry-investments.com>
+
+ * gawk.1: Document new features PROCINFO["errno"] and
+ PROCINFO["input", "RETRY"], and new getline return value of -2.
+ * gawktexi.in: Ditto.
+
2014-12-26 Antonio Giovanni Colombo <azc100@gmail.com>
* gawktexi.in (Glossary): Really sort the items.
diff --git a/doc/gawk.1 b/doc/gawk.1
index 3d5d1812..b425c24c 100644
--- a/doc/gawk.1
+++ b/doc/gawk.1
@@ -942,6 +942,15 @@ then
will contain
a string describing the error.
The value is subject to translation in non-English locales.
+If the string in
+.B ERRNO
+corresponds to a system error in the
+.IR errno (3)
+variable, then the numeric value can be found in
+.B PROCINFO["errno"].
+For non-system errors,
+.B PROCINFO["errno"]
+will be zero.
.TP
.B FIELDWIDTHS
A whitespace separated list of field widths. When set,
@@ -1103,6 +1112,13 @@ system call.
The default time format string for
.BR strftime() .
.TP
+\fBPROCINFO["errno"]\fP
+The value of
+.IR errno (3)
+when
+.BR ERRNO
+is set to the associated error message.
+.TP
\fBPROCINFO["euid"]\fP
The value of the
.IR geteuid (2)
@@ -1221,6 +1237,28 @@ where
is a redirection string or a filename. A value of zero or
less than zero means no timeout.
.TP
+\fBPROCINFO["input", "RETRY"]\fP
+If an I/O error that may be retried occurs when reading data from
+.IR input ,
+and this array entry exists, then
+.BR getline
+will return -2 instead of following the default behavior of returning -1
+and configuring
+.IR input
+to return no further data.
+An I/O error that may be retried is one where
+.IR errno (3)
+has the value
+.IR EAGAIN ,
+.IR EWOULDBLOCK ,
+.IR EINTR ,
+or
+.IR ETIMEDOUT .
+This may be useful in conjunction with
+\fBPROCINFO["input", "READ_TIMEOUT"]\fP
+or situations where a file descriptor has been configured to behave in a
+non-blocking fashion.
+.TP
\fBPROCINFO["mpfr_version"]\fP
The version of the GNU MPFR library used for arbitrary precision
number support in
@@ -2289,6 +2327,13 @@ below.)
The
.B getline
command returns 1 on success, 0 on end of file, and \-1 on an error.
+If the
+.IR errno (3)
+value indicates that the I/O operation may be retried,
+and \fBPROCINFO["input", "RETRY"]\fP
+is set, then \-2 will be returned instead of \-1, and further calls to
+.B getline
+may be attempted.
Upon an error,
.B ERRNO
is set to a string describing the problem.
diff --git a/doc/gawk.info b/doc/gawk.info
index e501b297..02b59b92 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -217,6 +217,7 @@ entitled "GNU Free Documentation License".
`getline'.
* Getline Summary:: Summary of `getline' Variants.
* Read Timeout:: Reading input with a timeout.
+* Retrying I/O:: Retrying I/O after certain errors.
* Command-line directories:: What happens if you put a directory on
the command line.
* Input Summary:: Input summary.
@@ -4168,6 +4169,7 @@ have to be named on the `awk' command line (*note Getline::).
* Getline:: Reading files under explicit program control
using the `getline' function.
* Read Timeout:: Reading input with a timeout.
+* Retrying I/O:: Retrying I/O after certain errors.
* Command-line directories:: What happens if you put a directory on the
command line.
* Input Summary:: Input summary.
@@ -5439,7 +5441,11 @@ how `awk' works.
encounters the end of the file. If there is some error in getting a
record, such as a file that cannot be opened, then `getline' returns
-1. In this case, `gawk' sets the variable `ERRNO' to a string
-describing the error that occurred.
+describing the error that occurred. If the `errno' variable indicates
+that the I/O operation may be retried, and `PROCINFO["input", "RETRY"]'
+is set, then -2 will be returned instead of -1, and further calls to
+`getline' may be attemped. *Note Retrying I/O::, for further
+information about this feature.
In the following examples, COMMAND stands for a string value that
represents a shell command.
@@ -5876,7 +5882,7 @@ VAR
Table 4.1: `getline' variants and what they set

-File: gawk.info, Node: Read Timeout, Next: Command-line directories, Prev: Getline, Up: Reading Files
+File: gawk.info, Node: Read Timeout, Next: Retrying I/O, Prev: Getline, Up: Reading Files
4.10 Reading Input with a Timeout
=================================
@@ -5955,7 +5961,8 @@ a per command or connection basis.
`gawk' considers a timeout event to be an error even though the
attempt to read from the underlying device may succeed in a later
attempt. This is a limitation, and it also means that you cannot use
-this to multiplex input from two or more sources.
+this to multiplex input from two or more sources. *Note Retrying
+I/O::, for a way to enable later I/O attempts to succeed.
Assigning a timeout value prevents read operations from blocking
indefinitely. But bear in mind that there are other ways `gawk' can
@@ -5970,9 +5977,36 @@ writing.
(1) This assumes that standard input is the keyboard.

-File: gawk.info, Node: Command-line directories, Next: Input Summary, Prev: Read Timeout, Up: Reading Files
+File: gawk.info, Node: Retrying I/O, Next: Command-line directories, Prev: Read Timeout, Up: Reading Files
-4.11 Directories on the Command Line
+4.11 Retrying I/O on Certain Input Errors
+=========================================
+
+This minor node describes a feature that is specific to `gawk'.
+
+ When `gawk' encounters an error while reading input, it will by
+default return -1 from getline, and subsequent attempts to read from
+that file will result in an end-of-file indication. However, you may
+optionally instruct `gawk' to allow I/O to be retried when certain
+errors are encountered by setting setting a special element in the
+`PROCINFO' array (*note Auto-set::):
+
+ PROCINFO["input_name", "RETRY"]
+
+ When set, this causes `gawk' to check the value of the system
+`errno' variable when an I/O error occurs. If `errno' indicates a
+subsequent I/O attempt may succeed, `getline' will instead return -2 and
+further calls to `getline' may succeed. This applies to `errno' values
+EAGAIN, EWOULDBLOCK, EINTR, or ETIMEDOUT.
+
+ This feature is useful in conjunction with `PROCINFO["input_name",
+"READ_TIMEOUT"]' or situations where a file descriptor has been
+configured to behave in a non-blocking fashion.
+
+
+File: gawk.info, Node: Command-line directories, Next: Input Summary, Prev: Retrying I/O, Up: Reading Files
+
+4.12 Directories on the Command Line
====================================
According to the POSIX standard, files named on the `awk' command line
@@ -5995,7 +6029,7 @@ usable data from an `awk' program.

File: gawk.info, Node: Input Summary, Next: Input Exercises, Prev: Command-line directories, Up: Reading Files
-4.12 Summary
+4.13 Summary
============
* Input is split into records based on the value of `RS'. The
@@ -6068,7 +6102,7 @@ File: gawk.info, Node: Input Summary, Next: Input Exercises, Prev: Command-li

File: gawk.info, Node: Input Exercises, Prev: Input Summary, Up: Reading Files
-4.13 Exercises
+4.14 Exercises
==============
1. Using the `FIELDWIDTHS' variable (*note Constant Size::), write a
@@ -10363,6 +10397,11 @@ Options::), they are not special:
`getline' returning -1. You are, of course, free to clear it
yourself before doing an I/O operation.
+ If the value of `ERRNO' corresponds to a system error in the C
+ `errno' variable, then `PROCINFO["errno"]' will be set to the value
+ of `errno'. For non-system errors, `PROCINFO["errno"]' will be
+ zero.
+
`FILENAME'
The name of the current input file. When no data files are listed
on the command line, `awk' reads from the standard input and
@@ -10411,6 +10450,10 @@ Options::), they are not special:
`PROCINFO["egid"]'
The value of the `getegid()' system call.
+ `PROCINFO["errno"]'
+ The value of the C `errno' variable when `ERRNO' is set to
+ the associated error message.
+
`PROCINFO["euid"]'
The value of the `geteuid()' system call.
@@ -10521,6 +10564,10 @@ Options::), they are not special:
open input file, pipe, or coprocess. *Note Read Timeout::,
for more information.
+ * It may be used to indicate that I/O may be retried when it
+ fails due to certain errors. *Note Retrying I/O::, for more
+ information.
+
* It may be used to cause coprocesses to communicate over
pseudo-ttys instead of through two-way pipes; this is
discussed further in *note Two-way I/O::.
@@ -32246,9 +32293,9 @@ Index
(line 143)
* dark corner, exit statement: Exit Statement. (line 30)
* dark corner, field separators: Full Line Fields. (line 22)
-* dark corner, FILENAME variable <1>: Auto-set. (line 104)
+* dark corner, FILENAME variable <1>: Auto-set. (line 109)
* dark corner, FILENAME variable: Getline Notes. (line 19)
-* dark corner, FNR/NR variables: Auto-set. (line 328)
+* dark corner, FNR/NR variables: Auto-set. (line 341)
* dark corner, format-control characters: Control Letters. (line 18)
* dark corner, FS as null string: Single Character Fields.
(line 20)
@@ -32442,7 +32489,7 @@ Index
* differences in awk and gawk, FIELDWIDTHS variable: User-modified.
(line 37)
* differences in awk and gawk, FPAT variable: User-modified. (line 43)
-* differences in awk and gawk, FUNCTAB variable: Auto-set. (line 130)
+* differences in awk and gawk, FUNCTAB variable: Auto-set. (line 135)
* differences in awk and gawk, function arguments (gawk): Calling Built-in.
(line 16)
* differences in awk and gawk, getline command: Getline. (line 19)
@@ -32465,7 +32512,7 @@ Index
(line 263)
* differences in awk and gawk, print/printf statements: Format Modifiers.
(line 13)
-* differences in awk and gawk, PROCINFO array: Auto-set. (line 144)
+* differences in awk and gawk, PROCINFO array: Auto-set. (line 149)
* differences in awk and gawk, read timeouts: Read Timeout. (line 6)
* differences in awk and gawk, record separators: awk split records.
(line 125)
@@ -32473,9 +32520,10 @@ Index
(line 43)
* differences in awk and gawk, regular expressions: Case-sensitivity.
(line 26)
+* differences in awk and gawk, retrying I/O: Retrying I/O. (line 6)
* differences in awk and gawk, RS/RT variables: gawk split records.
(line 58)
-* differences in awk and gawk, RT variable: Auto-set. (line 279)
+* differences in awk and gawk, RT variable: Auto-set. (line 292)
* differences in awk and gawk, single-character fields: Single Character Fields.
(line 6)
* differences in awk and gawk, split() function: String Functions.
@@ -32483,7 +32531,7 @@ Index
* differences in awk and gawk, strings: Scalar Constants. (line 20)
* differences in awk and gawk, strings, storing: gawk split records.
(line 77)
-* differences in awk and gawk, SYMTAB variable: Auto-set. (line 283)
+* differences in awk and gawk, SYMTAB variable: Auto-set. (line 296)
* differences in awk and gawk, TEXTDOMAIN variable: User-modified.
(line 151)
* differences in awk and gawk, trunc-mod operation: Arithmetic Ops.
@@ -32524,8 +32572,8 @@ Index
* dynamically loaded extensions: Dynamic Extensions. (line 6)
* e debugger command (alias for enable): Breakpoint Control. (line 73)
* EBCDIC: Ordinal Functions. (line 45)
-* effective group ID of gawk user: Auto-set. (line 149)
-* effective user ID of gawk user: Auto-set. (line 153)
+* effective group ID of gawk user: Auto-set. (line 154)
+* effective user ID of gawk user: Auto-set. (line 162)
* egrep utility <1>: Egrep Program. (line 6)
* egrep utility: Bracket Expressions. (line 26)
* egrep.awk program: Egrep Program. (line 54)
@@ -32640,7 +32688,7 @@ Index
(line 6)
* extension API version: Extension Versioning.
(line 6)
-* extension API, version number: Auto-set. (line 246)
+* extension API, version number: Auto-set. (line 255)
* extension example: Extension Example. (line 6)
* extension registration: Registration Functions.
(line 6)
@@ -32721,7 +32769,7 @@ Index
* file names, distinguishing: Auto-set. (line 56)
* file names, in compatibility mode: Special Caveats. (line 9)
* file names, standard streams in gawk: Special FD. (line 48)
-* FILENAME variable <1>: Auto-set. (line 104)
+* FILENAME variable <1>: Auto-set. (line 109)
* FILENAME variable: Reading Files. (line 6)
* FILENAME variable, getline, setting with: Getline Notes. (line 19)
* filenames, assignments as: Ignoring Assigns. (line 6)
@@ -32789,9 +32837,9 @@ Index
* flush buffered output: I/O Functions. (line 28)
* fnmatch() extension function: Extension Sample Fnmatch.
(line 12)
-* FNR variable <1>: Auto-set. (line 114)
+* FNR variable <1>: Auto-set. (line 119)
* FNR variable: Records. (line 6)
-* FNR variable, changing: Auto-set. (line 328)
+* FNR variable, changing: Auto-set. (line 341)
* for statement: For Statement. (line 6)
* for statement, looping over arrays: Scanning an Array. (line 20)
* fork() extension function: Extension Sample Fork.
@@ -32841,7 +32889,7 @@ Index
* FSF (Free Software Foundation): Manual History. (line 6)
* fts() extension function: Extension Sample File Functions.
(line 61)
-* FUNCTAB array: Auto-set. (line 130)
+* FUNCTAB array: Auto-set. (line 135)
* function calls: Function Calls. (line 6)
* function calls, indirect: Indirect Calls. (line 6)
* function calls, indirect, @-notation for: Indirect Calls. (line 47)
@@ -32891,7 +32939,7 @@ Index
* G-d: Acknowledgments. (line 94)
* Garfinkle, Scott: Contributors. (line 34)
* gawk program, dynamic profiling: Profiling. (line 178)
-* gawk version: Auto-set. (line 221)
+* gawk version: Auto-set. (line 230)
* gawk, ARGIND variable in: Other Arguments. (line 15)
* gawk, awk and <1>: This Manual. (line 14)
* gawk, awk and: Preface. (line 21)
@@ -32926,7 +32974,7 @@ Index
* gawk, FPAT variable in <1>: User-modified. (line 43)
* gawk, FPAT variable in: Splitting By Content.
(line 25)
-* gawk, FUNCTAB array in: Auto-set. (line 130)
+* gawk, FUNCTAB array in: Auto-set. (line 135)
* gawk, function arguments and: Calling Built-in. (line 16)
* gawk, hexadecimal numbers and: Nondecimal-numbers. (line 42)
* gawk, IGNORECASE variable in <1>: Array Sorting Functions.
@@ -32958,7 +33006,7 @@ Index
* gawk, predefined variables and: Built-in Variables. (line 14)
* gawk, PROCINFO array in <1>: Two-way I/O. (line 99)
* gawk, PROCINFO array in <2>: Time Functions. (line 47)
-* gawk, PROCINFO array in: Auto-set. (line 144)
+* gawk, PROCINFO array in: Auto-set. (line 149)
* gawk, regexp constants and: Using Constant Regexps.
(line 28)
* gawk, regular expressions, case sensitivity: Case-sensitivity.
@@ -32966,14 +33014,14 @@ Index
* gawk, regular expressions, operators: GNU Regexp Operators.
(line 6)
* gawk, regular expressions, precedence: Regexp Operators. (line 161)
-* gawk, RT variable in <1>: Auto-set. (line 279)
+* gawk, RT variable in <1>: Auto-set. (line 292)
* gawk, RT variable in <2>: Multiple Line. (line 129)
* gawk, RT variable in: awk split records. (line 125)
* gawk, See Also awk: Preface. (line 34)
* gawk, source code, obtaining: Getting. (line 6)
* gawk, splitting fields and: Constant Size. (line 87)
* gawk, string-translation functions: I18N Functions. (line 6)
-* gawk, SYMTAB array in: Auto-set. (line 283)
+* gawk, SYMTAB array in: Auto-set. (line 296)
* gawk, TEXTDOMAIN variable in: User-modified. (line 151)
* gawk, timestamps: Time Functions. (line 6)
* gawk, uses for: Preface. (line 34)
@@ -33065,7 +33113,7 @@ Index
* Grigera, Juan: Contributors. (line 57)
* group database, reading: Group Functions. (line 6)
* group file: Group Functions. (line 6)
-* group ID of gawk user: Auto-set. (line 194)
+* group ID of gawk user: Auto-set. (line 203)
* groups, information about: Group Functions. (line 6)
* gsub <1>: String Functions. (line 140)
* gsub: Using Constant Regexps.
@@ -33360,7 +33408,7 @@ Index
* mawk utility <3>: Concatenation. (line 36)
* mawk utility <4>: Getline/Pipe. (line 62)
* mawk utility: Escape Sequences. (line 120)
-* maximum precision supported by MPFR library: Auto-set. (line 235)
+* maximum precision supported by MPFR library: Auto-set. (line 244)
* McIlroy, Doug: Glossary. (line 177)
* McPhee, Patrick: Contributors. (line 100)
* message object files: Explaining gettext. (line 42)
@@ -33373,7 +33421,7 @@ Index
* messages from extensions: Printing Messages. (line 6)
* metacharacters in regular expressions: Regexp Operators. (line 6)
* metacharacters, escape sequences for: Escape Sequences. (line 139)
-* minimum precision supported by MPFR library: Auto-set. (line 238)
+* minimum precision supported by MPFR library: Auto-set. (line 247)
* mktime: Time Functions. (line 25)
* modifiers, in format specifiers: Format Modifiers. (line 6)
* monetary information, localization: Explaining gettext. (line 104)
@@ -33422,7 +33470,7 @@ Index
(line 47)
* nexti debugger command: Debugger Execution Control.
(line 49)
-* NF variable <1>: Auto-set. (line 119)
+* NF variable <1>: Auto-set. (line 124)
* NF variable: Fields. (line 33)
* NF variable, decrementing: Changing Fields. (line 107)
* ni debugger command (alias for nexti): Debugger Execution Control.
@@ -33431,9 +33479,9 @@ Index
* non-existent array elements: Reference to Elements.
(line 23)
* not Boolean-logic operator: Boolean Ops. (line 6)
-* NR variable <1>: Auto-set. (line 139)
+* NR variable <1>: Auto-set. (line 144)
* NR variable: Records. (line 6)
-* NR variable, changing: Auto-set. (line 328)
+* NR variable, changing: Auto-set. (line 341)
* null strings <1>: Basic Data Typing. (line 26)
* null strings <2>: Truth Values. (line 6)
* null strings <3>: Regexp Field Splitting.
@@ -33547,7 +33595,7 @@ Index
* p debugger command (alias for print): Viewing And Changing Data.
(line 36)
* Papadopoulos, Panos: Contributors. (line 128)
-* parent process ID of gawk process: Auto-set. (line 203)
+* parent process ID of gawk process: Auto-set. (line 212)
* parentheses (), in a profile: Profiling. (line 146)
* parentheses (), regexp operator: Regexp Operators. (line 81)
* password file: Passwd Functions. (line 16)
@@ -33713,24 +33761,24 @@ Index
* printing, unduplicated lines of text: Uniq Program. (line 6)
* printing, user information: Id Program. (line 6)
* private variables: Library Names. (line 11)
-* process group idIDof gawk process: Auto-set. (line 197)
-* process ID of gawk process: Auto-set. (line 200)
+* process group idIDof gawk process: Auto-set. (line 206)
+* process ID of gawk process: Auto-set. (line 209)
* processes, two-way communications with: Two-way I/O. (line 6)
* processing data: Basic High Level. (line 6)
* PROCINFO array <1>: Passwd Functions. (line 6)
* PROCINFO array <2>: Time Functions. (line 47)
-* PROCINFO array: Auto-set. (line 144)
+* PROCINFO array: Auto-set. (line 149)
* PROCINFO array, and communications via ptys: Two-way I/O. (line 99)
* PROCINFO array, and group membership: Group Functions. (line 6)
* PROCINFO array, and user and group ID numbers: Id Program. (line 15)
* PROCINFO array, testing the field splitting: Passwd Functions.
(line 154)
-* PROCINFO array, uses: Auto-set. (line 256)
+* PROCINFO array, uses: Auto-set. (line 265)
* PROCINFO, values of sorted_in: Controlling Scanning.
(line 26)
* profiling awk programs: Profiling. (line 6)
* profiling awk programs, dynamically: Profiling. (line 178)
-* program identifiers: Auto-set. (line 162)
+* program identifiers: Auto-set. (line 171)
* program, definition of: Getting Started. (line 21)
* programming conventions, --non-decimal-data option: Nondecimal Data.
(line 35)
@@ -33865,6 +33913,7 @@ Index
* relational operators, See comparison operators: Typing and Comparison.
(line 9)
* replace in string: String Functions. (line 408)
+* retrying I/O: Retrying I/O. (line 6)
* return debugger command: Debugger Execution Control.
(line 54)
* return statement, user-defined functions: Return Statement. (line 6)
@@ -33888,7 +33937,7 @@ Index
* right shift: Bitwise Functions. (line 53)
* right shift, bitwise: Bitwise Functions. (line 32)
* Ritchie, Dennis: Basic Data Typing. (line 54)
-* RLENGTH variable: Auto-set. (line 266)
+* RLENGTH variable: Auto-set. (line 279)
* RLENGTH variable, match() function and: String Functions. (line 228)
* Robbins, Arnold <1>: Future Extensions. (line 6)
* Robbins, Arnold <2>: Bugs. (line 70)
@@ -33914,9 +33963,9 @@ Index
* RS variable: awk split records. (line 12)
* RS variable, multiline records and: Multiple Line. (line 17)
* rshift: Bitwise Functions. (line 53)
-* RSTART variable: Auto-set. (line 272)
+* RSTART variable: Auto-set. (line 285)
* RSTART variable, match() function and: String Functions. (line 228)
-* RT variable <1>: Auto-set. (line 279)
+* RT variable <1>: Auto-set. (line 292)
* RT variable <2>: Multiple Line. (line 129)
* RT variable: awk split records. (line 125)
* Rubin, Paul <1>: Contributors. (line 15)
@@ -33936,7 +33985,7 @@ Index
* scanning arrays: Scanning an Array. (line 6)
* scanning multidimensional arrays: Multiscanning. (line 11)
* Schorr, Andrew <1>: Contributors. (line 133)
-* Schorr, Andrew <2>: Auto-set. (line 311)
+* Schorr, Andrew <2>: Auto-set. (line 324)
* Schorr, Andrew: Acknowledgments. (line 60)
* Schreiber, Bert: Acknowledgments. (line 38)
* Schreiber, Rita: Acknowledgments. (line 38)
@@ -34019,7 +34068,7 @@ Index
(line 106)
* sidebar, Changing FS Does Not Affect the Fields: Full Line Fields.
(line 14)
-* sidebar, Changing NR and FNR: Auto-set. (line 326)
+* sidebar, Changing NR and FNR: Auto-set. (line 339)
* sidebar, Controlling Output Buffering with system(): I/O Functions.
(line 138)
* sidebar, Escape Sequences for Metacharacters: Escape Sequences.
@@ -34181,9 +34230,9 @@ Index
* substr: String Functions. (line 481)
* substring: String Functions. (line 481)
* Sumner, Andrew: Other Versions. (line 68)
-* supplementary groups of gawk process: Auto-set. (line 251)
+* supplementary groups of gawk process: Auto-set. (line 260)
* switch statement: Switch Statement. (line 6)
-* SYMTAB array: Auto-set. (line 283)
+* SYMTAB array: Auto-set. (line 296)
* syntactic ambiguity: /= operator vs. /=.../ regexp constant: Assignment Ops.
(line 148)
* system: I/O Functions. (line 106)
@@ -34360,10 +34409,10 @@ Index
* variables, uninitialized, as array subscripts: Uninitialized Subscripts.
(line 6)
* variables, user-defined: Variables. (line 6)
-* version of gawk: Auto-set. (line 221)
-* version of gawk extension API: Auto-set. (line 246)
-* version of GNU MP library: Auto-set. (line 232)
-* version of GNU MPFR library: Auto-set. (line 228)
+* version of gawk: Auto-set. (line 230)
+* version of gawk extension API: Auto-set. (line 255)
+* version of GNU MP library: Auto-set. (line 241)
+* version of GNU MPFR library: Auto-set. (line 237)
* vertical bar (|): Regexp Operators. (line 70)
* vertical bar (|), | operator (I/O) <1>: Precedence. (line 65)
* vertical bar (|), | operator (I/O): Getline/Pipe. (line 9)
@@ -34453,560 +34502,561 @@ Index

Tag Table:
Node: Top1204
-Node: Foreword342225
-Node: Foreword446667
-Node: Preface48189
-Ref: Preface-Footnote-151060
-Ref: Preface-Footnote-251167
-Ref: Preface-Footnote-351400
-Node: History51542
-Node: Names53888
-Ref: Names-Footnote-154982
-Node: This Manual55128
-Ref: This Manual-Footnote-161615
-Node: Conventions61715
-Node: Manual History64053
-Ref: Manual History-Footnote-167035
-Ref: Manual History-Footnote-267076
-Node: How To Contribute67150
-Node: Acknowledgments68279
-Node: Getting Started73084
-Node: Running gawk75517
-Node: One-shot76707
-Node: Read Terminal77955
-Node: Long79982
-Node: Executable Scripts81498
-Ref: Executable Scripts-Footnote-184287
-Node: Comments84390
-Node: Quoting86872
-Node: DOS Quoting92396
-Node: Sample Data Files93071
-Node: Very Simple95666
-Node: Two Rules100564
-Node: More Complex102450
-Node: Statements/Lines105312
-Ref: Statements/Lines-Footnote-1109767
-Node: Other Features110032
-Node: When110963
-Ref: When-Footnote-1112717
-Node: Intro Summary112782
-Node: Invoking Gawk113665
-Node: Command Line115179
-Node: Options115977
-Ref: Options-Footnote-1131781
-Ref: Options-Footnote-2132010
-Node: Other Arguments132035
-Node: Naming Standard Input134983
-Node: Environment Variables136076
-Node: AWKPATH Variable136634
-Ref: AWKPATH Variable-Footnote-1140047
-Ref: AWKPATH Variable-Footnote-2140092
-Node: AWKLIBPATH Variable140352
-Node: Other Environment Variables141608
-Node: Exit Status145096
-Node: Include Files145772
-Node: Loading Shared Libraries149369
-Node: Obsolete150796
-Node: Undocumented151493
-Node: Invoking Summary151760
-Node: Regexp153424
-Node: Regexp Usage154878
-Node: Escape Sequences156915
-Node: Regexp Operators163156
-Ref: Regexp Operators-Footnote-1170582
-Ref: Regexp Operators-Footnote-2170729
-Node: Bracket Expressions170827
-Ref: table-char-classes172842
-Node: Leftmost Longest175766
-Node: Computed Regexps177068
-Node: GNU Regexp Operators180465
-Node: Case-sensitivity184138
-Ref: Case-sensitivity-Footnote-1187023
-Ref: Case-sensitivity-Footnote-2187258
-Node: Regexp Summary187366
-Node: Reading Files188833
-Node: Records190927
-Node: awk split records191660
-Node: gawk split records196575
-Ref: gawk split records-Footnote-1201119
-Node: Fields201156
-Ref: Fields-Footnote-1203932
-Node: Nonconstant Fields204018
-Ref: Nonconstant Fields-Footnote-1206261
-Node: Changing Fields206465
-Node: Field Separators212394
-Node: Default Field Splitting215099
-Node: Regexp Field Splitting216216
-Node: Single Character Fields219566
-Node: Command Line Field Separator220625
-Node: Full Line Fields223837
-Ref: Full Line Fields-Footnote-1225354
-Ref: Full Line Fields-Footnote-2225400
-Node: Field Splitting Summary225501
-Node: Constant Size227575
-Node: Splitting By Content232164
-Ref: Splitting By Content-Footnote-1236158
-Node: Multiple Line236321
-Ref: Multiple Line-Footnote-1242207
-Node: Getline242386
-Node: Plain Getline244598
-Node: Getline/Variable247238
-Node: Getline/File248386
-Node: Getline/Variable/File249770
-Ref: Getline/Variable/File-Footnote-1251373
-Node: Getline/Pipe251460
-Node: Getline/Variable/Pipe254143
-Node: Getline/Coprocess255274
-Node: Getline/Variable/Coprocess256526
-Node: Getline Notes257265
-Node: Getline Summary260057
-Ref: table-getline-variants260469
-Node: Read Timeout261298
-Ref: Read Timeout-Footnote-1265123
-Node: Command-line directories265181
-Node: Input Summary266086
-Node: Input Exercises269387
-Node: Printing270115
-Node: Print271892
-Node: Print Examples273349
-Node: Output Separators276128
-Node: OFMT278146
-Node: Printf279500
-Node: Basic Printf280285
-Node: Control Letters281855
-Node: Format Modifiers285838
-Node: Printf Examples291847
-Node: Redirection294333
-Node: Special FD301174
-Ref: Special FD-Footnote-1304334
-Node: Special Files304408
-Node: Other Inherited Files305025
-Node: Special Network306025
-Node: Special Caveats306887
-Node: Close Files And Pipes307838
-Ref: Close Files And Pipes-Footnote-1315020
-Ref: Close Files And Pipes-Footnote-2315168
-Node: Output Summary315318
-Node: Output Exercises316316
-Node: Expressions316996
-Node: Values318181
-Node: Constants318859
-Node: Scalar Constants319550
-Ref: Scalar Constants-Footnote-1320409
-Node: Nondecimal-numbers320659
-Node: Regexp Constants323677
-Node: Using Constant Regexps324202
-Node: Variables327345
-Node: Using Variables328000
-Node: Assignment Options329911
-Node: Conversion331786
-Node: Strings And Numbers332310
-Ref: Strings And Numbers-Footnote-1335375
-Node: Locale influences conversions335484
-Ref: table-locale-affects338231
-Node: All Operators338819
-Node: Arithmetic Ops339449
-Node: Concatenation341954
-Ref: Concatenation-Footnote-1344773
-Node: Assignment Ops344879
-Ref: table-assign-ops349858
-Node: Increment Ops351130
-Node: Truth Values and Conditions354568
-Node: Truth Values355653
-Node: Typing and Comparison356702
-Node: Variable Typing357512
-Node: Comparison Operators361165
-Ref: table-relational-ops361575
-Node: POSIX String Comparison365070
-Ref: POSIX String Comparison-Footnote-1366142
-Node: Boolean Ops366280
-Ref: Boolean Ops-Footnote-1370759
-Node: Conditional Exp370850
-Node: Function Calls372577
-Node: Precedence376457
-Node: Locales380118
-Node: Expressions Summary381750
-Node: Patterns and Actions384310
-Node: Pattern Overview385430
-Node: Regexp Patterns387109
-Node: Expression Patterns387652
-Node: Ranges391362
-Node: BEGIN/END394468
-Node: Using BEGIN/END395229
-Ref: Using BEGIN/END-Footnote-1397963
-Node: I/O And BEGIN/END398069
-Node: BEGINFILE/ENDFILE400383
-Node: Empty403284
-Node: Using Shell Variables403601
-Node: Action Overview405874
-Node: Statements408200
-Node: If Statement410048
-Node: While Statement411543
-Node: Do Statement413572
-Node: For Statement414716
-Node: Switch Statement417873
-Node: Break Statement420255
-Node: Continue Statement422296
-Node: Next Statement424123
-Node: Nextfile Statement426504
-Node: Exit Statement429134
-Node: Built-in Variables431537
-Node: User-modified432670
-Ref: User-modified-Footnote-1440351
-Node: Auto-set440413
-Ref: Auto-set-Footnote-1454105
-Ref: Auto-set-Footnote-2454310
-Node: ARGC and ARGV454366
-Node: Pattern Action Summary458584
-Node: Arrays461011
-Node: Array Basics462340
-Node: Array Intro463184
-Ref: figure-array-elements465148
-Ref: Array Intro-Footnote-1467674
-Node: Reference to Elements467802
-Node: Assigning Elements470254
-Node: Array Example470745
-Node: Scanning an Array472503
-Node: Controlling Scanning475519
-Ref: Controlling Scanning-Footnote-1480715
-Node: Numeric Array Subscripts481031
-Node: Uninitialized Subscripts483216
-Node: Delete484833
-Ref: Delete-Footnote-1487576
-Node: Multidimensional487633
-Node: Multiscanning490730
-Node: Arrays of Arrays492319
-Node: Arrays Summary497078
-Node: Functions499170
-Node: Built-in500069
-Node: Calling Built-in501147
-Node: Numeric Functions503138
-Ref: Numeric Functions-Footnote-1507957
-Ref: Numeric Functions-Footnote-2508314
-Ref: Numeric Functions-Footnote-3508362
-Node: String Functions508634
-Ref: String Functions-Footnote-1532109
-Ref: String Functions-Footnote-2532238
-Ref: String Functions-Footnote-3532486
-Node: Gory Details532573
-Ref: table-sub-escapes534354
-Ref: table-sub-proposed535874
-Ref: table-posix-sub537238
-Ref: table-gensub-escapes538774
-Ref: Gory Details-Footnote-1539606
-Node: I/O Functions539757
-Ref: I/O Functions-Footnote-1546975
-Node: Time Functions547122
-Ref: Time Functions-Footnote-1557610
-Ref: Time Functions-Footnote-2557678
-Ref: Time Functions-Footnote-3557836
-Ref: Time Functions-Footnote-4557947
-Ref: Time Functions-Footnote-5558059
-Ref: Time Functions-Footnote-6558286
-Node: Bitwise Functions558552
-Ref: table-bitwise-ops559114
-Ref: Bitwise Functions-Footnote-1563423
-Node: Type Functions563592
-Node: I18N Functions564743
-Node: User-defined566388
-Node: Definition Syntax567193
-Ref: Definition Syntax-Footnote-1572600
-Node: Function Example572671
-Ref: Function Example-Footnote-1575590
-Node: Function Caveats575612
-Node: Calling A Function576130
-Node: Variable Scope577088
-Node: Pass By Value/Reference580076
-Node: Return Statement583571
-Node: Dynamic Typing586552
-Node: Indirect Calls587481
-Ref: Indirect Calls-Footnote-1598783
-Node: Functions Summary598911
-Node: Library Functions601613
-Ref: Library Functions-Footnote-1605222
-Ref: Library Functions-Footnote-2605365
-Node: Library Names605536
-Ref: Library Names-Footnote-1608990
-Ref: Library Names-Footnote-2609213
-Node: General Functions609299
-Node: Strtonum Function610402
-Node: Assert Function613424
-Node: Round Function616748
-Node: Cliff Random Function618289
-Node: Ordinal Functions619305
-Ref: Ordinal Functions-Footnote-1622368
-Ref: Ordinal Functions-Footnote-2622620
-Node: Join Function622831
-Ref: Join Function-Footnote-1624600
-Node: Getlocaltime Function624800
-Node: Readfile Function628544
-Node: Shell Quoting630514
-Node: Data File Management631915
-Node: Filetrans Function632547
-Node: Rewind Function636603
-Node: File Checking637990
-Ref: File Checking-Footnote-1639322
-Node: Empty Files639523
-Node: Ignoring Assigns641502
-Node: Getopt Function643053
-Ref: Getopt Function-Footnote-1654515
-Node: Passwd Functions654715
-Ref: Passwd Functions-Footnote-1663552
-Node: Group Functions663640
-Ref: Group Functions-Footnote-1671534
-Node: Walking Arrays671747
-Node: Library Functions Summary673350
-Node: Library Exercises674751
-Node: Sample Programs676031
-Node: Running Examples676801
-Node: Clones677529
-Node: Cut Program678753
-Node: Egrep Program688472
-Ref: Egrep Program-Footnote-1695970
-Node: Id Program696080
-Node: Split Program699725
-Ref: Split Program-Footnote-1703173
-Node: Tee Program703301
-Node: Uniq Program706090
-Node: Wc Program713509
-Ref: Wc Program-Footnote-1717759
-Node: Miscellaneous Programs717853
-Node: Dupword Program719066
-Node: Alarm Program721097
-Node: Translate Program725901
-Ref: Translate Program-Footnote-1730466
-Node: Labels Program730736
-Ref: Labels Program-Footnote-1734087
-Node: Word Sorting734171
-Node: History Sorting738242
-Node: Extract Program740078
-Node: Simple Sed747603
-Node: Igawk Program750671
-Ref: Igawk Program-Footnote-1764995
-Ref: Igawk Program-Footnote-2765196
-Ref: Igawk Program-Footnote-3765318
-Node: Anagram Program765433
-Node: Signature Program768490
-Node: Programs Summary769737
-Node: Programs Exercises770930
-Ref: Programs Exercises-Footnote-1775061
-Node: Advanced Features775152
-Node: Nondecimal Data777100
-Node: Array Sorting778690
-Node: Controlling Array Traversal779387
-Ref: Controlling Array Traversal-Footnote-1787720
-Node: Array Sorting Functions787838
-Ref: Array Sorting Functions-Footnote-1791727
-Node: Two-way I/O791923
-Ref: Two-way I/O-Footnote-1796868
-Ref: Two-way I/O-Footnote-2797054
-Node: TCP/IP Networking797136
-Node: Profiling800009
-Node: Advanced Features Summary808286
-Node: Internationalization810219
-Node: I18N and L10N811699
-Node: Explaining gettext812385
-Ref: Explaining gettext-Footnote-1817410
-Ref: Explaining gettext-Footnote-2817594
-Node: Programmer i18n817759
-Ref: Programmer i18n-Footnote-1822625
-Node: Translator i18n822674
-Node: String Extraction823468
-Ref: String Extraction-Footnote-1824599
-Node: Printf Ordering824685
-Ref: Printf Ordering-Footnote-1827471
-Node: I18N Portability827535
-Ref: I18N Portability-Footnote-1829990
-Node: I18N Example830053
-Ref: I18N Example-Footnote-1832856
-Node: Gawk I18N832928
-Node: I18N Summary833566
-Node: Debugger834905
-Node: Debugging835927
-Node: Debugging Concepts836368
-Node: Debugging Terms838221
-Node: Awk Debugging840793
-Node: Sample Debugging Session841687
-Node: Debugger Invocation842207
-Node: Finding The Bug843591
-Node: List of Debugger Commands850066
-Node: Breakpoint Control851399
-Node: Debugger Execution Control855095
-Node: Viewing And Changing Data858459
-Node: Execution Stack861837
-Node: Debugger Info863474
-Node: Miscellaneous Debugger Commands867491
-Node: Readline Support872520
-Node: Limitations873412
-Node: Debugging Summary875526
-Node: Arbitrary Precision Arithmetic876694
-Node: Computer Arithmetic878110
-Ref: table-numeric-ranges881708
-Ref: Computer Arithmetic-Footnote-1882567
-Node: Math Definitions882624
-Ref: table-ieee-formats885912
-Ref: Math Definitions-Footnote-1886516
-Node: MPFR features886621
-Node: FP Math Caution888292
-Ref: FP Math Caution-Footnote-1889342
-Node: Inexactness of computations889711
-Node: Inexact representation890670
-Node: Comparing FP Values892027
-Node: Errors accumulate893109
-Node: Getting Accuracy894542
-Node: Try To Round897204
-Node: Setting precision898103
-Ref: table-predefined-precision-strings898787
-Node: Setting the rounding mode900576
-Ref: table-gawk-rounding-modes900940
-Ref: Setting the rounding mode-Footnote-1904395
-Node: Arbitrary Precision Integers904574
-Ref: Arbitrary Precision Integers-Footnote-1909473
-Node: POSIX Floating Point Problems909622
-Ref: POSIX Floating Point Problems-Footnote-1913495
-Node: Floating point summary913533
-Node: Dynamic Extensions915727
-Node: Extension Intro917279
-Node: Plugin License918545
-Node: Extension Mechanism Outline919342
-Ref: figure-load-extension919770
-Ref: figure-register-new-function921250
-Ref: figure-call-new-function922254
-Node: Extension API Description924240
-Node: Extension API Functions Introduction925690
-Node: General Data Types930514
-Ref: General Data Types-Footnote-1936253
-Node: Memory Allocation Functions936552
-Ref: Memory Allocation Functions-Footnote-1939391
-Node: Constructor Functions939487
-Node: Registration Functions941221
-Node: Extension Functions941906
-Node: Exit Callback Functions944203
-Node: Extension Version String945451
-Node: Input Parsers946116
-Node: Output Wrappers955995
-Node: Two-way processors960510
-Node: Printing Messages962714
-Ref: Printing Messages-Footnote-1963790
-Node: Updating `ERRNO'963942
-Node: Requesting Values964682
-Ref: table-value-types-returned965410
-Node: Accessing Parameters966367
-Node: Symbol Table Access967598
-Node: Symbol table by name968112
-Node: Symbol table by cookie970093
-Ref: Symbol table by cookie-Footnote-1974237
-Node: Cached values974300
-Ref: Cached values-Footnote-1977799
-Node: Array Manipulation977890
-Ref: Array Manipulation-Footnote-1978988
-Node: Array Data Types979025
-Ref: Array Data Types-Footnote-1981680
-Node: Array Functions981772
-Node: Flattening Arrays985626
-Node: Creating Arrays992518
-Node: Extension API Variables997289
-Node: Extension Versioning997925
-Node: Extension API Informational Variables999826
-Node: Extension API Boilerplate1000891
-Node: Finding Extensions1004700
-Node: Extension Example1005260
-Node: Internal File Description1006032
-Node: Internal File Ops1010099
-Ref: Internal File Ops-Footnote-11021769
-Node: Using Internal File Ops1021909
-Ref: Using Internal File Ops-Footnote-11024292
-Node: Extension Samples1024565
-Node: Extension Sample File Functions1026091
-Node: Extension Sample Fnmatch1033729
-Node: Extension Sample Fork1035220
-Node: Extension Sample Inplace1036435
-Node: Extension Sample Ord1038110
-Node: Extension Sample Readdir1038946
-Ref: table-readdir-file-types1039822
-Node: Extension Sample Revout1040633
-Node: Extension Sample Rev2way1041223
-Node: Extension Sample Read write array1041963
-Node: Extension Sample Readfile1043903
-Node: Extension Sample Time1044998
-Node: Extension Sample API Tests1046347
-Node: gawkextlib1046838
-Node: Extension summary1049496
-Node: Extension Exercises1053185
-Node: Language History1053907
-Node: V7/SVR3.11055563
-Node: SVR41057744
-Node: POSIX1059189
-Node: BTL1060578
-Node: POSIX/GNU1061312
-Node: Feature History1066936
-Node: Common Extensions1080034
-Node: Ranges and Locales1081358
-Ref: Ranges and Locales-Footnote-11085976
-Ref: Ranges and Locales-Footnote-21086003
-Ref: Ranges and Locales-Footnote-31086237
-Node: Contributors1086458
-Node: History summary1091999
-Node: Installation1093369
-Node: Gawk Distribution1094315
-Node: Getting1094799
-Node: Extracting1095622
-Node: Distribution contents1097257
-Node: Unix Installation1103322
-Node: Quick Installation1104005
-Node: Shell Startup Files1106416
-Node: Additional Configuration Options1107495
-Node: Configuration Philosophy1109234
-Node: Non-Unix Installation1111603
-Node: PC Installation1112061
-Node: PC Binary Installation1113380
-Node: PC Compiling1115228
-Ref: PC Compiling-Footnote-11118249
-Node: PC Testing1118358
-Node: PC Using1119534
-Node: Cygwin1123649
-Node: MSYS1124472
-Node: VMS Installation1124972
-Node: VMS Compilation1125764
-Ref: VMS Compilation-Footnote-11126986
-Node: VMS Dynamic Extensions1127044
-Node: VMS Installation Details1128728
-Node: VMS Running1130980
-Node: VMS GNV1133816
-Node: VMS Old Gawk1134550
-Node: Bugs1135020
-Node: Other Versions1138903
-Node: Installation summary1145331
-Node: Notes1146387
-Node: Compatibility Mode1147252
-Node: Additions1148034
-Node: Accessing The Source1148959
-Node: Adding Code1150395
-Node: New Ports1156560
-Node: Derived Files1161042
-Ref: Derived Files-Footnote-11166517
-Ref: Derived Files-Footnote-21166551
-Ref: Derived Files-Footnote-31167147
-Node: Future Extensions1167261
-Node: Implementation Limitations1167867
-Node: Extension Design1169115
-Node: Old Extension Problems1170269
-Ref: Old Extension Problems-Footnote-11171786
-Node: Extension New Mechanism Goals1171843
-Ref: Extension New Mechanism Goals-Footnote-11175203
-Node: Extension Other Design Decisions1175392
-Node: Extension Future Growth1177500
-Node: Old Extension Mechanism1178336
-Node: Notes summary1180098
-Node: Basic Concepts1181284
-Node: Basic High Level1181965
-Ref: figure-general-flow1182237
-Ref: figure-process-flow1182836
-Ref: Basic High Level-Footnote-11186065
-Node: Basic Data Typing1186250
-Node: Glossary1189578
-Node: Copying1214736
-Node: GNU Free Documentation License1252292
-Node: Index1277428
+Node: Foreword342300
+Node: Foreword446742
+Node: Preface48264
+Ref: Preface-Footnote-151135
+Ref: Preface-Footnote-251242
+Ref: Preface-Footnote-351475
+Node: History51617
+Node: Names53963
+Ref: Names-Footnote-155057
+Node: This Manual55203
+Ref: This Manual-Footnote-161690
+Node: Conventions61790
+Node: Manual History64128
+Ref: Manual History-Footnote-167110
+Ref: Manual History-Footnote-267151
+Node: How To Contribute67225
+Node: Acknowledgments68354
+Node: Getting Started73159
+Node: Running gawk75592
+Node: One-shot76782
+Node: Read Terminal78030
+Node: Long80057
+Node: Executable Scripts81573
+Ref: Executable Scripts-Footnote-184362
+Node: Comments84465
+Node: Quoting86947
+Node: DOS Quoting92471
+Node: Sample Data Files93146
+Node: Very Simple95741
+Node: Two Rules100639
+Node: More Complex102525
+Node: Statements/Lines105387
+Ref: Statements/Lines-Footnote-1109842
+Node: Other Features110107
+Node: When111038
+Ref: When-Footnote-1112792
+Node: Intro Summary112857
+Node: Invoking Gawk113740
+Node: Command Line115254
+Node: Options116052
+Ref: Options-Footnote-1131856
+Ref: Options-Footnote-2132085
+Node: Other Arguments132110
+Node: Naming Standard Input135058
+Node: Environment Variables136151
+Node: AWKPATH Variable136709
+Ref: AWKPATH Variable-Footnote-1140122
+Ref: AWKPATH Variable-Footnote-2140167
+Node: AWKLIBPATH Variable140427
+Node: Other Environment Variables141683
+Node: Exit Status145171
+Node: Include Files145847
+Node: Loading Shared Libraries149444
+Node: Obsolete150871
+Node: Undocumented151568
+Node: Invoking Summary151835
+Node: Regexp153499
+Node: Regexp Usage154953
+Node: Escape Sequences156990
+Node: Regexp Operators163231
+Ref: Regexp Operators-Footnote-1170657
+Ref: Regexp Operators-Footnote-2170804
+Node: Bracket Expressions170902
+Ref: table-char-classes172917
+Node: Leftmost Longest175841
+Node: Computed Regexps177143
+Node: GNU Regexp Operators180540
+Node: Case-sensitivity184213
+Ref: Case-sensitivity-Footnote-1187098
+Ref: Case-sensitivity-Footnote-2187333
+Node: Regexp Summary187441
+Node: Reading Files188908
+Node: Records191069
+Node: awk split records191802
+Node: gawk split records196717
+Ref: gawk split records-Footnote-1201261
+Node: Fields201298
+Ref: Fields-Footnote-1204074
+Node: Nonconstant Fields204160
+Ref: Nonconstant Fields-Footnote-1206403
+Node: Changing Fields206607
+Node: Field Separators212536
+Node: Default Field Splitting215241
+Node: Regexp Field Splitting216358
+Node: Single Character Fields219708
+Node: Command Line Field Separator220767
+Node: Full Line Fields223979
+Ref: Full Line Fields-Footnote-1225496
+Ref: Full Line Fields-Footnote-2225542
+Node: Field Splitting Summary225643
+Node: Constant Size227717
+Node: Splitting By Content232306
+Ref: Splitting By Content-Footnote-1236300
+Node: Multiple Line236463
+Ref: Multiple Line-Footnote-1242349
+Node: Getline242528
+Node: Plain Getline245010
+Node: Getline/Variable247650
+Node: Getline/File248798
+Node: Getline/Variable/File250182
+Ref: Getline/Variable/File-Footnote-1251785
+Node: Getline/Pipe251872
+Node: Getline/Variable/Pipe254555
+Node: Getline/Coprocess255686
+Node: Getline/Variable/Coprocess256938
+Node: Getline Notes257677
+Node: Getline Summary260469
+Ref: table-getline-variants260881
+Node: Read Timeout261710
+Ref: Read Timeout-Footnote-1265597
+Node: Retrying I/O265655
+Node: Command-line directories266838
+Node: Input Summary267743
+Node: Input Exercises271044
+Node: Printing271772
+Node: Print273549
+Node: Print Examples275006
+Node: Output Separators277785
+Node: OFMT279803
+Node: Printf281157
+Node: Basic Printf281942
+Node: Control Letters283512
+Node: Format Modifiers287495
+Node: Printf Examples293504
+Node: Redirection295990
+Node: Special FD302831
+Ref: Special FD-Footnote-1305991
+Node: Special Files306065
+Node: Other Inherited Files306682
+Node: Special Network307682
+Node: Special Caveats308544
+Node: Close Files And Pipes309495
+Ref: Close Files And Pipes-Footnote-1316677
+Ref: Close Files And Pipes-Footnote-2316825
+Node: Output Summary316975
+Node: Output Exercises317973
+Node: Expressions318653
+Node: Values319838
+Node: Constants320516
+Node: Scalar Constants321207
+Ref: Scalar Constants-Footnote-1322066
+Node: Nondecimal-numbers322316
+Node: Regexp Constants325334
+Node: Using Constant Regexps325859
+Node: Variables329002
+Node: Using Variables329657
+Node: Assignment Options331568
+Node: Conversion333443
+Node: Strings And Numbers333967
+Ref: Strings And Numbers-Footnote-1337032
+Node: Locale influences conversions337141
+Ref: table-locale-affects339888
+Node: All Operators340476
+Node: Arithmetic Ops341106
+Node: Concatenation343611
+Ref: Concatenation-Footnote-1346430
+Node: Assignment Ops346536
+Ref: table-assign-ops351515
+Node: Increment Ops352787
+Node: Truth Values and Conditions356225
+Node: Truth Values357310
+Node: Typing and Comparison358359
+Node: Variable Typing359169
+Node: Comparison Operators362822
+Ref: table-relational-ops363232
+Node: POSIX String Comparison366727
+Ref: POSIX String Comparison-Footnote-1367799
+Node: Boolean Ops367937
+Ref: Boolean Ops-Footnote-1372416
+Node: Conditional Exp372507
+Node: Function Calls374234
+Node: Precedence378114
+Node: Locales381775
+Node: Expressions Summary383407
+Node: Patterns and Actions385967
+Node: Pattern Overview387087
+Node: Regexp Patterns388766
+Node: Expression Patterns389309
+Node: Ranges393019
+Node: BEGIN/END396125
+Node: Using BEGIN/END396886
+Ref: Using BEGIN/END-Footnote-1399620
+Node: I/O And BEGIN/END399726
+Node: BEGINFILE/ENDFILE402040
+Node: Empty404941
+Node: Using Shell Variables405258
+Node: Action Overview407531
+Node: Statements409857
+Node: If Statement411705
+Node: While Statement413200
+Node: Do Statement415229
+Node: For Statement416373
+Node: Switch Statement419530
+Node: Break Statement421912
+Node: Continue Statement423953
+Node: Next Statement425780
+Node: Nextfile Statement428161
+Node: Exit Statement430791
+Node: Built-in Variables433194
+Node: User-modified434327
+Ref: User-modified-Footnote-1442008
+Node: Auto-set442070
+Ref: Auto-set-Footnote-1456282
+Ref: Auto-set-Footnote-2456487
+Node: ARGC and ARGV456543
+Node: Pattern Action Summary460761
+Node: Arrays463188
+Node: Array Basics464517
+Node: Array Intro465361
+Ref: figure-array-elements467325
+Ref: Array Intro-Footnote-1469851
+Node: Reference to Elements469979
+Node: Assigning Elements472431
+Node: Array Example472922
+Node: Scanning an Array474680
+Node: Controlling Scanning477696
+Ref: Controlling Scanning-Footnote-1482892
+Node: Numeric Array Subscripts483208
+Node: Uninitialized Subscripts485393
+Node: Delete487010
+Ref: Delete-Footnote-1489753
+Node: Multidimensional489810
+Node: Multiscanning492907
+Node: Arrays of Arrays494496
+Node: Arrays Summary499255
+Node: Functions501347
+Node: Built-in502246
+Node: Calling Built-in503324
+Node: Numeric Functions505315
+Ref: Numeric Functions-Footnote-1510134
+Ref: Numeric Functions-Footnote-2510491
+Ref: Numeric Functions-Footnote-3510539
+Node: String Functions510811
+Ref: String Functions-Footnote-1534286
+Ref: String Functions-Footnote-2534415
+Ref: String Functions-Footnote-3534663
+Node: Gory Details534750
+Ref: table-sub-escapes536531
+Ref: table-sub-proposed538051
+Ref: table-posix-sub539415
+Ref: table-gensub-escapes540951
+Ref: Gory Details-Footnote-1541783
+Node: I/O Functions541934
+Ref: I/O Functions-Footnote-1549152
+Node: Time Functions549299
+Ref: Time Functions-Footnote-1559787
+Ref: Time Functions-Footnote-2559855
+Ref: Time Functions-Footnote-3560013
+Ref: Time Functions-Footnote-4560124
+Ref: Time Functions-Footnote-5560236
+Ref: Time Functions-Footnote-6560463
+Node: Bitwise Functions560729
+Ref: table-bitwise-ops561291
+Ref: Bitwise Functions-Footnote-1565600
+Node: Type Functions565769
+Node: I18N Functions566920
+Node: User-defined568565
+Node: Definition Syntax569370
+Ref: Definition Syntax-Footnote-1574777
+Node: Function Example574848
+Ref: Function Example-Footnote-1577767
+Node: Function Caveats577789
+Node: Calling A Function578307
+Node: Variable Scope579265
+Node: Pass By Value/Reference582253
+Node: Return Statement585748
+Node: Dynamic Typing588729
+Node: Indirect Calls589658
+Ref: Indirect Calls-Footnote-1600960
+Node: Functions Summary601088
+Node: Library Functions603790
+Ref: Library Functions-Footnote-1607399
+Ref: Library Functions-Footnote-2607542
+Node: Library Names607713
+Ref: Library Names-Footnote-1611167
+Ref: Library Names-Footnote-2611390
+Node: General Functions611476
+Node: Strtonum Function612579
+Node: Assert Function615601
+Node: Round Function618925
+Node: Cliff Random Function620466
+Node: Ordinal Functions621482
+Ref: Ordinal Functions-Footnote-1624545
+Ref: Ordinal Functions-Footnote-2624797
+Node: Join Function625008
+Ref: Join Function-Footnote-1626777
+Node: Getlocaltime Function626977
+Node: Readfile Function630721
+Node: Shell Quoting632691
+Node: Data File Management634092
+Node: Filetrans Function634724
+Node: Rewind Function638780
+Node: File Checking640167
+Ref: File Checking-Footnote-1641499
+Node: Empty Files641700
+Node: Ignoring Assigns643679
+Node: Getopt Function645230
+Ref: Getopt Function-Footnote-1656692
+Node: Passwd Functions656892
+Ref: Passwd Functions-Footnote-1665729
+Node: Group Functions665817
+Ref: Group Functions-Footnote-1673711
+Node: Walking Arrays673924
+Node: Library Functions Summary675527
+Node: Library Exercises676928
+Node: Sample Programs678208
+Node: Running Examples678978
+Node: Clones679706
+Node: Cut Program680930
+Node: Egrep Program690649
+Ref: Egrep Program-Footnote-1698147
+Node: Id Program698257
+Node: Split Program701902
+Ref: Split Program-Footnote-1705350
+Node: Tee Program705478
+Node: Uniq Program708267
+Node: Wc Program715686
+Ref: Wc Program-Footnote-1719936
+Node: Miscellaneous Programs720030
+Node: Dupword Program721243
+Node: Alarm Program723274
+Node: Translate Program728078
+Ref: Translate Program-Footnote-1732643
+Node: Labels Program732913
+Ref: Labels Program-Footnote-1736264
+Node: Word Sorting736348
+Node: History Sorting740419
+Node: Extract Program742255
+Node: Simple Sed749780
+Node: Igawk Program752848
+Ref: Igawk Program-Footnote-1767172
+Ref: Igawk Program-Footnote-2767373
+Ref: Igawk Program-Footnote-3767495
+Node: Anagram Program767610
+Node: Signature Program770667
+Node: Programs Summary771914
+Node: Programs Exercises773107
+Ref: Programs Exercises-Footnote-1777238
+Node: Advanced Features777329
+Node: Nondecimal Data779277
+Node: Array Sorting780867
+Node: Controlling Array Traversal781564
+Ref: Controlling Array Traversal-Footnote-1789897
+Node: Array Sorting Functions790015
+Ref: Array Sorting Functions-Footnote-1793904
+Node: Two-way I/O794100
+Ref: Two-way I/O-Footnote-1799045
+Ref: Two-way I/O-Footnote-2799231
+Node: TCP/IP Networking799313
+Node: Profiling802186
+Node: Advanced Features Summary810463
+Node: Internationalization812396
+Node: I18N and L10N813876
+Node: Explaining gettext814562
+Ref: Explaining gettext-Footnote-1819587
+Ref: Explaining gettext-Footnote-2819771
+Node: Programmer i18n819936
+Ref: Programmer i18n-Footnote-1824802
+Node: Translator i18n824851
+Node: String Extraction825645
+Ref: String Extraction-Footnote-1826776
+Node: Printf Ordering826862
+Ref: Printf Ordering-Footnote-1829648
+Node: I18N Portability829712
+Ref: I18N Portability-Footnote-1832167
+Node: I18N Example832230
+Ref: I18N Example-Footnote-1835033
+Node: Gawk I18N835105
+Node: I18N Summary835743
+Node: Debugger837082
+Node: Debugging838104
+Node: Debugging Concepts838545
+Node: Debugging Terms840398
+Node: Awk Debugging842970
+Node: Sample Debugging Session843864
+Node: Debugger Invocation844384
+Node: Finding The Bug845768
+Node: List of Debugger Commands852243
+Node: Breakpoint Control853576
+Node: Debugger Execution Control857272
+Node: Viewing And Changing Data860636
+Node: Execution Stack864014
+Node: Debugger Info865651
+Node: Miscellaneous Debugger Commands869668
+Node: Readline Support874697
+Node: Limitations875589
+Node: Debugging Summary877703
+Node: Arbitrary Precision Arithmetic878871
+Node: Computer Arithmetic880287
+Ref: table-numeric-ranges883885
+Ref: Computer Arithmetic-Footnote-1884744
+Node: Math Definitions884801
+Ref: table-ieee-formats888089
+Ref: Math Definitions-Footnote-1888693
+Node: MPFR features888798
+Node: FP Math Caution890469
+Ref: FP Math Caution-Footnote-1891519
+Node: Inexactness of computations891888
+Node: Inexact representation892847
+Node: Comparing FP Values894204
+Node: Errors accumulate895286
+Node: Getting Accuracy896719
+Node: Try To Round899381
+Node: Setting precision900280
+Ref: table-predefined-precision-strings900964
+Node: Setting the rounding mode902753
+Ref: table-gawk-rounding-modes903117
+Ref: Setting the rounding mode-Footnote-1906572
+Node: Arbitrary Precision Integers906751
+Ref: Arbitrary Precision Integers-Footnote-1911650
+Node: POSIX Floating Point Problems911799
+Ref: POSIX Floating Point Problems-Footnote-1915672
+Node: Floating point summary915710
+Node: Dynamic Extensions917904
+Node: Extension Intro919456
+Node: Plugin License920722
+Node: Extension Mechanism Outline921519
+Ref: figure-load-extension921947
+Ref: figure-register-new-function923427
+Ref: figure-call-new-function924431
+Node: Extension API Description926417
+Node: Extension API Functions Introduction927867
+Node: General Data Types932691
+Ref: General Data Types-Footnote-1938430
+Node: Memory Allocation Functions938729
+Ref: Memory Allocation Functions-Footnote-1941568
+Node: Constructor Functions941664
+Node: Registration Functions943398
+Node: Extension Functions944083
+Node: Exit Callback Functions946380
+Node: Extension Version String947628
+Node: Input Parsers948293
+Node: Output Wrappers958172
+Node: Two-way processors962687
+Node: Printing Messages964891
+Ref: Printing Messages-Footnote-1965967
+Node: Updating `ERRNO'966119
+Node: Requesting Values966859
+Ref: table-value-types-returned967587
+Node: Accessing Parameters968544
+Node: Symbol Table Access969775
+Node: Symbol table by name970289
+Node: Symbol table by cookie972270
+Ref: Symbol table by cookie-Footnote-1976414
+Node: Cached values976477
+Ref: Cached values-Footnote-1979976
+Node: Array Manipulation980067
+Ref: Array Manipulation-Footnote-1981165
+Node: Array Data Types981202
+Ref: Array Data Types-Footnote-1983857
+Node: Array Functions983949
+Node: Flattening Arrays987803
+Node: Creating Arrays994695
+Node: Extension API Variables999466
+Node: Extension Versioning1000102
+Node: Extension API Informational Variables1002003
+Node: Extension API Boilerplate1003068
+Node: Finding Extensions1006877
+Node: Extension Example1007437
+Node: Internal File Description1008209
+Node: Internal File Ops1012276
+Ref: Internal File Ops-Footnote-11023946
+Node: Using Internal File Ops1024086
+Ref: Using Internal File Ops-Footnote-11026469
+Node: Extension Samples1026742
+Node: Extension Sample File Functions1028268
+Node: Extension Sample Fnmatch1035906
+Node: Extension Sample Fork1037397
+Node: Extension Sample Inplace1038612
+Node: Extension Sample Ord1040287
+Node: Extension Sample Readdir1041123
+Ref: table-readdir-file-types1041999
+Node: Extension Sample Revout1042810
+Node: Extension Sample Rev2way1043400
+Node: Extension Sample Read write array1044140
+Node: Extension Sample Readfile1046080
+Node: Extension Sample Time1047175
+Node: Extension Sample API Tests1048524
+Node: gawkextlib1049015
+Node: Extension summary1051673
+Node: Extension Exercises1055362
+Node: Language History1056084
+Node: V7/SVR3.11057740
+Node: SVR41059921
+Node: POSIX1061366
+Node: BTL1062755
+Node: POSIX/GNU1063489
+Node: Feature History1069113
+Node: Common Extensions1082211
+Node: Ranges and Locales1083535
+Ref: Ranges and Locales-Footnote-11088153
+Ref: Ranges and Locales-Footnote-21088180
+Ref: Ranges and Locales-Footnote-31088414
+Node: Contributors1088635
+Node: History summary1094176
+Node: Installation1095546
+Node: Gawk Distribution1096492
+Node: Getting1096976
+Node: Extracting1097799
+Node: Distribution contents1099434
+Node: Unix Installation1105499
+Node: Quick Installation1106182
+Node: Shell Startup Files1108593
+Node: Additional Configuration Options1109672
+Node: Configuration Philosophy1111411
+Node: Non-Unix Installation1113780
+Node: PC Installation1114238
+Node: PC Binary Installation1115557
+Node: PC Compiling1117405
+Ref: PC Compiling-Footnote-11120426
+Node: PC Testing1120535
+Node: PC Using1121711
+Node: Cygwin1125826
+Node: MSYS1126649
+Node: VMS Installation1127149
+Node: VMS Compilation1127941
+Ref: VMS Compilation-Footnote-11129163
+Node: VMS Dynamic Extensions1129221
+Node: VMS Installation Details1130905
+Node: VMS Running1133157
+Node: VMS GNV1135993
+Node: VMS Old Gawk1136727
+Node: Bugs1137197
+Node: Other Versions1141080
+Node: Installation summary1147508
+Node: Notes1148564
+Node: Compatibility Mode1149429
+Node: Additions1150211
+Node: Accessing The Source1151136
+Node: Adding Code1152572
+Node: New Ports1158737
+Node: Derived Files1163219
+Ref: Derived Files-Footnote-11168694
+Ref: Derived Files-Footnote-21168728
+Ref: Derived Files-Footnote-31169324
+Node: Future Extensions1169438
+Node: Implementation Limitations1170044
+Node: Extension Design1171292
+Node: Old Extension Problems1172446
+Ref: Old Extension Problems-Footnote-11173963
+Node: Extension New Mechanism Goals1174020
+Ref: Extension New Mechanism Goals-Footnote-11177380
+Node: Extension Other Design Decisions1177569
+Node: Extension Future Growth1179677
+Node: Old Extension Mechanism1180513
+Node: Notes summary1182275
+Node: Basic Concepts1183461
+Node: Basic High Level1184142
+Ref: figure-general-flow1184414
+Ref: figure-process-flow1185013
+Ref: Basic High Level-Footnote-11188242
+Node: Basic Data Typing1188427
+Node: Glossary1191755
+Node: Copying1216913
+Node: GNU Free Documentation License1254469
+Node: Index1279605

End Tag Table
diff --git a/doc/gawk.texi b/doc/gawk.texi
index 57c37746..f0e17602 100644
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -603,6 +603,7 @@ particular records in a file and perform operations upon them.
@code{getline}.
* Getline Summary:: Summary of @code{getline} Variants.
* Read Timeout:: Reading input with a timeout.
+* Retrying I/O:: Retrying I/O after certain errors.
* Command-line directories:: What happens if you put a directory on
the command line.
* Input Summary:: Input summary.
@@ -6335,6 +6336,7 @@ used with it do not have to be named on the @command{awk} command line
* Getline:: Reading files under explicit program control
using the @code{getline} function.
* Read Timeout:: Reading input with a timeout.
+* Retrying I/O:: Retrying I/O after certain errors.
* Command-line directories:: What happens if you put a directory on the
command line.
* Input Summary:: Input summary.
@@ -8142,6 +8144,11 @@ it encounters the end of the file. If there is some error in getting
a record, such as a file that cannot be opened, then @code{getline}
returns @minus{}1. In this case, @command{gawk} sets the variable
@code{ERRNO} to a string describing the error that occurred.
+If the @code{errno} variable indicates that the I/O operation may be
+retried, and @code{PROCINFO["input", "RETRY"]} is set, then @minus{}2
+will be returned instead of @minus{}1, and further calls to @code{getline}
+may be attemped. @DBXREF{Retrying I/O} for further information about
+this feature.
In the following examples, @var{command} stands for a string value that
represents a shell command.
@@ -8794,7 +8801,8 @@ on a per command or connection basis.
the attempt to read from the underlying device may
succeed in a later attempt. This is a limitation, and it also
means that you cannot use this to multiplex input from
-two or more sources.
+two or more sources. @DBXREF{Retrying I/O} for a way to enable
+later I/O attempts to succeed.
Assigning a timeout value prevents read operations from
blocking indefinitely. But bear in mind that there are other ways
@@ -8804,6 +8812,35 @@ a connection before it can start reading any data,
or the attempt to open a FIFO special file for reading can block
indefinitely until some other process opens it for writing.
+@node Retrying I/O
+@section Retrying I/O on Certain Input Errors
+@cindex retrying I/O
+
+@cindex differences in @command{awk} and @command{gawk}, retrying I/O
+This @value{SECTION} describes a feature that is specific to @command{gawk}.
+
+When @command{gawk} encounters an error while reading input, it will by default
+return @minus{}1 from getline, and subsequent attempts to read from that file
+will result in an end-of-file indication. However, you may optionally instruct
+@command{gawk} to allow I/O to be retried when certain errors are encountered
+by setting setting a special element
+in the @code{PROCINFO} array (@pxref{Auto-set}):
+
+@example
+PROCINFO["input_name", "RETRY"]
+@end example
+
+When set, this causes @command{gawk} to check the value of the system
+@code{errno} variable when an I/O error occurs. If @code{errno} indicates
+a subsequent I/O attempt may succeed, @code{getline} will instead return
+@minus{}2 and
+further calls to @code{getline} may succeed. This applies to @code{errno}
+values EAGAIN, EWOULDBLOCK, EINTR, or ETIMEDOUT.
+
+This feature is useful in conjunction with
+@code{PROCINFO["input_name", "READ_TIMEOUT"]} or situations where a file
+descriptor has been configured to behave in a non-blocking fashion.
+
@node Command-line directories
@section Directories on the Command Line
@cindex differences in @command{awk} and @command{gawk}, command-line directories
@@ -14942,6 +14979,11 @@ value to be meaningful when an I/O operation returns a failure value,
such as @code{getline} returning @minus{}1. You are, of course, free
to clear it yourself before doing an I/O operation.
+If the value of @code{ERRNO} corresponds to a system error in the C
+@code{errno} variable, then @code{PROCINFO["errno"]} will be set to the value
+of @code{errno}. For non-system errors, @code{PROCINFO["errno"]} will
+be zero.
+
@cindex @code{FILENAME} variable
@cindex dark corner, @code{FILENAME} variable
@item @code{FILENAME}
@@ -15010,6 +15052,10 @@ are guaranteed to be available:
@item PROCINFO["egid"]
The value of the @code{getegid()} system call.
+@item PROCINFO["errno"]
+The value of the C @code{errno} variable when @code{ERRNO} is set to
+the associated error message.
+
@item PROCINFO["euid"]
@cindex effective user ID of @command{gawk} user
The value of the @code{geteuid()} system call.
@@ -15149,6 +15195,11 @@ open input file, pipe, or coprocess.
@DBXREF{Read Timeout} for more information.
@item
+It may be used to indicate that I/O may be retried when it fails due to
+certain errors.
+@DBXREF{Retrying I/O} for more information.
+
+@item
It may be used to cause coprocesses to communicate over pseudo-ttys
instead of through two-way pipes; this is discussed further in
@ref{Two-way I/O}.
diff --git a/doc/gawktexi.in b/doc/gawktexi.in
index b850dd15..638bb909 100644
--- a/doc/gawktexi.in
+++ b/doc/gawktexi.in
@@ -598,6 +598,7 @@ particular records in a file and perform operations upon them.
@code{getline}.
* Getline Summary:: Summary of @code{getline} Variants.
* Read Timeout:: Reading input with a timeout.
+* Retrying I/O:: Retrying I/O after certain errors.
* Command-line directories:: What happens if you put a directory on
the command line.
* Input Summary:: Input summary.
@@ -6119,6 +6120,7 @@ used with it do not have to be named on the @command{awk} command line
* Getline:: Reading files under explicit program control
using the @code{getline} function.
* Read Timeout:: Reading input with a timeout.
+* Retrying I/O:: Retrying I/O after certain errors.
* Command-line directories:: What happens if you put a directory on the
command line.
* Input Summary:: Input summary.
@@ -7743,6 +7745,11 @@ it encounters the end of the file. If there is some error in getting
a record, such as a file that cannot be opened, then @code{getline}
returns @minus{}1. In this case, @command{gawk} sets the variable
@code{ERRNO} to a string describing the error that occurred.
+If the @code{errno} variable indicates that the I/O operation may be
+retried, and @code{PROCINFO["input", "RETRY"]} is set, then @minus{}2
+will be returned instead of @minus{}1, and further calls to @code{getline}
+may be attemped. @DBXREF{Retrying I/O} for further information about
+this feature.
In the following examples, @var{command} stands for a string value that
represents a shell command.
@@ -8395,7 +8402,8 @@ on a per command or connection basis.
the attempt to read from the underlying device may
succeed in a later attempt. This is a limitation, and it also
means that you cannot use this to multiplex input from
-two or more sources.
+two or more sources. @DBXREF{Retrying I/O} for a way to enable
+later I/O attempts to succeed.
Assigning a timeout value prevents read operations from
blocking indefinitely. But bear in mind that there are other ways
@@ -8405,6 +8413,35 @@ a connection before it can start reading any data,
or the attempt to open a FIFO special file for reading can block
indefinitely until some other process opens it for writing.
+@node Retrying I/O
+@section Retrying I/O on Certain Input Errors
+@cindex retrying I/O
+
+@cindex differences in @command{awk} and @command{gawk}, retrying I/O
+This @value{SECTION} describes a feature that is specific to @command{gawk}.
+
+When @command{gawk} encounters an error while reading input, it will by default
+return @minus{}1 from getline, and subsequent attempts to read from that file
+will result in an end-of-file indication. However, you may optionally instruct
+@command{gawk} to allow I/O to be retried when certain errors are encountered
+by setting setting a special element
+in the @code{PROCINFO} array (@pxref{Auto-set}):
+
+@example
+PROCINFO["input_name", "RETRY"]
+@end example
+
+When set, this causes @command{gawk} to check the value of the system
+@code{errno} variable when an I/O error occurs. If @code{errno} indicates
+a subsequent I/O attempt may succeed, @code{getline} will instead return
+@minus{}2 and
+further calls to @code{getline} may succeed. This applies to @code{errno}
+values EAGAIN, EWOULDBLOCK, EINTR, or ETIMEDOUT.
+
+This feature is useful in conjunction with
+@code{PROCINFO["input_name", "READ_TIMEOUT"]} or situations where a file
+descriptor has been configured to behave in a non-blocking fashion.
+
@node Command-line directories
@section Directories on the Command Line
@cindex differences in @command{awk} and @command{gawk}, command-line directories
@@ -14271,6 +14308,11 @@ value to be meaningful when an I/O operation returns a failure value,
such as @code{getline} returning @minus{}1. You are, of course, free
to clear it yourself before doing an I/O operation.
+If the value of @code{ERRNO} corresponds to a system error in the C
+@code{errno} variable, then @code{PROCINFO["errno"]} will be set to the value
+of @code{errno}. For non-system errors, @code{PROCINFO["errno"]} will
+be zero.
+
@cindex @code{FILENAME} variable
@cindex dark corner, @code{FILENAME} variable
@item @code{FILENAME}
@@ -14339,6 +14381,10 @@ are guaranteed to be available:
@item PROCINFO["egid"]
The value of the @code{getegid()} system call.
+@item PROCINFO["errno"]
+The value of the C @code{errno} variable when @code{ERRNO} is set to
+the associated error message.
+
@item PROCINFO["euid"]
@cindex effective user ID of @command{gawk} user
The value of the @code{geteuid()} system call.
@@ -14478,6 +14524,11 @@ open input file, pipe, or coprocess.
@DBXREF{Read Timeout} for more information.
@item
+It may be used to indicate that I/O may be retried when it fails due to
+certain errors.
+@DBXREF{Retrying I/O} for more information.
+
+@item
It may be used to cause coprocesses to communicate over pseudo-ttys
instead of through two-way pipes; this is discussed further in
@ref{Two-way I/O}.
diff --git a/gawkapi.h b/gawkapi.h
index 22b3be3d..6893fda0 100644
--- a/gawkapi.h
+++ b/gawkapi.h
@@ -504,7 +504,7 @@ typedef struct gawk_api {
awk_value_t *result);
/*
- * Convert a paramter that was undefined into an array
+ * Convert a parameter that was undefined into an array
* (provide call-by-reference for arrays). Returns false
* if count is too big, or if the argument's type is
* not undefined.