diff options
-rw-r--r-- | doc/ChangeLog | 6 | ||||
-rw-r--r-- | doc/awkcard.in | 4 | ||||
-rw-r--r-- | doc/gawk.1 | 191 | ||||
-rw-r--r-- | doc/gawk.info | 808 | ||||
-rw-r--r-- | doc/gawk.texi | 26 | ||||
-rw-r--r-- | doc/gawktexi.in | 26 |
6 files changed, 594 insertions, 467 deletions
diff --git a/doc/ChangeLog b/doc/ChangeLog index 30eac63c..acf63958 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,3 +1,9 @@ +2017-10-01 Arnold D. Robbins <arnold@skeeve.com> + + * awkcard.in: One more small change. + * gawk.1: Brought up to date and polished a bit. + * gawktexi.in: Some small additional fixes. + 2017-09-29 Arnold D. Robbins <arnold@skeeve.com> * awkcard.in: Finish changes (we hope) for next release. diff --git a/doc/awkcard.in b/doc/awkcard.in index da1081b2..31e37a83 100644 --- a/doc/awkcard.in +++ b/doc/awkcard.in @@ -1327,8 +1327,8 @@ The next input record comes from the next input file. Update \*(FCFILENAME\fP \*(CBand \*(FCARGIND\fP\*(CD, reset \*(FCFNR\fP to 1, and start over with the first -pattern. Upon end -of input data, execute any \*(FCEND\fP rule(s). +pattern. At end +of file, execute any \*(CB\*(FCENDFILE\fP and\*(CD \*(FCEND\fP rule(s). .in -.2i .sp .5 .fi @@ -13,7 +13,7 @@ . if \w'\(rq' .ds rq "\(rq . \} .\} -.TH GAWK 1 "Aug 13 2017" "Free Software Foundation" "Utility Commands" +.TH GAWK 1 "Oct 01 2017" "Free Software Foundation" "Utility Commands" .SH NAME gawk \- pattern scanning and processing language .SH SYNOPSIS @@ -36,7 +36,7 @@ file .\|.\|. .I Gawk is the \*(GN Project's implementation of the \*(AK programming language. It conforms to the definition of the language in -the \*(PX 1003.1 Standard. +the \*(PX 1003.1 standard. This version in turn is based on the description in .IR "The AWK Programming Language" , by Aho, Kernighan, and Weinberger. @@ -44,14 +44,14 @@ by Aho, Kernighan, and Weinberger. provides the additional features found in the current version of Brian Kernighan's .I awk -and a number of \*(GN-specific extensions. +and numerous \*(GN-specific extensions. .PP The command line consists of options to .I gawk itself, the \*(AK program text (if not supplied via the .B \-f or -.B \-\^\-file +.B \-i options), and values to be made available in the .B ARGC @@ -249,7 +249,7 @@ as \*(AK program source code. This option allows the easy intermixing of library functions (used via the .B \-f and -.B \-\^\-file +.B \-i options) with source code entered on the command line. It is intended primarily for medium to large \*(AK programs used in shell scripts. @@ -316,7 +316,9 @@ the main program source. .TP .PD .BI \-\^\-load " lib" -Load a shared library +Load a +.I gawk +extension from the shared library .IR lib . This searches for the library using the .B AWKLIBPATH @@ -351,6 +353,9 @@ Force arbitrary precision arithmetic on numbers. This option has no effect if .I gawk is not compiled to use the GNU MPFR and MP libraries. +(In such a case, +.I gawk +issues a warning.) .TP .PD 0 .B \-n @@ -365,7 +370,7 @@ Recognize octal and hexadecimal values in input data. .TP .PD .B \-\^\-use\-lc\-numeric -This forces +Force .I gawk to use the locale's decimal point character when parsing input data. Although the POSIX standard requires this behavior, and @@ -506,7 +511,7 @@ default optimizations upon the internal representation of the program. .TP .PD .BI \-\^\-sandbox -Runs +Run .I gawk in sandbox mode, disabling the .B system() @@ -516,8 +521,8 @@ output redirection with .BR print " and " printf , and loading dynamic extensions. Command execution (through pipelines) is also disabled. -This effectively blocks a script from accessing local resources -(except for the files specified on the command line). +This effectively blocks a script from accessing local resources, +except for the files specified on the command line. .TP .PD 0 .B \-t @@ -558,14 +563,18 @@ In normal operation, as long as program text has been supplied, unknown options are passed on to the \*(AK program in the .B ARGV array for processing. This is particularly useful for running \*(AK -programs via the \*(lq#!\*(rq executable interpreter mechanism. +programs via the +.B #! +executable interpreter mechanism. .PP For \*(PX compatibility, the .B \-W option may be used, followed by the name of a long option. .SH AWK PROGRAM EXECUTION .PP -An \*(AK program consists of a sequence of pattern-action statements +An \*(AK program consists of a sequence of +optional directives, +pattern-action statements, and optional function definitions. .RS .PP @@ -609,7 +618,7 @@ option. .PP Lines beginning with .B @load -may be used to load shared libraries into your program. This is equivalent +may be used to load extension functions into your program. This is equivalent to using the .B \-l option. @@ -659,7 +668,7 @@ and then proceeds to read each file named in the .B ARGV array (up to -.BR ARGV[ARGC] ). +.BR ARGV[ARGC\-1] ). If there are no files named on the command line, .I gawk reads the standard input. @@ -739,7 +748,11 @@ treating directories on the command line as a fatal error. \*(AK variables are dynamic; they come into existence when they are first used. Their values are either floating-point numbers or strings, or both, -depending upon how they are used. \*(AK also has one dimensional +depending upon how they are used. +Additionally, +.I gawk +allows variables to have regular-expression type. +\*(AK also has one dimensional arrays; arrays with multiple dimensions may be simulated. .I Gawk provides true arrays of arrays; see @@ -764,7 +777,7 @@ value is used for separating records. If .B RS is set to the null string, then records are separated by -blank lines. +empty lines. When .B RS is set to the null string, the newline character always acts as @@ -948,7 +961,7 @@ or during a .BR close() , then .B ERRNO -will contain +is set to a string describing the error. The value is subject to translation in non-English locales. If the string in @@ -1114,6 +1127,12 @@ operator to test for these elements. The following elements are guaranteed to be available: .RS .TP \w'\fBPROCINFO["strftime"]\fR'u+1n +\fBPROCINFO["argv"]\fP +The command line arguments as received by +.I gawk +at the C-language level. +The subscripts start from zero. +.TP \fBPROCINFO["egid"]\fP The value of the .IR getegid (2) @@ -1268,7 +1287,7 @@ If an I/O error that may be retried occurs when reading data from .IR input , and this array entry exists, then .B getline -will return \-2 instead of following the default behavior of returning \-1 +returns \-2 instead of following the default behavior of returning \-1 and configuring .IR input to return no further data. @@ -1377,7 +1396,7 @@ print foo # prints 4 .in -5m .sp The -.B isarray() +.B typeof() function may be used to test if an element in .B SYMTAB is an array. @@ -1412,7 +1431,7 @@ x[i, j, k] = "hello, world\en" .ft R .RE .PP -assigns the string \fB"hello, world\en"\fR to the element of the array +assigns the string \fB"hello,\ world\en"\fR to the element of the array .B x which is indexed by the string \fB"A\e034B\e034C"\fR. All arrays in \*(AK are associative, i.e., indexed by string values. @@ -1482,15 +1501,16 @@ statement. .SS Variable Typing And Conversion .PP Variables and fields -may be (floating point) numbers, or strings, or both. How the +may be (floating point) numbers, or strings, or both. +They may also be regular expressions. How the value of a variable is interpreted depends upon its context. If used in a numeric expression, it will be treated as a number; if used as a string it will be treated as a string. .PP -To force a variable to be treated as a number, add 0 to it; to force it +To force a variable to be treated as a number, add zero to it; to force it to be treated as a string, concatenate it with the null string. .PP -Uninitialized variables have the numeric value 0 and the string value "" +Uninitialized variables have the numeric value zero and the string value "" (the null, or empty, string). .PP When a string must be converted to a number, the conversion is accomplished @@ -1620,17 +1640,35 @@ E.g., \fB"\e033"\fR is the \s-1ASCII\s+1 \s-1ESC\s+1 (escape) character. The literal character .IR c\^ . .PP -The escape sequences may also be used inside constant regular expressions -(e.g., -.B "/[\ \et\ef\en\er\ev]/" -matches whitespace characters). -.PP In compatibility mode, the characters represented by octal and hexadecimal escape sequences are treated literally when used in regular expression constants. Thus, .B /a\e52b/ is equivalent to .BR /a\e*b/ . +.SS "Regexp Constants" +A regular expression constant is a sequence of characters enclosed +between forward slashes (like +.BR /value/ ). +Regular expression matching is described more fully below; see +.BR "Regular Expressions" . +.PP +The escape sequences described earlier may also be used inside +constant regular expressions +(e.g., +.B "/[\ \et\ef\en\er\ev]/" +matches whitespace characters). +.TP +.I Gawk +provides +.I "strongly typed" +regular expression constants. These are written with a leading +.B @ +symbol (like so: +.BR @/value/ ). +Such constants may be assigned to scalars (variables, array elements) +and passed to user-defined functions. Variables that have been so +assigned have regular expression type. .SH PATTERNS AND ACTIONS \*(AK is a line-oriented language. The pattern comes first, and then the action. Action statements are enclosed in @@ -1638,8 +1676,8 @@ action. Action statements are enclosed in and .BR } . Either the pattern may be missing, or the action may be missing, but, -of course, not both. If the pattern is missing, the action is -executed for every single record of input. +of course, not both. If the pattern is missing, the action +executes for every single record of input. A missing action is equivalent to .RS .PP @@ -1652,7 +1690,7 @@ Comments begin with the .B # character, and continue until the end of the line. -Blank lines may be used to separate statements. +Empty lines may be used to separate statements. Normally, a statement ends with a newline, however, this is not the case for lines ending in a comma, @@ -1731,7 +1769,7 @@ Inside the .B BEGINFILE rule, the value of .B ERRNO -will be the empty string if the file was opened successfully. +is the empty string if the file was opened successfully. Otherwise, there is some problem with the file and the code should use .B nextfile @@ -2114,7 +2152,7 @@ Piped I/O for and .BR printf . .TP -.B "< > <= >= != ==" +.B "< > <= >= == !=" The regular relational operators. .TP .B "~ !~" @@ -2193,11 +2231,11 @@ The input/output statements are as follows: .PP .TP "\w'\fBprintf \fIfmt, expr-list\fR'u+1n" \fBclose(\fIfile \fR[\fB, \fIhow\fR]\fB)\fR -Close file, pipe or co-process. +Close file, pipe or coprocess. The optional .I how should only be used when closing one end of a -two-way pipe to a co-process. +two-way pipe to a coprocess. It must be a string value, either \fB"to"\fR or \fB"from"\fR. .TP @@ -2247,14 +2285,14 @@ as above, and \fIcommand\fB |& getline \fR[\fIvar\fR] Run .I command -as a co-process +as a coprocess piping the output either into .B $0 or .IR var , as above, and .BR RT . -Co-processes are a +Coprocesses are a .I gawk extension. .RI ( command @@ -2285,6 +2323,8 @@ is reset to 1, and processing starts over with the first pattern in the Upon reaching the end of the input data, .I gawk executes any +.B ENDFILE +and .B END rule(s). .TP @@ -2321,7 +2361,7 @@ Execute the command .IR cmd-line , and return the exit status. (This may not be available on non-\*(PX systems.) -See the manual for the full details on the exit status. +See \*(EP for the full details on the exit status. .TP \&\fBfflush(\fR[\fIfile\^\fR]\fB)\fR Flush any buffers associated with the open output file or pipe @@ -2345,19 +2385,19 @@ Appends output to the Writes on a pipe. .TP .BI "print .\|.\|. |&" " command" -Sends data to a co-process or socket. +Sends data to a coprocess or socket. (See also the subsection .BR "Special File Names" , below.) .PP The .B getline -command returns 1 on success, 0 on end of file, and \-1 on an error. +command returns 1 on success, zero 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["\fIinput\^\fP", "RETRY"]\fR -is set, then \-2 will be returned instead of \-1, and further calls to +is set, then \-2 is returned instead of \-1, and further calls to .B getline may be attempted. Upon an error, @@ -2366,7 +2406,7 @@ is set to a string describing the problem. .PP .BR NOTE : Failure in opening a two-way socket results in a non-fatal error being -returned to the calling function. If using a pipe, co-process, or socket to +returned to the calling function. If using a pipe, coprocess, or socket to .BR getline , or from .B print @@ -2377,7 +2417,7 @@ within a loop, you use .B close() to create new instances of the command or socket. -\*(AK does not automatically close pipes, sockets, or co-processes when +\*(AK does not automatically close pipes, sockets, or coprocesses when they return EOF. .SS The \fIprintf\fP\^ Statement .PP @@ -2525,7 +2565,7 @@ trailing zeros are not removed from the result. .B 0 A leading .B 0 -(zero) acts as a flag, that indicates output should be +(zero) acts as a flag, indicating that output should be padded with zeroes instead of spaces. This applies only to the numeric output formats. This flag only has an effect when the field width is wider than the @@ -2652,7 +2692,7 @@ print "You blew it!" | "cat 1>&2" .PP The following special filenames may be used with the .B |& -co-process operator for creating TCP/IP network connections: +coprocess operator for creating TCP/IP network connections: .TP .PD 0 .BI /inet/tcp/ lport / rhost / rport @@ -2737,7 +2777,7 @@ The natural logarithm function. .B rand() Return a random number .IR N , -between 0 and 1, +between zero and one, such that 0 \(<= \fIN\fP < 1. .TP .BI sin( expr ) @@ -2817,9 +2857,9 @@ The original values are lost; thus provide a second array if you wish to preserve the original. The purpose of the optional string .I how -is the same as described in -.B asort() -above. +is the same as described +previously for +.BR asort() . .TP \fBgensub(\fIr\fB, \fIs\fB, \fIh \fR[\fB, \fIt\fR]\fB)\fR Search the target string @@ -2889,8 +2929,7 @@ to get a literal .BR & . (This must be typed as \fB"\e\e&"\fP; see \*(EP -for a fuller discussion of the rules for -.BR & 's +for a fuller discussion of the rules for ampersands and backslashes in the replacement text of .BR sub() , .BR gsub() , @@ -2902,7 +2941,7 @@ Return the index of the string .I t in the string .IR s , -or 0 if +or zero if .I t is not present. (This implies that character indices start at one.) @@ -2926,7 +2965,7 @@ Return the position in .I s where the regular expression .I r -occurs, or 0 if +occurs, or zero if .I r is not present, and set the values of .B RSTART @@ -2949,7 +2988,7 @@ are filled with the portions of that match the corresponding parenthesized subexpression in .IR r . -The 0'th element of +The zero'th element of .I a contains the portion of @@ -3071,6 +3110,7 @@ Otherwise, assume it is a decimal number. Just like .BR gsub() , but replace only the first matching substring. +Return either zero or one. .TP \fBsubstr(\fIs\fB, \fIi \fR[\fB, \fIn\fR]\fB)\fR Return the at most @@ -3143,7 +3183,9 @@ If is present and is non-zero or non-null, the time is assumed to be in the UTC time zone; otherwise, the time is assumed to be in the local time zone. -If the daylight saving flag is positive, +If the +.I DST +daylight saving flag is positive, the time is assumed to be daylight saving time; if zero, the time is assumed to be standard time; and if negative (the default), @@ -3240,6 +3282,7 @@ The following function is for use with multidimensional arrays. Return true if .I x is an array, false otherwise. +This function is deprecated. .PP You can tell the type of any variable or array element with the following function: @@ -3343,7 +3386,7 @@ Functions in \*(AK are defined as follows: \fBfunction \fIname\fB(\fIparameter list\fB) { \fIstatements \fB}\fR .RE .PP -Functions are executed when they are called from within expressions +Functions execute when they are called from within expressions in either patterns or actions. Actual parameters supplied in the function call are used to instantiate the formal parameters declared in the function. Arrays are passed by reference, other variables are passed by value. @@ -3576,7 +3619,7 @@ in .I gawk also returns its current seed. .PP -Other new features are: +Other features are: The use of multiple .B \-f options (from MKS @@ -3672,16 +3715,12 @@ mechanism). The .B \ex escape sequence. -(Disabled with -.BR \-\^\-posix .) .TP \(bu The ability to continue lines after .B ? and .BR : . -(Disabled with -.BR \-\^\-posix .) .TP \(bu Octal and hexadecimal constants in AWK programs. @@ -3693,6 +3732,8 @@ The .BR BINMODE , .BR ERRNO , .BR LINT , +.BR PREC , +.BR ROUNDMODE , .B RT and .B TEXTDOMAIN @@ -3715,8 +3756,11 @@ variable and field splitting based on field values. .TP \(bu The +.BR FUNCTAB , +.BR SYMTAB , +and .B PROCINFO -array is not available. +arrays are not available. .\" I/O stuff .TP \(bu @@ -3730,7 +3774,7 @@ The special file names available for I/O redirection are not recognized. \(bu The .B |& -operator for creating co-processes. +operator for creating coprocesses. .TP \(bu The @@ -3810,6 +3854,12 @@ functions. .TP \(bu Localizable strings. +.TP +\(bu +Non-fatal I/O. +.TP +\(bu +Retryable I/O. .PP The \*(AK book does not define the return value of the .B close() @@ -3823,7 +3873,7 @@ or when closing an output file or pipe, respectively. It returns the process's exit status when closing an input pipe. The return value is \-1 if the named file, pipe -or co-process was not opened with a redirection. +or coprocess was not opened with a redirection. .PP When .I gawk @@ -3883,7 +3933,9 @@ searches when looking for files named via the .B \-i and .B \-\^\-include -options. If the initial search fails, the path is searched again after +options, and the +.B @include +directive. If the initial search fails, the path is searched again after appending .B \&.awk to the filename. @@ -4047,6 +4099,8 @@ it remains only for backwards compatibility. .IR getgid (2), .IR getegid (2), .IR getgroups (2), +.IR printf (3), +.IR strftime (3), .IR usleep (3) .PP .IR "The AWK Programming Language" , @@ -4058,7 +4112,12 @@ Edition 4.2, shipped with the .I gawk source. The current version of this document is available online at -.BR http://www.gnu.org/software/gawk/manual . +.BR https://www.gnu.org/software/gawk/manual . +.PP +The GNU +.B gettext +documentation, available online at +.BR https://www.gnu.org/software/gettext . .SH EXAMPLES .nf Print and sort the login names of all users: diff --git a/doc/gawk.info b/doc/gawk.info index 5b757a51..e19e7b66 100644 --- a/doc/gawk.info +++ b/doc/gawk.info @@ -10997,6 +10997,19 @@ they are not special: Set a timeout for reading from input redirection INPUT_NAME. *Note Read Timeout:: for more information. + 'PROCINFO["IINPUT_NAME", "RETRY"]' + If an I/O error that may be retried occurs when reading data + from INPUT_NAME, and this array entry exists, then 'getline' + returns -2 instead of following the default behavior of + returning -1 and configuring INPUT_NAME to return no further + data. An I/O error that may be retried is one where 'errno' + has the value 'EAGAIN', 'EWOULDBLOCK', 'EINTR', or + 'ETIMEDOUT'. This may be useful in conjunction with + '\fBPROCINFO["INPUT_NAME", "READ_TIMEOUT"]' or situations + where a file descriptor has been configured to behave in a + non-blocking fashion. *Note Retrying Input:: for more + information. + 'PROCINFO["sorted_in"]' If this element exists in 'PROCINFO', its value controls the order in which array indices will be processed by 'for (INDX @@ -13455,9 +13468,9 @@ enclosed in square brackets ([ ]): preceding year 1 and year -1 preceding year 0. If UTC-FLAG is present and is either nonzero or non-null, the time is assumed to be in the UTC time zone; otherwise, 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), + the local time zone. If the DST 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. @@ -29486,16 +29499,25 @@ B.4.1 Submitting Bug Reports ---------------------------- Before reporting a bug, make sure you have really found a genuine bug. -Carefully reread the documentation and see if it says you can do what -you're trying to do. If it's not clear whether you should be able to do -something or not, report that too; it's a bug in the documentation! - - Before reporting a bug or trying to fix it yourself, try to isolate -it to the smallest possible 'awk' program and input data file that -reproduce the problem. Then send us the program and data file, some -idea of what kind of Unix system you're using, the compiler you used to -compile 'gawk', and the exact results 'gawk' gave you. Also say what -you expected to occur; this helps us decide whether the problem is +First, verify that you have the latest version of 'gawk'. Many bugs +(usually subtle ones) are fixed at each release, and if yours is out of +date, the problem may already have been solved. + + Second, please see if setting the environment variable 'LC_ALL' to +'LC_ALL=C' causes things to behave as you expect. If so, it's a locale +issue, and may or may not really be a bug. + + Third, carefully reread the documentation and see if it says you can +do what you're trying to do. If it's not clear whether you should be +able to do something or not, report that too; it's a bug in the +documentation! + + Finally, before reporting a bug or trying to fix it yourself, try to +isolate it to the smallest possible 'awk' program and input data file +that reproduce the problem. Then send us the program and data file, +some idea of what kind of Unix system you're using, the compiler you +used to compile 'gawk', and the exact results 'gawk' gave you. Also say +what you expected to occur; this helps us decide whether the problem is really in the documentation. Make sure to include the version number of 'gawk' you are using. You @@ -33415,8 +33437,8 @@ Index * buffers, flushing <1>: I/O Functions. (line 166) * buffers, operators for: GNU Regexp Operators. (line 51) -* bug reports, email address, bug-gawk@gnu.org: Bug address. (line 22) -* bug-gawk@gnu.org bug reporting address: Bug address. (line 22) +* bug reports, email address, bug-gawk@gnu.org: Bug address. (line 31) +* bug-gawk@gnu.org bug reporting address: Bug address. (line 31) * built-in functions: Functions. (line 6) * built-in functions, evaluation order: Calling Built-in. (line 30) * BusyBox Awk: Other Versions. (line 92) @@ -33629,7 +33651,7 @@ Index * dark corner, field separators: Full Line Fields. (line 22) * dark corner, FILENAME variable: Getline Notes. (line 19) * dark corner, FILENAME variable <1>: Auto-set. (line 108) -* dark corner, FNR/NR variables: Auto-set. (line 377) +* dark corner, FNR/NR variables: Auto-set. (line 390) * dark corner, format-control characters: Control Letters. (line 18) * dark corner, format-control characters <1>: Control Letters. (line 93) @@ -33863,7 +33885,7 @@ Index (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 315) +* differences in awk and gawk, RT variable: Auto-set. (line 328) * differences in awk and gawk, single-character fields: Single Character Fields. (line 6) * differences in awk and gawk, split() function: String Functions. @@ -33871,7 +33893,7 @@ Index * differences in awk and gawk, strings: Scalar Constants. (line 20) * differences in awk and gawk, strings, storing: gawk split records. (line 76) -* differences in awk and gawk, SYMTAB variable: Auto-set. (line 319) +* differences in awk and gawk, SYMTAB variable: Auto-set. (line 332) * differences in awk and gawk, TEXTDOMAIN variable: User-modified. (line 155) * differences in awk and gawk, trunc-mod operation: Arithmetic Ops. @@ -33924,7 +33946,7 @@ Index * elements of arrays: Reference to Elements. (line 6) * email address for bug reports, bug-gawk@gnu.org: Bug address. - (line 22) + (line 31) * empty array elements: Reference to Elements. (line 18) * empty pattern: Empty. (line 6) @@ -34186,7 +34208,7 @@ Index (line 12) * FNR variable: Records. (line 6) * FNR variable <1>: Auto-set. (line 118) -* FNR variable, changing: Auto-set. (line 377) +* FNR variable, changing: Auto-set. (line 390) * for statement: For Statement. (line 6) * for statement, looping over arrays: Scanning an Array. (line 20) * fork() extension function: Extension Sample Fork. @@ -34366,13 +34388,13 @@ Index * gawk, regular expressions, precedence: Regexp Operators. (line 161) * gawk, RT variable in: awk split records. (line 124) * gawk, RT variable in <1>: Multiple Line. (line 130) -* gawk, RT variable in <2>: Auto-set. (line 315) +* gawk, RT variable in <2>: Auto-set. (line 328) * gawk, See Also awk: Preface. (line 34) * gawk, source code, obtaining: Getting. (line 6) * gawk, splitting fields and: Testing field creation. (line 6) * gawk, string-translation functions: I18N Functions. (line 6) -* gawk, SYMTAB array in: Auto-set. (line 319) +* gawk, SYMTAB array in: Auto-set. (line 332) * gawk, TEXTDOMAIN variable in: User-modified. (line 155) * gawk, timestamps: Time Functions. (line 6) * gawk, uses for: Preface. (line 34) @@ -34842,7 +34864,7 @@ Index * not Boolean-logic operator: Boolean Ops. (line 6) * NR variable: Records. (line 6) * NR variable <1>: Auto-set. (line 143) -* NR variable, changing: Auto-set. (line 377) +* NR variable, changing: Auto-set. (line 390) * null strings: awk split records. (line 114) * null strings <1>: Regexp Field Splitting. (line 43) @@ -35308,7 +35330,7 @@ Index * right shift: Bitwise Functions. (line 54) * right shift, bitwise: Bitwise Functions. (line 32) * Ritchie, Dennis: Basic Data Typing. (line 54) -* RLENGTH variable: Auto-set. (line 302) +* RLENGTH variable: Auto-set. (line 315) * RLENGTH variable, match() function and: String Functions. (line 227) * Robbins, Arnold: Command Line Field Separator. (line 71) @@ -35334,11 +35356,11 @@ Index * RS variable <1>: User-modified. (line 136) * RS variable, multiline records and: Multiple Line. (line 17) * rshift: Bitwise Functions. (line 54) -* RSTART variable: Auto-set. (line 308) +* RSTART variable: Auto-set. (line 321) * RSTART variable, match() function and: String Functions. (line 227) * RT variable: awk split records. (line 124) * RT variable <1>: Multiple Line. (line 130) -* RT variable <2>: Auto-set. (line 315) +* RT variable <2>: Auto-set. (line 328) * Rubin, Paul: History. (line 30) * Rubin, Paul <1>: Contributors. (line 16) * rule, definition of: Getting Started. (line 21) @@ -35356,7 +35378,7 @@ Index * scanning arrays: Scanning an Array. (line 6) * scanning multidimensional arrays: Multiscanning. (line 11) * Schorr, Andrew: Acknowledgments. (line 60) -* Schorr, Andrew <1>: Auto-set. (line 347) +* Schorr, Andrew <1>: Auto-set. (line 360) * Schorr, Andrew <2>: Contributors. (line 136) * Schreiber, Bert: Acknowledgments. (line 38) * Schreiber, Rita: Acknowledgments. (line 38) @@ -35442,7 +35464,7 @@ Index * sidebar, Beware The Smoke and Mirrors!: Bitwise Functions. (line 126) * sidebar, Changing FS Does Not Affect the Fields: Full Line Fields. (line 14) -* sidebar, Changing NR and FNR: Auto-set. (line 375) +* sidebar, Changing NR and FNR: Auto-set. (line 388) * sidebar, Controlling Output Buffering with system(): I/O Functions. (line 164) * sidebar, Escape Sequences for Metacharacters: Escape Sequences. @@ -35607,7 +35629,7 @@ Index * Sumner, Andrew: Other Versions. (line 68) * supplementary groups of gawk process: Auto-set. (line 271) * switch statement: Switch Statement. (line 6) -* SYMTAB array: Auto-set. (line 319) +* SYMTAB array: Auto-set. (line 332) * syntactic ambiguity: /= operator vs. /=.../ regexp constant: Assignment Ops. (line 149) * system: I/O Functions. (line 107) @@ -36071,369 +36093,369 @@ Node: Exit Statement449664 Node: Built-in Variables452067 Node: User-modified453200 Node: Auto-set460967 -Ref: Auto-set-Footnote-1476564 -Ref: Auto-set-Footnote-2476770 -Node: ARGC and ARGV476826 -Node: Pattern Action Summary481039 -Node: Arrays483469 -Node: Array Basics484798 -Node: Array Intro485642 -Ref: figure-array-elements487617 -Ref: Array Intro-Footnote-1490321 -Node: Reference to Elements490449 -Node: Assigning Elements492913 -Node: Array Example493404 -Node: Scanning an Array495163 -Node: Controlling Scanning498185 -Ref: Controlling Scanning-Footnote-1503584 -Node: Numeric Array Subscripts503900 -Node: Uninitialized Subscripts506084 -Node: Delete507703 -Ref: Delete-Footnote-1510455 -Node: Multidimensional510512 -Node: Multiscanning513607 -Node: Arrays of Arrays515198 -Node: Arrays Summary519965 -Node: Functions522058 -Node: Built-in523096 -Node: Calling Built-in524177 -Node: Numeric Functions526173 -Ref: Numeric Functions-Footnote-1530201 -Ref: Numeric Functions-Footnote-2530558 -Ref: Numeric Functions-Footnote-3530606 -Node: String Functions530878 -Ref: String Functions-Footnote-1554536 -Ref: String Functions-Footnote-2554664 -Ref: String Functions-Footnote-3554912 -Node: Gory Details554999 -Ref: table-sub-escapes556790 -Ref: table-sub-proposed558309 -Ref: table-posix-sub559672 -Ref: table-gensub-escapes561213 -Ref: Gory Details-Footnote-1562036 -Node: I/O Functions562190 -Ref: table-system-return-values568772 -Ref: I/O Functions-Footnote-1570752 -Ref: I/O Functions-Footnote-2570900 -Node: Time Functions571020 -Ref: Time Functions-Footnote-1581687 -Ref: Time Functions-Footnote-2581755 -Ref: Time Functions-Footnote-3581913 -Ref: Time Functions-Footnote-4582024 -Ref: Time Functions-Footnote-5582136 -Ref: Time Functions-Footnote-6582363 -Node: Bitwise Functions582629 -Ref: table-bitwise-ops583223 -Ref: Bitwise Functions-Footnote-1589256 -Ref: Bitwise Functions-Footnote-2589429 -Node: Type Functions589620 -Node: I18N Functions592537 -Node: User-defined594188 -Node: Definition Syntax594993 -Ref: Definition Syntax-Footnote-1600680 -Node: Function Example600751 -Ref: Function Example-Footnote-1603673 -Node: Function Caveats603695 -Node: Calling A Function604213 -Node: Variable Scope605171 -Node: Pass By Value/Reference608165 -Node: Return Statement611664 -Node: Dynamic Typing614643 -Node: Indirect Calls615573 -Ref: Indirect Calls-Footnote-1625824 -Node: Functions Summary625952 -Node: Library Functions628657 -Ref: Library Functions-Footnote-1632264 -Ref: Library Functions-Footnote-2632407 -Node: Library Names632578 -Ref: Library Names-Footnote-1636038 -Ref: Library Names-Footnote-2636261 -Node: General Functions636347 -Node: Strtonum Function637450 -Node: Assert Function640472 -Node: Round Function643798 -Node: Cliff Random Function645339 -Node: Ordinal Functions646355 -Ref: Ordinal Functions-Footnote-1649418 -Ref: Ordinal Functions-Footnote-2649670 -Node: Join Function649880 -Ref: Join Function-Footnote-1651650 -Node: Getlocaltime Function651850 -Node: Readfile Function655592 -Node: Shell Quoting657564 -Node: Data File Management658965 -Node: Filetrans Function659597 -Node: Rewind Function663693 -Node: File Checking665603 -Ref: File Checking-Footnote-1666937 -Node: Empty Files667138 -Node: Ignoring Assigns669117 -Node: Getopt Function670667 -Ref: Getopt Function-Footnote-1682136 -Node: Passwd Functions682336 -Ref: Passwd Functions-Footnote-1691175 -Node: Group Functions691263 -Ref: Group Functions-Footnote-1699161 -Node: Walking Arrays699368 -Node: Library Functions Summary702376 -Node: Library Exercises703782 -Node: Sample Programs704247 -Node: Running Examples705017 -Node: Clones705745 -Node: Cut Program706969 -Node: Egrep Program716898 -Ref: Egrep Program-Footnote-1724410 -Node: Id Program724520 -Node: Split Program728200 -Ref: Split Program-Footnote-1731659 -Node: Tee Program731788 -Node: Uniq Program734578 -Node: Wc Program742004 -Ref: Wc Program-Footnote-1746259 -Node: Miscellaneous Programs746353 -Node: Dupword Program747566 -Node: Alarm Program749596 -Node: Translate Program754451 -Ref: Translate Program-Footnote-1759016 -Node: Labels Program759286 -Ref: Labels Program-Footnote-1762637 -Node: Word Sorting762721 -Node: History Sorting766793 -Node: Extract Program768628 -Node: Simple Sed776158 -Node: Igawk Program779232 -Ref: Igawk Program-Footnote-1793563 -Ref: Igawk Program-Footnote-2793765 -Ref: Igawk Program-Footnote-3793887 -Node: Anagram Program794002 -Node: Signature Program797064 -Node: Programs Summary798311 -Node: Programs Exercises799525 -Ref: Programs Exercises-Footnote-1803654 -Node: Advanced Features803745 -Node: Nondecimal Data805735 -Node: Array Sorting807326 -Node: Controlling Array Traversal808026 -Ref: Controlling Array Traversal-Footnote-1816393 -Node: Array Sorting Functions816511 -Ref: Array Sorting Functions-Footnote-1821602 -Node: Two-way I/O821798 -Ref: Two-way I/O-Footnote-1828350 -Ref: Two-way I/O-Footnote-2828537 -Node: TCP/IP Networking828619 -Node: Profiling831737 -Ref: Profiling-Footnote-1840409 -Node: Advanced Features Summary840732 -Node: Internationalization842576 -Node: I18N and L10N844056 -Node: Explaining gettext844743 -Ref: Explaining gettext-Footnote-1850635 -Ref: Explaining gettext-Footnote-2850820 -Node: Programmer i18n850985 -Ref: Programmer i18n-Footnote-1855934 -Node: Translator i18n855983 -Node: String Extraction856777 -Ref: String Extraction-Footnote-1857909 -Node: Printf Ordering857995 -Ref: Printf Ordering-Footnote-1860781 -Node: I18N Portability860845 -Ref: I18N Portability-Footnote-1863301 -Node: I18N Example863364 -Ref: I18N Example-Footnote-1866170 -Node: Gawk I18N866243 -Node: I18N Summary866888 -Node: Debugger868229 -Node: Debugging869252 -Node: Debugging Concepts869693 -Node: Debugging Terms871502 -Node: Awk Debugging874077 -Node: Sample Debugging Session874983 -Node: Debugger Invocation875517 -Node: Finding The Bug876903 -Node: List of Debugger Commands883381 -Node: Breakpoint Control884714 -Node: Debugger Execution Control888408 -Node: Viewing And Changing Data891770 -Node: Execution Stack895144 -Node: Debugger Info896781 -Node: Miscellaneous Debugger Commands900852 -Node: Readline Support905940 -Node: Limitations906836 -Node: Debugging Summary908945 -Node: Arbitrary Precision Arithmetic910224 -Node: Computer Arithmetic911709 -Ref: table-numeric-ranges915300 -Ref: Computer Arithmetic-Footnote-1916022 -Node: Math Definitions916079 -Ref: table-ieee-formats919393 -Ref: Math Definitions-Footnote-1919996 -Node: MPFR features920101 -Node: FP Math Caution921818 -Ref: FP Math Caution-Footnote-1922890 -Node: Inexactness of computations923259 -Node: Inexact representation924219 -Node: Comparing FP Values925579 -Node: Errors accumulate926661 -Node: Getting Accuracy928094 -Node: Try To Round930804 -Node: Setting precision931703 -Ref: table-predefined-precision-strings932400 -Node: Setting the rounding mode934230 -Ref: table-gawk-rounding-modes934604 -Ref: Setting the rounding mode-Footnote-1938012 -Node: Arbitrary Precision Integers938191 -Ref: Arbitrary Precision Integers-Footnote-1941366 -Node: Checking for MPFR941515 -Node: POSIX Floating Point Problems942812 -Ref: POSIX Floating Point Problems-Footnote-1946683 -Node: Floating point summary946721 -Node: Dynamic Extensions948911 -Node: Extension Intro950464 -Node: Plugin License951730 -Node: Extension Mechanism Outline952527 -Ref: figure-load-extension952966 -Ref: figure-register-new-function954531 -Ref: figure-call-new-function955623 -Node: Extension API Description957685 -Node: Extension API Functions Introduction959327 -Node: General Data Types964867 -Ref: General Data Types-Footnote-1972988 -Node: Memory Allocation Functions973287 -Ref: Memory Allocation Functions-Footnote-1977495 -Node: Constructor Functions977594 -Node: Registration Functions981180 -Node: Extension Functions981865 -Node: Exit Callback Functions987080 -Node: Extension Version String988330 -Node: Input Parsers988993 -Node: Output Wrappers1001714 -Node: Two-way processors1006226 -Node: Printing Messages1008491 -Ref: Printing Messages-Footnote-11009662 -Node: Updating ERRNO1009815 -Node: Requesting Values1010554 -Ref: table-value-types-returned1011291 -Node: Accessing Parameters1012227 -Node: Symbol Table Access1013462 -Node: Symbol table by name1013974 -Node: Symbol table by cookie1015763 -Ref: Symbol table by cookie-Footnote-11019948 -Node: Cached values1020012 -Ref: Cached values-Footnote-11023548 -Node: Array Manipulation1023701 -Ref: Array Manipulation-Footnote-11024792 -Node: Array Data Types1024829 -Ref: Array Data Types-Footnote-11027487 -Node: Array Functions1027579 -Node: Flattening Arrays1032077 -Node: Creating Arrays1039053 -Node: Redirection API1043822 -Node: Extension API Variables1046655 -Node: Extension Versioning1047366 -Ref: gawk-api-version1047795 -Node: Extension GMP/MPFR Versioning1049523 -Node: Extension API Informational Variables1051151 -Node: Extension API Boilerplate1052224 -Node: Changes from API V11056198 -Node: Finding Extensions1056858 -Node: Extension Example1057417 -Node: Internal File Description1058215 -Node: Internal File Ops1062295 -Ref: Internal File Ops-Footnote-11073695 -Node: Using Internal File Ops1073835 -Ref: Using Internal File Ops-Footnote-11076218 -Node: Extension Samples1076492 -Node: Extension Sample File Functions1078021 -Node: Extension Sample Fnmatch1085670 -Node: Extension Sample Fork1087157 -Node: Extension Sample Inplace1088375 -Node: Extension Sample Ord1091592 -Node: Extension Sample Readdir1092428 -Ref: table-readdir-file-types1093317 -Node: Extension Sample Revout1094122 -Node: Extension Sample Rev2way1094711 -Node: Extension Sample Read write array1095451 -Node: Extension Sample Readfile1097393 -Node: Extension Sample Time1098488 -Node: Extension Sample API Tests1099836 -Node: gawkextlib1100328 -Node: Extension summary1102779 -Node: Extension Exercises1106481 -Node: Language History1107979 -Node: V7/SVR3.11109635 -Node: SVR41111787 -Node: POSIX1113221 -Node: BTL1114600 -Node: POSIX/GNU1115329 -Node: Feature History1121107 -Node: Common Extensions1136966 -Node: Ranges and Locales1138249 -Ref: Ranges and Locales-Footnote-11142865 -Ref: Ranges and Locales-Footnote-21142892 -Ref: Ranges and Locales-Footnote-31143127 -Node: Contributors1143348 -Node: History summary1149293 -Node: Installation1150673 -Node: Gawk Distribution1151617 -Node: Getting1152101 -Node: Extracting1153064 -Node: Distribution contents1154702 -Node: Unix Installation1161182 -Node: Quick Installation1161864 -Node: Shell Startup Files1164278 -Node: Additional Configuration Options1165367 -Node: Configuration Philosophy1167356 -Node: Non-Unix Installation1169725 -Node: PC Installation1170185 -Node: PC Binary Installation1171023 -Node: PC Compiling1171458 -Node: PC Using1172575 -Node: Cygwin1175620 -Node: MSYS1176390 -Node: VMS Installation1176891 -Node: VMS Compilation1177682 -Ref: VMS Compilation-Footnote-11178911 -Node: VMS Dynamic Extensions1178969 -Node: VMS Installation Details1180654 -Node: VMS Running1182907 -Node: VMS GNV1187186 -Node: VMS Old Gawk1187921 -Node: Bugs1188392 -Node: Bug address1189055 -Node: Usenet1191452 -Node: Maintainers1192229 -Node: Other Versions1193490 -Node: Installation summary1200074 -Node: Notes1201276 -Node: Compatibility Mode1202141 -Node: Additions1202923 -Node: Accessing The Source1203848 -Node: Adding Code1205284 -Node: New Ports1211503 -Node: Derived Files1215991 -Ref: Derived Files-Footnote-11221637 -Ref: Derived Files-Footnote-21221672 -Ref: Derived Files-Footnote-31222270 -Node: Future Extensions1222384 -Node: Implementation Limitations1223042 -Node: Extension Design1224225 -Node: Old Extension Problems1225379 -Ref: Old Extension Problems-Footnote-11226897 -Node: Extension New Mechanism Goals1226954 -Ref: Extension New Mechanism Goals-Footnote-11230318 -Node: Extension Other Design Decisions1230507 -Node: Extension Future Growth1232620 -Node: Old Extension Mechanism1233456 -Node: Notes summary1235219 -Node: Basic Concepts1236401 -Node: Basic High Level1237082 -Ref: figure-general-flow1237364 -Ref: figure-process-flow1238049 -Ref: Basic High Level-Footnote-11241350 -Node: Basic Data Typing1241535 -Node: Glossary1244863 -Node: Copying1276810 -Node: GNU Free Documentation License1314349 -Node: Index1339467 +Ref: Auto-set-Footnote-1477304 +Ref: Auto-set-Footnote-2477510 +Node: ARGC and ARGV477566 +Node: Pattern Action Summary481779 +Node: Arrays484209 +Node: Array Basics485538 +Node: Array Intro486382 +Ref: figure-array-elements488357 +Ref: Array Intro-Footnote-1491061 +Node: Reference to Elements491189 +Node: Assigning Elements493653 +Node: Array Example494144 +Node: Scanning an Array495903 +Node: Controlling Scanning498925 +Ref: Controlling Scanning-Footnote-1504324 +Node: Numeric Array Subscripts504640 +Node: Uninitialized Subscripts506824 +Node: Delete508443 +Ref: Delete-Footnote-1511195 +Node: Multidimensional511252 +Node: Multiscanning514347 +Node: Arrays of Arrays515938 +Node: Arrays Summary520705 +Node: Functions522798 +Node: Built-in523836 +Node: Calling Built-in524917 +Node: Numeric Functions526913 +Ref: Numeric Functions-Footnote-1530941 +Ref: Numeric Functions-Footnote-2531298 +Ref: Numeric Functions-Footnote-3531346 +Node: String Functions531618 +Ref: String Functions-Footnote-1555276 +Ref: String Functions-Footnote-2555404 +Ref: String Functions-Footnote-3555652 +Node: Gory Details555739 +Ref: table-sub-escapes557530 +Ref: table-sub-proposed559049 +Ref: table-posix-sub560412 +Ref: table-gensub-escapes561953 +Ref: Gory Details-Footnote-1562776 +Node: I/O Functions562930 +Ref: table-system-return-values569512 +Ref: I/O Functions-Footnote-1571492 +Ref: I/O Functions-Footnote-2571640 +Node: Time Functions571760 +Ref: Time Functions-Footnote-1582431 +Ref: Time Functions-Footnote-2582499 +Ref: Time Functions-Footnote-3582657 +Ref: Time Functions-Footnote-4582768 +Ref: Time Functions-Footnote-5582880 +Ref: Time Functions-Footnote-6583107 +Node: Bitwise Functions583373 +Ref: table-bitwise-ops583967 +Ref: Bitwise Functions-Footnote-1590000 +Ref: Bitwise Functions-Footnote-2590173 +Node: Type Functions590364 +Node: I18N Functions593281 +Node: User-defined594932 +Node: Definition Syntax595737 +Ref: Definition Syntax-Footnote-1601424 +Node: Function Example601495 +Ref: Function Example-Footnote-1604417 +Node: Function Caveats604439 +Node: Calling A Function604957 +Node: Variable Scope605915 +Node: Pass By Value/Reference608909 +Node: Return Statement612408 +Node: Dynamic Typing615387 +Node: Indirect Calls616317 +Ref: Indirect Calls-Footnote-1626568 +Node: Functions Summary626696 +Node: Library Functions629401 +Ref: Library Functions-Footnote-1633008 +Ref: Library Functions-Footnote-2633151 +Node: Library Names633322 +Ref: Library Names-Footnote-1636782 +Ref: Library Names-Footnote-2637005 +Node: General Functions637091 +Node: Strtonum Function638194 +Node: Assert Function641216 +Node: Round Function644542 +Node: Cliff Random Function646083 +Node: Ordinal Functions647099 +Ref: Ordinal Functions-Footnote-1650162 +Ref: Ordinal Functions-Footnote-2650414 +Node: Join Function650624 +Ref: Join Function-Footnote-1652394 +Node: Getlocaltime Function652594 +Node: Readfile Function656336 +Node: Shell Quoting658308 +Node: Data File Management659709 +Node: Filetrans Function660341 +Node: Rewind Function664437 +Node: File Checking666347 +Ref: File Checking-Footnote-1667681 +Node: Empty Files667882 +Node: Ignoring Assigns669861 +Node: Getopt Function671411 +Ref: Getopt Function-Footnote-1682880 +Node: Passwd Functions683080 +Ref: Passwd Functions-Footnote-1691919 +Node: Group Functions692007 +Ref: Group Functions-Footnote-1699905 +Node: Walking Arrays700112 +Node: Library Functions Summary703120 +Node: Library Exercises704526 +Node: Sample Programs704991 +Node: Running Examples705761 +Node: Clones706489 +Node: Cut Program707713 +Node: Egrep Program717642 +Ref: Egrep Program-Footnote-1725154 +Node: Id Program725264 +Node: Split Program728944 +Ref: Split Program-Footnote-1732403 +Node: Tee Program732532 +Node: Uniq Program735322 +Node: Wc Program742748 +Ref: Wc Program-Footnote-1747003 +Node: Miscellaneous Programs747097 +Node: Dupword Program748310 +Node: Alarm Program750340 +Node: Translate Program755195 +Ref: Translate Program-Footnote-1759760 +Node: Labels Program760030 +Ref: Labels Program-Footnote-1763381 +Node: Word Sorting763465 +Node: History Sorting767537 +Node: Extract Program769372 +Node: Simple Sed776902 +Node: Igawk Program779976 +Ref: Igawk Program-Footnote-1794307 +Ref: Igawk Program-Footnote-2794509 +Ref: Igawk Program-Footnote-3794631 +Node: Anagram Program794746 +Node: Signature Program797808 +Node: Programs Summary799055 +Node: Programs Exercises800269 +Ref: Programs Exercises-Footnote-1804398 +Node: Advanced Features804489 +Node: Nondecimal Data806479 +Node: Array Sorting808070 +Node: Controlling Array Traversal808770 +Ref: Controlling Array Traversal-Footnote-1817137 +Node: Array Sorting Functions817255 +Ref: Array Sorting Functions-Footnote-1822346 +Node: Two-way I/O822542 +Ref: Two-way I/O-Footnote-1829094 +Ref: Two-way I/O-Footnote-2829281 +Node: TCP/IP Networking829363 +Node: Profiling832481 +Ref: Profiling-Footnote-1841153 +Node: Advanced Features Summary841476 +Node: Internationalization843320 +Node: I18N and L10N844800 +Node: Explaining gettext845487 +Ref: Explaining gettext-Footnote-1851379 +Ref: Explaining gettext-Footnote-2851564 +Node: Programmer i18n851729 +Ref: Programmer i18n-Footnote-1856678 +Node: Translator i18n856727 +Node: String Extraction857521 +Ref: String Extraction-Footnote-1858653 +Node: Printf Ordering858739 +Ref: Printf Ordering-Footnote-1861525 +Node: I18N Portability861589 +Ref: I18N Portability-Footnote-1864045 +Node: I18N Example864108 +Ref: I18N Example-Footnote-1866914 +Node: Gawk I18N866987 +Node: I18N Summary867632 +Node: Debugger868973 +Node: Debugging869996 +Node: Debugging Concepts870437 +Node: Debugging Terms872246 +Node: Awk Debugging874821 +Node: Sample Debugging Session875727 +Node: Debugger Invocation876261 +Node: Finding The Bug877647 +Node: List of Debugger Commands884125 +Node: Breakpoint Control885458 +Node: Debugger Execution Control889152 +Node: Viewing And Changing Data892514 +Node: Execution Stack895888 +Node: Debugger Info897525 +Node: Miscellaneous Debugger Commands901596 +Node: Readline Support906684 +Node: Limitations907580 +Node: Debugging Summary909689 +Node: Arbitrary Precision Arithmetic910968 +Node: Computer Arithmetic912453 +Ref: table-numeric-ranges916044 +Ref: Computer Arithmetic-Footnote-1916766 +Node: Math Definitions916823 +Ref: table-ieee-formats920137 +Ref: Math Definitions-Footnote-1920740 +Node: MPFR features920845 +Node: FP Math Caution922562 +Ref: FP Math Caution-Footnote-1923634 +Node: Inexactness of computations924003 +Node: Inexact representation924963 +Node: Comparing FP Values926323 +Node: Errors accumulate927405 +Node: Getting Accuracy928838 +Node: Try To Round931548 +Node: Setting precision932447 +Ref: table-predefined-precision-strings933144 +Node: Setting the rounding mode934974 +Ref: table-gawk-rounding-modes935348 +Ref: Setting the rounding mode-Footnote-1938756 +Node: Arbitrary Precision Integers938935 +Ref: Arbitrary Precision Integers-Footnote-1942110 +Node: Checking for MPFR942259 +Node: POSIX Floating Point Problems943556 +Ref: POSIX Floating Point Problems-Footnote-1947427 +Node: Floating point summary947465 +Node: Dynamic Extensions949655 +Node: Extension Intro951208 +Node: Plugin License952474 +Node: Extension Mechanism Outline953271 +Ref: figure-load-extension953710 +Ref: figure-register-new-function955275 +Ref: figure-call-new-function956367 +Node: Extension API Description958429 +Node: Extension API Functions Introduction960071 +Node: General Data Types965611 +Ref: General Data Types-Footnote-1973732 +Node: Memory Allocation Functions974031 +Ref: Memory Allocation Functions-Footnote-1978239 +Node: Constructor Functions978338 +Node: Registration Functions981924 +Node: Extension Functions982609 +Node: Exit Callback Functions987824 +Node: Extension Version String989074 +Node: Input Parsers989737 +Node: Output Wrappers1002458 +Node: Two-way processors1006970 +Node: Printing Messages1009235 +Ref: Printing Messages-Footnote-11010406 +Node: Updating ERRNO1010559 +Node: Requesting Values1011298 +Ref: table-value-types-returned1012035 +Node: Accessing Parameters1012971 +Node: Symbol Table Access1014206 +Node: Symbol table by name1014718 +Node: Symbol table by cookie1016507 +Ref: Symbol table by cookie-Footnote-11020692 +Node: Cached values1020756 +Ref: Cached values-Footnote-11024292 +Node: Array Manipulation1024445 +Ref: Array Manipulation-Footnote-11025536 +Node: Array Data Types1025573 +Ref: Array Data Types-Footnote-11028231 +Node: Array Functions1028323 +Node: Flattening Arrays1032821 +Node: Creating Arrays1039797 +Node: Redirection API1044566 +Node: Extension API Variables1047399 +Node: Extension Versioning1048110 +Ref: gawk-api-version1048539 +Node: Extension GMP/MPFR Versioning1050267 +Node: Extension API Informational Variables1051895 +Node: Extension API Boilerplate1052968 +Node: Changes from API V11056942 +Node: Finding Extensions1057602 +Node: Extension Example1058161 +Node: Internal File Description1058959 +Node: Internal File Ops1063039 +Ref: Internal File Ops-Footnote-11074439 +Node: Using Internal File Ops1074579 +Ref: Using Internal File Ops-Footnote-11076962 +Node: Extension Samples1077236 +Node: Extension Sample File Functions1078765 +Node: Extension Sample Fnmatch1086414 +Node: Extension Sample Fork1087901 +Node: Extension Sample Inplace1089119 +Node: Extension Sample Ord1092336 +Node: Extension Sample Readdir1093172 +Ref: table-readdir-file-types1094061 +Node: Extension Sample Revout1094866 +Node: Extension Sample Rev2way1095455 +Node: Extension Sample Read write array1096195 +Node: Extension Sample Readfile1098137 +Node: Extension Sample Time1099232 +Node: Extension Sample API Tests1100580 +Node: gawkextlib1101072 +Node: Extension summary1103523 +Node: Extension Exercises1107225 +Node: Language History1108723 +Node: V7/SVR3.11110379 +Node: SVR41112531 +Node: POSIX1113965 +Node: BTL1115344 +Node: POSIX/GNU1116073 +Node: Feature History1121851 +Node: Common Extensions1137710 +Node: Ranges and Locales1138993 +Ref: Ranges and Locales-Footnote-11143609 +Ref: Ranges and Locales-Footnote-21143636 +Ref: Ranges and Locales-Footnote-31143871 +Node: Contributors1144092 +Node: History summary1150037 +Node: Installation1151417 +Node: Gawk Distribution1152361 +Node: Getting1152845 +Node: Extracting1153808 +Node: Distribution contents1155446 +Node: Unix Installation1161926 +Node: Quick Installation1162608 +Node: Shell Startup Files1165022 +Node: Additional Configuration Options1166111 +Node: Configuration Philosophy1168100 +Node: Non-Unix Installation1170469 +Node: PC Installation1170929 +Node: PC Binary Installation1171767 +Node: PC Compiling1172202 +Node: PC Using1173319 +Node: Cygwin1176364 +Node: MSYS1177134 +Node: VMS Installation1177635 +Node: VMS Compilation1178426 +Ref: VMS Compilation-Footnote-11179655 +Node: VMS Dynamic Extensions1179713 +Node: VMS Installation Details1181398 +Node: VMS Running1183651 +Node: VMS GNV1187930 +Node: VMS Old Gawk1188665 +Node: Bugs1189136 +Node: Bug address1189799 +Node: Usenet1192591 +Node: Maintainers1193368 +Node: Other Versions1194629 +Node: Installation summary1201213 +Node: Notes1202415 +Node: Compatibility Mode1203280 +Node: Additions1204062 +Node: Accessing The Source1204987 +Node: Adding Code1206423 +Node: New Ports1212642 +Node: Derived Files1217130 +Ref: Derived Files-Footnote-11222776 +Ref: Derived Files-Footnote-21222811 +Ref: Derived Files-Footnote-31223409 +Node: Future Extensions1223523 +Node: Implementation Limitations1224181 +Node: Extension Design1225364 +Node: Old Extension Problems1226518 +Ref: Old Extension Problems-Footnote-11228036 +Node: Extension New Mechanism Goals1228093 +Ref: Extension New Mechanism Goals-Footnote-11231457 +Node: Extension Other Design Decisions1231646 +Node: Extension Future Growth1233759 +Node: Old Extension Mechanism1234595 +Node: Notes summary1236358 +Node: Basic Concepts1237540 +Node: Basic High Level1238221 +Ref: figure-general-flow1238503 +Ref: figure-process-flow1239188 +Ref: Basic High Level-Footnote-11242489 +Node: Basic Data Typing1242674 +Node: Glossary1246002 +Node: Copying1277949 +Node: GNU Free Documentation License1315488 +Node: Index1340606 End Tag Table diff --git a/doc/gawk.texi b/doc/gawk.texi index d2a4945d..74610f93 100644 --- a/doc/gawk.texi +++ b/doc/gawk.texi @@ -15639,6 +15639,18 @@ of setting up a two-way pipe. Set a timeout for reading from input redirection @var{input_name}. @xref{Read Timeout} for more information. +@item PROCINFO["@var{Iinput_name}", "RETRY"] +If an I/O error that may be retried occurs when reading data from +@var{input_name}, and this array entry exists, then @code{getline} returns +@minus{}2 instead of following the default behavior of returning @minus{}1 +and configuring @var{input_name} to return no further data. An I/O error +that may be retried is one where @code{errno} has the value @code{EAGAIN}, +@code{EWOULDBLOCK}, @code{EINTR}, or @code{ETIMEDOUT}. This may be useful +in conjunction with @code{\fBPROCINFO["@var{input_name}", "READ_TIMEOUT"]} +or situations where a file descriptor has been configured to behave in +a non-blocking fashion. +@xref{Retrying Input} for more information. + @item PROCINFO["sorted_in"] If this element exists in @code{PROCINFO}, its value controls the order in which array indices will be processed by @@ -19263,7 +19275,7 @@ year 1 and year @minus{}1 preceding year 0. If @var{utc-flag} is present and is either nonzero or non-null, the time is assumed to be in the UTC time zone; otherwise, the time is assumed to be in the local time zone. -If the daylight-savings flag is positive, the time is assumed to be +If the @var{DST} 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 whether daylight savings time is in effect for the specified time. @@ -39931,11 +39943,19 @@ but we might well want to fix it. @appendixsubsec Submitting Bug Reports Before reporting a bug, make sure you have really found a genuine bug. -Carefully reread the documentation and see if it says you can do +First, verify that you have the latest version of @command{gawk}. +Many bugs (usually subtle ones) are fixed at each release, and if yours +is out of date, the problem may already have been solved. + +Second, please see if setting the environment variable @env{LC_ALL} +to @code{LC_ALL=C} causes things to behave as you expect. If so, it's +a locale issue, and may or may not really be a bug. + +Third, carefully reread the documentation and see if it says you can do what you're trying to do. If it's not clear whether you should be able to do something or not, report that too; it's a bug in the documentation! -Before reporting a bug or trying to fix it yourself, try to isolate it +Finally, before reporting a bug or trying to fix it yourself, try to isolate it to the smallest possible @command{awk} program and input @value{DF} that reproduce the problem. Then send us the program and @value{DF}, some idea of what kind of Unix system you're using, diff --git a/doc/gawktexi.in b/doc/gawktexi.in index 2a30a876..7a735580 100644 --- a/doc/gawktexi.in +++ b/doc/gawktexi.in @@ -14958,6 +14958,18 @@ of setting up a two-way pipe. Set a timeout for reading from input redirection @var{input_name}. @xref{Read Timeout} for more information. +@item PROCINFO["@var{Iinput_name}", "RETRY"] +If an I/O error that may be retried occurs when reading data from +@var{input_name}, and this array entry exists, then @code{getline} returns +@minus{}2 instead of following the default behavior of returning @minus{}1 +and configuring @var{input_name} to return no further data. An I/O error +that may be retried is one where @code{errno} has the value @code{EAGAIN}, +@code{EWOULDBLOCK}, @code{EINTR}, or @code{ETIMEDOUT}. This may be useful +in conjunction with @code{\fBPROCINFO["@var{input_name}", "READ_TIMEOUT"]} +or situations where a file descriptor has been configured to behave in +a non-blocking fashion. +@xref{Retrying Input} for more information. + @item PROCINFO["sorted_in"] If this element exists in @code{PROCINFO}, its value controls the order in which array indices will be processed by @@ -18375,7 +18387,7 @@ year 1 and year @minus{}1 preceding year 0. If @var{utc-flag} is present and is either nonzero or non-null, the time is assumed to be in the UTC time zone; otherwise, the time is assumed to be in the local time zone. -If the daylight-savings flag is positive, the time is assumed to be +If the @var{DST} 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 whether daylight savings time is in effect for the specified time. @@ -38945,11 +38957,19 @@ but we might well want to fix it. @appendixsubsec Submitting Bug Reports Before reporting a bug, make sure you have really found a genuine bug. -Carefully reread the documentation and see if it says you can do +First, verify that you have the latest version of @command{gawk}. +Many bugs (usually subtle ones) are fixed at each release, and if yours +is out of date, the problem may already have been solved. + +Second, please see if setting the environment variable @env{LC_ALL} +to @code{LC_ALL=C} causes things to behave as you expect. If so, it's +a locale issue, and may or may not really be a bug. + +Third, carefully reread the documentation and see if it says you can do what you're trying to do. If it's not clear whether you should be able to do something or not, report that too; it's a bug in the documentation! -Before reporting a bug or trying to fix it yourself, try to isolate it +Finally, before reporting a bug or trying to fix it yourself, try to isolate it to the smallest possible @command{awk} program and input @value{DF} that reproduce the problem. Then send us the program and @value{DF}, some idea of what kind of Unix system you're using, |