diff options
Diffstat (limited to 'doc/gawk.info')
-rw-r--r-- | doc/gawk.info | 1890 |
1 files changed, 1127 insertions, 763 deletions
diff --git a/doc/gawk.info b/doc/gawk.info index 81ec11d1..db3250a4 100644 --- a/doc/gawk.info +++ b/doc/gawk.info @@ -217,6 +217,7 @@ in (a) below. A copy of the license is included in the section entitled 'getline'. * Getline Summary:: Summary of 'getline' Variants. * Read Timeout:: Reading input with a timeout. +* Retrying Input:: Retrying input after certain errors. * Command-line directories:: What happens if you put a directory on the command line. * Input Summary:: Input summary. @@ -246,6 +247,7 @@ in (a) below. A copy of the license is included in the section entitled * Special Caveats:: Things to watch out for. * Close Files And Pipes:: Closing Input and Output Files and Pipes. +* Nonfatal:: Enabling Nonfatal Output. * Output Summary:: Output summary. * Output Exercises:: Exercises. * Values:: Constants, Variables, and Regular @@ -557,6 +559,7 @@ in (a) below. A copy of the license is included in the section entitled * Array Functions:: Functions for working with arrays. * Flattening Arrays:: How to flatten arrays. * Creating Arrays:: How to create and populate arrays. +* Redirection API:: How to access and manipulate redirections. * Extension API Variables:: Variables provided by the API. * Extension Versioning:: API Version information. * Extension API Informational Variables:: Variables providing information about @@ -615,6 +618,7 @@ in (a) below. A copy of the license is included in the section entitled * Unix Installation:: Installing 'gawk' under various versions of Unix. * Quick Installation:: Compiling 'gawk' under Unix. +* Shell Startup Files:: Shell convenience functions. * Additional Configuration Options:: Other compile-time options. * Configuration Philosophy:: How it's all supposed to work. * Non-Unix Installation:: Installation on Other Operating @@ -2629,10 +2633,8 @@ The following list describes options mandated by the POSIX standard: different file name for the output. No space is allowed between the '-o' and FILE, if FILE is supplied. - NOTE: Due to the way 'gawk' has evolved, with this option your - program still executes. This will change in the next major - release, such that 'gawk' will only pretty-print the program - and not run it. + NOTE: In the past, this option would also execute your + program. This is no longer the case. '-O' '--optimize' @@ -2660,9 +2662,6 @@ The following list describes options mandated by the POSIX standard: extensions in 'gawk' that are disabled by this option. Also, the following additional restrictions apply: - * Newlines do not act as whitespace to separate fields when 'FS' - is equal to a single space (*note Fields::). - * Newlines are not allowed after '?' or ':' (*note Conditional Exp::). @@ -2931,6 +2930,9 @@ Since '.' is included at the beginning, 'gawk' searches first in the current directory and then in '/usr/local/share/awk'. In practice, this means that you will rarely need to change the value of 'AWKPATH'. + *Note Shell Startup Files::, for information on functions that help +to manipulate the 'AWKPATH' variable. + 'gawk' places the value of the search path that it used into 'ENVIRON["AWKPATH"]'. This provides access to the actual search path value from within an 'awk' program. @@ -2970,6 +2972,9 @@ empty value, 'gawk' uses a default path; this is typically '/usr/local/lib/gawk', although it can vary depending upon how 'gawk' was built. + *Note Shell Startup Files::, for information on functions that help +to manipulate the 'AWKLIBPATH' variable. + 'gawk' places the value of the search path that it used into 'ENVIRON["AWKLIBPATH"]'. This provides access to the actual search path value from within an 'awk' program. @@ -2996,7 +3001,8 @@ used by regular users: 'GAWK_SOCK_RETRIES' Controls the number of times 'gawk' attempts to retry a two-way TCP/IP (socket) connection before giving up. *Note TCP/IP - Networking::. + Networking::. Note that when nonfatal I/O is enabled (*note + Nonfatal::), 'gawk' only tries to open a TCP/IP socket once. 'POSIXLY_CORRECT' Causes 'gawk' to switch to POSIX-compatibility mode, disabling all @@ -3041,13 +3047,6 @@ change. The variables are: supposed to be differences, but occasionally theory and practice don't coordinate with each other.) -'GAWK_NO_PP_RUN' - When 'gawk' is invoked with the '--pretty-print' option, it will - not run the program if this environment variable exists. - - CAUTION: This variable will not survive into the next major - release. - 'GAWK_STACKSIZE' This specifies the amount by which 'gawk' should grow its internal evaluation stack, when needed. @@ -3438,15 +3437,18 @@ sequences apply to both string constants and regexp constants: '\xHH...' The hexadecimal value HH, where HH stands for a sequence of - hexadecimal digits ('0'-'9', and either 'A'-'F' or 'a'-'f'). Like - the same construct in ISO C, the escape sequence continues until - the first nonhexadecimal digit is seen. (c.e.) However, using - more than two hexadecimal digits produces undefined results. (The - '\x' escape sequence is not allowed in POSIX 'awk'.) - - CAUTION: The next major release of 'gawk' will change, such - that a maximum of two hexadecimal digits following the '\x' - will be used. + hexadecimal digits ('0'-'9', and either 'A'-'F' or 'a'-'f'). A + maximum of two digts are allowed after the '\x'. Any further + hexadecimal digits are treated as simple letters or numbers. + (c.e.) (The '\x' escape sequence is not allowed in POSIX awk.) + + CAUTION: In ISO C, the escape sequence continues until the + first nonhexadecimal digit is seen. For many years, 'gawk' + would continue incorporating hexadecimal digits into the value + until a non-hexadecimal digit or the end of the string was + encountered. However, using more than two hexadecimal digits + produced undefined results. As of version 4.2, only two + digits are processed. '\/' A literal slash (necessary for regexp constants only). This @@ -4159,6 +4161,7 @@ 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 Input:: Retrying input after certain errors. * Command-line directories:: What happens if you put a directory on the command line. * Input Summary:: Input summary. @@ -4420,7 +4423,7 @@ When 'awk' reads an input record, the record is automatically "parsed" or separated by the 'awk' utility into chunks called "fields". By default, fields are separated by "whitespace", like words in a line. Whitespace in 'awk' means any string of one or more spaces, TABs, or -newlines;(1) other characters that are considered whitespace by other +newlines; other characters that are considered whitespace by other languages (such as formfeed, vertical tab, etc.) are _not_ considered whitespace by 'awk'. @@ -4472,11 +4475,6 @@ record: -| Julie F -| Samuel A - ---------- Footnotes ---------- - - (1) In POSIX 'awk', newlines are not considered whitespace for -separating fields. - File: gawk.info, Node: Nonconstant Fields, Next: Changing Fields, Prev: Fields, Up: Reading Files @@ -5422,6 +5420,11 @@ 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. + If 'ERRNO' indicates that the I/O operation may be retried, and +'PROCINFO["INPUT", "RETRY"]' is set, then 'getline' returns -2 instead +of -1, and further calls to 'getline' may be attemped. *Note Retrying +Input::, for further information about this feature. + In the following examples, COMMAND stands for a string value that represents a shell command. @@ -5857,7 +5860,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 Input, Prev: Getline, Up: Reading Files 4.10 Reading Input with a Timeout ================================= @@ -5936,7 +5939,8 @@ per-command or per-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 +Input::, 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 @@ -5950,9 +5954,36 @@ can block indefinitely until some other process opens it for 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 Input, Next: Command-line directories, Prev: Read Timeout, Up: Reading Files + +4.11 Retrying Reads After Certain Input Errors +============================================== + +This minor node describes a feature that is specific to 'gawk'. + + When 'gawk' encounters an error while reading input, by default +'getline' returns -1, and subsequent attempts to read from that file +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 a special element in the 'PROCINFO' array (*note +Auto-set::): + + PROCINFO["INPUT_NAME", "RETRY"] = 1 + + When this element exists, 'gawk' checks the value of the system (C +language) 'errno' variable when an I/O error occurs. If 'errno' +indicates a subsequent I/O attempt may succeed, 'getline' instead +returns -2 and further calls to 'getline' may succeed. This applies to +the '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 Input, Up: Reading Files -4.11 Directories on the Command Line +4.12 Directories on the Command Line ==================================== According to the POSIX standard, files named on the 'awk' command line @@ -5975,7 +6006,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 @@ -6047,7 +6078,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 @@ -6097,6 +6128,7 @@ function. 'gawk' allows access to inherited file descriptors. * Close Files And Pipes:: Closing Input and Output Files and Pipes. +* Nonfatal:: Enabling Nonfatal Output. * Output Summary:: Output summary. * Output Exercises:: Exercises. @@ -7004,7 +7036,7 @@ that 'gawk' provides: behavior. -File: gawk.info, Node: Close Files And Pipes, Next: Output Summary, Prev: Special Files, Up: Printing +File: gawk.info, Node: Close Files And Pipes, Next: Nonfatal, Prev: Special Files, Up: Printing 5.9 Closing Input and Output Redirections ========================================= @@ -7172,9 +7204,68 @@ call. See the system manual pages for information on how to decode this value. -File: gawk.info, Node: Output Summary, Next: Output Exercises, Prev: Close Files And Pipes, Up: Printing +File: gawk.info, Node: Nonfatal, Next: Output Summary, Prev: Close Files And Pipes, Up: Printing + +5.10 Enabling Nonfatal Output +============================= + +This minor node describes a 'gawk'-specific feature. + + In standard 'awk', output with 'print' or 'printf' to a nonexistent +file, or some other I/O error (such as filling up the disk) is a fatal +error. + + $ gawk 'BEGIN { print "hi" > "/no/such/file" }' + error-> gawk: cmd. line:1: fatal: can't redirect to `/no/such/file' (No such file or directory) + + 'gawk' makes it possible to detect that an error has occurred, +allowing you to possibly recover from the error, or at least print an +error message of your choosing before exiting. You can do this in one +of two ways: + + * For all output files, by assigning any value to + 'PROCINFO["NONFATAL"]'. + + * On a per-file basis, by assigning any value to 'PROCINFO[FILENAME, + "NONFATAL"]'. Here, FILENAME is the name of the file to which you + wish output to be nonfatal. + + Once you have enabled nonfatal output, you must check 'ERRNO' after +every relevant 'print' or 'printf' statement to see if something went +wrong. It is also a good idea to initialize 'ERRNO' to zero before +attempting the output. For example: + + $ gawk ' + > BEGIN { + > PROCINFO["NONFATAL"] = 1 + > ERRNO = 0 + > print "hi" > "/no/such/file" + > if (ERRNO) { + > print("Output failed:", ERRNO) > "/dev/stderr" + > exit 1 + > } + > }' + error-> Output failed: No such file or directory + + Here, 'gawk' did not produce a fatal error; instead it let the 'awk' +program code detect the problem and handle it. + + This mechanism works also for standard output and standard error. +For standard output, you may use 'PROCINFO["-", "NONFATAL"]' or +'PROCINFO["/dev/stdout", "NONFATAL"]'. For standard error, use +'PROCINFO["/dev/stderr", "NONFATAL"]'. + + When attempting to open a TCP/IP socket (*note TCP/IP Networking::), +'gawk' tries multiple times. The 'GAWK_SOCK_RETRIES' environment +variable (*note Other Environment Variables::) allows you to override +'gawk''s builtin default number of attempts. However, once nonfatal I/O +is enabled for a given socket, 'gawk' only retries once, relying on +'awk'-level code to notice that there was a problem. + + +File: gawk.info, Node: Output Summary, Next: Output Exercises, Prev: Nonfatal, Up: Printing -5.10 Summary +5.11 Summary ============ * The 'print' statement prints comma-separated expressions. Each @@ -7196,10 +7287,15 @@ File: gawk.info, Node: Output Summary, Next: Output Exercises, Prev: Close Fi For coprocesses, it is possible to close only one direction of the communications. + * Normally errors with 'print' or 'printf' are fatal. 'gawk' lets + you make output errors be nonfatal either for all files or on a + per-file basis. You must then check for errors after every + relevant output statement. + File: gawk.info, Node: Output Exercises, Prev: Output Summary, Up: Printing -5.11 Exercises +5.12 Exercises ============== 1. Rewrite the program: @@ -10119,7 +10215,7 @@ each variable.) The default value is '" "', a string consisting of a single space. As a special exception, this value means that any sequence of - spaces, TABs, and/or newlines is a single separator.(1) It also + spaces, TABs, and/or newlines is a single separator. It also causes spaces, TABs, and newlines at the beginning and end of a record to be ignored. @@ -10216,10 +10312,6 @@ each variable.) Internationalization::). The default value of 'TEXTDOMAIN' is '"messages"'. - ---------- Footnotes ---------- - - (1) In POSIX 'awk', newline does not count as whitespace. - File: gawk.info, Node: Auto-set, Next: ARGC and ARGV, Prev: User-modified, Up: Built-in Variables @@ -10283,10 +10375,24 @@ they are not special: An associative array containing the values of the environment. The array indices are the environment variable names; the elements are the values of the particular environment variables. For example, - 'ENVIRON["HOME"]' might be '"/home/arnold"'. Changing this array - does not affect the environment passed on to any programs that - 'awk' may spawn via redirection or the 'system()' function. (In a - future version of 'gawk', it may do so.) + 'ENVIRON["HOME"]' might be '/home/arnold'. + + For POSIX 'awk', changing this array does not affect the + environment passed on to any programs that 'awk' may spawn via + redirection or the 'system()' function. + + However, beginning with version 4.2, if not in POSIX compatibility + mode, 'gawk' does update its own environment when 'ENVIRON' is + changed, thus changing the environment seen by programs that it + creates. You should therefore be especially careful if you modify + 'ENVIRON["PATH"]', which is the search path for finding executable + programs. + + This can also affect the running 'gawk' program, since some of the + built-in functions may pay attention to certain environment + variables. The most notable instance of this is 'mktime()' (*note + Time Functions::), which pays attention the value of the 'TZ' + environment variable on many systems. Some operating systems may not have environment variables. On such systems, the 'ENVIRON' array is empty (except for 'ENVIRON["AWKPATH"]' @@ -10309,6 +10415,11 @@ 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 @@ -10357,6 +10468,10 @@ 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. @@ -10466,6 +10581,10 @@ they are not special: input file, pipe, or coprocess. *Note Read Timeout::, for more information. + * It may be used to indicate that input may be retried when it + fails due to certain errors. *Note Retrying Input::, 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::. @@ -11855,6 +11974,21 @@ with numbers. Optional parameters are enclosed in square brackets ([ ]): truncated toward zero. For example, 'int(3)' is 3, 'int(3.9)' is 3, 'int(-3.9)' is -3, and 'int(-3)' is -3 as well. +'intdiv(NUMERATOR, DENOMINATOR, RESULT)' + Perform integer division, similar to the standard C function of the + same name. First, truncate 'numerator' and 'denominator' towards + zero, creating integer values. Clear the 'result' array, and then + set 'result["quotient"]' to the result of 'numerator / + denominator', truncated towards zero to an integer, and set + 'result["remainder"]' to the result of 'numerator % denominator', + truncated towards zero to an integer. This function is primarily + intended for use with arbitrary length integers; it avoids creating + MPFR arbitrary precision floating-point values (*note Arbitrary + Precision Integers::). + + This function is a 'gawk' extension. It is not available in + compatibility mode (*note Options::). + 'log(X)' Return the natural logarithm of X, if X is positive; otherwise, return 'NaN' ("not a number") on IEEE 754 systems. Additionally, @@ -19811,8 +19945,7 @@ output. They are as follows: you typed when you wrote it. This is because 'gawk' creates the profiled version by "pretty-printing" its internal representation of the program. The advantage to this is that 'gawk' can produce a standard -representation. The disadvantage is that all source code comments are -lost. Also, things such as: +representation. Also, things such as: /foo/ @@ -19871,8 +20004,24 @@ the 'Ctrl-\' key. called this way, 'gawk' "pretty-prints" the program into 'awkprof.out', without any execution counts. - NOTE: The '--pretty-print' option still runs your program. This - will change in the next major release. + NOTE: Once upon a time, the '--pretty-print' option would also run + your program. This is is no longer the case. + + There is a significant difference between the output created when +profiling, and that created when pretty-printing. Pretty-printed output +preserves the original comments that were in the program, although their +placement may not correspond exactly to their original locations in the +source code. + + However, as a deliberate design decision, profiling output _omits_ +the original program's comments. This allows you to focus on the +execution count data and helps you avoid the temptation to use the +profiler for pretty-printing. + + Additionally, pretty-printed output does not have the leading +indentation that the profiling output does. This makes it easy to +pretty-print your code once development is completed, and then use the +result as the final version of your program. File: gawk.info, Node: Advanced Features Summary, Prev: Profiling, Up: Advanced Features @@ -22350,6 +22499,62 @@ the following: gawk -M 'BEGIN { n = 13; print n % 2 }' + When dividing two arbitrary precision integers with either '/' or +'%', the result is typically an arbitrary precision floating point value +(unless the denominator evenly divides into the numerator). In order to +do integer division or remainder with arbitrary precision integers, use +the built-in 'intdiv()' function (*note Numeric Functions::). + + You can simulate the 'intdiv()' function in standard 'awk' using this +user-defined function: + + # intdiv --- do integer division + + function intdiv(numerator, denominator, result) + { + split("", result) + + numerator = int(numerator) + denominator = int(denominator) + result["quotient"] = int(numerator / denominator) + result["remainder"] = int(numerator % denominator) + + return 0.0 + } + + The following example program, contributed by Katie Wasserman, uses +'intdiv()' to compute the digits of pi to as many places as you choose +to set: + + # pi.awk --- compute the digits of pi + + BEGIN { + digits = 100000 + two = 2 * 10 ^ digits + pi = two + for (m = digits * 4; m > 0; --m) { + d = m * 2 + 1 + x = pi * m + intdiv(x, d, result) + pi = result["quotient"] + pi = pi + two + } + print pi + } + + When asked about the algorithm used, Katie replied: + + It's not that well known but it's not that obscure either. It's + Euler's modification to Newton's method for calculating pi. Take a + look at lines (23) - (25) here: + <http://mathworld.wolfram.com/PiFormulas.html>. + + The algorithm I wrote simply expands the multiply by 2 and works + from the innermost expression outwards. I used this to program HP + calculators because it's quite easy to modify for tiny memory + devices with smallish word sizes. See + <http://www.hpmuseum.org/cgi-sys/cgiwrap/hpmuseum/articles.cgi?read=899>. + ---------- Footnotes ---------- (1) Weisstein, Eric W. 'Sylvester's Sequence'. From MathWorld--A @@ -22711,6 +22916,7 @@ API in detail. * Symbol Table Access:: Functions for accessing global variables. * Array Manipulation:: Functions for working with arrays. +* Redirection API:: How to access and manipulate redirections. * Extension API Variables:: Variables provided by the API. * Extension API Boilerplate:: Boilerplate code for using the API. @@ -22766,6 +22972,8 @@ operations: - Flattening an array for easy C-style looping over all its indices and elements + * Accessing and manipulating redirections. + Some points about using the API: * The following types, macros, and/or functions are referenced in @@ -23971,7 +24179,7 @@ using 'release_value()'. 'double' to store. -File: gawk.info, Node: Array Manipulation, Next: Extension API Variables, Prev: Symbol Table Access, Up: Extension API Description +File: gawk.info, Node: Array Manipulation, Next: Redirection API, Prev: Symbol Table Access, Up: Extension API Description 16.4.11 Array Manipulation -------------------------- @@ -24455,9 +24663,78 @@ array: environment variable.) -File: gawk.info, Node: Extension API Variables, Next: Extension API Boilerplate, Prev: Array Manipulation, Up: Extension API Description +File: gawk.info, Node: Redirection API, Next: Extension API Variables, Prev: Array Manipulation, Up: Extension API Description + +16.4.12 Accessing and Manipulating Redirections +----------------------------------------------- + +The following function allows extensions to access and manipulate +redirections. + +'awk_bool_t get_file(const char *name,' +' size_t name_len,' +' const char *filetype,' +' int fd,' +' const awk_input_buf_t **ibufp,' +' const awk_output_buf_t **obufp);' + Look up a file in 'gawk''s internal redirection table. If 'name' + is 'NULL' or 'name_len' is zero, return data for the currently open + input file corresponding to 'FILENAME'. (This does not access the + 'filetype' argument, so that may be undefined). If the file is not + already open, attempt to open it. The 'filetype' argument must be + zero-terminated and should be one of: + + '">"' + A file opened for output. + + '">>"' + A file opened for append. + + '"<"' + A file opened for input. + + '"|>"' + A pipe opened for output. + + '"|<"' + A pipe opened for input. + + '"|&"' + A two-way coprocess. + + On error, return a 'false' value. Otherwise, return 'true', and + return additional information about the redirection in the 'ibufp' + and 'obufp' pointers. For input redirections, the '*ibufp' value + should be non-'NULL', and '*obufp' should be 'NULL'. For output + redirections, the '*obufp' value should be non-'NULL', and '*ibufp' + should be 'NULL'. For two-way coprocesses, both values should be + non-'NULL'. + + In the usual case, the extension is interested in '(*ibufp)->fd' + and/or 'fileno((*obufp)->fp)'. If the file is not already open, + and the 'fd' argument is non-negative, 'gawk' will use that file + descriptor instead of opening the file in the usual way. If 'fd' + is non-negative, but the file exists already, 'gawk' ignores 'fd' + and returns the existing file. It is the caller's responsibility + to notice that neither the 'fd' in the returned 'awk_input_buf_t' + nor the 'fd' in the returned 'awk_output_buf_t' matches the + requested value. + + Note that supplying a file descriptor is currently _not_ supported + for pipes. However, supplying a file descriptor should work for + input, output, append, and two-way (coprocess) sockets. If + 'filetype' is two-way, 'gawk' assumes that it is a socket! Note + that in the two-way case, the input and output file descriptors may + differ. To check for success, you must check whether either + matches. + + It is anticipated that this API function will be used to implement +I/O multiplexing and a socket library. + + +File: gawk.info, Node: Extension API Variables, Next: Extension API Boilerplate, Prev: Redirection API, Up: Extension API Description -16.4.12 API Variables +16.4.13 API Variables --------------------- The API provides two sets of variables. The first provides information @@ -24474,7 +24751,7 @@ information about how 'gawk' was invoked. File: gawk.info, Node: Extension Versioning, Next: Extension API Informational Variables, Up: Extension API Variables -16.4.12.1 API Version Constants and Variables +16.4.13.1 API Version Constants and Variables ............................................. The API provides both a "major" and a "minor" version number. The API @@ -24523,7 +24800,7 @@ Boilerplate::). File: gawk.info, Node: Extension API Informational Variables, Prev: Extension Versioning, Up: Extension API Variables -16.4.12.2 Informational Variables +16.4.13.2 Informational Variables ................................. The API provides access to several variables that describe whether the @@ -24558,7 +24835,7 @@ change during execution. File: gawk.info, Node: Extension API Boilerplate, Prev: Extension API Variables, Up: Extension API Description -16.4.13 Boilerplate Code +16.4.14 Boilerplate Code ------------------------ As mentioned earlier (*note Extension Mechanism Outline::), the function @@ -25886,15 +26163,17 @@ project. * GD graphics library extension + * MPFR library extension (this provides access to a number of MPFR + functions that 'gawk''s native MPFR support does not) + * PDF extension * PostgreSQL extension - * MPFR library extension (this provides access to a number of MPFR - functions that 'gawk''s native MPFR support does not) - * Redis extension + * Select extension + * XML parser extension, using the Expat (http://expat.sourceforge.net) XML parsing library @@ -26307,6 +26586,9 @@ current version of 'gawk'. - Directories on the command line produce a warning and are skipped (*note Command-line directories::) + - Output with 'print' and 'printf' need not be fatal (*note + Nonfatal::) + * New keywords: - The 'BEGINFILE' and 'ENDFILE' special patterns (*note @@ -26356,6 +26638,9 @@ current version of 'gawk'. - The 'bindtextdomain()', 'dcgettext()', and 'dcngettext()' functions for internationalization (*note Programmer i18n::) + - The 'intdiv()' function for doing integer division and + remainder (*note Numeric Functions::) + * Changes and/or additions in the command-line options: - The 'AWKPATH' environment variable for specifying a path @@ -26409,6 +26694,11 @@ current version of 'gawk'. - Ultrix + * Support for the following systems was removed from the code for + 'gawk' version 4.2: + + - MirBSD + File: gawk.info, Node: Feature History, Next: Common Extensions, Prev: POSIX/GNU, Up: Language History @@ -26800,6 +27090,32 @@ POSIX 'awk', in the order they were added to 'gawk'. * Support for Ultrix was removed. + Version 4.2 introduced the following changes: + + * Changes to 'ENVIRON' are reflected into 'gawk''s environment and + that of programs that it runs. *Note Auto-set::. + + * The '--pretty-print' option no longer runs the 'awk' program too. + *Note Options::. + + * The 'igawk' program and its manual page are no longer installed + when 'gawk' is built. *Note Igawk Program::. + + * The 'intdiv()' function. *Note Numeric Functions::. + + * The maximum number of hexdecimal digits in '\x' escapes is now two. + *Note Escape Sequences::. + + * Nonfatal output with 'print' and 'printf'. *Note Nonfatal::. + + * For many years, POSIX specified that default field splitting only + allowed spaces and tabs to separate fields, and this was how 'gawk' + behaved with '--posix'. As of 2013, the standard restored + historical behavior, and now default field splitting with '--posix' + also allows newlines to separate fields. + + * Support for MirBSD was removed. + File: gawk.info, Node: Common Extensions, Next: Ranges and Locales, Prev: Feature History, Up: Language History @@ -27315,7 +27631,9 @@ Various '.c', '.y', and '.h' files 'doc/igawk.1' The 'troff' source for a manual page describing the 'igawk' program - presented in *note Igawk Program::. + presented in *note Igawk Program::. (Since 'gawk' can do its own + '@include' processing, neither 'igawk' nor 'igawk.1' are + installed.) 'doc/Makefile.in' The input file used during the configuration process to generate @@ -27357,17 +27675,22 @@ Various '.c', '.y', and '.h' files contains a 'Makefile.in' file, which 'configure' uses to generate a 'Makefile'. 'Makefile.am' is used by GNU Automake to create 'Makefile.in'. The library functions from *note Library - Functions::, and the 'igawk' program from *note Igawk Program::, - are included as ready-to-use files in the 'gawk' distribution. - They are installed as part of the installation process. The rest - of the programs in this Info file are available in appropriate - subdirectories of 'awklib/eg'. + Functions::, are included as ready-to-use files in the 'gawk' + distribution. They are installed as part of the installation + process. The rest of the programs in this Info file are available + in appropriate subdirectories of 'awklib/eg'. 'extension/*' The source code, manual pages, and infrastructure files for the sample extensions included with 'gawk'. *Note Dynamic Extensions::, for more information. +'extras/*' + Additional non-essential files. Currently, this directory contains + some shell startup files to be installed in '/etc/profile.d' to aid + in manipulating the 'AWKPATH' and 'AWKLIBPATH' environment + variables. *Note Shell Startup Files::, for more information. + 'posix/*' Files needed for building 'gawk' on POSIX-compliant systems. @@ -27398,11 +27721,12 @@ for your system yourself. * Menu: * Quick Installation:: Compiling 'gawk' under Unix. +* Shell Startup Files:: Shell convenience functions. * Additional Configuration Options:: Other compile-time options. * Configuration Philosophy:: How it's all supposed to work. -File: gawk.info, Node: Quick Installation, Next: Additional Configuration Options, Up: Unix Installation +File: gawk.info, Node: Quick Installation, Next: Shell Startup Files, Up: Unix Installation B.2.1 Compiling 'gawk' for Unix-Like Systems -------------------------------------------- @@ -27457,9 +27781,42 @@ will be asked for your password, and you will have to have been set up previously as a user who is allowed to run the 'sudo' command. -File: gawk.info, Node: Additional Configuration Options, Next: Configuration Philosophy, Prev: Quick Installation, Up: Unix Installation +File: gawk.info, Node: Shell Startup Files, Next: Additional Configuration Options, Prev: Quick Installation, Up: Unix Installation + +B.2.2 Shell Startup Files +------------------------- + +The distribution contains shell startup files 'gawk.sh' and 'gawk.csh' +containing functions to aid in manipulating the 'AWKPATH' and +'AWKLIBPATH' environment variables. On a Fedora system, these files +should be installed in '/etc/profile.d'; on other platforms, the +appropriate location may be different. + +'gawkpath_default' + Reset the 'AWKPATH' environment variable to its default value. + +'gawkpath_prepend' + Add the argument to the front of the 'AWKPATH' environment + variable. + +'gawkpath_append' + Add the argument to the end of the 'AWKPATH' environment variable. + +'gawklibpath_default' + Reset the 'AWKLIBPATH' environment variable to its default value. + +'gawklibpath_prepend' + Add the argument to the front of the 'AWKLIBPATH' environment + variable. + +'gawklibpath_append' + Add the argument to the end of the 'AWKLIBPATH' environment + variable. + + +File: gawk.info, Node: Additional Configuration Options, Next: Configuration Philosophy, Prev: Shell Startup Files, Up: Unix Installation -B.2.2 Additional Configuration Options +B.2.3 Additional Configuration Options -------------------------------------- There are several additional options you may use on the 'configure' @@ -27503,7 +27860,7 @@ supplied by 'configure'. File: gawk.info, Node: Configuration Philosophy, Prev: Additional Configuration Options, Up: Unix Installation -B.2.3 The Configuration Process +B.2.4 The Configuration Process ------------------------------- This minor node is of interest only if you know something about using @@ -31451,20 +31808,20 @@ Index * '--include' option: Options. (line 159) * '--lint' option: Command Line. (line 20) * '--lint' option <1>: Options. (line 184) -* '--lint-old' option: Options. (line 294) +* '--lint-old' option: Options. (line 289) * '--load' option: Options. (line 172) * '--non-decimal-data' option: Options. (line 209) * '--non-decimal-data' option <1>: Nondecimal Data. (line 6) * '--non-decimal-data' option, 'strtonum()' function and: Nondecimal Data. (line 35) -* '--optimize' option: Options. (line 236) -* '--posix' option: Options. (line 254) -* '--posix' option, '--traditional' option and: Options. (line 272) +* '--optimize' option: Options. (line 234) +* '--posix' option: Options. (line 252) +* '--posix' option, '--traditional' option and: Options. (line 267) * '--pretty-print' option: Options. (line 223) -* '--profile' option: Options. (line 242) +* '--profile' option: Options. (line 240) * '--profile' option <1>: Profiling. (line 12) -* '--re-interval' option: Options. (line 278) -* '--sandbox' option: Options. (line 285) +* '--re-interval' option: Options. (line 273) +* '--sandbox' option: Options. (line 280) * '--sandbox' option, disabling 'system()' function: I/O Functions. (line 129) * '--sandbox' option, input redirection with 'getline': Getline. @@ -31473,9 +31830,9 @@ Index (line 6) * '--source' option: Options. (line 117) * '--traditional' option: Options. (line 82) -* '--traditional' option, '--posix' option and: Options. (line 272) +* '--traditional' option, '--posix' option and: Options. (line 267) * '--use-lc-numeric' option: Options. (line 218) -* '--version' option: Options. (line 299) +* '--version' option: Options. (line 294) * '--with-whiny-user-strftime' configuration option: Additional Configuration Options. (line 37) * '-b' option: Options. (line 69) @@ -31485,31 +31842,31 @@ Index * '-D' option: Options. (line 108) * '-e' option: Options. (line 117) * '-E' option: Options. (line 125) -* '-e' option <1>: Options. (line 335) +* '-e' option <1>: Options. (line 330) * '-f' option: Long. (line 12) * '-F' option: Options. (line 21) * '-f' option <1>: Options. (line 25) -* '-F' option, '-Ft' sets 'FS' to TAB: Options. (line 307) +* '-F' option, '-Ft' sets 'FS' to TAB: Options. (line 302) * '-F' option, command-line: Command Line Field Separator. (line 6) -* '-f' option, multiple uses: Options. (line 312) +* '-f' option, multiple uses: Options. (line 307) * '-g' option: Options. (line 147) * '-h' option: Options. (line 154) * '-i' option: Options. (line 159) * '-l' option: Options. (line 172) * '-l' option <1>: Options. (line 184) -* '-L' option: Options. (line 294) +* '-L' option: Options. (line 289) * '-M' option: Options. (line 203) * '-n' option: Options. (line 209) * '-N' option: Options. (line 218) * '-o' option: Options. (line 223) -* '-O' option: Options. (line 236) -* '-p' option: Options. (line 242) -* '-P' option: Options. (line 254) -* '-r' option: Options. (line 278) -* '-S' option: Options. (line 285) +* '-O' option: Options. (line 234) +* '-p' option: Options. (line 240) +* '-P' option: Options. (line 252) +* '-r' option: Options. (line 273) +* '-S' option: Options. (line 280) * '-v' option: Options. (line 32) -* '-V' option: Options. (line 299) +* '-V' option: Options. (line 294) * '-v' option <1>: Assignment Options. (line 12) * '-W' option: Options. (line 47) * '.' (period), regexp operator: Regexp Operators. (line 44) @@ -31585,16 +31942,16 @@ Index * '\' (backslash), in bracket expressions: Bracket Expressions. (line 17) * '\' (backslash), in escape sequences: Escape Sequences. (line 6) -* '\' (backslash), in escape sequences <1>: Escape Sequences. (line 100) +* '\' (backslash), in escape sequences <1>: Escape Sequences. (line 103) * '\' (backslash), in escape sequences, POSIX and: Escape Sequences. - (line 105) + (line 108) * '\' (backslash), in regexp constants: Computed Regexps. (line 30) * '\' (backslash), in shell commands: Quoting. (line 48) * '\' (backslash), regexp operator: Regexp Operators. (line 18) -* '\' (backslash), '\"' escape sequence: Escape Sequences. (line 82) +* '\' (backslash), '\"' escape sequence: Escape Sequences. (line 85) * '\' (backslash), '\'' operator ('gawk'): GNU Regexp Operators. (line 59) -* '\' (backslash), '\/' escape sequence: Escape Sequences. (line 73) +* '\' (backslash), '\/' escape sequence: Escape Sequences. (line 76) * '\' (backslash), '\<' operator ('gawk'): GNU Regexp Operators. (line 33) * '\' (backslash), '\>' operator ('gawk'): GNU Regexp Operators. @@ -31812,7 +32169,7 @@ Index * 'awf' (amazingly workable formatter) program: Glossary. (line 24) * 'awk' debugging, enabling: Options. (line 108) * 'awk' language, POSIX version: Assignment Ops. (line 138) -* 'awk' profiling, enabling: Options. (line 242) +* 'awk' profiling, enabling: Options. (line 240) * 'awk' programs: Getting Started. (line 12) * 'awk' programs <1>: Executable Scripts. (line 6) * 'awk' programs <2>: Two Rules. (line 6) @@ -31887,16 +32244,16 @@ Index * backslash ('\'), in bracket expressions: Bracket Expressions. (line 17) * backslash ('\'), in escape sequences: Escape Sequences. (line 6) -* backslash ('\'), in escape sequences <1>: Escape Sequences. (line 100) +* backslash ('\'), in escape sequences <1>: Escape Sequences. (line 103) * backslash ('\'), in escape sequences, POSIX and: Escape Sequences. - (line 105) + (line 108) * backslash ('\'), in regexp constants: Computed Regexps. (line 30) * backslash ('\'), in shell commands: Quoting. (line 48) * backslash ('\'), regexp operator: Regexp Operators. (line 18) -* backslash ('\'), '\"' escape sequence: Escape Sequences. (line 82) +* backslash ('\'), '\"' escape sequence: Escape Sequences. (line 85) * backslash ('\'), '\'' operator ('gawk'): GNU Regexp Operators. (line 59) -* backslash ('\'), '\/' escape sequence: Escape Sequences. (line 73) +* backslash ('\'), '\/' escape sequence: Escape Sequences. (line 76) * backslash ('\'), '\<' operator ('gawk'): GNU Regexp Operators. (line 33) * backslash ('\'), '\>' operator ('gawk'): GNU Regexp Operators. @@ -32017,7 +32374,7 @@ Index * Brennan, Michael <5>: Other Versions. (line 6) * Brennan, Michael <6>: Other Versions. (line 48) * Brian Kernighan's 'awk': When. (line 21) -* Brian Kernighan's 'awk' <1>: Escape Sequences. (line 109) +* Brian Kernighan's 'awk' <1>: Escape Sequences. (line 112) * Brian Kernighan's 'awk' <2>: GNU Regexp Operators. (line 85) * Brian Kernighan's 'awk' <3>: Regexp Field Splitting. @@ -32228,7 +32585,7 @@ Index * counting: Wc Program. (line 6) * 'csh' utility: Statements/Lines. (line 43) * 'csh' utility, 'POSIXLY_CORRECT' environment variable: Options. - (line 353) + (line 348) * 'csh' utility, '|&' operator, comparison with: Two-way I/O. (line 27) * 'ctime()' user-defined function: Function Example. (line 74) * currency symbols, localization: Explaining gettext. (line 104) @@ -32259,12 +32616,12 @@ Index * dark corner, 'CONVFMT' variable: Strings And Numbers. (line 39) * dark corner, escape sequences: Other Arguments. (line 38) * dark corner, escape sequences, for metacharacters: Escape Sequences. - (line 140) + (line 143) * dark corner, 'exit' statement: Exit Statement. (line 30) * 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 90) -* dark corner, 'FNR'/'NR' variables: Auto-set. (line 313) +* dark corner, 'FILENAME' variable <1>: Auto-set. (line 109) +* dark corner, 'FNR'/'NR' variables: Auto-set. (line 340) * dark corner, format-control characters: Control Letters. (line 18) * dark corner, format-control characters <1>: Control Letters. (line 93) @@ -32418,7 +32775,7 @@ Index * debugger, read commands from a file: Debugger Info. (line 97) * debugging 'awk' programs: Debugger. (line 6) * debugging 'gawk', bug reports: Bugs. (line 9) -* decimal point character, locale specific: Options. (line 269) +* decimal point character, locale specific: Options. (line 264) * decrement operators: Increment Ops. (line 35) * 'default' keyword: Switch Statement. (line 6) * Deifik, Scott: Acknowledgments. (line 60) @@ -32461,7 +32818,7 @@ Index * differences in 'awk' and 'gawk', command-line directories: Command-line directories. (line 6) * differences in 'awk' and 'gawk', 'ERRNO' variable: Auto-set. - (line 74) + (line 88) * differences in 'awk' and 'gawk', error messages: Special FD. (line 19) * differences in 'awk' and 'gawk', 'FIELDWIDTHS' variable: User-modified. @@ -32469,7 +32826,7 @@ Index * differences in 'awk' and 'gawk', 'FPAT' variable: User-modified. (line 43) * differences in 'awk' and 'gawk', 'FUNCTAB' variable: Auto-set. - (line 116) + (line 135) * differences in 'awk' and 'gawk', function arguments ('gawk'): Calling Built-in. (line 16) * differences in 'awk' and 'gawk', 'getline' command: Getline. @@ -32495,7 +32852,7 @@ Index * differences in 'awk' and 'gawk', 'print'/'printf' statements: Format Modifiers. (line 13) * differences in 'awk' and 'gawk', 'PROCINFO' array: Auto-set. - (line 130) + (line 149) * differences in 'awk' and 'gawk', read timeouts: Read Timeout. (line 6) * differences in 'awk' and 'gawk', record separators: awk split records. @@ -32504,9 +32861,11 @@ Index (line 43) * differences in 'awk' and 'gawk', regular expressions: Case-sensitivity. (line 26) +* differences in 'awk' and 'gawk', retrying input: Retrying Input. + (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 264) +* differences in 'awk' and 'gawk', 'RT' variable: Auto-set. (line 291) * differences in 'awk' and 'gawk', single-character fields: Single Character Fields. (line 6) * differences in 'awk' and 'gawk', 'split()' function: String Functions. @@ -32515,7 +32874,7 @@ Index * differences in 'awk' and 'gawk', strings, storing: gawk split records. (line 76) * differences in 'awk' and 'gawk', 'SYMTAB' variable: Auto-set. - (line 268) + (line 295) * differences in 'awk' and 'gawk', 'TEXTDOMAIN' variable: User-modified. (line 152) * differences in 'awk' and 'gawk', trunc-mod operation: Arithmetic Ops. @@ -32551,13 +32910,13 @@ Index * 'dump' debugger command: Miscellaneous Debugger Commands. (line 9) * 'dupword.awk' program: Dupword Program. (line 31) -* dynamic profiling: Profiling. (line 178) +* dynamic profiling: Profiling. (line 177) * 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 135) -* effective user ID of 'gawk' user: Auto-set. (line 139) +* effective group ID of 'gawk' user: Auto-set. (line 154) +* effective user ID of 'gawk' user: Auto-set. (line 162) * 'egrep' utility: Bracket Expressions. (line 26) * 'egrep' utility <1>: Egrep Program. (line 6) * 'egrep.awk' program: Egrep Program. (line 53) @@ -32612,7 +32971,7 @@ Index (line 11) * equals sign ('='), '==' operator <1>: Precedence. (line 64) * EREs (Extended Regular Expressions): Bracket Expressions. (line 26) -* 'ERRNO' variable: Auto-set. (line 74) +* 'ERRNO' variable: Auto-set. (line 88) * 'ERRNO' variable <1>: TCP/IP Networking. (line 54) * 'ERRNO' variable, with 'BEGINFILE' pattern: BEGINFILE/ENDFILE. (line 26) @@ -32620,7 +32979,7 @@ Index (line 140) * 'ERRNO' variable, with 'getline' command: Getline. (line 19) * error handling: Special FD. (line 19) -* error handling, 'ERRNO' variable and: Auto-set. (line 74) +* error handling, 'ERRNO' variable and: Auto-set. (line 88) * error output: Special FD. (line 6) * escape processing, 'gsub()'/'gensub()'/'sub()' functions: Gory Details. (line 6) @@ -32660,7 +33019,7 @@ Index (line 99) * 'exp': Numeric Functions. (line 17) * 'expand' utility: Very Simple. (line 72) -* Expat XML parser library: gawkextlib. (line 35) +* Expat XML parser library: gawkextlib. (line 37) * exponent: Numeric Functions. (line 17) * expressions: Expressions. (line 6) * expressions, as patterns: Expression Patterns. (line 6) @@ -32679,7 +33038,7 @@ Index (line 6) * extension API version: Extension Versioning. (line 6) -* extension API, version number: Auto-set. (line 231) +* extension API, version number: Auto-set. (line 254) * extension example: Extension Example. (line 6) * extension registration: Registration Functions. (line 6) @@ -32737,7 +33096,6 @@ Index * field separators, 'FIELDWIDTHS' variable and: User-modified. (line 37) * field separators, 'FPAT' variable and: User-modified. (line 43) -* field separators, POSIX and: Fields. (line 6) * field separators, regular expressions as: Field Separators. (line 50) * field separators, regular expressions as <1>: Regexp Field Splitting. (line 6) @@ -32765,7 +33123,7 @@ Index * file names, in compatibility mode: Special Caveats. (line 9) * file names, standard streams in 'gawk': Special FD. (line 48) * 'FILENAME' variable: Reading Files. (line 6) -* 'FILENAME' variable <1>: Auto-set. (line 90) +* 'FILENAME' variable <1>: Auto-set. (line 109) * 'FILENAME' variable, 'getline', setting with: Getline Notes. (line 19) * filenames, assignments as: Ignoring Assigns. (line 6) @@ -32835,8 +33193,8 @@ Index * 'fnmatch()' extension function: Extension Sample Fnmatch. (line 12) * 'FNR' variable: Records. (line 6) -* 'FNR' variable <1>: Auto-set. (line 100) -* 'FNR' variable, changing: Auto-set. (line 313) +* 'FNR' variable <1>: Auto-set. (line 119) +* 'FNR' variable, changing: Auto-set. (line 340) * 'for' statement: For Statement. (line 6) * 'for' statement, looping over arrays: Scanning an Array. (line 20) * 'fork()' extension function: Extension Sample Fork. @@ -32874,7 +33232,7 @@ Index * 'FS' variable, '--field-separator' option and: Options. (line 21) * 'FS' variable, as null string: Single Character Fields. (line 20) -* 'FS' variable, as TAB character: Options. (line 266) +* 'FS' variable, as TAB character: Options. (line 261) * 'FS' variable, changing value of: Field Separators. (line 34) * 'FS' variable, running 'awk' programs and: Cut Program. (line 63) * 'FS' variable, setting from command line: Command Line Field Separator. @@ -32888,7 +33246,7 @@ Index * FSF (Free Software Foundation) <3>: Glossary. (line 405) * 'fts()' extension function: Extension Sample File Functions. (line 60) -* 'FUNCTAB' array: Auto-set. (line 116) +* '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) @@ -32937,8 +33295,8 @@ Index (line 47) * G-d: Acknowledgments. (line 93) * Garfinkle, Scott: Contributors. (line 35) -* 'gawk' program, dynamic profiling: Profiling. (line 178) -* 'gawk' version: Auto-set. (line 206) +* 'gawk' program, dynamic profiling: Profiling. (line 177) +* 'gawk' version: Auto-set. (line 229) * 'gawk', 'ARGIND' variable in: Other Arguments. (line 15) * 'gawk', 'awk' and: Preface. (line 21) * 'gawk', 'awk' and <1>: This Manual. (line 14) @@ -32959,10 +33317,10 @@ Index * 'gawk', 'ERRNO' variable in <1>: Close Files And Pipes. (line 140) * 'gawk', 'ERRNO' variable in <2>: BEGINFILE/ENDFILE. (line 26) -* 'gawk', 'ERRNO' variable in <3>: Auto-set. (line 74) +* 'gawk', 'ERRNO' variable in <3>: Auto-set. (line 88) * 'gawk', 'ERRNO' variable in <4>: TCP/IP Networking. (line 54) -* 'gawk', escape sequences: Escape Sequences. (line 117) -* 'gawk', extensions, disabling: Options. (line 254) +* 'gawk', escape sequences: Escape Sequences. (line 120) +* 'gawk', extensions, disabling: Options. (line 252) * 'gawk', features, adding: Adding Code. (line 6) * 'gawk', features, advanced: Advanced Features. (line 6) * 'gawk', field separators and: User-modified. (line 71) @@ -32974,7 +33332,7 @@ Index * 'gawk', 'FPAT' variable in: Splitting By Content. (line 25) * 'gawk', 'FPAT' variable in <1>: User-modified. (line 43) -* 'gawk', 'FUNCTAB' array in: Auto-set. (line 116) +* 'gawk', 'FUNCTAB' array in: Auto-set. (line 135) * 'gawk', function arguments and: Calling Built-in. (line 16) * 'gawk', hexadecimal numbers and: Nondecimal-numbers. (line 41) * 'gawk', 'IGNORECASE' variable in: Case-sensitivity. (line 26) @@ -33005,8 +33363,8 @@ Index * 'gawk', octal numbers and: Nondecimal-numbers. (line 41) * 'gawk', OS/2 version of: PC Using. (line 16) * 'gawk', predefined variables and: Built-in Variables. (line 14) -* 'gawk', 'PROCINFO' array in: Auto-set. (line 130) -* 'gawk', 'PROCINFO' array in <1>: Auto-set. (line 241) +* 'gawk', 'PROCINFO' array in: Auto-set. (line 149) +* 'gawk', 'PROCINFO' array in <1>: Auto-set. (line 264) * 'gawk', 'PROCINFO' array in <2>: Time Functions. (line 47) * 'gawk', 'PROCINFO' array in <3>: Two-way I/O. (line 99) * 'gawk', regexp constants and: Using Constant Regexps. @@ -33018,21 +33376,27 @@ 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 129) -* 'gawk', 'RT' variable in <2>: Auto-set. (line 264) +* 'gawk', 'RT' variable in <2>: Auto-set. (line 291) * 'gawk', See Also 'awk': Preface. (line 34) * 'gawk', source code, obtaining: Getting. (line 6) * 'gawk', splitting fields and: Constant Size. (line 86) * 'gawk', string-translation functions: I18N Functions. (line 6) -* 'gawk', 'SYMTAB' array in: Auto-set. (line 268) +* 'gawk', 'SYMTAB' array in: Auto-set. (line 295) * 'gawk', 'TEXTDOMAIN' variable in: User-modified. (line 152) * 'gawk', timestamps: Time Functions. (line 6) * 'gawk', uses for: Preface. (line 34) -* 'gawk', versions of, information about, printing: Options. (line 299) +* 'gawk', versions of, information about, printing: Options. (line 294) * 'gawk', VMS version of: VMS Installation. (line 6) * 'gawk', word-boundary operator: GNU Regexp Operators. (line 66) * 'gawkextlib': gawkextlib. (line 6) * 'gawkextlib' project: gawkextlib. (line 6) +* 'gawklibpath_append' shell function: Shell Startup Files. (line 29) +* 'gawklibpath_default' shell function: Shell Startup Files. (line 22) +* 'gawklibpath_prepend' shell function: Shell Startup Files. (line 25) +* 'gawkpath_append' shell function: Shell Startup Files. (line 19) +* 'gawkpath_default' shell function: Shell Startup Files. (line 12) +* 'gawkpath_prepend' shell function: Shell Startup Files. (line 15) * General Public License (GPL): Glossary. (line 396) * General Public License, See GPL: Manual History. (line 11) * generate time values: Time Functions. (line 25) @@ -33087,7 +33451,7 @@ Index * 'gettext()' function (C library): Explaining gettext. (line 63) * 'gettimeofday()' extension function: Extension Sample Time. (line 12) -* 'git' utility: gawkextlib. (line 29) +* 'git' utility: gawkextlib. (line 31) * 'git' utility <1>: Other Versions. (line 29) * 'git' utility <2>: Accessing The Source. (line 10) @@ -33115,7 +33479,7 @@ Index * Grigera, Juan: Contributors. (line 58) * group database, reading: Group Functions. (line 6) * group file: Group Functions. (line 6) -* group ID of 'gawk' user: Auto-set. (line 179) +* group ID of 'gawk' user: Auto-set. (line 202) * groups, information about: Group Functions. (line 6) * 'gsub': Using Constant Regexps. (line 43) @@ -33137,7 +33501,7 @@ Index * history expansion, in debugger: Readline Support. (line 6) * 'histsort.awk' program: History Sorting. (line 25) * Hughes, Phil: Acknowledgments. (line 43) -* 'HUP' signal, for dynamic profiling: Profiling. (line 210) +* 'HUP' signal, for dynamic profiling: Profiling. (line 209) * hyphen ('-'), '-' operator: Precedence. (line 51) * hyphen ('-'), '-' operator <1>: Precedence. (line 57) * hyphen ('-'), '--' operator: Increment Ops. (line 48) @@ -33220,7 +33584,9 @@ Index * installing 'gawk': Installation. (line 6) * instruction tracing, in debugger: Debugger Info. (line 90) * 'int': Numeric Functions. (line 22) -* 'INT' signal (MS-Windows): Profiling. (line 213) +* 'INT' signal (MS-Windows): Profiling. (line 212) +* 'intdiv': Numeric Functions. (line 27) +* intdiv: Numeric Functions. (line 27) * integer array indices: Numeric Array Subscripts. (line 31) * integers, arbitrary precision: Arbitrary Precision Integers. @@ -33276,7 +33642,7 @@ Index * Kernighan, Brian <8>: Other Versions. (line 13) * Kernighan, Brian <9>: Basic Data Typing. (line 54) * Kernighan, Brian <10>: Glossary. (line 206) -* 'kill' command, dynamic profiling: Profiling. (line 187) +* 'kill' command, dynamic profiling: Profiling. (line 186) * Knights, jedi: Undocumented. (line 6) * Kwok, Conrad: Contributors. (line 35) * 'l' debugger command (alias for 'list'): Miscellaneous Debugger Commands. @@ -33348,7 +33714,7 @@ Index * lint checking, empty programs: Command Line. (line 16) * lint checking, issuing warnings: Options. (line 184) * lint checking, 'POSIXLY_CORRECT' environment variable: Options. - (line 338) + (line 333) * lint checking, undefined functions: Pass By Value/Reference. (line 85) * 'LINT' variable: User-modified. (line 87) @@ -33364,14 +33730,14 @@ Index * loading, extensions: Options. (line 172) * local variables, in a function: Variable Scope. (line 6) * locale categories: Explaining gettext. (line 81) -* locale decimal point character: Options. (line 269) +* locale decimal point character: Options. (line 264) * locale, definition of: Locales. (line 6) * localization: I18N and L10N. (line 6) * localization, See internationalization, localization: I18N and L10N. (line 6) -* 'log': Numeric Functions. (line 27) +* 'log': Numeric Functions. (line 42) * log files, timestamps in: Time Functions. (line 6) -* logarithm: Numeric Functions. (line 27) +* logarithm: Numeric Functions. (line 42) * logical false/true: Truth Values. (line 6) * logical operators, See Boolean expressions: Boolean Ops. (line 6) * login information: Passwd Functions. (line 16) @@ -33408,12 +33774,12 @@ Index (line 9) * matching, leftmost longest: Multiple Line. (line 26) * matching, null strings: String Functions. (line 537) -* 'mawk' utility: Escape Sequences. (line 117) +* 'mawk' utility: Escape Sequences. (line 120) * 'mawk' utility <1>: Getline/Pipe. (line 62) * 'mawk' utility <2>: Concatenation. (line 36) * 'mawk' utility <3>: Nextfile Statement. (line 47) * 'mawk' utility <4>: Other Versions. (line 48) -* maximum precision supported by MPFR library: Auto-set. (line 220) +* maximum precision supported by MPFR library: Auto-set. (line 243) * McIlroy, Doug: Glossary. (line 257) * McPhee, Patrick: Contributors. (line 101) * message object files: Explaining gettext. (line 42) @@ -33425,8 +33791,8 @@ Index (line 48) * messages from extensions: Printing Messages. (line 6) * metacharacters in regular expressions: Regexp Operators. (line 6) -* metacharacters, escape sequences for: Escape Sequences. (line 136) -* minimum precision required by MPFR library: Auto-set. (line 223) +* metacharacters, escape sequences for: Escape Sequences. (line 139) +* minimum precision required by MPFR library: Auto-set. (line 246) * 'mktime': Time Functions. (line 25) * modifiers, in format specifiers: Format Modifiers. (line 6) * monetary information, localization: Explaining gettext. (line 104) @@ -33446,10 +33812,8 @@ Index * networks, programming: TCP/IP Networking. (line 6) * networks, support for: Special Network. (line 6) * newlines: Statements/Lines. (line 6) -* newlines <1>: Options. (line 260) +* newlines <1>: Options. (line 258) * newlines <2>: Boolean Ops. (line 69) -* newlines, as field separators: Default Field Splitting. - (line 6) * newlines, as record separators: awk split records. (line 12) * newlines, in dynamic regexps: Computed Regexps. (line 60) * newlines, in regexp constants: Computed Regexps. (line 70) @@ -33478,7 +33842,7 @@ Index * 'nexti' debugger command: Debugger Execution Control. (line 49) * 'NF' variable: Fields. (line 33) -* 'NF' variable <1>: Auto-set. (line 105) +* 'NF' variable <1>: Auto-set. (line 124) * 'NF' variable, decrementing: Changing Fields. (line 107) * 'ni' debugger command (alias for 'nexti'): Debugger Execution Control. (line 49) @@ -33487,8 +33851,8 @@ Index (line 23) * not Boolean-logic operator: Boolean Ops. (line 6) * 'NR' variable: Records. (line 6) -* 'NR' variable <1>: Auto-set. (line 125) -* 'NR' variable, changing: Auto-set. (line 313) +* 'NR' variable <1>: Auto-set. (line 144) +* 'NR' variable, changing: Auto-set. (line 340) * null strings: awk split records. (line 114) * null strings <1>: Regexp Field Splitting. (line 43) @@ -33609,7 +33973,7 @@ Index * 'p' debugger command (alias for 'print'): Viewing And Changing Data. (line 35) * Papadopoulos, Panos: Contributors. (line 129) -* parent process ID of 'gawk' process: Auto-set. (line 188) +* parent process ID of 'gawk' process: Auto-set. (line 211) * parentheses '()', in a profile: Profiling. (line 146) * parentheses '()', regexp operator: Regexp Operators. (line 81) * password file: Passwd Functions. (line 16) @@ -33654,14 +34018,14 @@ Index * plus sign ('+'), '+=' operator <1>: Precedence. (line 94) * plus sign ('+'), regexp operator: Regexp Operators. (line 105) * pointers to functions: Indirect Calls. (line 6) -* portability: Escape Sequences. (line 100) +* portability: Escape Sequences. (line 103) * portability, '#!' (executable scripts): Executable Scripts. (line 33) * portability, '**' operator and: Arithmetic Ops. (line 81) * portability, '**=' operator and: Assignment Ops. (line 144) * portability, 'ARGV' variable: Executable Scripts. (line 59) * portability, backslash continuation and: Statements/Lines. (line 30) * portability, backslash in escape sequences: Escape Sequences. - (line 105) + (line 108) * portability, 'close()' function and: Close Files And Pipes. (line 81) * portability, data files as single record: gawk split records. @@ -33680,7 +34044,7 @@ Index * portability, operators: Increment Ops. (line 60) * portability, operators, not in POSIX 'awk': Precedence. (line 97) * portability, 'POSIXLY_CORRECT' environment variable: Options. - (line 358) + (line 353) * portability, 'substr()' function: String Functions. (line 513) * portable object files: Explaining gettext. (line 37) * portable object files <1>: Translator i18n. (line 6) @@ -33702,7 +34066,7 @@ Index * POSIX 'awk', '<' operator and: Getline/File. (line 26) * POSIX 'awk', arithmetic operators and: Arithmetic Ops. (line 30) * POSIX 'awk', backslashes in string constants: Escape Sequences. - (line 105) + (line 108) * POSIX 'awk', 'BEGIN'/'END' patterns: I/O And BEGIN/END. (line 15) * POSIX 'awk', bracket expressions and: Bracket Expressions. (line 26) * POSIX 'awk', bracket expressions and, character classes: Bracket Expressions. @@ -33714,9 +34078,7 @@ Index * POSIX 'awk', 'continue' statement and: Continue Statement. (line 44) * POSIX 'awk', 'CONVFMT' variable and: User-modified. (line 30) * POSIX 'awk', 'date' utility and: Time Functions. (line 252) -* POSIX 'awk', field separators and: Fields. (line 6) -* POSIX 'awk', field separators and <1>: Full Line Fields. (line 16) -* POSIX 'awk', 'FS' variable and: User-modified. (line 60) +* POSIX 'awk', field separators and: Full Line Fields. (line 16) * POSIX 'awk', 'function' keyword in: Definition Syntax. (line 99) * POSIX 'awk', functions and, 'gsub()'/'sub()': Gory Details. (line 90) * POSIX 'awk', functions and, 'length()': String Functions. (line 179) @@ -33732,12 +34094,12 @@ Index * POSIX 'awk', regular expressions and: Regexp Operators. (line 161) * POSIX 'awk', timestamps and: Time Functions. (line 6) * POSIX 'awk', '|' I/O operator and: Getline/Pipe. (line 56) -* POSIX mode: Options. (line 254) -* POSIX mode <1>: Options. (line 338) +* POSIX mode: Options. (line 252) +* POSIX mode <1>: Options. (line 333) * POSIX, 'awk' and: Preface. (line 21) * POSIX, 'gawk' extensions not included in: POSIX/GNU. (line 6) * POSIX, programs, implementing in 'awk': Clones. (line 6) -* 'POSIXLY_CORRECT' environment variable: Options. (line 338) +* 'POSIXLY_CORRECT' environment variable: Options. (line 333) * 'PREC' variable: User-modified. (line 124) * precedence: Increment Ops. (line 60) * precedence <1>: Precedence. (line 6) @@ -33788,11 +34150,11 @@ 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 ID of 'gawk' process: Auto-set. (line 182) -* process ID of 'gawk' process: Auto-set. (line 185) +* process group ID of 'gawk' process: Auto-set. (line 205) +* process ID of 'gawk' process: Auto-set. (line 208) * processes, two-way communications with: Two-way I/O. (line 6) * processing data: Basic High Level. (line 6) -* 'PROCINFO' array: Auto-set. (line 130) +* 'PROCINFO' array: Auto-set. (line 149) * 'PROCINFO' array <1>: Time Functions. (line 47) * 'PROCINFO' array <2>: Passwd Functions. (line 6) * 'PROCINFO' array, and communications via ptys: Two-way I/O. (line 99) @@ -33801,12 +34163,12 @@ Index (line 15) * 'PROCINFO' array, testing the field splitting: Passwd Functions. (line 154) -* 'PROCINFO' array, uses: Auto-set. (line 241) +* 'PROCINFO' array, uses: Auto-set. (line 264) * '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 148) +* profiling 'awk' programs, dynamically: Profiling. (line 177) +* program identifiers: Auto-set. (line 171) * program, definition of: Getting Started. (line 21) * programming conventions, '--non-decimal-data' option: Nondecimal Data. (line 35) @@ -33842,7 +34204,7 @@ Index * QuikTrim Awk: Other Versions. (line 139) * 'quit' debugger command: Miscellaneous Debugger Commands. (line 99) -* 'QUIT' signal (MS-Windows): Profiling. (line 213) +* 'QUIT' signal (MS-Windows): Profiling. (line 212) * quoting in 'gawk' command lines: Long. (line 26) * quoting in 'gawk' command lines, tricks for: Quoting. (line 91) * quoting, for small awk programs: Comments. (line 27) @@ -33851,12 +34213,12 @@ Index * Rakitzis, Byron: History Sorting. (line 25) * Ramey, Chet: Acknowledgments. (line 60) * Ramey, Chet <1>: General Data Types. (line 6) -* 'rand': Numeric Functions. (line 32) +* 'rand': Numeric Functions. (line 47) * random numbers, Cliff: Cliff Random Function. (line 6) * random numbers, 'rand()'/'srand()' functions: Numeric Functions. - (line 32) -* random numbers, seed of: Numeric Functions. (line 62) + (line 47) +* random numbers, seed of: Numeric Functions. (line 77) * range expressions (regexps): Bracket Expressions. (line 6) * range patterns: Ranges. (line 6) * range patterns, line continuation and: Ranges. (line 64) @@ -33926,7 +34288,7 @@ Index (line 60) * regular expressions, 'gawk', command-line options: GNU Regexp Operators. (line 73) -* regular expressions, interval expressions and: Options. (line 278) +* regular expressions, interval expressions and: Options. (line 273) * regular expressions, leftmost longest match: Leftmost Longest. (line 6) * regular expressions, operators: Regexp Usage. (line 19) @@ -33943,6 +34305,7 @@ Index * relational operators, See comparison operators: Typing and Comparison. (line 9) * replace in string: String Functions. (line 409) +* retrying input: Retrying Input. (line 6) * 'return' debugger command: Debugger Execution Control. (line 54) * 'return' statement, user-defined functions: Return Statement. @@ -33969,7 +34332,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 251) +* 'RLENGTH' variable: Auto-set. (line 278) * 'RLENGTH' variable, 'match()' function and: String Functions. (line 227) * Robbins, Arnold: Command Line Field Separator. @@ -33996,12 +34359,12 @@ Index * 'RS' variable <1>: User-modified. (line 133) * 'RS' variable, multiline records and: Multiple Line. (line 17) * 'rshift': Bitwise Functions. (line 54) -* 'RSTART' variable: Auto-set. (line 257) +* 'RSTART' variable: Auto-set. (line 284) * 'RSTART' variable, 'match()' function and: String Functions. (line 227) * 'RT' variable: awk split records. (line 124) * 'RT' variable <1>: Multiple Line. (line 129) -* 'RT' variable <2>: Auto-set. (line 264) +* 'RT' variable <2>: Auto-set. (line 291) * Rubin, Paul: History. (line 30) * Rubin, Paul <1>: Contributors. (line 16) * rule, definition of: Getting Started. (line 21) @@ -34012,14 +34375,14 @@ Index (line 68) * sample debugging session: Sample Debugging Session. (line 6) -* sandbox mode: Options. (line 285) +* sandbox mode: Options. (line 280) * save debugger options: Debugger Info. (line 85) * scalar or array: Type Functions. (line 11) * scalar values: Basic Data Typing. (line 13) * scanning arrays: Scanning an Array. (line 6) * scanning multidimensional arrays: Multiscanning. (line 11) * Schorr, Andrew: Acknowledgments. (line 60) -* Schorr, Andrew <1>: Auto-set. (line 296) +* Schorr, Andrew <1>: Auto-set. (line 323) * Schorr, Andrew <2>: Contributors. (line 134) * Schreiber, Bert: Acknowledgments. (line 38) * Schreiber, Rita: Acknowledgments. (line 38) @@ -34038,7 +34401,7 @@ Index * 'sed' utility: Full Line Fields. (line 22) * 'sed' utility <1>: Simple Sed. (line 6) * 'sed' utility <2>: Glossary. (line 16) -* seeding random number generator: Numeric Functions. (line 62) +* seeding random number generator: Numeric Functions. (line 77) * semicolon (';'), 'AWKPATH' variable and: PC Using. (line 10) * semicolon (';'), separating statements in actions: Statements/Lines. (line 90) @@ -34051,7 +34414,6 @@ Index * separators, field, 'FIELDWIDTHS' variable and: User-modified. (line 37) * separators, field, 'FPAT' variable and: User-modified. (line 43) -* separators, field, POSIX and: Fields. (line 6) * separators, for records: awk split records. (line 6) * separators, for records <1>: awk split records. (line 85) * separators, for records <2>: User-modified. (line 133) @@ -34103,14 +34465,14 @@ Index * sidebar, A Constant's Base Does Not Affect Its Value: Nondecimal-numbers. (line 63) * sidebar, Backslash Before Regular Characters: Escape Sequences. - (line 103) + (line 106) * sidebar, Changing 'FS' Does Not Affect the Fields: Full Line Fields. (line 14) -* sidebar, Changing 'NR' and 'FNR': Auto-set. (line 311) +* sidebar, Changing 'NR' and 'FNR': Auto-set. (line 338) * sidebar, Controlling Output Buffering with 'system()': I/O Functions. (line 137) * sidebar, Escape Sequences for Metacharacters: Escape Sequences. - (line 134) + (line 137) * sidebar, 'FS' and 'IGNORECASE': Field Splitting Summary. (line 37) * sidebar, Interactive Versus Noninteractive Buffering: I/O Functions. @@ -34132,19 +34494,19 @@ Index (line 130) * sidebar, Using '\n' in Bracket Expressions of Dynamic Regexps: Computed Regexps. (line 58) -* 'SIGHUP' signal, for dynamic profiling: Profiling. (line 210) -* 'SIGINT' signal (MS-Windows): Profiling. (line 213) -* signals, 'HUP'/'SIGHUP', for profiling: Profiling. (line 210) -* signals, 'INT'/'SIGINT' (MS-Windows): Profiling. (line 213) -* signals, 'QUIT'/'SIGQUIT' (MS-Windows): Profiling. (line 213) -* signals, 'USR1'/'SIGUSR1', for profiling: Profiling. (line 187) +* 'SIGHUP' signal, for dynamic profiling: Profiling. (line 209) +* 'SIGINT' signal (MS-Windows): Profiling. (line 212) +* signals, 'HUP'/'SIGHUP', for profiling: Profiling. (line 209) +* signals, 'INT'/'SIGINT' (MS-Windows): Profiling. (line 212) +* signals, 'QUIT'/'SIGQUIT' (MS-Windows): Profiling. (line 212) +* signals, 'USR1'/'SIGUSR1', for profiling: Profiling. (line 186) * signature program: Signature Program. (line 6) -* 'SIGQUIT' signal (MS-Windows): Profiling. (line 213) -* 'SIGUSR1' signal, for dynamic profiling: Profiling. (line 187) +* 'SIGQUIT' signal (MS-Windows): Profiling. (line 212) +* 'SIGUSR1' signal, for dynamic profiling: Profiling. (line 186) * 'silent' debugger command: Debugger Execution Control. (line 10) -* 'sin': Numeric Functions. (line 73) -* sine: Numeric Functions. (line 73) +* 'sin': Numeric Functions. (line 88) +* sine: Numeric Functions. (line 88) * single quote ('''): One-shot. (line 15) * single quote (''') in 'gawk' command lines: Long. (line 35) * single quote ('''), in shell commands: Quoting. (line 48) @@ -34194,10 +34556,10 @@ Index * 'sprintf()' function, 'OFMT' variable and: User-modified. (line 113) * 'sprintf()' function, 'print'/'printf' statements and: Round Function. (line 6) -* 'sqrt': Numeric Functions. (line 76) +* 'sqrt': Numeric Functions. (line 91) * square brackets ('[]'), regexp operator: Regexp Operators. (line 56) -* square root: Numeric Functions. (line 76) -* 'srand': Numeric Functions. (line 80) +* square root: Numeric Functions. (line 91) +* 'srand': Numeric Functions. (line 95) * stack frame: Debugging Terms. (line 10) * Stallman, Richard: Manual History. (line 6) * Stallman, Richard <1>: Acknowledgments. (line 18) @@ -34269,9 +34631,9 @@ Index * 'substr': String Functions. (line 482) * substring: String Functions. (line 482) * Sumner, Andrew: Other Versions. (line 68) -* supplementary groups of 'gawk' process: Auto-set. (line 236) +* supplementary groups of 'gawk' process: Auto-set. (line 259) * 'switch' statement: Switch Statement. (line 6) -* 'SYMTAB' array: Auto-set. (line 268) +* 'SYMTAB' array: Auto-set. (line 295) * syntactic ambiguity: '/=' operator vs. '/=.../' regexp constant: Assignment Ops. (line 149) * 'system': I/O Functions. (line 107) @@ -34344,7 +34706,7 @@ Index * troubleshooting, 'awk' uses 'FS' not 'IFS': Field Separators. (line 29) * troubleshooting, backslash before nonspecial character: Escape Sequences. - (line 105) + (line 108) * troubleshooting, division: Arithmetic Ops. (line 44) * troubleshooting, fatal errors, field widths, specifying: Constant Size. (line 22) @@ -34401,7 +34763,7 @@ Index * 'uniq.awk' program: Uniq Program. (line 65) * Unix: Glossary. (line 748) * Unix 'awk', backslashes in escape sequences: Escape Sequences. - (line 117) + (line 120) * Unix 'awk', 'close()' function and: Close Files And Pipes. (line 132) * Unix 'awk', password files, field separators and: Command Line Field Separator. @@ -34421,7 +34783,7 @@ Index * user-modifiable variables: User-modified. (line 6) * users, information about, printing: Id Program. (line 6) * users, information about, retrieving: Passwd Functions. (line 16) -* 'USR1' signal, for dynamic profiling: Profiling. (line 187) +* 'USR1' signal, for dynamic profiling: Profiling. (line 186) * values, numeric: Basic Data Typing. (line 13) * values, string: Basic Data Typing. (line 13) * variable assignments and input files: Other Arguments. (line 26) @@ -34455,10 +34817,10 @@ Index * variables, uninitialized, as array subscripts: Uninitialized Subscripts. (line 6) * variables, user-defined: Variables. (line 6) -* version of 'gawk': Auto-set. (line 206) -* version of 'gawk' extension API: Auto-set. (line 231) -* version of GNU MP library: Auto-set. (line 217) -* version of GNU MPFR library: Auto-set. (line 213) +* version of 'gawk': Auto-set. (line 229) +* version of 'gawk' extension API: Auto-set. (line 254) +* version of GNU MP library: Auto-set. (line 240) +* version of GNU MPFR library: Auto-set. (line 236) * vertical bar ('|'): Regexp Operators. (line 70) * vertical bar ('|'), '|' operator (I/O): Getline/Pipe. (line 10) * vertical bar ('|'), '|' operator (I/O) <1>: Precedence. (line 64) @@ -34495,7 +34857,7 @@ Index * whitespace, as field separators: Default Field Splitting. (line 6) * whitespace, functions, calling: Calling Built-in. (line 10) -* whitespace, newlines as: Options. (line 260) +* whitespace, newlines as: Options. (line 258) * Williams, Kent: Contributors. (line 35) * Woehlke, Matthew: Contributors. (line 80) * Woods, John: Contributors. (line 28) @@ -34525,559 +34887,561 @@ Index Tag Table: Node: Top1200 -Node: Foreword342140 -Node: Foreword446582 -Node: Preface48114 -Ref: Preface-Footnote-150986 -Ref: Preface-Footnote-251093 -Ref: Preface-Footnote-351327 -Node: History51469 -Node: Names53822 -Ref: Names-Footnote-154916 -Node: This Manual55063 -Ref: This Manual-Footnote-161545 -Node: Conventions61645 -Node: Manual History64000 -Ref: Manual History-Footnote-166996 -Ref: Manual History-Footnote-267037 -Node: How To Contribute67111 -Node: Acknowledgments68240 -Node: Getting Started73108 -Node: Running gawk75547 -Node: One-shot76737 -Node: Read Terminal78000 -Node: Long80032 -Node: Executable Scripts81545 -Ref: Executable Scripts-Footnote-184340 -Node: Comments84443 -Node: Quoting86927 -Node: DOS Quoting92445 -Node: Sample Data Files93120 -Node: Very Simple95715 -Node: Two Rules100617 -Node: More Complex102503 -Node: Statements/Lines105366 -Ref: Statements/Lines-Footnote-1109825 -Node: Other Features110090 -Node: When111027 -Ref: When-Footnote-1112781 -Node: Intro Summary112846 -Node: Invoking Gawk113730 -Node: Command Line115244 -Node: Options116042 -Ref: Options-Footnote-1131949 -Ref: Options-Footnote-2132179 -Node: Other Arguments132204 -Node: Naming Standard Input135151 -Node: Environment Variables136244 -Node: AWKPATH Variable136802 -Ref: AWKPATH Variable-Footnote-1140103 -Ref: AWKPATH Variable-Footnote-2140148 -Node: AWKLIBPATH Variable140409 -Node: Other Environment Variables141553 -Node: Exit Status145318 -Node: Include Files145995 -Node: Loading Shared Libraries149590 -Node: Obsolete151018 -Node: Undocumented151710 -Node: Invoking Summary152007 -Node: Regexp153667 -Node: Regexp Usage155121 -Node: Escape Sequences157158 -Node: Regexp Operators163173 -Ref: Regexp Operators-Footnote-1170590 -Ref: Regexp Operators-Footnote-2170737 -Node: Bracket Expressions170835 -Ref: table-char-classes172858 -Node: Leftmost Longest175804 -Node: Computed Regexps177107 -Node: GNU Regexp Operators180534 -Node: Case-sensitivity184213 -Ref: Case-sensitivity-Footnote-1187100 -Ref: Case-sensitivity-Footnote-2187335 -Node: Regexp Summary187443 -Node: Reading Files188909 -Node: Records191003 -Node: awk split records191736 -Node: gawk split records196668 -Ref: gawk split records-Footnote-1201212 -Node: Fields201249 -Ref: Fields-Footnote-1204029 -Node: Nonconstant Fields204115 -Ref: Nonconstant Fields-Footnote-1206351 -Node: Changing Fields206555 -Node: Field Separators212485 -Node: Default Field Splitting215183 -Node: Regexp Field Splitting216301 -Node: Single Character Fields219654 -Node: Command Line Field Separator220714 -Node: Full Line Fields223932 -Ref: Full Line Fields-Footnote-1225454 -Ref: Full Line Fields-Footnote-2225500 -Node: Field Splitting Summary225601 -Node: Constant Size227675 -Node: Splitting By Content232254 -Ref: Splitting By Content-Footnote-1236225 -Node: Multiple Line236388 -Ref: Multiple Line-Footnote-1242271 -Node: Getline242450 -Node: Plain Getline244654 -Node: Getline/Variable247293 -Node: Getline/File248442 -Node: Getline/Variable/File249828 -Ref: Getline/Variable/File-Footnote-1251432 -Node: Getline/Pipe251520 -Node: Getline/Variable/Pipe254225 -Node: Getline/Coprocess255358 -Node: Getline/Variable/Coprocess256623 -Node: Getline Notes257363 -Node: Getline Summary260158 -Ref: table-getline-variants260580 -Node: Read Timeout261328 -Ref: Read Timeout-Footnote-1265169 -Node: Command-line directories265227 -Node: Input Summary266132 -Node: Input Exercises269304 -Node: Printing270032 -Node: Print271809 -Node: Print Examples273266 -Node: Output Separators276046 -Node: OFMT278063 -Node: Printf279419 -Node: Basic Printf280204 -Node: Control Letters281778 -Node: Format Modifiers285766 -Node: Printf Examples291781 -Node: Redirection294267 -Node: Special FD301110 -Ref: Special FD-Footnote-1304278 -Node: Special Files304352 -Node: Other Inherited Files304969 -Node: Special Network305970 -Node: Special Caveats306830 -Node: Close Files And Pipes307779 -Ref: Close Files And Pipes-Footnote-1314972 -Ref: Close Files And Pipes-Footnote-2315120 -Node: Output Summary315271 -Node: Output Exercises316269 -Node: Expressions316948 -Node: Values318136 -Node: Constants318814 -Node: Scalar Constants319505 -Ref: Scalar Constants-Footnote-1320369 -Node: Nondecimal-numbers320619 -Node: Regexp Constants323633 -Node: Using Constant Regexps324159 -Node: Variables327322 -Node: Using Variables327979 -Node: Assignment Options329890 -Node: Conversion331764 -Node: Strings And Numbers332288 -Ref: Strings And Numbers-Footnote-1335352 -Node: Locale influences conversions335461 -Ref: table-locale-affects338219 -Node: All Operators338837 -Node: Arithmetic Ops339466 -Node: Concatenation341972 -Ref: Concatenation-Footnote-1344819 -Node: Assignment Ops344926 -Ref: table-assign-ops349918 -Node: Increment Ops351231 -Node: Truth Values and Conditions354691 -Node: Truth Values355765 -Node: Typing and Comparison356813 -Node: Variable Typing357633 -Node: Comparison Operators361257 -Ref: table-relational-ops361676 -Node: POSIX String Comparison365171 -Ref: POSIX String Comparison-Footnote-1366245 -Node: Boolean Ops366384 -Ref: Boolean Ops-Footnote-1370866 -Node: Conditional Exp370958 -Node: Function Calls372694 -Node: Precedence376574 -Node: Locales380233 -Node: Expressions Summary381865 -Node: Patterns and Actions384438 -Node: Pattern Overview385558 -Node: Regexp Patterns387235 -Node: Expression Patterns387777 -Node: Ranges391558 -Node: BEGIN/END394666 -Node: Using BEGIN/END395427 -Ref: Using BEGIN/END-Footnote-1398164 -Node: I/O And BEGIN/END398270 -Node: BEGINFILE/ENDFILE400586 -Node: Empty403493 -Node: Using Shell Variables403810 -Node: Action Overview406084 -Node: Statements408409 -Node: If Statement410257 -Node: While Statement411752 -Node: Do Statement413780 -Node: For Statement414928 -Node: Switch Statement418087 -Node: Break Statement420473 -Node: Continue Statement422565 -Node: Next Statement424392 -Node: Nextfile Statement426775 -Node: Exit Statement429427 -Node: Built-in Variables431832 -Node: User-modified432965 -Ref: User-modified-Footnote-1440592 -Node: Auto-set440654 -Ref: Auto-set-Footnote-1453722 -Ref: Auto-set-Footnote-2453928 -Node: ARGC and ARGV453984 -Node: Pattern Action Summary458203 -Node: Arrays460633 -Node: Array Basics461962 -Node: Array Intro462806 -Ref: figure-array-elements464781 -Ref: Array Intro-Footnote-1467485 -Node: Reference to Elements467613 -Node: Assigning Elements470077 -Node: Array Example470568 -Node: Scanning an Array472327 -Node: Controlling Scanning475351 -Ref: Controlling Scanning-Footnote-1480750 -Node: Numeric Array Subscripts481066 -Node: Uninitialized Subscripts483250 -Node: Delete484869 -Ref: Delete-Footnote-1487621 -Node: Multidimensional487678 -Node: Multiscanning490773 -Node: Arrays of Arrays492364 -Node: Arrays Summary497132 -Node: Functions499225 -Node: Built-in500263 -Node: Calling Built-in501341 -Node: Numeric Functions503337 -Ref: Numeric Functions-Footnote-1507365 -Ref: Numeric Functions-Footnote-2507722 -Ref: Numeric Functions-Footnote-3507770 -Node: String Functions508042 -Ref: String Functions-Footnote-1531550 -Ref: String Functions-Footnote-2531679 -Ref: String Functions-Footnote-3531927 -Node: Gory Details532014 -Ref: table-sub-escapes533805 -Ref: table-sub-proposed535324 -Ref: table-posix-sub536687 -Ref: table-gensub-escapes538228 -Ref: Gory Details-Footnote-1539051 -Node: I/O Functions539202 -Ref: I/O Functions-Footnote-1546423 -Node: Time Functions546571 -Ref: Time Functions-Footnote-1557076 -Ref: Time Functions-Footnote-2557144 -Ref: Time Functions-Footnote-3557302 -Ref: Time Functions-Footnote-4557413 -Ref: Time Functions-Footnote-5557525 -Ref: Time Functions-Footnote-6557752 -Node: Bitwise Functions558018 -Ref: table-bitwise-ops558612 -Ref: Bitwise Functions-Footnote-1562950 -Node: Type Functions563123 -Node: I18N Functions564279 -Node: User-defined565930 -Node: Definition Syntax566735 -Ref: Definition Syntax-Footnote-1572422 -Node: Function Example572493 -Ref: Function Example-Footnote-1575415 -Node: Function Caveats575437 -Node: Calling A Function575955 -Node: Variable Scope576913 -Node: Pass By Value/Reference579907 -Node: Return Statement583406 -Node: Dynamic Typing586385 -Node: Indirect Calls587315 -Ref: Indirect Calls-Footnote-1597566 -Node: Functions Summary597694 -Node: Library Functions600399 -Ref: Library Functions-Footnote-1604008 -Ref: Library Functions-Footnote-2604151 -Node: Library Names604322 -Ref: Library Names-Footnote-1607783 -Ref: Library Names-Footnote-2608006 -Node: General Functions608092 -Node: Strtonum Function609195 -Node: Assert Function612217 -Node: Round Function615543 -Node: Cliff Random Function617084 -Node: Ordinal Functions618100 -Ref: Ordinal Functions-Footnote-1621163 -Ref: Ordinal Functions-Footnote-2621415 -Node: Join Function621625 -Ref: Join Function-Footnote-1623395 -Node: Getlocaltime Function623595 -Node: Readfile Function627339 -Node: Shell Quoting629313 -Node: Data File Management630714 -Node: Filetrans Function631346 -Node: Rewind Function635443 -Node: File Checking636829 -Ref: File Checking-Footnote-1638163 -Node: Empty Files638364 -Node: Ignoring Assigns640343 -Node: Getopt Function641893 -Ref: Getopt Function-Footnote-1653363 -Node: Passwd Functions653563 -Ref: Passwd Functions-Footnote-1662404 -Node: Group Functions662492 -Ref: Group Functions-Footnote-1670391 -Node: Walking Arrays670598 -Node: Library Functions Summary673608 -Node: Library Exercises675014 -Node: Sample Programs675479 -Node: Running Examples676249 -Node: Clones676977 -Node: Cut Program678201 -Node: Egrep Program687922 -Ref: Egrep Program-Footnote-1695434 -Node: Id Program695544 -Node: Split Program699224 -Ref: Split Program-Footnote-1702683 -Node: Tee Program702812 -Node: Uniq Program705602 -Node: Wc Program713028 -Ref: Wc Program-Footnote-1717283 -Node: Miscellaneous Programs717377 -Node: Dupword Program718590 -Node: Alarm Program720620 -Node: Translate Program725475 -Ref: Translate Program-Footnote-1730040 -Node: Labels Program730310 -Ref: Labels Program-Footnote-1733661 -Node: Word Sorting733745 -Node: History Sorting737817 -Node: Extract Program739652 -Node: Simple Sed747183 -Node: Igawk Program750257 -Ref: Igawk Program-Footnote-1764588 -Ref: Igawk Program-Footnote-2764790 -Ref: Igawk Program-Footnote-3764912 -Node: Anagram Program765027 -Node: Signature Program768089 -Node: Programs Summary769336 -Node: Programs Exercises770551 -Ref: Programs Exercises-Footnote-1774680 -Node: Advanced Features774771 -Node: Nondecimal Data776761 -Node: Array Sorting778352 -Node: Controlling Array Traversal779052 -Ref: Controlling Array Traversal-Footnote-1787421 -Node: Array Sorting Functions787539 -Ref: Array Sorting Functions-Footnote-1791426 -Node: Two-way I/O791622 -Ref: Two-way I/O-Footnote-1796573 -Ref: Two-way I/O-Footnote-2796760 -Node: TCP/IP Networking796842 -Node: Profiling799749 -Node: Advanced Features Summary807288 -Node: Internationalization809224 -Node: I18N and L10N810704 -Node: Explaining gettext811391 -Ref: Explaining gettext-Footnote-1816414 -Ref: Explaining gettext-Footnote-2816599 -Node: Programmer i18n816764 -Ref: Programmer i18n-Footnote-1821620 -Node: Translator i18n821669 -Node: String Extraction822463 -Ref: String Extraction-Footnote-1823596 -Node: Printf Ordering823682 -Ref: Printf Ordering-Footnote-1826468 -Node: I18N Portability826532 -Ref: I18N Portability-Footnote-1828988 -Node: I18N Example829051 -Ref: I18N Example-Footnote-1831857 -Node: Gawk I18N831930 -Node: I18N Summary832575 -Node: Debugger833916 -Node: Debugging834938 -Node: Debugging Concepts835379 -Node: Debugging Terms837188 -Node: Awk Debugging839763 -Node: Sample Debugging Session840669 -Node: Debugger Invocation841203 -Node: Finding The Bug842589 -Node: List of Debugger Commands849067 -Node: Breakpoint Control850400 -Node: Debugger Execution Control854094 -Node: Viewing And Changing Data857456 -Node: Execution Stack860830 -Node: Debugger Info862467 -Node: Miscellaneous Debugger Commands866538 -Node: Readline Support871547 -Node: Limitations872443 -Node: Debugging Summary874552 -Node: Arbitrary Precision Arithmetic875725 -Node: Computer Arithmetic877141 -Ref: table-numeric-ranges880732 -Ref: Computer Arithmetic-Footnote-1881454 -Node: Math Definitions881511 -Ref: table-ieee-formats884825 -Ref: Math Definitions-Footnote-1885428 -Node: MPFR features885533 -Node: FP Math Caution887206 -Ref: FP Math Caution-Footnote-1888278 -Node: Inexactness of computations888647 -Node: Inexact representation889607 -Node: Comparing FP Values890967 -Node: Errors accumulate892049 -Node: Getting Accuracy893482 -Node: Try To Round896192 -Node: Setting precision897091 -Ref: table-predefined-precision-strings897788 -Node: Setting the rounding mode899618 -Ref: table-gawk-rounding-modes899992 -Ref: Setting the rounding mode-Footnote-1903400 -Node: Arbitrary Precision Integers903579 -Ref: Arbitrary Precision Integers-Footnote-1906563 -Node: POSIX Floating Point Problems906712 -Ref: POSIX Floating Point Problems-Footnote-1910594 -Node: Floating point summary910632 -Node: Dynamic Extensions912822 -Node: Extension Intro914375 -Node: Plugin License915641 -Node: Extension Mechanism Outline916438 -Ref: figure-load-extension916877 -Ref: figure-register-new-function918442 -Ref: figure-call-new-function919534 -Node: Extension API Description921597 -Node: Extension API Functions Introduction923047 -Node: General Data Types927859 -Ref: General Data Types-Footnote-1933814 -Node: Memory Allocation Functions934113 -Ref: Memory Allocation Functions-Footnote-1936958 -Node: Constructor Functions937057 -Node: Registration Functions938802 -Node: Extension Functions939487 -Node: Exit Callback Functions941786 -Node: Extension Version String943036 -Node: Input Parsers943699 -Node: Output Wrappers953584 -Node: Two-way processors958096 -Node: Printing Messages960360 -Ref: Printing Messages-Footnote-1961436 -Node: Updating 'ERRNO'961589 -Node: Requesting Values962330 -Ref: table-value-types-returned963069 -Node: Accessing Parameters963952 -Node: Symbol Table Access965188 -Node: Symbol table by name965700 -Node: Symbol table by cookie967721 -Ref: Symbol table by cookie-Footnote-1971870 -Node: Cached values971934 -Ref: Cached values-Footnote-1975435 -Node: Array Manipulation975526 -Ref: Array Manipulation-Footnote-1976625 -Node: Array Data Types976662 -Ref: Array Data Types-Footnote-1979320 -Node: Array Functions979412 -Node: Flattening Arrays983271 -Node: Creating Arrays990179 -Node: Extension API Variables994951 -Node: Extension Versioning995587 -Node: Extension API Informational Variables997478 -Node: Extension API Boilerplate998542 -Node: Finding Extensions1002356 -Node: Extension Example1002916 -Node: Internal File Description1003714 -Node: Internal File Ops1007794 -Ref: Internal File Ops-Footnote-11019556 -Node: Using Internal File Ops1019696 -Ref: Using Internal File Ops-Footnote-11022079 -Node: Extension Samples1022354 -Node: Extension Sample File Functions1023883 -Node: Extension Sample Fnmatch1031532 -Node: Extension Sample Fork1033019 -Node: Extension Sample Inplace1034237 -Node: Extension Sample Ord1037447 -Node: Extension Sample Readdir1038283 -Ref: table-readdir-file-types1039172 -Node: Extension Sample Revout1039977 -Node: Extension Sample Rev2way1040566 -Node: Extension Sample Read write array1041306 -Node: Extension Sample Readfile1043248 -Node: Extension Sample Time1044343 -Node: Extension Sample API Tests1045691 -Node: gawkextlib1046183 -Node: Extension summary1048607 -Node: Extension Exercises1052299 -Node: Language History1053796 -Node: V7/SVR3.11055452 -Node: SVR41057605 -Node: POSIX1059039 -Node: BTL1060419 -Node: POSIX/GNU1061149 -Node: Feature History1066670 -Node: Common Extensions1080000 -Node: Ranges and Locales1081283 -Ref: Ranges and Locales-Footnote-11085899 -Ref: Ranges and Locales-Footnote-21085926 -Ref: Ranges and Locales-Footnote-31086161 -Node: Contributors1086382 -Node: History summary1091951 -Node: Installation1093331 -Node: Gawk Distribution1094276 -Node: Getting1094760 -Node: Extracting1095583 -Node: Distribution contents1097221 -Node: Unix Installation1102974 -Node: Quick Installation1103590 -Node: Additional Configuration Options1106017 -Node: Configuration Philosophy1107821 -Node: Non-Unix Installation1110191 -Node: PC Installation1110649 -Node: PC Binary Installation1111969 -Node: PC Compiling1113821 -Ref: PC Compiling-Footnote-11116845 -Node: PC Testing1116954 -Node: PC Using1118134 -Node: Cygwin1122248 -Node: MSYS1123018 -Node: VMS Installation1123519 -Node: VMS Compilation1124310 -Ref: VMS Compilation-Footnote-11125540 -Node: VMS Dynamic Extensions1125598 -Node: VMS Installation Details1127283 -Node: VMS Running1129536 -Node: VMS GNV1132377 -Node: VMS Old Gawk1133112 -Node: Bugs1133583 -Node: Other Versions1137697 -Node: Installation summary1144171 -Node: Notes1145229 -Node: Compatibility Mode1146094 -Node: Additions1146876 -Node: Accessing The Source1147801 -Node: Adding Code1149237 -Node: New Ports1155392 -Node: Derived Files1159880 -Ref: Derived Files-Footnote-11165365 -Ref: Derived Files-Footnote-21165400 -Ref: Derived Files-Footnote-31165998 -Node: Future Extensions1166112 -Node: Implementation Limitations1166770 -Node: Extension Design1167953 -Node: Old Extension Problems1169107 -Ref: Old Extension Problems-Footnote-11170625 -Node: Extension New Mechanism Goals1170682 -Ref: Extension New Mechanism Goals-Footnote-11174046 -Node: Extension Other Design Decisions1174235 -Node: Extension Future Growth1176348 -Node: Old Extension Mechanism1177184 -Node: Notes summary1178947 -Node: Basic Concepts1180129 -Node: Basic High Level1180810 -Ref: figure-general-flow1181092 -Ref: figure-process-flow1181777 -Ref: Basic High Level-Footnote-11185078 -Node: Basic Data Typing1185263 -Node: Glossary1188591 -Node: Copying1220537 -Node: GNU Free Documentation License1258076 -Node: Index1283194 +Node: Foreword342435 +Node: Foreword446877 +Node: Preface48409 +Ref: Preface-Footnote-151281 +Ref: Preface-Footnote-251388 +Ref: Preface-Footnote-351622 +Node: History51764 +Node: Names54117 +Ref: Names-Footnote-155211 +Node: This Manual55358 +Ref: This Manual-Footnote-161840 +Node: Conventions61940 +Node: Manual History64295 +Ref: Manual History-Footnote-167291 +Ref: Manual History-Footnote-267332 +Node: How To Contribute67406 +Node: Acknowledgments68535 +Node: Getting Started73403 +Node: Running gawk75842 +Node: One-shot77032 +Node: Read Terminal78295 +Node: Long80327 +Node: Executable Scripts81840 +Ref: Executable Scripts-Footnote-184635 +Node: Comments84738 +Node: Quoting87222 +Node: DOS Quoting92740 +Node: Sample Data Files93415 +Node: Very Simple96010 +Node: Two Rules100912 +Node: More Complex102798 +Node: Statements/Lines105661 +Ref: Statements/Lines-Footnote-1110120 +Node: Other Features110385 +Node: When111322 +Ref: When-Footnote-1113076 +Node: Intro Summary113141 +Node: Invoking Gawk114025 +Node: Command Line115539 +Node: Options116337 +Ref: Options-Footnote-1131988 +Ref: Options-Footnote-2132218 +Node: Other Arguments132243 +Node: Naming Standard Input135190 +Node: Environment Variables136283 +Node: AWKPATH Variable136841 +Ref: AWKPATH Variable-Footnote-1140252 +Ref: AWKPATH Variable-Footnote-2140297 +Node: AWKLIBPATH Variable140558 +Node: Other Environment Variables141815 +Node: Exit Status145453 +Node: Include Files146130 +Node: Loading Shared Libraries149725 +Node: Obsolete151153 +Node: Undocumented151845 +Node: Invoking Summary152142 +Node: Regexp153802 +Node: Regexp Usage155256 +Node: Escape Sequences157293 +Node: Regexp Operators163526 +Ref: Regexp Operators-Footnote-1170943 +Ref: Regexp Operators-Footnote-2171090 +Node: Bracket Expressions171188 +Ref: table-char-classes173211 +Node: Leftmost Longest176157 +Node: Computed Regexps177460 +Node: GNU Regexp Operators180887 +Node: Case-sensitivity184566 +Ref: Case-sensitivity-Footnote-1187453 +Ref: Case-sensitivity-Footnote-2187688 +Node: Regexp Summary187796 +Node: Reading Files189262 +Node: Records191425 +Node: awk split records192158 +Node: gawk split records197090 +Ref: gawk split records-Footnote-1201634 +Node: Fields201671 +Node: Nonconstant Fields204412 +Ref: Nonconstant Fields-Footnote-1206648 +Node: Changing Fields206852 +Node: Field Separators212782 +Node: Default Field Splitting215480 +Node: Regexp Field Splitting216598 +Node: Single Character Fields219951 +Node: Command Line Field Separator221011 +Node: Full Line Fields224229 +Ref: Full Line Fields-Footnote-1225751 +Ref: Full Line Fields-Footnote-2225797 +Node: Field Splitting Summary225898 +Node: Constant Size227972 +Node: Splitting By Content232551 +Ref: Splitting By Content-Footnote-1236522 +Node: Multiple Line236685 +Ref: Multiple Line-Footnote-1242568 +Node: Getline242747 +Node: Plain Getline245214 +Node: Getline/Variable247853 +Node: Getline/File249002 +Node: Getline/Variable/File250388 +Ref: Getline/Variable/File-Footnote-1251992 +Node: Getline/Pipe252080 +Node: Getline/Variable/Pipe254785 +Node: Getline/Coprocess255918 +Node: Getline/Variable/Coprocess257183 +Node: Getline Notes257923 +Node: Getline Summary260718 +Ref: table-getline-variants261140 +Node: Read Timeout261888 +Ref: Read Timeout-Footnote-1265795 +Node: Retrying Input265853 +Node: Command-line directories267052 +Node: Input Summary267959 +Node: Input Exercises271131 +Node: Printing271859 +Node: Print273694 +Node: Print Examples275151 +Node: Output Separators277931 +Node: OFMT279948 +Node: Printf281304 +Node: Basic Printf282089 +Node: Control Letters283663 +Node: Format Modifiers287651 +Node: Printf Examples293666 +Node: Redirection296152 +Node: Special FD302995 +Ref: Special FD-Footnote-1306163 +Node: Special Files306237 +Node: Other Inherited Files306854 +Node: Special Network307855 +Node: Special Caveats308715 +Node: Close Files And Pipes309664 +Ref: Close Files And Pipes-Footnote-1316851 +Ref: Close Files And Pipes-Footnote-2316999 +Node: Nonfatal317150 +Node: Output Summary319475 +Node: Output Exercises320697 +Node: Expressions321376 +Node: Values322564 +Node: Constants323242 +Node: Scalar Constants323933 +Ref: Scalar Constants-Footnote-1324797 +Node: Nondecimal-numbers325047 +Node: Regexp Constants328061 +Node: Using Constant Regexps328587 +Node: Variables331750 +Node: Using Variables332407 +Node: Assignment Options334318 +Node: Conversion336192 +Node: Strings And Numbers336716 +Ref: Strings And Numbers-Footnote-1339780 +Node: Locale influences conversions339889 +Ref: table-locale-affects342647 +Node: All Operators343265 +Node: Arithmetic Ops343894 +Node: Concatenation346400 +Ref: Concatenation-Footnote-1349247 +Node: Assignment Ops349354 +Ref: table-assign-ops354346 +Node: Increment Ops355659 +Node: Truth Values and Conditions359119 +Node: Truth Values360193 +Node: Typing and Comparison361241 +Node: Variable Typing362061 +Node: Comparison Operators365685 +Ref: table-relational-ops366104 +Node: POSIX String Comparison369599 +Ref: POSIX String Comparison-Footnote-1370673 +Node: Boolean Ops370812 +Ref: Boolean Ops-Footnote-1375294 +Node: Conditional Exp375386 +Node: Function Calls377122 +Node: Precedence381002 +Node: Locales384661 +Node: Expressions Summary386293 +Node: Patterns and Actions388866 +Node: Pattern Overview389986 +Node: Regexp Patterns391663 +Node: Expression Patterns392205 +Node: Ranges395986 +Node: BEGIN/END399094 +Node: Using BEGIN/END399855 +Ref: Using BEGIN/END-Footnote-1402592 +Node: I/O And BEGIN/END402698 +Node: BEGINFILE/ENDFILE405014 +Node: Empty407921 +Node: Using Shell Variables408238 +Node: Action Overview410512 +Node: Statements412837 +Node: If Statement414685 +Node: While Statement416180 +Node: Do Statement418208 +Node: For Statement419356 +Node: Switch Statement422515 +Node: Break Statement424901 +Node: Continue Statement426993 +Node: Next Statement428820 +Node: Nextfile Statement431203 +Node: Exit Statement433855 +Node: Built-in Variables436260 +Node: User-modified437393 +Node: Auto-set444981 +Ref: Auto-set-Footnote-1459230 +Ref: Auto-set-Footnote-2459436 +Node: ARGC and ARGV459492 +Node: Pattern Action Summary463711 +Node: Arrays466141 +Node: Array Basics467470 +Node: Array Intro468314 +Ref: figure-array-elements470289 +Ref: Array Intro-Footnote-1472993 +Node: Reference to Elements473121 +Node: Assigning Elements475585 +Node: Array Example476076 +Node: Scanning an Array477835 +Node: Controlling Scanning480859 +Ref: Controlling Scanning-Footnote-1486258 +Node: Numeric Array Subscripts486574 +Node: Uninitialized Subscripts488758 +Node: Delete490377 +Ref: Delete-Footnote-1493129 +Node: Multidimensional493186 +Node: Multiscanning496281 +Node: Arrays of Arrays497872 +Node: Arrays Summary502640 +Node: Functions504733 +Node: Built-in505771 +Node: Calling Built-in506849 +Node: Numeric Functions508845 +Ref: Numeric Functions-Footnote-1513678 +Ref: Numeric Functions-Footnote-2514035 +Ref: Numeric Functions-Footnote-3514083 +Node: String Functions514355 +Ref: String Functions-Footnote-1537863 +Ref: String Functions-Footnote-2537992 +Ref: String Functions-Footnote-3538240 +Node: Gory Details538327 +Ref: table-sub-escapes540118 +Ref: table-sub-proposed541637 +Ref: table-posix-sub543000 +Ref: table-gensub-escapes544541 +Ref: Gory Details-Footnote-1545364 +Node: I/O Functions545515 +Ref: I/O Functions-Footnote-1552736 +Node: Time Functions552884 +Ref: Time Functions-Footnote-1563389 +Ref: Time Functions-Footnote-2563457 +Ref: Time Functions-Footnote-3563615 +Ref: Time Functions-Footnote-4563726 +Ref: Time Functions-Footnote-5563838 +Ref: Time Functions-Footnote-6564065 +Node: Bitwise Functions564331 +Ref: table-bitwise-ops564925 +Ref: Bitwise Functions-Footnote-1569263 +Node: Type Functions569436 +Node: I18N Functions570592 +Node: User-defined572243 +Node: Definition Syntax573048 +Ref: Definition Syntax-Footnote-1578735 +Node: Function Example578806 +Ref: Function Example-Footnote-1581728 +Node: Function Caveats581750 +Node: Calling A Function582268 +Node: Variable Scope583226 +Node: Pass By Value/Reference586220 +Node: Return Statement589719 +Node: Dynamic Typing592698 +Node: Indirect Calls593628 +Ref: Indirect Calls-Footnote-1603879 +Node: Functions Summary604007 +Node: Library Functions606712 +Ref: Library Functions-Footnote-1610321 +Ref: Library Functions-Footnote-2610464 +Node: Library Names610635 +Ref: Library Names-Footnote-1614096 +Ref: Library Names-Footnote-2614319 +Node: General Functions614405 +Node: Strtonum Function615508 +Node: Assert Function618530 +Node: Round Function621856 +Node: Cliff Random Function623397 +Node: Ordinal Functions624413 +Ref: Ordinal Functions-Footnote-1627476 +Ref: Ordinal Functions-Footnote-2627728 +Node: Join Function627938 +Ref: Join Function-Footnote-1629708 +Node: Getlocaltime Function629908 +Node: Readfile Function633652 +Node: Shell Quoting635626 +Node: Data File Management637027 +Node: Filetrans Function637659 +Node: Rewind Function641756 +Node: File Checking643142 +Ref: File Checking-Footnote-1644476 +Node: Empty Files644677 +Node: Ignoring Assigns646656 +Node: Getopt Function648206 +Ref: Getopt Function-Footnote-1659676 +Node: Passwd Functions659876 +Ref: Passwd Functions-Footnote-1668717 +Node: Group Functions668805 +Ref: Group Functions-Footnote-1676704 +Node: Walking Arrays676911 +Node: Library Functions Summary679921 +Node: Library Exercises681327 +Node: Sample Programs681792 +Node: Running Examples682562 +Node: Clones683290 +Node: Cut Program684514 +Node: Egrep Program694235 +Ref: Egrep Program-Footnote-1701747 +Node: Id Program701857 +Node: Split Program705537 +Ref: Split Program-Footnote-1708996 +Node: Tee Program709125 +Node: Uniq Program711915 +Node: Wc Program719341 +Ref: Wc Program-Footnote-1723596 +Node: Miscellaneous Programs723690 +Node: Dupword Program724903 +Node: Alarm Program726933 +Node: Translate Program731788 +Ref: Translate Program-Footnote-1736353 +Node: Labels Program736623 +Ref: Labels Program-Footnote-1739974 +Node: Word Sorting740058 +Node: History Sorting744130 +Node: Extract Program745965 +Node: Simple Sed753496 +Node: Igawk Program756570 +Ref: Igawk Program-Footnote-1770901 +Ref: Igawk Program-Footnote-2771103 +Ref: Igawk Program-Footnote-3771225 +Node: Anagram Program771340 +Node: Signature Program774402 +Node: Programs Summary775649 +Node: Programs Exercises776864 +Ref: Programs Exercises-Footnote-1780993 +Node: Advanced Features781084 +Node: Nondecimal Data783074 +Node: Array Sorting784665 +Node: Controlling Array Traversal785365 +Ref: Controlling Array Traversal-Footnote-1793734 +Node: Array Sorting Functions793852 +Ref: Array Sorting Functions-Footnote-1797739 +Node: Two-way I/O797935 +Ref: Two-way I/O-Footnote-1802886 +Ref: Two-way I/O-Footnote-2803073 +Node: TCP/IP Networking803155 +Node: Profiling806062 +Node: Advanced Features Summary814333 +Node: Internationalization816269 +Node: I18N and L10N817749 +Node: Explaining gettext818436 +Ref: Explaining gettext-Footnote-1823459 +Ref: Explaining gettext-Footnote-2823644 +Node: Programmer i18n823809 +Ref: Programmer i18n-Footnote-1828665 +Node: Translator i18n828714 +Node: String Extraction829508 +Ref: String Extraction-Footnote-1830641 +Node: Printf Ordering830727 +Ref: Printf Ordering-Footnote-1833513 +Node: I18N Portability833577 +Ref: I18N Portability-Footnote-1836033 +Node: I18N Example836096 +Ref: I18N Example-Footnote-1838902 +Node: Gawk I18N838975 +Node: I18N Summary839620 +Node: Debugger840961 +Node: Debugging841983 +Node: Debugging Concepts842424 +Node: Debugging Terms844233 +Node: Awk Debugging846808 +Node: Sample Debugging Session847714 +Node: Debugger Invocation848248 +Node: Finding The Bug849634 +Node: List of Debugger Commands856112 +Node: Breakpoint Control857445 +Node: Debugger Execution Control861139 +Node: Viewing And Changing Data864501 +Node: Execution Stack867875 +Node: Debugger Info869512 +Node: Miscellaneous Debugger Commands873583 +Node: Readline Support878592 +Node: Limitations879488 +Node: Debugging Summary881597 +Node: Arbitrary Precision Arithmetic882770 +Node: Computer Arithmetic884186 +Ref: table-numeric-ranges887777 +Ref: Computer Arithmetic-Footnote-1888499 +Node: Math Definitions888556 +Ref: table-ieee-formats891870 +Ref: Math Definitions-Footnote-1892473 +Node: MPFR features892578 +Node: FP Math Caution894251 +Ref: FP Math Caution-Footnote-1895323 +Node: Inexactness of computations895692 +Node: Inexact representation896652 +Node: Comparing FP Values898012 +Node: Errors accumulate899094 +Node: Getting Accuracy900527 +Node: Try To Round903237 +Node: Setting precision904136 +Ref: table-predefined-precision-strings904833 +Node: Setting the rounding mode906663 +Ref: table-gawk-rounding-modes907037 +Ref: Setting the rounding mode-Footnote-1910445 +Node: Arbitrary Precision Integers910624 +Ref: Arbitrary Precision Integers-Footnote-1915541 +Node: POSIX Floating Point Problems915690 +Ref: POSIX Floating Point Problems-Footnote-1919572 +Node: Floating point summary919610 +Node: Dynamic Extensions921800 +Node: Extension Intro923353 +Node: Plugin License924619 +Node: Extension Mechanism Outline925416 +Ref: figure-load-extension925855 +Ref: figure-register-new-function927420 +Ref: figure-call-new-function928512 +Node: Extension API Description930575 +Node: Extension API Functions Introduction932109 +Node: General Data Types936968 +Ref: General Data Types-Footnote-1942923 +Node: Memory Allocation Functions943222 +Ref: Memory Allocation Functions-Footnote-1946067 +Node: Constructor Functions946166 +Node: Registration Functions947911 +Node: Extension Functions948596 +Node: Exit Callback Functions950895 +Node: Extension Version String952145 +Node: Input Parsers952808 +Node: Output Wrappers962693 +Node: Two-way processors967205 +Node: Printing Messages969469 +Ref: Printing Messages-Footnote-1970545 +Node: Updating 'ERRNO'970698 +Node: Requesting Values971439 +Ref: table-value-types-returned972178 +Node: Accessing Parameters973061 +Node: Symbol Table Access974297 +Node: Symbol table by name974809 +Node: Symbol table by cookie976830 +Ref: Symbol table by cookie-Footnote-1980979 +Node: Cached values981043 +Ref: Cached values-Footnote-1984544 +Node: Array Manipulation984635 +Ref: Array Manipulation-Footnote-1985726 +Node: Array Data Types985763 +Ref: Array Data Types-Footnote-1988421 +Node: Array Functions988513 +Node: Flattening Arrays992372 +Node: Creating Arrays999280 +Node: Redirection API1004052 +Node: Extension API Variables1006883 +Node: Extension Versioning1007516 +Node: Extension API Informational Variables1009407 +Node: Extension API Boilerplate1010471 +Node: Finding Extensions1014285 +Node: Extension Example1014845 +Node: Internal File Description1015643 +Node: Internal File Ops1019723 +Ref: Internal File Ops-Footnote-11031485 +Node: Using Internal File Ops1031625 +Ref: Using Internal File Ops-Footnote-11034008 +Node: Extension Samples1034283 +Node: Extension Sample File Functions1035812 +Node: Extension Sample Fnmatch1043461 +Node: Extension Sample Fork1044948 +Node: Extension Sample Inplace1046166 +Node: Extension Sample Ord1049376 +Node: Extension Sample Readdir1050212 +Ref: table-readdir-file-types1051101 +Node: Extension Sample Revout1051906 +Node: Extension Sample Rev2way1052495 +Node: Extension Sample Read write array1053235 +Node: Extension Sample Readfile1055177 +Node: Extension Sample Time1056272 +Node: Extension Sample API Tests1057620 +Node: gawkextlib1058112 +Node: Extension summary1060559 +Node: Extension Exercises1064251 +Node: Language History1065748 +Node: V7/SVR3.11067404 +Node: SVR41069557 +Node: POSIX1070991 +Node: BTL1072371 +Node: POSIX/GNU1073101 +Node: Feature History1078940 +Node: Common Extensions1093259 +Node: Ranges and Locales1094542 +Ref: Ranges and Locales-Footnote-11099158 +Ref: Ranges and Locales-Footnote-21099185 +Ref: Ranges and Locales-Footnote-31099420 +Node: Contributors1099641 +Node: History summary1105210 +Node: Installation1106590 +Node: Gawk Distribution1107535 +Node: Getting1108019 +Node: Extracting1108842 +Node: Distribution contents1110480 +Node: Unix Installation1116576 +Node: Quick Installation1117258 +Node: Shell Startup Files1119672 +Node: Additional Configuration Options1120750 +Node: Configuration Philosophy1122555 +Node: Non-Unix Installation1124925 +Node: PC Installation1125383 +Node: PC Binary Installation1126703 +Node: PC Compiling1128555 +Ref: PC Compiling-Footnote-11131579 +Node: PC Testing1131688 +Node: PC Using1132868 +Node: Cygwin1136982 +Node: MSYS1137752 +Node: VMS Installation1138253 +Node: VMS Compilation1139044 +Ref: VMS Compilation-Footnote-11140274 +Node: VMS Dynamic Extensions1140332 +Node: VMS Installation Details1142017 +Node: VMS Running1144270 +Node: VMS GNV1147111 +Node: VMS Old Gawk1147846 +Node: Bugs1148317 +Node: Other Versions1152431 +Node: Installation summary1158905 +Node: Notes1159963 +Node: Compatibility Mode1160828 +Node: Additions1161610 +Node: Accessing The Source1162535 +Node: Adding Code1163971 +Node: New Ports1170126 +Node: Derived Files1174614 +Ref: Derived Files-Footnote-11180099 +Ref: Derived Files-Footnote-21180134 +Ref: Derived Files-Footnote-31180732 +Node: Future Extensions1180846 +Node: Implementation Limitations1181504 +Node: Extension Design1182687 +Node: Old Extension Problems1183841 +Ref: Old Extension Problems-Footnote-11185359 +Node: Extension New Mechanism Goals1185416 +Ref: Extension New Mechanism Goals-Footnote-11188780 +Node: Extension Other Design Decisions1188969 +Node: Extension Future Growth1191082 +Node: Old Extension Mechanism1191918 +Node: Notes summary1193681 +Node: Basic Concepts1194863 +Node: Basic High Level1195544 +Ref: figure-general-flow1195826 +Ref: figure-process-flow1196511 +Ref: Basic High Level-Footnote-11199812 +Node: Basic Data Typing1199997 +Node: Glossary1203325 +Node: Copying1235271 +Node: GNU Free Documentation License1272810 +Node: Index1297928 End Tag Table |