diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2011-03-31 22:59:51 +0200 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2011-03-31 22:59:51 +0200 |
commit | b1746329b7749a8f760bab04c12e5127a23e46ed (patch) | |
tree | 404a97cae18ca57da54125252af291415128f57f /doc/gawk.info | |
parent | 089e787a5a970f8005cf4ee34b152bf1747b14b0 (diff) | |
download | egawk-b1746329b7749a8f760bab04c12e5127a23e46ed.tar.gz egawk-b1746329b7749a8f760bab04c12e5127a23e46ed.tar.bz2 egawk-b1746329b7749a8f760bab04c12e5127a23e46ed.zip |
Lots of documentation updates.
Diffstat (limited to 'doc/gawk.info')
-rw-r--r-- | doc/gawk.info | 1140 |
1 files changed, 587 insertions, 553 deletions
diff --git a/doc/gawk.info b/doc/gawk.info index 70091258..fde25465 100644 --- a/doc/gawk.info +++ b/doc/gawk.info @@ -304,6 +304,8 @@ texts being (a) (see below), and with the Back-Cover Texts being (b) * Scanning an Array:: A variation of the `for' statement. It loops through the indices of an array's existing elements. +* Controlling Scanning:: Controlling the order in which arrays + are scanned. * Delete:: The `delete' statement removes an element from an array. * Numeric Array Subscripts:: How to use numbers as subscripts in @@ -9411,10 +9413,10 @@ with a pound sign (`#'). order in which array indices will be processed by `for (index in array) ...' loops. The value should contain one to three words; separate pairs of words by a single space. One word - controls sort direction, "ascending" or "descending;" another - controls the sort key, "index" or "value;" and the remaining + controls sort direction, `ascending' or `descending'; another + controls the sort key, `index' or `value'; and the remaining one, which is only valid for sorting by index, is comparison - mode, "string" or "number." When two or three words are + mode, `string' or `number'. When two or three words are present, they may be specified in any order, so `ascending index string' and `string ascending index' are equivalent. Also, each word may be truncated, so `asc index str' and `a i @@ -9423,17 +9425,18 @@ with a pound sign (`#'). letter each. You can omit direction and/or key type and/or comparison - mode. Provided that at least one is present, missing parts - of a sort specification default to `ascending', `index', and - (for indices only) `string', respectively. An empty string, - `""', is the same as `unsorted' and will cause `for (index in - array) ...' to process the indices in arbitrary order. - Another thing to note is that the array sorting takes place - at the time `for (... in ...)' is about to start executing, - so changing the value of `PROCINFO["sorted_in"]' during loop - execution does not have any effect on the order in which any - remaining array elements get processed. *Note Scanning an - Array::, for more information. + mode. Provided that at least one is present, the missing + parts of a sort specification default to `ascending', + `index', and (for indices only) `string', respectively. An + empty string, `""', is the same as `unsorted' and will cause + `for (index in array) ...' to process the indices in + arbitrary order. Another thing to note is that the array + sorting takes place at the time the `for' loop is about to + start executing, so changing the value of + `PROCINFO["sorted_in"]' during loop execution does not have + any effect on the order in which any remaining array elements + get processed. *Note Scanning an Array::, for more + information. `PROCINFO["strftime"]' The default time format string for `strftime()'. Assigning a @@ -9900,7 +9903,11 @@ File: gawk.info, Node: Scanning an Array, Prev: Array Example, Up: Array Basi 8.1.5 Scanning All Elements of an Array --------------------------------------- -In programs that use arrays, it is often necessary to use a loop that +* Menu: + +* Controlling Scanning:: Controlling the order in which arrays are scanned. + + In programs that use arrays, it is often necessary to use a loop that executes once for each element of an array. In other languages, where arrays are contiguous and indices are limited to positive integers, this is easy: all the valid indices can be found by counting from the @@ -9950,41 +9957,51 @@ statements in the loop body; it is not predictable whether the `for' loop will reach them. Similarly, changing VAR inside the loop may produce strange results. It is best to avoid such things. - As an extension, `gawk' makes it possible for you to loop over the + +File: gawk.info, Node: Controlling Scanning, Up: Scanning an Array + +8.1.5.1 Controlling Array Scanning Order +........................................ + +As an extension, `gawk' makes it possible for you to loop over the elements of an array in order, based on the value of `PROCINFO["sorted_in"]' (*note Auto-set::). Several sorting options are available: -`"ascending index string"' - Order by indices compared as strings, the most basic sort. +`ascending index string' + Order by indices compared as strings; this is the most basic sort. (Internally, array indices are always strings, so with `a[2*5] = 1' the index is actually `"10"' rather than numeric 10.) -`"ascending index number"' +`ascending index number' Order by indices but force them to be treated as numbers in the process. Any index with non-numeric value will end up positioned - as if it were 0. + as if it were zero. -`"ascending value"' +`ascending value' Order by element values rather than by indices. Comparisons are done as numeric when both values being compared are numeric, or - done as strings when either or both aren't numeric. Sub-arrays, - if present, come out last. + done as strings when either or both aren't numeric (*note Variable + Typing::). Subarrays, if present, come out last. -`"descending index string"' +`descending index string' Reverse order from the most basic sort. -`"descending index number"' +`descending index number' Numeric indices ordered from high to low. -`"descending value"' - Element values ordered from high to low. Sub-arrays, if present, +`descending value' + Element values ordered from high to low. Subarrays, if present, come out first. -`"unsorted"' +`unsorted' Array elements are processed in arbitrary order, the normal `awk' behavior. + The array traversal order is determined before the `for' loop starts +to run. Changing `PROCINFO["sorted_in"]' in the looop body will not +affect the loop. + Portions of the sort specification string may be truncated or omitted. The default is `ascending' for direction, `index' for sort key type, and (when sorting by index only) `string' for comparison mode. @@ -10008,31 +10025,31 @@ For example: -| 3 3 -| 4 4 - As a side note, sorting the array indices before traversing the -array has been reported to add 15% to 20% overhead to the execution -time of `awk' programs. For this reason, sorted array traversal is not -the default. - When sorting an array by element values, if a value happens to be a -sub-array then it is considered to be greater than any string or -numeric value, regardless of what the sub-array itself contains, and -all sub-arrays are treated as being equal to each other. Their order +subarray then it is considered to be greater than any string or numeric +value, regardless of what the subarray itself contains, and all +subarrays are treated as being equal to each other. Their order relative to each other is determined by their index strings. - Sorting by array element values (for values other than sub-arrays) + Sorting by array element values (for values other than subarrays) always uses basic `awk' comparison mode: if both values happen to be numbers then they're compared as numbers, otherwise they're compared as strings. When string comparisons are made during a sort, either for element values where one or both aren't numbers or for element indices handled -as strings, the value of `IGNORECASE' controls whether the comparisons -treat corresponding upper and lower case letters as equivalent or -distinct. +as strings, the value of `IGNORECASE' (*note Built-in Variables::) +controls whether the comparisons treat corresponding upper and lower +case letters as equivalent or distinct. This sorting extension is disabled in POSIX mode, since the `PROCINFO' array is not special in that case. + As a side note, sorting the array indices before traversing the +array has been reported to add 15% to 20% overhead to the execution +time of `awk' programs. For this reason, sorted array traversal is not +the default. + File: gawk.info, Node: Delete, Next: Numeric Array Subscripts, Prev: Array Basics, Up: Arrays @@ -20013,7 +20030,7 @@ File: gawk.info, Node: Extracting, Next: Distribution contents, Prev: Getting B.1.2 Extracting the Distribution --------------------------------- -`gawk' is distributed as several `tar' file compressed with different +`gawk' is distributed as several `tar' files compressed with different compression programs: `gzip', `bzip2', and `xz'. For simplicity, the rest of these instructions assume you are using the one compressed with the GNU Zip program, `gzip'. @@ -20072,9 +20089,15 @@ Various `.c', `.y', and `.h' files A detailed list of source code changes as bugs are fixed or improvements made. +`ChangeLog.0' + An older list of source code changes. + `NEWS' A list of changes to `gawk' since the last release or patch. +`NEWS.0' + An older list of changes to `gawk'. + `COPYING' The GNU General Public License. @@ -20089,12 +20112,14 @@ Various `.c', `.y', and `.h' files not limits in `gawk' itself. `POSIX.STD' - A description of one area in which the POSIX standard for `awk' is - incorrect as well as how `gawk' handles the problem. + A description of behaviors in the POSIX standard for `awk' which + are left undefined, or where `gawk' may not comply fully, as well + as a list of things that the POSIX standard should describe but + does not. `doc/awkforai.txt' - A short article describing why `gawk' is a good language for AI - (Artificial Intelligence) programming. + A short article describing why `gawk' is a good language for + Artificial Intelligence (AI) programming. `doc/bc_notes' A brief description of `gawk''s "byte code" internals. @@ -20259,7 +20284,7 @@ run `make check'. All of the tests should succeed. If these steps do not work, or if any of the tests fail, check the files in the `README_d' directory to see if you've found a known problem. If the failure is not described there, please send in a bug report (*note -Bugs::.) +Bugs::). File: gawk.info, Node: Additional Configuration Options, Next: Configuration Philosophy, Prev: Quick Installation, Up: Unix Installation @@ -20270,10 +20295,6 @@ B.2.2 Additional Configuration Options There are several additional options you may use on the `configure' command line when compiling `gawk' from scratch, including: -`--with-whiny-user-strftime' - Force use of the included version of the `strftime()' function for - deficient systems. - `--disable-lint' Disable all lint checking within `gawk'. The `--lint' and `--lint-old' options (*note Options::) are accepted, but silently @@ -20294,6 +20315,10 @@ command line when compiling `gawk' from scratch, including: desirable, but it may bring you some slight performance improvement. +`--with-whiny-user-strftime' + Force use of the included version of the `strftime()' function for + deficient systems. + Use the command `./configure --help' to see the full list of options that `configure' supplies. @@ -20630,8 +20655,8 @@ B.3.1.5 Using `gawk' In The Cygwin Environment are using the Cygwin environment (http://www.cygwin.com). This environment provides an excellent simulation of Unix, using the GNU tools, such as Bash, the GNU Compiler Collection (GCC), GNU Make, and -other GNU tools. Compilation and installation for Cygwin is the same -as for a Unix system: +other GNU programs. Compilation and installation for Cygwin is the +same as for a Unix system: tar -xvpzf gawk-4.0.0.tar.gz cd gawk-4.0.0 @@ -20666,9 +20691,8 @@ File: gawk.info, Node: VMS Installation, Prev: PC Installation, Up: Non-Unix B.3.2 How to Compile and Install `gawk' on VMS ---------------------------------------------- -This node describes how to compile and install `gawk' under VMS. - - The older designation "VMS" is used throughout to refer to OpenVMS. +This node describes how to compile and install `gawk' under VMS. The +older designation "VMS" is used throughout to refer to OpenVMS. * Menu: @@ -20868,11 +20892,11 @@ considered authoritative if it conflicts with this Info file. The people maintaining the non-Unix ports of `gawk' are as follows: -MS-Windows using MINGW Eli Zaretskii, <eliz@gnu.org>. - Scott Deifik, <scottd.mail@sbcglobal.net>. -OS/2 Andreas Buening, <andreas.buening@nexgo.de>. -VMS Pat Rankin, <rankin@pactechdata.com>. -z/OS (OS/390) Dave Pitts, <dpitts@cozx.com>. +MS-Windows with MINGW and DJGPP Eli Zaretskii, <eliz@gnu.org>. + Scott Deifik, <scottd.mail@sbcglobal.net>. +OS/2 Andreas Buening, <andreas.buening@nexgo.de>. +VMS Pat Rankin, <rankin@pactechdata.com>. +z/OS (OS/390) Dave Pitts, <dpitts@cozx.com>. If your bug is also reproducible under Unix, please send a copy of your report to the <bug-gawk@gnu.org> email list as well. @@ -21073,7 +21097,7 @@ File: gawk.info, Node: Accessing The Source, Next: Adding Code, Up: Additions C.2.1 Accessing The `gawk' Git Repository ----------------------------------------- -As `gawk' is Free Software, the source code is always available *note +As `gawk' is Free Software, the source code is always available. *note Gawk Distribution::, describes how to get and build the formal, released versions of `gawk'. @@ -21118,13 +21142,21 @@ possible to include your changes: If that's not possible, continue with the rest of the steps in this list. - 2. Get the latest version. It is much easier for me to integrate + 2. Be prepared to sign the appropriate paperwork. In order for the + FSF to distribute your changes, you must either place those + changes in the public domain and submit a signed statement to that + effect, or assign the copyright in your changes to the FSF. Both + of these actions are easy to do and _many_ people have done so + already. If you have questions, please contact me (*note Bugs::), + or <assign@gnu.org>. + + 3. Get the latest version. It is much easier for me to integrate changes if they are relative to the most recent distributed version of `gawk'. If your version of `gawk' is very old, I may not be able to integrate them at all. (*Note Getting::, for information on getting the latest version of `gawk'.) - 3. See *note (Version)Top:: standards, GNU Coding Standards. This + 4. See *note (Version)Top:: standards, GNU Coding Standards. This document describes how GNU software should be written. If you haven't read it, please do so, preferably _before_ starting to modify `gawk'. (The `GNU Coding Standards' are available from the @@ -21132,7 +21164,7 @@ possible to include your changes: (http://www.gnu.org/prep/standards_toc.html). Texinfo, Info, and DVI versions are also available.) - 4. Use the `gawk' coding style. The C code for `gawk' follows the + 5. Use the `gawk' coding style. The C code for `gawk' follows the instructions in the `GNU Coding Standards', with minor exceptions. The code is formatted using the traditional "K&R" style, particularly as regards to the placement of braces and the use of @@ -21143,8 +21175,8 @@ possible to include your changes: * Put the name of the function at the beginning of its own line. - * Put the return type of the function, even if it is `int()', - on the line above the line with the name and arguments of the + * Put the return type of the function, even if it is `int', on + the line above the line with the name and arguments of the function. * Put spaces around parentheses used in control structures @@ -21180,18 +21212,19 @@ possible to include your changes: worth the minor benefit of not having to free the storage. Instead, use `malloc()' and `free()'. + * Do not use comparisons of the form `! strcmp(a, b)' or + similar. As Henry Spencer once said, "`strcmp()' is not a + boolean!" Instead, use `strcmp(a, b) == 0'. + + * If adding new bit flag values, use explicit hexadecimal + constants (`0x001', `0x002', `0x004', and son on) instead of + shifting one left by successive amounts (`(1<<0)', `(1<<1)', + and so on). + NOTE: If I have to reformat your code to follow the coding style used in `gawk', I may not bother to integrate your changes at all. - 5. Be prepared to sign the appropriate paperwork. In order for the - FSF to distribute your changes, you must either place those - changes in the public domain and submit a signed statement to that - effect, or assign the copyright in your changes to the FSF. Both - of these actions are easy to do and _many_ people have done so - already. If you have questions, please contact me (*note Bugs::), - or <assign@gnu.org>. - 6. Update the documentation. Along with your new code, please supply new sections and/or chapters for this Info file. If at all possible, please use real Texinfo, instead of just supplying @@ -21236,7 +21269,14 @@ steps: 1. Follow the guidelines in *note Adding Code::, concerning coding style, submission of diffs, and so on. - 2. When doing a port, bear in mind that your code must coexist + 2. Be prepared to sign the appropriate paperwork. In order for the + FSF to distribute your code, you must either place your code in + the public domain and submit a signed statement to that effect, or + assign the copyright in your code to the FSF. Both of these + actions are easy to do and _many_ people have done so already. If + you have questions, please contact me, or <gnu@gnu.org>. + + 3. When doing a port, bear in mind that your code must coexist peacefully with the rest of `gawk' and the other ports. Avoid gratuitous changes to the system-independent parts of the code. If at all possible, avoid sprinkling `#ifdef's just for your port @@ -21247,7 +21287,7 @@ steps: can, of course, distribute your changes on your own, as long as you comply with the GPL (*note Copying::). - 3. A number of the files that come with `gawk' are maintained by other + 4. A number of the files that come with `gawk' are maintained by other people. Thus, you should not change them unless it is for a very good reason; i.e., changes are not out of the question, but changes to these files are scrutinized extra carefully. The files @@ -21256,13 +21296,13 @@ steps: `regexec.c', `regexex.c', `regex.h', `regex_internal.c', and `regex_internal.h'. - 4. Be willing to continue to maintain the port. Non-Unix operating + 5. Be willing to continue to maintain the port. Non-Unix operating systems are supported by volunteers who maintain the code needed to compile and run `gawk' on their systems. If noone volunteers to maintain a port, it becomes unsupported and it may be necessary to remove it from the distribution. - 5. Supply an appropriate `gawkmisc.???' file. Each port has its own + 6. Supply an appropriate `gawkmisc.???' file. Each port has its own `gawkmisc.???' that implements certain operating system specific functions. This is cleaner than a plethora of `#ifdef's scattered throughout the code. The `gawkmisc.c' in the main source @@ -21278,7 +21318,7 @@ steps: (Currently, this is only an issue for the PC operating system ports.) - 6. Supply a `Makefile' as well as any other C source and header files + 7. Supply a `Makefile' as well as any other C source and header files that are necessary for your operating system. All your code should be in a separate subdirectory, with a name that is the same as, or reminiscent of, either your operating system or the @@ -21288,17 +21328,10 @@ steps: avoid using names for your files that duplicate the names of files in the main source directory. - 7. Update the documentation. Please write a section (or sections) + 8. Update the documentation. Please write a section (or sections) for this Info file describing the installation and compilation steps needed to compile and/or install `gawk' for your system. - 8. Be prepared to sign the appropriate paperwork. In order for the - FSF to distribute your code, you must either place your code in - the public domain and submit a signed statement to that effect, or - assign the copyright in your code to the FSF. Both of these - actions are easy to do and _many_ people have done so already. If - you have questions, please contact me, or <gnu@gnu.org>. - Following these steps makes it much easier to integrate your changes into `gawk' and have them coexist happily with other operating systems' code that is already there. @@ -21423,7 +21456,7 @@ when writing extensions. The next minor node shows how they are used: `NODE **assoc_lookup(NODE *symbol, NODE *subs, int reference)' Finds, and installs if necessary, array elements. `symbol' is the array, `subs' is the subscript. This is usually a value created - with `make_string' (see below). `reference' should be `TRUE' if + with `make_string()' (see below). `reference' should be `TRUE' if it is an error to use the value before it is created. Typically, `FALSE' is the correct value to use from extension functions. @@ -21444,7 +21477,7 @@ when writing extensions. The next minor node shows how they are used: `void unref(NODE *n)' This macro releases the memory associated with a `NODE' allocated - with `make_string' or `make_number'. Understanding of `gawk' + with `make_string()' or `make_number()'. Understanding of `gawk' memory management is helpful. `void make_builtin(const char *name, NODE *(*func)(NODE *), int count)' @@ -21483,13 +21516,12 @@ when writing extensions. The next minor node shows how they are used: `void update_ERRNO(void)' This function is called from within a C extension function to set the value of `gawk''s `ERRNO' variable, based on the current value - of the C `errno' variable. It is provided as a convenience. + of the C `errno' global variable. It is provided as a convenience. `void update_ERRNO_saved(int errno_saved)' This function is called from within a C extension function to set - the value of `gawk''s `ERRNO' variable, based on the saved value - of the C `errno' variable provided as the argument. It is - provided as a convenience. + the value of `gawk''s `ERRNO' variable, based on the error value + provided as the argument. It is provided as a convenience. `void register_deferred_variable(const char *name, NODE *(*load_func)(void))' This function is called to register a function to be called when a @@ -21514,13 +21546,13 @@ when writing extensions. The next minor node shows how they are used: containing additional state associated with the input processing), and no further open hooks are called. - The function called will most likely want to set the `IOBUF' - `get_record()' method to indicate that future input records should + The function called will most likely want to set the `IOBUF''s + `get_record' method to indicate that future input records should be retrieved by calling that method instead of using the standard `gawk' input processing. - And the function will also probably want to set the `IOBUF' - `close_func()' method to be called when the file is closed to clean + And the function will also probably want to set the `IOBUF''s + `close_func' method to be called when the file is closed to clean up any state associated with the input. Finally, hook functions should be prepared to receive an `IOBUF' @@ -21541,7 +21573,8 @@ function parameter. NODE *the_arg; - the_arg = get_array_argument(2, FALSE); /* assume need 3rd arg, 0-based */ + /* assume need 3rd arg, 0-based */ + the_arg = get_array_argument(2, FALSE); Again, you should spend time studying the `gawk' internals; don't just blindly copy this code. @@ -21583,8 +21616,8 @@ implements these functions for `gawk' in an external extension library. File: gawk.info, Node: Internal File Description, Next: Internal File Ops, Up: Sample Library -C.3.3.1 Using `chdir' and `stat' -................................ +C.3.3.1 Using `chdir()' and `stat()' +.................................... This minor node shows how to use the new functions at the `awk' level once they've been integrated into the running `gawk' interpreter. @@ -21734,18 +21767,18 @@ other POSIX-compliant systems:(1) The file includes the `"awk.h"' header file for definitions for the `gawk' internals. It includes `<sys/sysmacros.h>' for access to the -`major' and `minor' macros. +`major()' and `minor'() macros. By convention, for an `awk' function `foo', the function that implements it is called `do_foo'. The function should take a `int' argument, usually called `nargs', that represents the number of defined arguments for the function. The `newdir' variable represents the new -directory to change to, retrieved with `get_scalar_argument'. Note +directory to change to, retrieved with `get_scalar_argument()'. Note that the first argument is numbered zero. - This code actually accomplishes the `chdir'. It first forces the -argument to be a string and passes the string value to the `chdir' -system call. If the `chdir' fails, `ERRNO' is updated. + This code actually accomplishes the `chdir()'. It first forces the +argument to be a string and passes the string value to the `chdir()' +system call. If the `chdir()' fails, `ERRNO' is updated. (void) force_string(newdir); ret = chdir(newdir->stptr); @@ -21757,7 +21790,7 @@ system call. If the `chdir' fails, `ERRNO' is updated. return make_number((AWKNUM) ret); } - The `stat' built-in is more involved. First comes a function that + The `stat()' built-in is more involved. First comes a function that turns a numeric mode into a printable representation (e.g., 644 becomes `-rw-r--r--'). This is omitted here for brevity: @@ -21769,7 +21802,7 @@ turns a numeric mode into a printable representation (e.g., 644 becomes ... } - Next comes the `do_stat' function. It starts with variable + Next comes the `do_stat()' function. It starts with variable declarations and argument checking: /* do_stat --- provide a stat() function for gawk */ @@ -21792,7 +21825,7 @@ Then, it always clears the array. The code use `lstat()' (instead of `stat()') to get the file information, in case the file is a symbolic link. If there's an error, it sets `ERRNO' and returns: - /* directory is first arg, array to hold results is second */ + /* file is first arg, array to hold results is second */ file = get_scalar_argument(0, FALSE); array = get_array_argument(1, FALSE); @@ -21832,7 +21865,7 @@ calls are shown here, since they all follow the same pattern: Finally, it's necessary to provide the "glue" that loads the new function(s) into `gawk'. By convention, each library has a routine -named `dlload' that does the job: +named `dlload()' that does the job: /* dlload --- load new builtins in this library */ @@ -21849,9 +21882,9 @@ implement system calls such as `chown()', `chmod()', and `umask()'. ---------- Footnotes ---------- - (1) This version is edited slightly for presentation. The complete -version can be found in `extension/filefuncs.c' in the `gawk' -distribution. + (1) This version is edited slightly for presentation. See +`extension/filefuncs.c' in the `gawk' distribution for the complete +version. File: gawk.info, Node: Using Internal File Ops, Prev: Internal File Ops, Up: Sample Library @@ -24312,9 +24345,9 @@ Index * --command option: Options. (line 229) * --copyright option: Options. (line 85) * --disable-lint configuration option: Additional Configuration Options. - (line 13) + (line 9) * --disable-nls configuration option: Additional Configuration Options. - (line 28) + (line 24) * --dump-variables option <1>: Library Names. (line 45) * --dump-variables option: Options. (line 90) * --exec option: Options. (line 112) @@ -24349,7 +24382,7 @@ Index * --use-lc-numeric option: Options. (line 173) * --version option: Options. (line 248) * --with-whiny-user-strftime configuration option: Additional Configuration Options. - (line 9) + (line 29) * -b option: Options. (line 68) * -C option: Options. (line 85) * -d option: Options. (line 90) @@ -24512,7 +24545,7 @@ Index (line 67) * advanced features, data files as single record: Records. (line 175) * advanced features, fixed-width data: Constant Size. (line 9) -* advanced features, FNR/NR variables: Auto-set. (line 229) +* advanced features, FNR/NR variables: Auto-set. (line 230) * advanced features, gawk: Advanced Features. (line 6) * advanced features, gawk, network programming: TCP/IP Networking. (line 6) @@ -24573,11 +24606,11 @@ Index * arrays, elements, assigning: Assigning Elements. (line 6) * arrays, elements, deleting: Delete. (line 6) * arrays, elements, installing: Internals. (line 79) -* arrays, elements, order of: Scanning an Array. (line 48) +* arrays, elements, order of: Scanning an Array. (line 52) * arrays, elements, referencing: Reference to Elements. (line 6) * arrays, elements, retrieving number of: String Functions. (line 29) -* arrays, for statement and: Scanning an Array. (line 20) +* arrays, for statement and: Scanning an Array. (line 24) * arrays, IGNORECASE variable and: Array Intro. (line 92) * arrays, indexing: Array Intro. (line 50) * arrays, merging into strings: Join Function. (line 6) @@ -24593,7 +24626,7 @@ Index * arrays, subscripts, uninitialized variables as: Uninitialized Subscripts. (line 6) * artificial intelligence, gawk and: Distribution contents. - (line 47) + (line 55) * ASCII <1>: Glossary. (line 137) * ASCII: Ordinal Functions. (line 45) * asort() function (gawk) <1>: String Functions. (line 29) @@ -24879,7 +24912,7 @@ Index * close() function, two-way pipes and: Two-way I/O. (line 77) * Close, Diane <1>: Contributors. (line 21) * Close, Diane: Manual History. (line 41) -* close_func() input method: Internals. (line 161) +* close_func() input method: Internals. (line 160) * collating elements: Bracket Expressions. (line 70) * collating symbols: Bracket Expressions. (line 77) * Colombo, Antonio: Acknowledgments. (line 60) @@ -24949,11 +24982,11 @@ Index * condition debugger command: Breakpoint Control. (line 54) * conditional expressions: Conditional Exp. (line 6) * configuration option, --disable-lint: Additional Configuration Options. - (line 13) + (line 9) * configuration option, --disable-nls: Additional Configuration Options. - (line 28) + (line 24) * configuration option, --with-whiny-user-strftime: Additional Configuration Options. - (line 9) + (line 29) * configuration options, gawk: Additional Configuration Options. (line 6) * constants, nondecimal: Nondecimal Data. (line 6) @@ -25012,7 +25045,7 @@ Index (line 47) * dark corner, FILENAME variable <1>: Auto-set. (line 92) * dark corner, FILENAME variable: Getline Notes. (line 19) -* dark corner, FNR/NR variables: Auto-set. (line 229) +* dark corner, FNR/NR variables: Auto-set. (line 230) * dark corner, format-control characters: Control Letters. (line 18) * dark corner, FS as null string: Single Character Fields. (line 20) @@ -25211,7 +25244,7 @@ Index * differences in awk and gawk, regular expressions: Case-sensitivity. (line 26) * differences in awk and gawk, RS/RT variables: Records. (line 167) -* differences in awk and gawk, RT variable: Auto-set. (line 218) +* differences in awk and gawk, RT variable: Auto-set. (line 219) * differences in awk and gawk, single-character fields: Single Character Fields. (line 6) * differences in awk and gawk, split() function: String Functions. @@ -25263,7 +25296,7 @@ Index (line 6) * elements in arrays, assigning: Assigning Elements. (line 6) * elements in arrays, deleting: Delete. (line 6) -* elements in arrays, order of: Scanning an Array. (line 48) +* elements in arrays, order of: Scanning an Array. (line 52) * elements in arrays, scanning: Scanning an Array. (line 6) * email address for bug reports, bug-gawk@gnu.org: Bugs. (line 30) * EMISTERED: TCP/IP Networking. (line 6) @@ -25293,7 +25326,7 @@ Index * endgrent() user-defined function: Group Functions. (line 218) * endpwent() function (C library): Passwd Functions. (line 210) * endpwent() user-defined function: Passwd Functions. (line 213) -* ENVIRON array <1>: Internals. (line 150) +* ENVIRON array <1>: Internals. (line 149) * ENVIRON array: Auto-set. (line 60) * environment variables: Auto-set. (line 60) * epoch, definition of: Glossary. (line 235) @@ -25351,7 +25384,7 @@ Index (line 9) * expressions, selecting: Conditional Exp. (line 6) * Extended Regular Expressions (EREs): Bracket Expressions. (line 23) -* eXtensible Markup Language (XML): Internals. (line 161) +* eXtensible Markup Language (XML): Internals. (line 160) * extension() function (gawk): Using Internal File Ops. (line 15) * extensions, Brian Kernighan's awk <1>: Other Versions. (line 13) @@ -25492,9 +25525,9 @@ Index * floating-point, numbers, AWKNUM internal type: Internals. (line 19) * FNR variable <1>: Auto-set. (line 102) * FNR variable: Records. (line 6) -* FNR variable, changing: Auto-set. (line 229) +* FNR variable, changing: Auto-set. (line 230) * for statement: For Statement. (line 6) -* for statement, in arrays: Scanning an Array. (line 20) +* for statement, in arrays: Scanning an Array. (line 24) * force_number() internal function: Internals. (line 27) * force_string() internal function: Internals. (line 32) * force_wstring() internal function: Internals. (line 37) @@ -25595,7 +25628,7 @@ Index * gawk, break statement in: Break Statement. (line 51) * gawk, built-in variables and: Built-in Variables. (line 14) * gawk, character classes and: Bracket Expressions. (line 91) -* gawk, coding style in: Adding Code. (line 30) +* gawk, coding style in: Adding Code. (line 38) * gawk, command-line options: GNU Regexp Operators. (line 70) * gawk, comparison operators and: Comparison Operators. @@ -25666,7 +25699,7 @@ Index * gawk, regular expressions, operators: GNU Regexp Operators. (line 6) * gawk, regular expressions, precedence: Regexp Operators. (line 157) -* gawk, RT variable in <1>: Auto-set. (line 218) +* gawk, RT variable in <1>: Auto-set. (line 219) * gawk, RT variable in <2>: Getline/Variable/File. (line 10) * gawk, RT variable in <3>: Multiple Line. (line 129) @@ -25692,7 +25725,7 @@ Index * get_argument() internal function: Internals. (line 120) * get_array_argument() internal macro: Internals. (line 136) * get_curfunc_arg_count() internal function: Internals. (line 42) -* get_record() input method: Internals. (line 161) +* get_record() input method: Internals. (line 160) * get_scalar_argument() internal macro: Internals. (line 133) * getaddrinfo() function (C library): TCP/IP Networking. (line 38) * getgrent() function (C library): Group Functions. (line 6) @@ -25807,7 +25840,7 @@ Index * in operator <3>: Precedence. (line 83) * in operator: Comparison Operators. (line 11) -* in operator, arrays and <1>: Scanning an Array. (line 17) +* in operator, arrays and <1>: Scanning an Array. (line 21) * in operator, arrays and: Reference to Elements. (line 37) * increment operators: Increment Ops. (line 6) @@ -25845,7 +25878,7 @@ Index * integers: Basic Data Typing. (line 21) * integers, unsigned: Basic Data Typing. (line 30) * interacting with other programs: I/O Functions. (line 63) -* internal constant, INVALID_HANDLE: Internals. (line 161) +* internal constant, INVALID_HANDLE: Internals. (line 160) * internal function, assoc_clear(): Internals. (line 75) * internal function, assoc_lookup(): Internals. (line 79) * internal function, dupnode(): Internals. (line 96) @@ -25855,18 +25888,18 @@ Index * internal function, get_actual_argument(): Internals. (line 125) * internal function, get_argument(): Internals. (line 120) * internal function, get_curfunc_arg_count(): Internals. (line 42) -* internal function, iop_alloc(): Internals. (line 161) +* internal function, iop_alloc(): Internals. (line 160) * internal function, make_builtin(): Internals. (line 106) * internal function, make_number(): Internals. (line 91) * internal function, make_string(): Internals. (line 86) -* internal function, register_deferred_variable(): Internals. (line 150) -* internal function, register_open_hook(): Internals. (line 161) +* internal function, register_deferred_variable(): Internals. (line 149) +* internal function, register_open_hook(): Internals. (line 160) * internal function, unref(): Internals. (line 101) * internal function, update_ERRNO(): Internals. (line 139) * internal function, update_ERRNO_saved(): Internals. (line 144) * internal macro, get_array_argument(): Internals. (line 136) * internal macro, get_scalar_argument(): Internals. (line 133) -* internal structure, IOBUF: Internals. (line 161) +* internal structure, IOBUF: Internals. (line 160) * internal type, AWKNUM: Internals. (line 19) * internal type, NODE: Internals. (line 23) * internal variable, nargs: Internals. (line 49) @@ -25895,10 +25928,10 @@ Index * interpreted programs <1>: Glossary. (line 356) * interpreted programs: Basic High Level. (line 14) * interval expressions: Regexp Operators. (line 116) -* INVALID_HANDLE internal constant: Internals. (line 161) +* INVALID_HANDLE internal constant: Internals. (line 160) * inventory-shipped file: Sample Data Files. (line 32) -* IOBUF internal structure: Internals. (line 161) -* iop_alloc() internal function: Internals. (line 161) +* IOBUF internal structure: Internals. (line 160) +* iop_alloc() internal function: Internals. (line 160) * isarray() function (gawk): Type Functions. (line 11) * ISO: Glossary. (line 367) * ISO 8859-1: Glossary. (line 137) @@ -26113,7 +26146,7 @@ Index * not Boolean-logic operator: Boolean Ops. (line 6) * NR variable <1>: Auto-set. (line 118) * NR variable: Records. (line 6) -* NR variable, changing: Auto-set. (line 229) +* NR variable, changing: Auto-set. (line 230) * null strings <1>: Basic Data Typing. (line 50) * null strings <2>: Truth Values. (line 6) * null strings <3>: Regexp Field Splitting. @@ -26396,7 +26429,7 @@ Index * private variables: Library Names. (line 11) * processes, two-way communications with: Two-way I/O. (line 23) * processing data: Basic High Level. (line 6) -* PROCINFO array <1>: Internals. (line 150) +* PROCINFO array <1>: Internals. (line 149) * PROCINFO array <2>: Id Program. (line 15) * PROCINFO array <3>: Group Functions. (line 6) * PROCINFO array <4>: Passwd Functions. (line 6) @@ -26491,8 +26524,8 @@ Index * regexp constants, slashes vs. quotes: Computed Regexps. (line 28) * regexp constants, vs. string constants: Computed Regexps. (line 38) * regexp, See regular expressions: Regexp. (line 6) -* register_deferred_variable() internal function: Internals. (line 150) -* register_open_hook() internal function: Internals. (line 161) +* register_deferred_variable() internal function: Internals. (line 149) +* register_open_hook() internal function: Internals. (line 160) * regular expressions: Regexp. (line 6) * regular expressions as field separators: Field Separators. (line 50) * regular expressions, anchors in: Regexp Operators. (line 22) @@ -26545,7 +26578,7 @@ Index * right angle bracket (>), >> operator (I/O): Redirection. (line 50) * right shift, bitwise: Bitwise Functions. (line 32) * Ritchie, Dennis: Basic Data Typing. (line 74) -* RLENGTH variable: Auto-set. (line 205) +* RLENGTH variable: Auto-set. (line 206) * RLENGTH variable, match() function and: String Functions. (line 205) * Robbins, Arnold <1>: Future Extensions. (line 6) * Robbins, Arnold <2>: Bugs. (line 32) @@ -26570,9 +26603,9 @@ Index * RS variable: Records. (line 20) * RS variable, multiline records and: Multiple Line. (line 17) * rshift() function (gawk): Bitwise Functions. (line 51) -* RSTART variable: Auto-set. (line 211) +* RSTART variable: Auto-set. (line 212) * RSTART variable, match() function and: String Functions. (line 205) -* RT variable <1>: Auto-set. (line 218) +* RT variable <1>: Auto-set. (line 219) * RT variable <2>: Getline/Variable/File. (line 10) * RT variable <3>: Multiple Line. (line 129) @@ -26777,9 +26810,9 @@ Index * tee.awk program: Tee Program. (line 26) * terminating records: Records. (line 112) * testbits.awk program: Bitwise Functions. (line 68) -* Texinfo <1>: Adding Code. (line 90) +* Texinfo <1>: Adding Code. (line 99) * Texinfo <2>: Distribution contents. - (line 71) + (line 79) * Texinfo <3>: Extract Program. (line 12) * Texinfo <4>: Dupword Program. (line 17) * Texinfo <5>: Library Functions. (line 22) @@ -26981,7 +27014,7 @@ Index * wstptr internal variable: Internals. (line 61) * xgawk: Other Versions. (line 119) * xgettext utility: String Extraction. (line 13) -* XML (eXtensible Markup Language): Internals. (line 161) +* XML (eXtensible Markup Language): Internals. (line 160) * XOR bitwise operation: Bitwise Functions. (line 6) * xor() function (gawk): Bitwise Functions. (line 54) * Yawitz, Efraim: Contributors. (line 104) @@ -27018,406 +27051,407 @@ Index Tag Table: Node: Top1346 -Node: Foreword29921 -Node: Preface34266 -Ref: Preface-Footnote-137233 -Ref: Preface-Footnote-237339 -Node: History37571 -Node: Names39962 -Ref: Names-Footnote-141439 -Node: This Manual41511 -Ref: This Manual-Footnote-146459 -Node: Conventions46559 -Node: Manual History48693 -Ref: Manual History-Footnote-151963 -Ref: Manual History-Footnote-252004 -Node: How To Contribute52078 -Node: Acknowledgments53222 -Node: Getting Started57553 -Node: Running gawk59932 -Node: One-shot61118 -Node: Read Terminal62343 -Ref: Read Terminal-Footnote-163993 -Ref: Read Terminal-Footnote-264269 -Node: Long64440 -Node: Executable Scripts65816 -Ref: Executable Scripts-Footnote-167685 -Ref: Executable Scripts-Footnote-267787 -Node: Comments68238 -Node: Quoting70705 -Node: DOS Quoting75328 -Node: Sample Data Files76003 -Node: Very Simple79035 -Node: Two Rules83634 -Node: More Complex85781 -Ref: More Complex-Footnote-188711 -Node: Statements/Lines88796 -Ref: Statements/Lines-Footnote-193258 -Node: Other Features93523 -Node: When94451 -Node: Invoking Gawk96598 -Node: Command Line97983 -Node: Options98766 -Ref: Options-Footnote-1111898 -Node: Other Arguments111923 -Node: Naming Standard Input114581 -Node: Environment Variables115675 -Node: AWKPATH Variable116119 -Ref: AWKPATH Variable-Footnote-1118716 -Node: Other Environment Variables118976 -Node: Exit Status121316 -Node: Include Files121991 -Node: Obsolete125476 -Node: Undocumented126162 -Node: Regexp126403 -Node: Regexp Usage127855 -Node: Escape Sequences129881 -Node: Regexp Operators135644 -Ref: Regexp Operators-Footnote-1142841 -Ref: Regexp Operators-Footnote-2142988 -Node: Bracket Expressions143086 -Ref: table-char-classes144889 -Node: GNU Regexp Operators147533 -Node: Case-sensitivity151256 -Ref: Case-sensitivity-Footnote-1154224 -Ref: Case-sensitivity-Footnote-2154459 -Node: Leftmost Longest154567 -Node: Computed Regexps155768 -Node: Locales159194 -Node: Reading Files162901 -Node: Records164842 -Ref: Records-Footnote-1173516 -Node: Fields173553 -Ref: Fields-Footnote-1176586 -Node: Nonconstant Fields176672 -Node: Changing Fields178874 -Node: Field Separators184852 -Node: Default Field Splitting187481 -Node: Regexp Field Splitting188598 -Node: Single Character Fields191940 -Node: Command Line Field Separator192999 -Node: Field Splitting Summary196440 -Ref: Field Splitting Summary-Footnote-1199632 -Node: Constant Size199733 -Node: Splitting By Content204317 -Ref: Splitting By Content-Footnote-1208043 -Node: Multiple Line208083 -Ref: Multiple Line-Footnote-1213930 -Node: Getline214109 -Node: Plain Getline216337 -Node: Getline/Variable218426 -Node: Getline/File219567 -Node: Getline/Variable/File220889 -Ref: Getline/Variable/File-Footnote-1222488 -Node: Getline/Pipe222575 -Node: Getline/Variable/Pipe225135 -Node: Getline/Coprocess226242 -Node: Getline/Variable/Coprocess227485 -Node: Getline Notes228199 -Node: Getline Summary230141 -Ref: table-getline-variants230484 -Node: Command line directories231340 -Node: Printing231965 -Node: Print233596 -Node: Print Examples234933 -Node: Output Separators237717 -Node: OFMT239477 -Node: Printf240835 -Node: Basic Printf241741 -Node: Control Letters243280 -Node: Format Modifiers247092 -Node: Printf Examples253101 -Node: Redirection255816 -Node: Special Files262800 -Node: Special FD263333 -Ref: Special FD-Footnote-1266957 -Node: Special Network267031 -Node: Special Caveats267881 -Node: Close Files And Pipes268677 -Ref: Close Files And Pipes-Footnote-1275700 -Ref: Close Files And Pipes-Footnote-2275848 -Node: Expressions275998 -Node: Values277067 -Node: Constants277743 -Node: Scalar Constants278423 -Ref: Scalar Constants-Footnote-1279282 -Node: Nondecimal-numbers279464 -Node: Regexp Constants282523 -Node: Using Constant Regexps282998 -Node: Variables286053 -Node: Using Variables286708 -Node: Assignment Options288432 -Node: Conversion290304 -Ref: table-locale-affects295680 -Ref: Conversion-Footnote-1296304 -Node: All Operators296413 -Node: Arithmetic Ops297043 -Node: Concatenation299548 -Ref: Concatenation-Footnote-1302341 -Node: Assignment Ops302461 -Ref: table-assign-ops307449 -Node: Increment Ops308857 -Node: Truth Values and Conditions312327 -Node: Truth Values313410 -Node: Typing and Comparison314459 -Node: Variable Typing315248 -Ref: Variable Typing-Footnote-1319145 -Node: Comparison Operators319267 -Ref: table-relational-ops319677 -Node: POSIX String Comparison323226 -Ref: POSIX String Comparison-Footnote-1324182 -Node: Boolean Ops324320 -Ref: Boolean Ops-Footnote-1328398 -Node: Conditional Exp328489 -Node: Function Calls330221 -Node: Precedence333815 -Node: Patterns and Actions337468 -Node: Pattern Overview338522 -Node: Regexp Patterns340188 -Node: Expression Patterns340731 -Node: Ranges344305 -Node: BEGIN/END347271 -Node: Using BEGIN/END348033 -Ref: Using BEGIN/END-Footnote-1350764 -Node: I/O And BEGIN/END350870 -Node: BEGINFILE/ENDFILE353152 -Node: Empty355983 -Node: Using Shell Variables356299 -Node: Action Overview358584 -Node: Statements360941 -Node: If Statement362795 -Node: While Statement364294 -Node: Do Statement366338 -Node: For Statement367494 -Node: Switch Statement370646 -Node: Break Statement372743 -Node: Continue Statement374733 -Node: Next Statement376520 -Node: Nextfile Statement378910 -Node: Exit Statement381386 -Node: Built-in Variables383802 -Node: User-modified384897 -Ref: User-modified-Footnote-1392923 -Node: Auto-set392985 -Ref: Auto-set-Footnote-1403716 -Node: ARGC and ARGV403921 -Node: Arrays407772 -Node: Array Basics409343 -Node: Array Intro410054 -Node: Reference to Elements414372 -Node: Assigning Elements416642 -Node: Array Example417133 -Node: Scanning an Array418865 -Node: Delete424132 -Ref: Delete-Footnote-1426567 -Node: Numeric Array Subscripts426624 -Node: Uninitialized Subscripts428807 -Node: Multi-dimensional430435 -Node: Multi-scanning433526 -Node: Array Sorting435110 -Ref: Array Sorting-Footnote-1438204 -Node: Arrays of Arrays438398 -Node: Functions442971 -Node: Built-in443793 -Node: Calling Built-in444871 -Node: Numeric Functions446859 -Ref: Numeric Functions-Footnote-1450624 -Ref: Numeric Functions-Footnote-2450981 -Ref: Numeric Functions-Footnote-3451029 -Node: String Functions451298 -Ref: String Functions-Footnote-1473800 -Ref: String Functions-Footnote-2473929 -Ref: String Functions-Footnote-3474177 -Node: Gory Details474264 -Ref: table-sub-escapes475943 -Ref: table-posix-sub477257 -Ref: table-gensub-escapes478170 -Node: I/O Functions479341 -Ref: I/O Functions-Footnote-1485996 -Node: Time Functions486143 -Ref: Time Functions-Footnote-1497035 -Ref: Time Functions-Footnote-2497103 -Ref: Time Functions-Footnote-3497261 -Ref: Time Functions-Footnote-4497372 -Ref: Time Functions-Footnote-5497484 -Ref: Time Functions-Footnote-6497711 -Node: Bitwise Functions497977 -Ref: table-bitwise-ops498535 -Ref: Bitwise Functions-Footnote-1502695 -Node: Type Functions502879 -Node: I18N Functions503349 -Node: User-defined504976 -Node: Definition Syntax505780 -Ref: Definition Syntax-Footnote-1510690 -Node: Function Example510759 -Node: Function Caveats513353 -Node: Calling A Function513774 -Node: Variable Scope514889 -Node: Pass By Value/Reference516864 -Node: Return Statement520304 -Node: Dynamic Typing523285 -Node: Indirect Calls524020 -Node: Internationalization533705 -Node: I18N and L10N535131 -Node: Explaining gettext535817 -Ref: Explaining gettext-Footnote-1540883 -Ref: Explaining gettext-Footnote-2541067 -Node: Programmer i18n541232 -Node: Translator i18n545432 -Node: String Extraction546225 -Ref: String Extraction-Footnote-1547186 -Node: Printf Ordering547272 -Ref: Printf Ordering-Footnote-1550056 -Node: I18N Portability550120 -Ref: I18N Portability-Footnote-1552569 -Node: I18N Example552632 -Ref: I18N Example-Footnote-1555267 -Node: Gawk I18N555339 -Node: Advanced Features555956 -Node: Nondecimal Data557275 -Node: Two-way I/O558856 -Ref: Two-way I/O-Footnote-1564290 -Node: TCP/IP Networking564360 -Node: Profiling567204 -Node: Library Functions574678 -Ref: Library Functions-Footnote-1577783 -Node: Library Names577954 -Ref: Library Names-Footnote-1581425 -Ref: Library Names-Footnote-2581645 -Node: General Functions581731 -Node: Nextfile Function582794 -Node: Strtonum Function587175 -Node: Assert Function590131 -Node: Round Function593457 -Node: Cliff Random Function595000 -Node: Ordinal Functions596016 -Ref: Ordinal Functions-Footnote-1599086 -Ref: Ordinal Functions-Footnote-2599338 -Node: Join Function599547 -Ref: Join Function-Footnote-1601318 -Node: Gettimeofday Function601518 -Node: Data File Management605233 -Node: Filetrans Function605865 -Node: Rewind Function610101 -Node: File Checking611554 -Node: Empty Files612648 -Node: Ignoring Assigns614878 -Node: Getopt Function616431 -Ref: Getopt Function-Footnote-1627735 -Node: Passwd Functions627938 -Ref: Passwd Functions-Footnote-1636913 -Node: Group Functions637001 -Node: Walking Arrays645085 -Node: Sample Programs646654 -Node: Running Examples647319 -Node: Clones648047 -Node: Cut Program649271 -Node: Egrep Program659116 -Ref: Egrep Program-Footnote-1666889 -Node: Id Program666999 -Node: Split Program670615 -Ref: Split Program-Footnote-1674134 -Node: Tee Program674262 -Node: Uniq Program677065 -Node: Wc Program684494 -Ref: Wc Program-Footnote-1688760 -Ref: Wc Program-Footnote-2688960 -Node: Miscellaneous Programs689052 -Node: Dupword Program690240 -Node: Alarm Program692271 -Node: Translate Program697020 -Ref: Translate Program-Footnote-1701407 -Ref: Translate Program-Footnote-2701635 -Node: Labels Program701769 -Ref: Labels Program-Footnote-1705140 -Node: Word Sorting705224 -Node: History Sorting709108 -Node: Extract Program710947 -Ref: Extract Program-Footnote-1718430 -Node: Simple Sed718558 -Node: Igawk Program721620 -Ref: Igawk Program-Footnote-1736653 -Ref: Igawk Program-Footnote-2736854 -Node: Anagram Program736992 -Node: Signature Program740060 -Node: Debugger741160 -Node: Debugging742071 -Node: Debugging Concepts742484 -Node: Debugging Terms744340 -Node: Awk Debugging746962 -Node: Sample dgawk session747854 -Node: dgawk invocation748346 -Node: Finding The Bug749528 -Node: List of Debugger Commands756014 -Node: Breakpoint Control757325 -Node: Dgawk Execution Control760961 -Node: Viewing And Changing Data764312 -Node: Dgawk Stack767649 -Node: Dgawk Info769109 -Node: Miscellaneous Dgawk Commands773057 -Node: Readline Support778485 -Node: Dgawk Limitations779323 -Node: Language History781512 -Node: V7/SVR3.1782950 -Node: SVR4785271 -Node: POSIX786713 -Node: BTL787721 -Node: POSIX/GNU788455 -Node: Common Extensions793556 -Node: Contributors794657 -Node: Installation798796 -Node: Gawk Distribution799690 -Node: Getting800174 -Node: Extracting801000 -Node: Distribution contents802691 -Node: Unix Installation807709 -Node: Quick Installation808326 -Node: Additional Configuration Options810288 -Node: Configuration Philosophy811765 -Node: Non-Unix Installation814107 -Node: PC Installation814565 -Node: PC Binary Installation815864 -Node: PC Compiling817712 -Node: PC Testing820656 -Node: PC Using821832 -Node: Cygwin826017 -Node: MSYS827014 -Node: VMS Installation827528 -Node: VMS Compilation828134 -Ref: VMS Compilation-Footnote-1829141 -Node: VMS Installation Details829199 -Node: VMS Running830834 -Node: VMS Old Gawk832441 -Node: Bugs832915 -Node: Other Versions836780 -Node: Notes842059 -Node: Compatibility Mode842751 -Node: Additions843534 -Node: Accessing The Source844346 -Node: Adding Code845769 -Node: New Ports851317 -Node: Dynamic Extensions855430 -Node: Internals856806 -Node: Plugin License865922 -Node: Sample Library866556 -Node: Internal File Description867242 -Node: Internal File Ops870949 -Ref: Internal File Ops-Footnote-1875717 -Node: Using Internal File Ops875865 -Node: Future Extensions878242 -Node: Basic Concepts880746 -Node: Basic High Level881503 -Ref: Basic High Level-Footnote-1885538 -Node: Basic Data Typing885723 -Node: Floating Point Issues890248 -Node: String Conversion Precision891331 -Ref: String Conversion Precision-Footnote-1893025 -Node: Unexpected Results893134 -Node: POSIX Floating Point Problems894960 -Ref: POSIX Floating Point Problems-Footnote-1898662 -Node: Glossary898700 -Node: Copying922843 -Node: GNU Free Documentation License960400 -Node: Index985537 +Node: Foreword30042 +Node: Preface34387 +Ref: Preface-Footnote-137354 +Ref: Preface-Footnote-237460 +Node: History37692 +Node: Names40083 +Ref: Names-Footnote-141560 +Node: This Manual41632 +Ref: This Manual-Footnote-146580 +Node: Conventions46680 +Node: Manual History48814 +Ref: Manual History-Footnote-152084 +Ref: Manual History-Footnote-252125 +Node: How To Contribute52199 +Node: Acknowledgments53343 +Node: Getting Started57674 +Node: Running gawk60053 +Node: One-shot61239 +Node: Read Terminal62464 +Ref: Read Terminal-Footnote-164114 +Ref: Read Terminal-Footnote-264390 +Node: Long64561 +Node: Executable Scripts65937 +Ref: Executable Scripts-Footnote-167806 +Ref: Executable Scripts-Footnote-267908 +Node: Comments68359 +Node: Quoting70826 +Node: DOS Quoting75449 +Node: Sample Data Files76124 +Node: Very Simple79156 +Node: Two Rules83755 +Node: More Complex85902 +Ref: More Complex-Footnote-188832 +Node: Statements/Lines88917 +Ref: Statements/Lines-Footnote-193379 +Node: Other Features93644 +Node: When94572 +Node: Invoking Gawk96719 +Node: Command Line98104 +Node: Options98887 +Ref: Options-Footnote-1112019 +Node: Other Arguments112044 +Node: Naming Standard Input114702 +Node: Environment Variables115796 +Node: AWKPATH Variable116240 +Ref: AWKPATH Variable-Footnote-1118837 +Node: Other Environment Variables119097 +Node: Exit Status121437 +Node: Include Files122112 +Node: Obsolete125597 +Node: Undocumented126283 +Node: Regexp126524 +Node: Regexp Usage127976 +Node: Escape Sequences130002 +Node: Regexp Operators135765 +Ref: Regexp Operators-Footnote-1142962 +Ref: Regexp Operators-Footnote-2143109 +Node: Bracket Expressions143207 +Ref: table-char-classes145010 +Node: GNU Regexp Operators147654 +Node: Case-sensitivity151377 +Ref: Case-sensitivity-Footnote-1154345 +Ref: Case-sensitivity-Footnote-2154580 +Node: Leftmost Longest154688 +Node: Computed Regexps155889 +Node: Locales159315 +Node: Reading Files163022 +Node: Records164963 +Ref: Records-Footnote-1173637 +Node: Fields173674 +Ref: Fields-Footnote-1176707 +Node: Nonconstant Fields176793 +Node: Changing Fields178995 +Node: Field Separators184973 +Node: Default Field Splitting187602 +Node: Regexp Field Splitting188719 +Node: Single Character Fields192061 +Node: Command Line Field Separator193120 +Node: Field Splitting Summary196561 +Ref: Field Splitting Summary-Footnote-1199753 +Node: Constant Size199854 +Node: Splitting By Content204438 +Ref: Splitting By Content-Footnote-1208164 +Node: Multiple Line208204 +Ref: Multiple Line-Footnote-1214051 +Node: Getline214230 +Node: Plain Getline216458 +Node: Getline/Variable218547 +Node: Getline/File219688 +Node: Getline/Variable/File221010 +Ref: Getline/Variable/File-Footnote-1222609 +Node: Getline/Pipe222696 +Node: Getline/Variable/Pipe225256 +Node: Getline/Coprocess226363 +Node: Getline/Variable/Coprocess227606 +Node: Getline Notes228320 +Node: Getline Summary230262 +Ref: table-getline-variants230605 +Node: Command line directories231461 +Node: Printing232086 +Node: Print233717 +Node: Print Examples235054 +Node: Output Separators237838 +Node: OFMT239598 +Node: Printf240956 +Node: Basic Printf241862 +Node: Control Letters243401 +Node: Format Modifiers247213 +Node: Printf Examples253222 +Node: Redirection255937 +Node: Special Files262921 +Node: Special FD263454 +Ref: Special FD-Footnote-1267078 +Node: Special Network267152 +Node: Special Caveats268002 +Node: Close Files And Pipes268798 +Ref: Close Files And Pipes-Footnote-1275821 +Ref: Close Files And Pipes-Footnote-2275969 +Node: Expressions276119 +Node: Values277188 +Node: Constants277864 +Node: Scalar Constants278544 +Ref: Scalar Constants-Footnote-1279403 +Node: Nondecimal-numbers279585 +Node: Regexp Constants282644 +Node: Using Constant Regexps283119 +Node: Variables286174 +Node: Using Variables286829 +Node: Assignment Options288553 +Node: Conversion290425 +Ref: table-locale-affects295801 +Ref: Conversion-Footnote-1296425 +Node: All Operators296534 +Node: Arithmetic Ops297164 +Node: Concatenation299669 +Ref: Concatenation-Footnote-1302462 +Node: Assignment Ops302582 +Ref: table-assign-ops307570 +Node: Increment Ops308978 +Node: Truth Values and Conditions312448 +Node: Truth Values313531 +Node: Typing and Comparison314580 +Node: Variable Typing315369 +Ref: Variable Typing-Footnote-1319266 +Node: Comparison Operators319388 +Ref: table-relational-ops319798 +Node: POSIX String Comparison323347 +Ref: POSIX String Comparison-Footnote-1324303 +Node: Boolean Ops324441 +Ref: Boolean Ops-Footnote-1328519 +Node: Conditional Exp328610 +Node: Function Calls330342 +Node: Precedence333936 +Node: Patterns and Actions337589 +Node: Pattern Overview338643 +Node: Regexp Patterns340309 +Node: Expression Patterns340852 +Node: Ranges344426 +Node: BEGIN/END347392 +Node: Using BEGIN/END348154 +Ref: Using BEGIN/END-Footnote-1350885 +Node: I/O And BEGIN/END350991 +Node: BEGINFILE/ENDFILE353273 +Node: Empty356104 +Node: Using Shell Variables356420 +Node: Action Overview358705 +Node: Statements361062 +Node: If Statement362916 +Node: While Statement364415 +Node: Do Statement366459 +Node: For Statement367615 +Node: Switch Statement370767 +Node: Break Statement372864 +Node: Continue Statement374854 +Node: Next Statement376641 +Node: Nextfile Statement379031 +Node: Exit Statement381507 +Node: Built-in Variables383923 +Node: User-modified385018 +Ref: User-modified-Footnote-1393044 +Node: Auto-set393106 +Ref: Auto-set-Footnote-1403848 +Node: ARGC and ARGV404053 +Node: Arrays407904 +Node: Array Basics409475 +Node: Array Intro410186 +Node: Reference to Elements414504 +Node: Assigning Elements416774 +Node: Array Example417265 +Node: Scanning an Array418997 +Node: Controlling Scanning421373 +Node: Delete424711 +Ref: Delete-Footnote-1427146 +Node: Numeric Array Subscripts427203 +Node: Uninitialized Subscripts429386 +Node: Multi-dimensional431014 +Node: Multi-scanning434105 +Node: Array Sorting435689 +Ref: Array Sorting-Footnote-1438783 +Node: Arrays of Arrays438977 +Node: Functions443550 +Node: Built-in444372 +Node: Calling Built-in445450 +Node: Numeric Functions447438 +Ref: Numeric Functions-Footnote-1451203 +Ref: Numeric Functions-Footnote-2451560 +Ref: Numeric Functions-Footnote-3451608 +Node: String Functions451877 +Ref: String Functions-Footnote-1474379 +Ref: String Functions-Footnote-2474508 +Ref: String Functions-Footnote-3474756 +Node: Gory Details474843 +Ref: table-sub-escapes476522 +Ref: table-posix-sub477836 +Ref: table-gensub-escapes478749 +Node: I/O Functions479920 +Ref: I/O Functions-Footnote-1486575 +Node: Time Functions486722 +Ref: Time Functions-Footnote-1497614 +Ref: Time Functions-Footnote-2497682 +Ref: Time Functions-Footnote-3497840 +Ref: Time Functions-Footnote-4497951 +Ref: Time Functions-Footnote-5498063 +Ref: Time Functions-Footnote-6498290 +Node: Bitwise Functions498556 +Ref: table-bitwise-ops499114 +Ref: Bitwise Functions-Footnote-1503274 +Node: Type Functions503458 +Node: I18N Functions503928 +Node: User-defined505555 +Node: Definition Syntax506359 +Ref: Definition Syntax-Footnote-1511269 +Node: Function Example511338 +Node: Function Caveats513932 +Node: Calling A Function514353 +Node: Variable Scope515468 +Node: Pass By Value/Reference517443 +Node: Return Statement520883 +Node: Dynamic Typing523864 +Node: Indirect Calls524599 +Node: Internationalization534284 +Node: I18N and L10N535710 +Node: Explaining gettext536396 +Ref: Explaining gettext-Footnote-1541462 +Ref: Explaining gettext-Footnote-2541646 +Node: Programmer i18n541811 +Node: Translator i18n546011 +Node: String Extraction546804 +Ref: String Extraction-Footnote-1547765 +Node: Printf Ordering547851 +Ref: Printf Ordering-Footnote-1550635 +Node: I18N Portability550699 +Ref: I18N Portability-Footnote-1553148 +Node: I18N Example553211 +Ref: I18N Example-Footnote-1555846 +Node: Gawk I18N555918 +Node: Advanced Features556535 +Node: Nondecimal Data557854 +Node: Two-way I/O559435 +Ref: Two-way I/O-Footnote-1564869 +Node: TCP/IP Networking564939 +Node: Profiling567783 +Node: Library Functions575257 +Ref: Library Functions-Footnote-1578362 +Node: Library Names578533 +Ref: Library Names-Footnote-1582004 +Ref: Library Names-Footnote-2582224 +Node: General Functions582310 +Node: Nextfile Function583373 +Node: Strtonum Function587754 +Node: Assert Function590710 +Node: Round Function594036 +Node: Cliff Random Function595579 +Node: Ordinal Functions596595 +Ref: Ordinal Functions-Footnote-1599665 +Ref: Ordinal Functions-Footnote-2599917 +Node: Join Function600126 +Ref: Join Function-Footnote-1601897 +Node: Gettimeofday Function602097 +Node: Data File Management605812 +Node: Filetrans Function606444 +Node: Rewind Function610680 +Node: File Checking612133 +Node: Empty Files613227 +Node: Ignoring Assigns615457 +Node: Getopt Function617010 +Ref: Getopt Function-Footnote-1628314 +Node: Passwd Functions628517 +Ref: Passwd Functions-Footnote-1637492 +Node: Group Functions637580 +Node: Walking Arrays645664 +Node: Sample Programs647233 +Node: Running Examples647898 +Node: Clones648626 +Node: Cut Program649850 +Node: Egrep Program659695 +Ref: Egrep Program-Footnote-1667468 +Node: Id Program667578 +Node: Split Program671194 +Ref: Split Program-Footnote-1674713 +Node: Tee Program674841 +Node: Uniq Program677644 +Node: Wc Program685073 +Ref: Wc Program-Footnote-1689339 +Ref: Wc Program-Footnote-2689539 +Node: Miscellaneous Programs689631 +Node: Dupword Program690819 +Node: Alarm Program692850 +Node: Translate Program697599 +Ref: Translate Program-Footnote-1701986 +Ref: Translate Program-Footnote-2702214 +Node: Labels Program702348 +Ref: Labels Program-Footnote-1705719 +Node: Word Sorting705803 +Node: History Sorting709687 +Node: Extract Program711526 +Ref: Extract Program-Footnote-1719009 +Node: Simple Sed719137 +Node: Igawk Program722199 +Ref: Igawk Program-Footnote-1737232 +Ref: Igawk Program-Footnote-2737433 +Node: Anagram Program737571 +Node: Signature Program740639 +Node: Debugger741739 +Node: Debugging742650 +Node: Debugging Concepts743063 +Node: Debugging Terms744919 +Node: Awk Debugging747541 +Node: Sample dgawk session748433 +Node: dgawk invocation748925 +Node: Finding The Bug750107 +Node: List of Debugger Commands756593 +Node: Breakpoint Control757904 +Node: Dgawk Execution Control761540 +Node: Viewing And Changing Data764891 +Node: Dgawk Stack768228 +Node: Dgawk Info769688 +Node: Miscellaneous Dgawk Commands773636 +Node: Readline Support779064 +Node: Dgawk Limitations779902 +Node: Language History782091 +Node: V7/SVR3.1783529 +Node: SVR4785850 +Node: POSIX787292 +Node: BTL788300 +Node: POSIX/GNU789034 +Node: Common Extensions794135 +Node: Contributors795236 +Node: Installation799375 +Node: Gawk Distribution800269 +Node: Getting800753 +Node: Extracting801579 +Node: Distribution contents803271 +Node: Unix Installation808493 +Node: Quick Installation809110 +Node: Additional Configuration Options811072 +Node: Configuration Philosophy812549 +Node: Non-Unix Installation814891 +Node: PC Installation815349 +Node: PC Binary Installation816648 +Node: PC Compiling818496 +Node: PC Testing821440 +Node: PC Using822616 +Node: Cygwin826801 +Node: MSYS827801 +Node: VMS Installation828315 +Node: VMS Compilation828918 +Ref: VMS Compilation-Footnote-1829925 +Node: VMS Installation Details829983 +Node: VMS Running831618 +Node: VMS Old Gawk833225 +Node: Bugs833699 +Node: Other Versions837609 +Node: Notes842888 +Node: Compatibility Mode843580 +Node: Additions844363 +Node: Accessing The Source845175 +Node: Adding Code846600 +Node: New Ports852567 +Node: Dynamic Extensions856680 +Node: Internals858056 +Node: Plugin License867159 +Node: Sample Library867793 +Node: Internal File Description868479 +Node: Internal File Ops872194 +Ref: Internal File Ops-Footnote-1876975 +Node: Using Internal File Ops877115 +Node: Future Extensions879492 +Node: Basic Concepts881996 +Node: Basic High Level882753 +Ref: Basic High Level-Footnote-1886788 +Node: Basic Data Typing886973 +Node: Floating Point Issues891498 +Node: String Conversion Precision892581 +Ref: String Conversion Precision-Footnote-1894275 +Node: Unexpected Results894384 +Node: POSIX Floating Point Problems896210 +Ref: POSIX Floating Point Problems-Footnote-1899912 +Node: Glossary899950 +Node: Copying924093 +Node: GNU Free Documentation License961650 +Node: Index986787 End Tag Table |