diff options
Diffstat (limited to 'doc/gawk.info')
-rw-r--r-- | doc/gawk.info | 720 |
1 files changed, 361 insertions, 359 deletions
diff --git a/doc/gawk.info b/doc/gawk.info index 4176eb81..3abb4f41 100644 --- a/doc/gawk.info +++ b/doc/gawk.info @@ -14457,7 +14457,7 @@ File: gawk.info, Node: Library Functions, Next: Sample Programs, Prev: Functi *note User-defined::, describes how to write your own `awk' functions. Writing functions is important, because it allows you to encapsulate algorithms and program tasks in a single place. It simplifies -programming, making program development more manageable, and making +programming, making program development more manageable and making programs more readable. In their seminal 1976 book, `Software Tools',(1) Brian Kernighan and @@ -14562,7 +14562,7 @@ often use variable names like these for their own purposes. The example programs shown in this major node all start the names of their private variables with an underscore (`_'). Users generally don't use leading underscores in their variable names, so this -convention immediately decreases the chances that the variable name +convention immediately decreases the chances that the variable names will be accidentally shared with the user's program. In addition, several of the library functions use a prefix that helps @@ -14575,7 +14575,7 @@ for private function names.(1) As a final note on variable naming, if a function makes global variables available for use by a main program, it is a good convention -to start that variable's name with a capital letter--for example, +to start those variables' names with a capital letter--for example, `getopt()''s `Opterr' and `Optind' variables (*note Getopt Function::). The leading capital letter indicates that it is global, while the fact that the variable name is not all capital letters indicates that the @@ -14583,7 +14583,7 @@ variable is not one of `awk''s predefined variables, such as `FS'. It is also important that _all_ variables in library functions that do not need to save state are, in fact, declared local.(2) If this is -not done, the variable could accidentally be used in the user's +not done, the variables could accidentally be used in the user's program, leading to bugs that are very difficult to track down: function lib_func(x, y, l1, l2) @@ -14761,7 +14761,7 @@ for use in printing the diagnostic message. This is not possible in `awk', so this `assert()' function also requires a string version of the condition that is being tested. Following is the function: - # assert --- assert that a condition is true. Otherwise exit. + # assert --- assert that a condition is true. Otherwise, exit. function assert(condition, string) { @@ -14782,7 +14782,7 @@ the condition that is being tested. Following is the function: false, it prints a message to standard error, using the `string' parameter to describe the failed condition. It then sets the variable `_assert_exit' to one and executes the `exit' statement. The `exit' -statement jumps to the `END' rule. If the `END' rules finds +statement jumps to the `END' rule. If the `END' rule finds `_assert_exit' to be true, it exits immediately. The purpose of the test in the `END' rule is to keep any other `END' @@ -14997,9 +14997,9 @@ the strings in an array into one long string. The following function, `join()', accomplishes this task. It is used later in several of the application programs (*note Sample Programs::). - Good function design is important; this function needs to be general -but it should also have a reasonable default behavior. It is called -with an array as well as the beginning and ending indices of the + Good function design is important; this function needs to be +general, but it should also have a reasonable default behavior. It is +called with an array as well as the beginning and ending indices of the elements in the array to be merged. This assumes that the array indices are numeric--a reasonable assumption, as the array was likely created with `split()' (*note String Functions::): @@ -15118,7 +15118,7 @@ optional timestamp value to use instead of the current time. File: gawk.info, Node: Readfile Function, Next: Shell Quoting, Prev: Getlocaltime Function, Up: General Functions -10.2.8 Reading a Whole File At Once +10.2.8 Reading a Whole File at Once ----------------------------------- Often, it is convenient to have the entire contents of a file available @@ -15160,13 +15160,13 @@ reads the entire contents of the named file in one shot: It works by setting `RS' to `^$', a regular expression that will never match if the file has contents. `gawk' reads data from the file -into `tmp' attempting to match `RS'. The match fails after each read, +into `tmp', attempting to match `RS'. The match fails after each read, but fails quickly, such that `gawk' fills `tmp' with the entire contents of the file. (*Note Records::, for information on `RT' and `RS'.) In the case that `file' is empty, the return value is the null -string. Thus calling code may use something like: +string. Thus, calling code may use something like: contents = readfile("/some/path") if (length(contents) == 0) @@ -15256,8 +15256,9 @@ File: gawk.info, Node: Filetrans Function, Next: Rewind Function, Up: Data Fi The `BEGIN' and `END' rules are each executed exactly once, at the beginning and end of your `awk' program, respectively (*note BEGIN/END::). We (the `gawk' authors) once had a user who mistakenly -thought that the `BEGIN' rule is executed at the beginning of each data -file and the `END' rule is executed at the end of each data file. +thought that the `BEGIN' rules were executed at the beginning of each +data file and the `END' rules were executed at the end of each data +file. When informed that this was not the case, the user requested that we add new special patterns to `gawk', named `BEGIN_FILE' and `END_FILE', @@ -15291,7 +15292,7 @@ does so _portably_; this works with any implementation of `awk': This file must be loaded before the user's "main" program, so that the rule it supplies is executed first. - This rule relies on `awk''s `FILENAME' variable that automatically + This rule relies on `awk''s `FILENAME' variable, which automatically changes for each new data file. The current file name is saved in a private variable, `_oldfilename'. If `FILENAME' does not equal `_oldfilename', then a new data file is being processed and it is @@ -15306,7 +15307,7 @@ correctly even for the first data file. The program also supplies an `END' rule to do the final processing for the last file. Because this `END' rule comes before any `END' rules supplied in the "main" program, `endfile()' is called first. Once -again the value of multiple `BEGIN' and `END' rules should be clear. +again, the value of multiple `BEGIN' and `END' rules should be clear. If the same data file occurs twice in a row on the command line, then `endfile()' and `beginfile()' are not executed at the end of the first @@ -15333,7 +15334,7 @@ how it simplifies writing the main program. You are probably wondering, if `beginfile()' and `endfile()' functions can do the job, why does `gawk' have `BEGINFILE' and -`ENDFILE' patterns (*note BEGINFILE/ENDFILE::)? +`ENDFILE' patterns? Good question. Normally, if `awk' cannot open a file, this causes an immediate fatal error. In this case, there is no way for a @@ -15341,7 +15342,8 @@ user-defined function to deal with the problem, as the mechanism for calling it relies on the file being open and at the first record. Thus, the main reason for `BEGINFILE' is to give you a "hook" to catch files that cannot be processed. `ENDFILE' exists for symmetry, and because -it provides an easy way to do per-file cleanup processing. +it provides an easy way to do per-file cleanup processing. For more +information, refer to *note BEGINFILE/ENDFILE::. File: gawk.info, Node: Rewind Function, Next: File Checking, Prev: Filetrans Function, Up: Data File Management @@ -15349,15 +15351,14 @@ File: gawk.info, Node: Rewind Function, Next: File Checking, Prev: Filetrans 10.3.2 Rereading the Current File --------------------------------- -Another request for a new built-in function was for a `rewind()' -function that would make it possible to reread the current file. The -requesting user didn't want to have to use `getline' (*note Getline::) -inside a loop. +Another request for a new built-in function was for a function that +would make it possible to reread the current file. The requesting user +didn't want to have to use `getline' (*note Getline::) inside a loop. However, as long as you are not in the `END' rule, it is quite easy to arrange to immediately close the current input file and then start -over with it from the top. For lack of a better name, we'll call it -`rewind()': +over with it from the top. For lack of a better name, we'll call the +function `rewind()': # rewind.awk --- rewind the current file and start over @@ -15415,7 +15416,7 @@ longer in the list). See also *note ARGC and ARGV::. Because `awk' variable names only allow the English letters, the regular expression check purposely does not use character classes such -as `[:alpha:]' and `[:alnum:]' (*note Bracket Expressions::) +as `[:alpha:]' and `[:alnum:]' (*note Bracket Expressions::). ---------- Footnotes ---------- @@ -15426,14 +15427,14 @@ opened. However, the code here provides a portable solution. File: gawk.info, Node: Empty Files, Next: Ignoring Assigns, Prev: File Checking, Up: Data File Management -10.3.4 Checking for Zero-length Files +10.3.4 Checking for Zero-Length Files ------------------------------------- All known `awk' implementations silently skip over zero-length files. This is a by-product of `awk''s implicit read-a-record-and-match-against-the-rules loop: when `awk' tries to -read a record from an empty file, it immediately receives an end of -file indication, closes the file, and proceeds on to the next +read a record from an empty file, it immediately receives an +end-of-file indication, closes the file, and proceeds on to the next command-line data file, _without_ executing any user-level `awk' program code. @@ -15483,7 +15484,7 @@ File: gawk.info, Node: Ignoring Assigns, Prev: Empty Files, Up: Data File Man Occasionally, you might not want `awk' to process command-line variable assignments (*note Assignment Options::). In particular, if you have a file name that contains an `=' character, `awk' treats the file name as -an assignment, and does not process it. +an assignment and does not process it. Some users have suggested an additional command-line option for `gawk' to disable command-line assignments. However, some simple @@ -15773,8 +15774,8 @@ which is in `ARGV[0]': } } - The rest of the `BEGIN' rule is a simple test program. Here is the -result of two sample runs of the test program: + The rest of the `BEGIN' rule is a simple test program. Here are the +results of two sample runs of the test program: $ awk -f getopt.awk -v _getopt_test=1 -- -a -cbARG bax -x -| c = <a>, Optarg = <> @@ -15820,10 +15821,10 @@ File: gawk.info, Node: Passwd Functions, Next: Group Functions, Prev: Getopt ============================== The `PROCINFO' array (*note Built-in Variables::) provides access to -the current user's real and effective user and group ID numbers, and if -available, the user's supplementary group set. However, because these -are numbers, they do not provide very useful information to the average -user. There needs to be some way to find the user information +the current user's real and effective user and group ID numbers, and, +if available, the user's supplementary group set. However, because +these are numbers, they do not provide very useful information to the +average user. There needs to be some way to find the user information associated with the user and group ID numbers. This minor node presents a suite of functions for retrieving information from the user database. *Note Group Functions::, for a similar suite that retrieves @@ -15834,7 +15835,7 @@ kept. Instead, it provides the `<pwd.h>' header file and several C language subroutines for obtaining user information. The primary function is `getpwent()', for "get password entry." The "password" comes from the original user database file, `/etc/passwd', which stores -user information, along with the encrypted passwords (hence the name). +user information along with the encrypted passwords (hence the name). Although an `awk' program could simply read `/etc/passwd' directly, this file may not contain complete information about the system's set @@ -15882,7 +15883,7 @@ Encrypted password User-ID The user's numeric user ID number. (On some systems, it's a C - `long', and not an `int'. Thus we cast it to `long' for all + `long', and not an `int'. Thus, we cast it to `long' for all cases.) Group-ID @@ -15981,8 +15982,8 @@ or on some other `awk' implementation. `PROCINFO["FS"]', is similar. The main part of the function uses a loop to read database lines, -split the line into fields, and then store the line into each array as -necessary. When the loop is done, `_pw_init()' cleans up by closing +split the lines into fields, and then store the lines into each array +as necessary. When the loop is done, `_pw_init()' cleans up by closing the pipeline, setting `_pw_inited' to one, and restoring `FS' (and `FIELDWIDTHS' or `FPAT' if necessary), `RS', and `$0'. The use of `_pw_count' is explained shortly. @@ -16110,7 +16111,7 @@ Group Password Group ID Number The group's numeric group ID number; the association of name to number must be unique within the file. (On some systems it's a C - `long', and not an `int'. Thus we cast it to `long' for all + `long', and not an `int'. Thus, we cast it to `long' for all cases.) Group Member List @@ -16200,29 +16201,30 @@ to ensure that the database is scanned no more than once. The `_gr_init()' function first saves `FS', `RS', and `$0', and then sets `FS' and `RS' to the correct values for scanning the group information. It also takes care to note whether `FIELDWIDTHS' or `FPAT' is being -used, and to restore the appropriate field splitting mechanism. +used, and to restore the appropriate field-splitting mechanism. - The group information is stored is several associative arrays. The + The group information is stored in several associative arrays. The arrays are indexed by group name (`_gr_byname'), by group ID number (`_gr_bygid'), and by position in the database (`_gr_bycount'). There is an additional array indexed by username (`_gr_groupsbyuser'), which is a space-separated list of groups to which each user belongs. - Unlike the user database, it is possible to have multiple records in -the database for the same group. This is common when a group has a + Unlike in the user database, it is possible to have multiple records +in the database for the same group. This is common when a group has a large number of members. A pair of such entries might look like the following: - tvpeople:*:101:johny,jay,arsenio + tvpeople:*:101:johnny,jay,arsenio tvpeople:*:101:david,conan,tom,joan For this reason, `_gr_init()' looks to see if a group name or group -ID number is already seen. If it is, the usernames are simply +ID number is already seen. If so, the usernames are simply concatenated onto the previous list of users.(1) Finally, `_gr_init()' closes the pipeline to `grcat', restores `FS' -(and `FIELDWIDTHS' or `FPAT' if necessary), `RS', and `$0', initializes -`_gr_count' to zero (it is used later), and makes `_gr_inited' nonzero. +(and `FIELDWIDTHS' or `FPAT', if necessary), `RS', and `$0', +initializes `_gr_count' to zero (it is used later), and makes +`_gr_inited' nonzero. The `getgrnam()' function takes a group name as its argument, and if that group exists, it is returned. Otherwise, it relies on the array @@ -16285,9 +16287,9 @@ very simple, relying on `awk''s associative arrays to do work. ---------- Footnotes ---------- - (1) There is actually a subtle problem with the code just presented. -Suppose that the first time there were no names. This code adds the -names with a leading comma. It also doesn't check that there is a `$4'. + (1) There is a subtle problem with the code just presented. Suppose +that the first time there were no names. This code adds the names with +a leading comma. It also doesn't check that there is a `$4'. File: gawk.info, Node: Walking Arrays, Next: Library Functions Summary, Prev: Group Functions, Up: Library Functions @@ -16296,11 +16298,11 @@ File: gawk.info, Node: Walking Arrays, Next: Library Functions Summary, Prev: ================================ *note Arrays of Arrays::, described how `gawk' provides arrays of -arrays. In particular, any element of an array may be either a scalar, +arrays. In particular, any element of an array may be either a scalar or another array. The `isarray()' function (*note Type Functions::) lets you distinguish an array from a scalar. The following function, -`walk_array()', recursively traverses an array, printing each element's -indices and value. You call it with the array and a string +`walk_array()', recursively traverses an array, printing the element +indices and values. You call it with the array and a string representing the name of the array: function walk_array(arr, name, i) @@ -16357,24 +16359,24 @@ File: gawk.info, Node: Library Functions Summary, Next: Library Exercises, Pr * The functions presented here fit into the following categories: General problems - Number-to-string conversion, assertions, rounding, random - number generation, converting characters to numbers, joining - strings, getting easily usable time-of-day information, and - reading a whole file in one shot. + Number-to-string conversion, testing assertions, rounding, + random number generation, converting characters to numbers, + joining strings, getting easily usable time-of-day + information, and reading a whole file in one shot Managing data files Noting data file boundaries, rereading the current file, checking for readable files, checking for zero-length files, - and treating assignments as file names. + and treating assignments as file names Processing command-line options - An `awk' version of the standard C `getopt()' function. + An `awk' version of the standard C `getopt()' function Reading the user and group databases - Two sets of routines that parallel the C library versions. + Two sets of routines that parallel the C library versions Traversing arrays of arrays - A simple function to traverse an array of arrays to any depth. + A simple function to traverse an array of arrays to any depth @@ -32116,7 +32118,7 @@ Index * BEGINFILE pattern: BEGINFILE/ENDFILE. (line 6) * BEGINFILE pattern, Boolean patterns and: Expression Patterns. (line 69) -* beginfile() user-defined function: Filetrans Function. (line 61) +* beginfile() user-defined function: Filetrans Function. (line 62) * Bentley, Jon: Glossary. (line 207) * Benzinger, Michael: Contributors. (line 97) * Berry, Karl <1>: Ranges and Locales. (line 74) @@ -32736,9 +32738,9 @@ Index * END pattern, print statement and: I/O And BEGIN/END. (line 16) * ENDFILE pattern: BEGINFILE/ENDFILE. (line 6) * ENDFILE pattern, Boolean patterns and: Expression Patterns. (line 69) -* endfile() user-defined function: Filetrans Function. (line 61) -* endgrent() function (C library): Group Functions. (line 211) -* endgrent() user-defined function: Group Functions. (line 214) +* endfile() user-defined function: Filetrans Function. (line 62) +* endgrent() function (C library): Group Functions. (line 212) +* endgrent() user-defined function: Group Functions. (line 215) * endpwent() function (C library): Passwd Functions. (line 207) * endpwent() user-defined function: Passwd Functions. (line 210) * English, Steve: Advanced Features. (line 6) @@ -33172,12 +33174,12 @@ Index * getaddrinfo() function (C library): TCP/IP Networking. (line 38) * getgrent() function (C library): Group Functions. (line 6) * getgrent() user-defined function: Group Functions. (line 6) -* getgrgid() function (C library): Group Functions. (line 182) -* getgrgid() user-defined function: Group Functions. (line 185) -* getgrnam() function (C library): Group Functions. (line 171) -* getgrnam() user-defined function: Group Functions. (line 176) -* getgruser() function (C library): Group Functions. (line 191) -* getgruser() function, user-defined: Group Functions. (line 194) +* getgrgid() function (C library): Group Functions. (line 183) +* getgrgid() user-defined function: Group Functions. (line 186) +* getgrnam() function (C library): Group Functions. (line 172) +* getgrnam() user-defined function: Group Functions. (line 177) +* getgruser() function (C library): Group Functions. (line 192) +* getgruser() function, user-defined: Group Functions. (line 195) * getline command: Reading Files. (line 20) * getline command, _gr_init() user-defined function: Group Functions. (line 83) @@ -34048,7 +34050,7 @@ Index (line 11) * revtwoway extension: Extension Sample Rev2way. (line 12) -* rewind() user-defined function: Rewind Function. (line 16) +* rewind() user-defined function: Rewind Function. (line 15) * right angle bracket (>), > operator <1>: Precedence. (line 65) * right angle bracket (>), > operator: Comparison Operators. (line 11) @@ -34209,7 +34211,7 @@ Index * sidebar, Recipe for a Programming Language: History. (line 6) * sidebar, RS = "\0" Is Not Portable: gawk split records. (line 63) * sidebar, So Why Does gawk Have BEGINFILE and ENDFILE?: Filetrans Function. - (line 82) + (line 83) * sidebar, Syntactic Ambiguities Between /= and Regular Expressions: Assignment Ops. (line 146) * sidebar, Understanding #!: Executable Scripts. (line 31) @@ -34896,290 +34898,290 @@ Node: Indirect Calls588592 Ref: Indirect Calls-Footnote-1599898 Node: Functions Summary600026 Node: Library Functions602728 -Ref: Library Functions-Footnote-1606337 -Ref: Library Functions-Footnote-2606480 -Node: Library Names606651 -Ref: Library Names-Footnote-1610105 -Ref: Library Names-Footnote-2610328 -Node: General Functions610414 -Node: Strtonum Function611517 -Node: Assert Function614539 -Node: Round Function617863 -Node: Cliff Random Function619404 -Node: Ordinal Functions620420 -Ref: Ordinal Functions-Footnote-1623483 -Ref: Ordinal Functions-Footnote-2623735 -Node: Join Function623946 -Ref: Join Function-Footnote-1625715 -Node: Getlocaltime Function625915 -Node: Readfile Function629659 -Node: Shell Quoting631629 -Node: Data File Management633030 -Node: Filetrans Function633662 -Node: Rewind Function637718 -Node: File Checking639105 -Ref: File Checking-Footnote-1640437 -Node: Empty Files640638 -Node: Ignoring Assigns642617 -Node: Getopt Function644168 -Ref: Getopt Function-Footnote-1655630 -Node: Passwd Functions655830 -Ref: Passwd Functions-Footnote-1664667 -Node: Group Functions664755 -Ref: Group Functions-Footnote-1672649 -Node: Walking Arrays672862 -Node: Library Functions Summary674465 -Node: Library Exercises675866 -Node: Sample Programs677146 -Node: Running Examples677916 -Node: Clones678644 -Node: Cut Program679868 -Node: Egrep Program689587 -Ref: Egrep Program-Footnote-1697085 -Node: Id Program697195 -Node: Split Program700840 -Ref: Split Program-Footnote-1704288 -Node: Tee Program704416 -Node: Uniq Program707205 -Node: Wc Program714624 -Ref: Wc Program-Footnote-1718874 -Node: Miscellaneous Programs718968 -Node: Dupword Program720181 -Node: Alarm Program722212 -Node: Translate Program727016 -Ref: Translate Program-Footnote-1731581 -Node: Labels Program731851 -Ref: Labels Program-Footnote-1735202 -Node: Word Sorting735286 -Node: History Sorting739357 -Node: Extract Program741193 -Node: Simple Sed748718 -Node: Igawk Program751786 -Ref: Igawk Program-Footnote-1766110 -Ref: Igawk Program-Footnote-2766311 -Ref: Igawk Program-Footnote-3766433 -Node: Anagram Program766548 -Node: Signature Program769605 -Node: Programs Summary770852 -Node: Programs Exercises772045 -Ref: Programs Exercises-Footnote-1776176 -Node: Advanced Features776267 -Node: Nondecimal Data778215 -Node: Array Sorting779805 -Node: Controlling Array Traversal780502 -Ref: Controlling Array Traversal-Footnote-1788835 -Node: Array Sorting Functions788953 -Ref: Array Sorting Functions-Footnote-1792842 -Node: Two-way I/O793038 -Ref: Two-way I/O-Footnote-1797983 -Ref: Two-way I/O-Footnote-2798169 -Node: TCP/IP Networking798251 -Node: Profiling801124 -Node: Advanced Features Summary809401 -Node: Internationalization811334 -Node: I18N and L10N812814 -Node: Explaining gettext813500 -Ref: Explaining gettext-Footnote-1818525 -Ref: Explaining gettext-Footnote-2818709 -Node: Programmer i18n818874 -Ref: Programmer i18n-Footnote-1823740 -Node: Translator i18n823789 -Node: String Extraction824583 -Ref: String Extraction-Footnote-1825714 -Node: Printf Ordering825800 -Ref: Printf Ordering-Footnote-1828586 -Node: I18N Portability828650 -Ref: I18N Portability-Footnote-1831105 -Node: I18N Example831168 -Ref: I18N Example-Footnote-1833971 -Node: Gawk I18N834043 -Node: I18N Summary834681 -Node: Debugger836020 -Node: Debugging837042 -Node: Debugging Concepts837483 -Node: Debugging Terms839336 -Node: Awk Debugging841908 -Node: Sample Debugging Session842802 -Node: Debugger Invocation843322 -Node: Finding The Bug844706 -Node: List of Debugger Commands851181 -Node: Breakpoint Control852514 -Node: Debugger Execution Control856210 -Node: Viewing And Changing Data859574 -Node: Execution Stack862952 -Node: Debugger Info864589 -Node: Miscellaneous Debugger Commands868606 -Node: Readline Support873635 -Node: Limitations874527 -Node: Debugging Summary876641 -Node: Arbitrary Precision Arithmetic877809 -Node: Computer Arithmetic879225 -Ref: table-numeric-ranges882823 -Ref: Computer Arithmetic-Footnote-1883682 -Node: Math Definitions883739 -Ref: table-ieee-formats887027 -Ref: Math Definitions-Footnote-1887631 -Node: MPFR features887736 -Node: FP Math Caution889407 -Ref: FP Math Caution-Footnote-1890457 -Node: Inexactness of computations890826 -Node: Inexact representation891785 -Node: Comparing FP Values893142 -Node: Errors accumulate894224 -Node: Getting Accuracy895657 -Node: Try To Round898319 -Node: Setting precision899218 -Ref: table-predefined-precision-strings899902 -Node: Setting the rounding mode901691 -Ref: table-gawk-rounding-modes902055 -Ref: Setting the rounding mode-Footnote-1905510 -Node: Arbitrary Precision Integers905689 -Ref: Arbitrary Precision Integers-Footnote-1910589 -Node: POSIX Floating Point Problems910738 -Ref: POSIX Floating Point Problems-Footnote-1914611 -Node: Floating point summary914649 -Node: Dynamic Extensions916843 -Node: Extension Intro918395 -Node: Plugin License919661 -Node: Extension Mechanism Outline920458 -Ref: figure-load-extension920886 -Ref: figure-register-new-function922366 -Ref: figure-call-new-function923370 -Node: Extension API Description925356 -Node: Extension API Functions Introduction926806 -Node: General Data Types931630 -Ref: General Data Types-Footnote-1937369 -Node: Memory Allocation Functions937668 -Ref: Memory Allocation Functions-Footnote-1940507 -Node: Constructor Functions940603 -Node: Registration Functions942337 -Node: Extension Functions943022 -Node: Exit Callback Functions945319 -Node: Extension Version String946567 -Node: Input Parsers947232 -Node: Output Wrappers957111 -Node: Two-way processors961626 -Node: Printing Messages963830 -Ref: Printing Messages-Footnote-1964906 -Node: Updating `ERRNO'965058 -Node: Requesting Values965798 -Ref: table-value-types-returned966526 -Node: Accessing Parameters967483 -Node: Symbol Table Access968714 -Node: Symbol table by name969228 -Node: Symbol table by cookie971209 -Ref: Symbol table by cookie-Footnote-1975353 -Node: Cached values975416 -Ref: Cached values-Footnote-1978915 -Node: Array Manipulation979006 -Ref: Array Manipulation-Footnote-1980104 -Node: Array Data Types980141 -Ref: Array Data Types-Footnote-1982796 -Node: Array Functions982888 -Node: Flattening Arrays986742 -Node: Creating Arrays993634 -Node: Extension API Variables998405 -Node: Extension Versioning999041 -Node: Extension API Informational Variables1000942 -Node: Extension API Boilerplate1002007 -Node: Finding Extensions1005816 -Node: Extension Example1006376 -Node: Internal File Description1007148 -Node: Internal File Ops1011215 -Ref: Internal File Ops-Footnote-11022885 -Node: Using Internal File Ops1023025 -Ref: Using Internal File Ops-Footnote-11025408 -Node: Extension Samples1025681 -Node: Extension Sample File Functions1027207 -Node: Extension Sample Fnmatch1034845 -Node: Extension Sample Fork1036336 -Node: Extension Sample Inplace1037551 -Node: Extension Sample Ord1039226 -Node: Extension Sample Readdir1040062 -Ref: table-readdir-file-types1040938 -Node: Extension Sample Revout1041749 -Node: Extension Sample Rev2way1042339 -Node: Extension Sample Read write array1043079 -Node: Extension Sample Readfile1045019 -Node: Extension Sample Time1046114 -Node: Extension Sample API Tests1047463 -Node: gawkextlib1047954 -Node: Extension summary1050612 -Node: Extension Exercises1054301 -Node: Language History1055023 -Node: V7/SVR3.11056679 -Node: SVR41058860 -Node: POSIX1060305 -Node: BTL1061694 -Node: POSIX/GNU1062428 -Node: Feature History1068052 -Node: Common Extensions1081150 -Node: Ranges and Locales1082474 -Ref: Ranges and Locales-Footnote-11087092 -Ref: Ranges and Locales-Footnote-21087119 -Ref: Ranges and Locales-Footnote-31087353 -Node: Contributors1087574 -Node: History summary1093115 -Node: Installation1094485 -Node: Gawk Distribution1095431 -Node: Getting1095915 -Node: Extracting1096738 -Node: Distribution contents1098373 -Node: Unix Installation1104438 -Node: Quick Installation1105121 -Node: Shell Startup Files1107532 -Node: Additional Configuration Options1108611 -Node: Configuration Philosophy1110350 -Node: Non-Unix Installation1112719 -Node: PC Installation1113177 -Node: PC Binary Installation1114496 -Node: PC Compiling1116344 -Ref: PC Compiling-Footnote-11119365 -Node: PC Testing1119474 -Node: PC Using1120650 -Node: Cygwin1124765 -Node: MSYS1125588 -Node: VMS Installation1126088 -Node: VMS Compilation1126880 -Ref: VMS Compilation-Footnote-11128102 -Node: VMS Dynamic Extensions1128160 -Node: VMS Installation Details1129844 -Node: VMS Running1132096 -Node: VMS GNV1134932 -Node: VMS Old Gawk1135666 -Node: Bugs1136136 -Node: Other Versions1140019 -Node: Installation summary1146443 -Node: Notes1147499 -Node: Compatibility Mode1148364 -Node: Additions1149146 -Node: Accessing The Source1150071 -Node: Adding Code1151506 -Node: New Ports1157663 -Node: Derived Files1162145 -Ref: Derived Files-Footnote-11167620 -Ref: Derived Files-Footnote-21167654 -Ref: Derived Files-Footnote-31168250 -Node: Future Extensions1168364 -Node: Implementation Limitations1168970 -Node: Extension Design1170218 -Node: Old Extension Problems1171372 -Ref: Old Extension Problems-Footnote-11172889 -Node: Extension New Mechanism Goals1172946 -Ref: Extension New Mechanism Goals-Footnote-11176306 -Node: Extension Other Design Decisions1176495 -Node: Extension Future Growth1178603 -Node: Old Extension Mechanism1179439 -Node: Notes summary1181201 -Node: Basic Concepts1182387 -Node: Basic High Level1183068 -Ref: figure-general-flow1183340 -Ref: figure-process-flow1183939 -Ref: Basic High Level-Footnote-11187168 -Node: Basic Data Typing1187353 -Node: Glossary1190681 -Node: Copying1222610 -Node: GNU Free Documentation License1260166 -Node: Index1285302 +Ref: Library Functions-Footnote-1606336 +Ref: Library Functions-Footnote-2606479 +Node: Library Names606650 +Ref: Library Names-Footnote-1610108 +Ref: Library Names-Footnote-2610331 +Node: General Functions610417 +Node: Strtonum Function611520 +Node: Assert Function614542 +Node: Round Function617866 +Node: Cliff Random Function619407 +Node: Ordinal Functions620423 +Ref: Ordinal Functions-Footnote-1623486 +Ref: Ordinal Functions-Footnote-2623738 +Node: Join Function623949 +Ref: Join Function-Footnote-1625719 +Node: Getlocaltime Function625919 +Node: Readfile Function629663 +Node: Shell Quoting631635 +Node: Data File Management633036 +Node: Filetrans Function633668 +Node: Rewind Function637764 +Node: File Checking639150 +Ref: File Checking-Footnote-1640483 +Node: Empty Files640684 +Node: Ignoring Assigns642663 +Node: Getopt Function644213 +Ref: Getopt Function-Footnote-1655677 +Node: Passwd Functions655877 +Ref: Passwd Functions-Footnote-1664717 +Node: Group Functions664805 +Ref: Group Functions-Footnote-1672702 +Node: Walking Arrays672907 +Node: Library Functions Summary674507 +Node: Library Exercises675911 +Node: Sample Programs677191 +Node: Running Examples677961 +Node: Clones678689 +Node: Cut Program679913 +Node: Egrep Program689632 +Ref: Egrep Program-Footnote-1697130 +Node: Id Program697240 +Node: Split Program700885 +Ref: Split Program-Footnote-1704333 +Node: Tee Program704461 +Node: Uniq Program707250 +Node: Wc Program714669 +Ref: Wc Program-Footnote-1718919 +Node: Miscellaneous Programs719013 +Node: Dupword Program720226 +Node: Alarm Program722257 +Node: Translate Program727061 +Ref: Translate Program-Footnote-1731626 +Node: Labels Program731896 +Ref: Labels Program-Footnote-1735247 +Node: Word Sorting735331 +Node: History Sorting739402 +Node: Extract Program741238 +Node: Simple Sed748763 +Node: Igawk Program751831 +Ref: Igawk Program-Footnote-1766155 +Ref: Igawk Program-Footnote-2766356 +Ref: Igawk Program-Footnote-3766478 +Node: Anagram Program766593 +Node: Signature Program769650 +Node: Programs Summary770897 +Node: Programs Exercises772090 +Ref: Programs Exercises-Footnote-1776221 +Node: Advanced Features776312 +Node: Nondecimal Data778260 +Node: Array Sorting779850 +Node: Controlling Array Traversal780547 +Ref: Controlling Array Traversal-Footnote-1788880 +Node: Array Sorting Functions788998 +Ref: Array Sorting Functions-Footnote-1792887 +Node: Two-way I/O793083 +Ref: Two-way I/O-Footnote-1798028 +Ref: Two-way I/O-Footnote-2798214 +Node: TCP/IP Networking798296 +Node: Profiling801169 +Node: Advanced Features Summary809446 +Node: Internationalization811379 +Node: I18N and L10N812859 +Node: Explaining gettext813545 +Ref: Explaining gettext-Footnote-1818570 +Ref: Explaining gettext-Footnote-2818754 +Node: Programmer i18n818919 +Ref: Programmer i18n-Footnote-1823785 +Node: Translator i18n823834 +Node: String Extraction824628 +Ref: String Extraction-Footnote-1825759 +Node: Printf Ordering825845 +Ref: Printf Ordering-Footnote-1828631 +Node: I18N Portability828695 +Ref: I18N Portability-Footnote-1831150 +Node: I18N Example831213 +Ref: I18N Example-Footnote-1834016 +Node: Gawk I18N834088 +Node: I18N Summary834726 +Node: Debugger836065 +Node: Debugging837087 +Node: Debugging Concepts837528 +Node: Debugging Terms839381 +Node: Awk Debugging841953 +Node: Sample Debugging Session842847 +Node: Debugger Invocation843367 +Node: Finding The Bug844751 +Node: List of Debugger Commands851226 +Node: Breakpoint Control852559 +Node: Debugger Execution Control856255 +Node: Viewing And Changing Data859619 +Node: Execution Stack862997 +Node: Debugger Info864634 +Node: Miscellaneous Debugger Commands868651 +Node: Readline Support873680 +Node: Limitations874572 +Node: Debugging Summary876686 +Node: Arbitrary Precision Arithmetic877854 +Node: Computer Arithmetic879270 +Ref: table-numeric-ranges882868 +Ref: Computer Arithmetic-Footnote-1883727 +Node: Math Definitions883784 +Ref: table-ieee-formats887072 +Ref: Math Definitions-Footnote-1887676 +Node: MPFR features887781 +Node: FP Math Caution889452 +Ref: FP Math Caution-Footnote-1890502 +Node: Inexactness of computations890871 +Node: Inexact representation891830 +Node: Comparing FP Values893187 +Node: Errors accumulate894269 +Node: Getting Accuracy895702 +Node: Try To Round898364 +Node: Setting precision899263 +Ref: table-predefined-precision-strings899947 +Node: Setting the rounding mode901736 +Ref: table-gawk-rounding-modes902100 +Ref: Setting the rounding mode-Footnote-1905555 +Node: Arbitrary Precision Integers905734 +Ref: Arbitrary Precision Integers-Footnote-1910634 +Node: POSIX Floating Point Problems910783 +Ref: POSIX Floating Point Problems-Footnote-1914656 +Node: Floating point summary914694 +Node: Dynamic Extensions916888 +Node: Extension Intro918440 +Node: Plugin License919706 +Node: Extension Mechanism Outline920503 +Ref: figure-load-extension920931 +Ref: figure-register-new-function922411 +Ref: figure-call-new-function923415 +Node: Extension API Description925401 +Node: Extension API Functions Introduction926851 +Node: General Data Types931675 +Ref: General Data Types-Footnote-1937414 +Node: Memory Allocation Functions937713 +Ref: Memory Allocation Functions-Footnote-1940552 +Node: Constructor Functions940648 +Node: Registration Functions942382 +Node: Extension Functions943067 +Node: Exit Callback Functions945364 +Node: Extension Version String946612 +Node: Input Parsers947277 +Node: Output Wrappers957156 +Node: Two-way processors961671 +Node: Printing Messages963875 +Ref: Printing Messages-Footnote-1964951 +Node: Updating `ERRNO'965103 +Node: Requesting Values965843 +Ref: table-value-types-returned966571 +Node: Accessing Parameters967528 +Node: Symbol Table Access968759 +Node: Symbol table by name969273 +Node: Symbol table by cookie971254 +Ref: Symbol table by cookie-Footnote-1975398 +Node: Cached values975461 +Ref: Cached values-Footnote-1978960 +Node: Array Manipulation979051 +Ref: Array Manipulation-Footnote-1980149 +Node: Array Data Types980186 +Ref: Array Data Types-Footnote-1982841 +Node: Array Functions982933 +Node: Flattening Arrays986787 +Node: Creating Arrays993679 +Node: Extension API Variables998450 +Node: Extension Versioning999086 +Node: Extension API Informational Variables1000987 +Node: Extension API Boilerplate1002052 +Node: Finding Extensions1005861 +Node: Extension Example1006421 +Node: Internal File Description1007193 +Node: Internal File Ops1011260 +Ref: Internal File Ops-Footnote-11022930 +Node: Using Internal File Ops1023070 +Ref: Using Internal File Ops-Footnote-11025453 +Node: Extension Samples1025726 +Node: Extension Sample File Functions1027252 +Node: Extension Sample Fnmatch1034890 +Node: Extension Sample Fork1036381 +Node: Extension Sample Inplace1037596 +Node: Extension Sample Ord1039271 +Node: Extension Sample Readdir1040107 +Ref: table-readdir-file-types1040983 +Node: Extension Sample Revout1041794 +Node: Extension Sample Rev2way1042384 +Node: Extension Sample Read write array1043124 +Node: Extension Sample Readfile1045064 +Node: Extension Sample Time1046159 +Node: Extension Sample API Tests1047508 +Node: gawkextlib1047999 +Node: Extension summary1050657 +Node: Extension Exercises1054346 +Node: Language History1055068 +Node: V7/SVR3.11056724 +Node: SVR41058905 +Node: POSIX1060350 +Node: BTL1061739 +Node: POSIX/GNU1062473 +Node: Feature History1068097 +Node: Common Extensions1081195 +Node: Ranges and Locales1082519 +Ref: Ranges and Locales-Footnote-11087137 +Ref: Ranges and Locales-Footnote-21087164 +Ref: Ranges and Locales-Footnote-31087398 +Node: Contributors1087619 +Node: History summary1093160 +Node: Installation1094530 +Node: Gawk Distribution1095476 +Node: Getting1095960 +Node: Extracting1096783 +Node: Distribution contents1098418 +Node: Unix Installation1104483 +Node: Quick Installation1105166 +Node: Shell Startup Files1107577 +Node: Additional Configuration Options1108656 +Node: Configuration Philosophy1110395 +Node: Non-Unix Installation1112764 +Node: PC Installation1113222 +Node: PC Binary Installation1114541 +Node: PC Compiling1116389 +Ref: PC Compiling-Footnote-11119410 +Node: PC Testing1119519 +Node: PC Using1120695 +Node: Cygwin1124810 +Node: MSYS1125633 +Node: VMS Installation1126133 +Node: VMS Compilation1126925 +Ref: VMS Compilation-Footnote-11128147 +Node: VMS Dynamic Extensions1128205 +Node: VMS Installation Details1129889 +Node: VMS Running1132141 +Node: VMS GNV1134977 +Node: VMS Old Gawk1135711 +Node: Bugs1136181 +Node: Other Versions1140064 +Node: Installation summary1146488 +Node: Notes1147544 +Node: Compatibility Mode1148409 +Node: Additions1149191 +Node: Accessing The Source1150116 +Node: Adding Code1151551 +Node: New Ports1157708 +Node: Derived Files1162190 +Ref: Derived Files-Footnote-11167665 +Ref: Derived Files-Footnote-21167699 +Ref: Derived Files-Footnote-31168295 +Node: Future Extensions1168409 +Node: Implementation Limitations1169015 +Node: Extension Design1170263 +Node: Old Extension Problems1171417 +Ref: Old Extension Problems-Footnote-11172934 +Node: Extension New Mechanism Goals1172991 +Ref: Extension New Mechanism Goals-Footnote-11176351 +Node: Extension Other Design Decisions1176540 +Node: Extension Future Growth1178648 +Node: Old Extension Mechanism1179484 +Node: Notes summary1181246 +Node: Basic Concepts1182432 +Node: Basic High Level1183113 +Ref: figure-general-flow1183385 +Ref: figure-process-flow1183984 +Ref: Basic High Level-Footnote-11187213 +Node: Basic Data Typing1187398 +Node: Glossary1190726 +Node: Copying1222655 +Node: GNU Free Documentation License1260211 +Node: Index1285347 End Tag Table |