diff options
Diffstat (limited to 'doc/gawk.info')
-rw-r--r-- | doc/gawk.info | 718 |
1 files changed, 360 insertions, 358 deletions
diff --git a/doc/gawk.info b/doc/gawk.info index 0e8bcb52..bebdf4bf 100644 --- a/doc/gawk.info +++ b/doc/gawk.info @@ -14427,7 +14427,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 @@ -14532,7 +14532,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 @@ -14545,7 +14545,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 @@ -14553,7 +14553,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) @@ -14731,7 +14731,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) { @@ -14752,7 +14752,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' @@ -14967,9 +14967,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::): @@ -15088,7 +15088,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 @@ -15130,13 +15130,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) @@ -15226,8 +15226,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', @@ -15261,7 +15262,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 @@ -15276,7 +15277,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 @@ -15303,7 +15304,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 @@ -15311,7 +15312,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 @@ -15319,15 +15321,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 @@ -15385,7 +15386,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 ---------- @@ -15396,14 +15397,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. @@ -15453,7 +15454,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 @@ -15743,8 +15744,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 = <> @@ -15790,10 +15791,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 @@ -15804,7 +15805,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 @@ -15852,7 +15853,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 @@ -15951,8 +15952,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. @@ -16080,7 +16081,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 @@ -16170,29 +16171,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 @@ -16255,9 +16257,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 @@ -16266,11 +16268,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) @@ -16327,24 +16329,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 @@ -31970,7 +31972,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) @@ -32589,9 +32591,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) @@ -33019,12 +33021,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) @@ -33895,7 +33897,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) @@ -34056,7 +34058,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) @@ -34743,289 +34745,289 @@ Node: Indirect Calls586978 Ref: Indirect Calls-Footnote-1598284 Node: Functions Summary598412 Node: Library Functions601114 -Ref: Library Functions-Footnote-1604723 -Ref: Library Functions-Footnote-2604866 -Node: Library Names605037 -Ref: Library Names-Footnote-1608491 -Ref: Library Names-Footnote-2608714 -Node: General Functions608800 -Node: Strtonum Function609903 -Node: Assert Function612925 -Node: Round Function616249 -Node: Cliff Random Function617790 -Node: Ordinal Functions618806 -Ref: Ordinal Functions-Footnote-1621869 -Ref: Ordinal Functions-Footnote-2622121 -Node: Join Function622332 -Ref: Join Function-Footnote-1624101 -Node: Getlocaltime Function624301 -Node: Readfile Function628045 -Node: Shell Quoting630015 -Node: Data File Management631416 -Node: Filetrans Function632048 -Node: Rewind Function636104 -Node: File Checking637491 -Ref: File Checking-Footnote-1638823 -Node: Empty Files639024 -Node: Ignoring Assigns641003 -Node: Getopt Function642554 -Ref: Getopt Function-Footnote-1654016 -Node: Passwd Functions654216 -Ref: Passwd Functions-Footnote-1663053 -Node: Group Functions663141 -Ref: Group Functions-Footnote-1671035 -Node: Walking Arrays671248 -Node: Library Functions Summary672851 -Node: Library Exercises674252 -Node: Sample Programs675532 -Node: Running Examples676302 -Node: Clones677030 -Node: Cut Program678254 -Node: Egrep Program687973 -Ref: Egrep Program-Footnote-1695471 -Node: Id Program695581 -Node: Split Program699226 -Ref: Split Program-Footnote-1702674 -Node: Tee Program702802 -Node: Uniq Program705591 -Node: Wc Program713010 -Ref: Wc Program-Footnote-1717260 -Node: Miscellaneous Programs717354 -Node: Dupword Program718567 -Node: Alarm Program720598 -Node: Translate Program725402 -Ref: Translate Program-Footnote-1729967 -Node: Labels Program730237 -Ref: Labels Program-Footnote-1733588 -Node: Word Sorting733672 -Node: History Sorting737743 -Node: Extract Program739579 -Node: Simple Sed747104 -Node: Igawk Program750172 -Ref: Igawk Program-Footnote-1764496 -Ref: Igawk Program-Footnote-2764697 -Ref: Igawk Program-Footnote-3764819 -Node: Anagram Program764934 -Node: Signature Program767991 -Node: Programs Summary769238 -Node: Programs Exercises770431 -Ref: Programs Exercises-Footnote-1774562 -Node: Advanced Features774653 -Node: Nondecimal Data776601 -Node: Array Sorting778191 -Node: Controlling Array Traversal778888 -Ref: Controlling Array Traversal-Footnote-1787221 -Node: Array Sorting Functions787339 -Ref: Array Sorting Functions-Footnote-1791228 -Node: Two-way I/O791424 -Ref: Two-way I/O-Footnote-1796369 -Ref: Two-way I/O-Footnote-2796555 -Node: TCP/IP Networking796637 -Node: Profiling799510 -Node: Advanced Features Summary807057 -Node: Internationalization808990 -Node: I18N and L10N810470 -Node: Explaining gettext811156 -Ref: Explaining gettext-Footnote-1816181 -Ref: Explaining gettext-Footnote-2816365 -Node: Programmer i18n816530 -Ref: Programmer i18n-Footnote-1821396 -Node: Translator i18n821445 -Node: String Extraction822239 -Ref: String Extraction-Footnote-1823370 -Node: Printf Ordering823456 -Ref: Printf Ordering-Footnote-1826242 -Node: I18N Portability826306 -Ref: I18N Portability-Footnote-1828761 -Node: I18N Example828824 -Ref: I18N Example-Footnote-1831627 -Node: Gawk I18N831699 -Node: I18N Summary832337 -Node: Debugger833676 -Node: Debugging834698 -Node: Debugging Concepts835139 -Node: Debugging Terms836992 -Node: Awk Debugging839564 -Node: Sample Debugging Session840458 -Node: Debugger Invocation840978 -Node: Finding The Bug842362 -Node: List of Debugger Commands848837 -Node: Breakpoint Control850170 -Node: Debugger Execution Control853866 -Node: Viewing And Changing Data857230 -Node: Execution Stack860608 -Node: Debugger Info862245 -Node: Miscellaneous Debugger Commands866262 -Node: Readline Support871291 -Node: Limitations872183 -Node: Debugging Summary874297 -Node: Arbitrary Precision Arithmetic875465 -Node: Computer Arithmetic876881 -Ref: table-numeric-ranges880479 -Ref: Computer Arithmetic-Footnote-1881338 -Node: Math Definitions881395 -Ref: table-ieee-formats884683 -Ref: Math Definitions-Footnote-1885287 -Node: MPFR features885392 -Node: FP Math Caution887063 -Ref: FP Math Caution-Footnote-1888113 -Node: Inexactness of computations888482 -Node: Inexact representation889441 -Node: Comparing FP Values890798 -Node: Errors accumulate891880 -Node: Getting Accuracy893313 -Node: Try To Round895975 -Node: Setting precision896874 -Ref: table-predefined-precision-strings897558 -Node: Setting the rounding mode899347 -Ref: table-gawk-rounding-modes899711 -Ref: Setting the rounding mode-Footnote-1903166 -Node: Arbitrary Precision Integers903345 -Ref: Arbitrary Precision Integers-Footnote-1906331 -Node: POSIX Floating Point Problems906480 -Ref: POSIX Floating Point Problems-Footnote-1910353 -Node: Floating point summary910391 -Node: Dynamic Extensions912585 -Node: Extension Intro914137 -Node: Plugin License915403 -Node: Extension Mechanism Outline916200 -Ref: figure-load-extension916628 -Ref: figure-register-new-function918108 -Ref: figure-call-new-function919112 -Node: Extension API Description921098 -Node: Extension API Functions Introduction922548 -Node: General Data Types927372 -Ref: General Data Types-Footnote-1933111 -Node: Memory Allocation Functions933410 -Ref: Memory Allocation Functions-Footnote-1936249 -Node: Constructor Functions936345 -Node: Registration Functions938079 -Node: Extension Functions938764 -Node: Exit Callback Functions941061 -Node: Extension Version String942309 -Node: Input Parsers942974 -Node: Output Wrappers952853 -Node: Two-way processors957368 -Node: Printing Messages959572 -Ref: Printing Messages-Footnote-1960648 -Node: Updating `ERRNO'960800 -Node: Requesting Values961540 -Ref: table-value-types-returned962268 -Node: Accessing Parameters963225 -Node: Symbol Table Access964456 -Node: Symbol table by name964970 -Node: Symbol table by cookie966951 -Ref: Symbol table by cookie-Footnote-1971095 -Node: Cached values971158 -Ref: Cached values-Footnote-1974657 -Node: Array Manipulation974748 -Ref: Array Manipulation-Footnote-1975846 -Node: Array Data Types975883 -Ref: Array Data Types-Footnote-1978538 -Node: Array Functions978630 -Node: Flattening Arrays982484 -Node: Creating Arrays989376 -Node: Extension API Variables994147 -Node: Extension Versioning994783 -Node: Extension API Informational Variables996684 -Node: Extension API Boilerplate997749 -Node: Finding Extensions1001558 -Node: Extension Example1002118 -Node: Internal File Description1002890 -Node: Internal File Ops1006957 -Ref: Internal File Ops-Footnote-11018627 -Node: Using Internal File Ops1018767 -Ref: Using Internal File Ops-Footnote-11021150 -Node: Extension Samples1021423 -Node: Extension Sample File Functions1022949 -Node: Extension Sample Fnmatch1030587 -Node: Extension Sample Fork1032078 -Node: Extension Sample Inplace1033293 -Node: Extension Sample Ord1034968 -Node: Extension Sample Readdir1035804 -Ref: table-readdir-file-types1036680 -Node: Extension Sample Revout1037491 -Node: Extension Sample Rev2way1038081 -Node: Extension Sample Read write array1038821 -Node: Extension Sample Readfile1040761 -Node: Extension Sample Time1041856 -Node: Extension Sample API Tests1043205 -Node: gawkextlib1043696 -Node: Extension summary1046354 -Node: Extension Exercises1050043 -Node: Language History1050765 -Node: V7/SVR3.11052421 -Node: SVR41054602 -Node: POSIX1056047 -Node: BTL1057436 -Node: POSIX/GNU1058170 -Node: Feature History1063734 -Node: Common Extensions1076832 -Node: Ranges and Locales1078156 -Ref: Ranges and Locales-Footnote-11082774 -Ref: Ranges and Locales-Footnote-21082801 -Ref: Ranges and Locales-Footnote-31083035 -Node: Contributors1083256 -Node: History summary1088797 -Node: Installation1090167 -Node: Gawk Distribution1091113 -Node: Getting1091597 -Node: Extracting1092420 -Node: Distribution contents1094055 -Node: Unix Installation1099772 -Node: Quick Installation1100389 -Node: Additional Configuration Options1102813 -Node: Configuration Philosophy1104551 -Node: Non-Unix Installation1106920 -Node: PC Installation1107378 -Node: PC Binary Installation1108697 -Node: PC Compiling1110545 -Ref: PC Compiling-Footnote-11113566 -Node: PC Testing1113675 -Node: PC Using1114851 -Node: Cygwin1118966 -Node: MSYS1119789 -Node: VMS Installation1120289 -Node: VMS Compilation1121081 -Ref: VMS Compilation-Footnote-11122303 -Node: VMS Dynamic Extensions1122361 -Node: VMS Installation Details1124045 -Node: VMS Running1126297 -Node: VMS GNV1129133 -Node: VMS Old Gawk1129867 -Node: Bugs1130337 -Node: Other Versions1134220 -Node: Installation summary1140644 -Node: Notes1141700 -Node: Compatibility Mode1142565 -Node: Additions1143347 -Node: Accessing The Source1144272 -Node: Adding Code1145707 -Node: New Ports1151864 -Node: Derived Files1156346 -Ref: Derived Files-Footnote-11161821 -Ref: Derived Files-Footnote-21161855 -Ref: Derived Files-Footnote-31162451 -Node: Future Extensions1162565 -Node: Implementation Limitations1163171 -Node: Extension Design1164419 -Node: Old Extension Problems1165573 -Ref: Old Extension Problems-Footnote-11167090 -Node: Extension New Mechanism Goals1167147 -Ref: Extension New Mechanism Goals-Footnote-11170507 -Node: Extension Other Design Decisions1170696 -Node: Extension Future Growth1172804 -Node: Old Extension Mechanism1173640 -Node: Notes summary1175402 -Node: Basic Concepts1176588 -Node: Basic High Level1177269 -Ref: figure-general-flow1177541 -Ref: figure-process-flow1178140 -Ref: Basic High Level-Footnote-11181369 -Node: Basic Data Typing1181554 -Node: Glossary1184882 -Node: Copying1216811 -Node: GNU Free Documentation License1254367 -Node: Index1279503 +Ref: Library Functions-Footnote-1604722 +Ref: Library Functions-Footnote-2604865 +Node: Library Names605036 +Ref: Library Names-Footnote-1608494 +Ref: Library Names-Footnote-2608717 +Node: General Functions608803 +Node: Strtonum Function609906 +Node: Assert Function612928 +Node: Round Function616252 +Node: Cliff Random Function617793 +Node: Ordinal Functions618809 +Ref: Ordinal Functions-Footnote-1621872 +Ref: Ordinal Functions-Footnote-2622124 +Node: Join Function622335 +Ref: Join Function-Footnote-1624105 +Node: Getlocaltime Function624305 +Node: Readfile Function628049 +Node: Shell Quoting630021 +Node: Data File Management631422 +Node: Filetrans Function632054 +Node: Rewind Function636150 +Node: File Checking637536 +Ref: File Checking-Footnote-1638869 +Node: Empty Files639070 +Node: Ignoring Assigns641049 +Node: Getopt Function642599 +Ref: Getopt Function-Footnote-1654063 +Node: Passwd Functions654263 +Ref: Passwd Functions-Footnote-1663103 +Node: Group Functions663191 +Ref: Group Functions-Footnote-1671088 +Node: Walking Arrays671293 +Node: Library Functions Summary672893 +Node: Library Exercises674297 +Node: Sample Programs675577 +Node: Running Examples676347 +Node: Clones677075 +Node: Cut Program678299 +Node: Egrep Program688018 +Ref: Egrep Program-Footnote-1695516 +Node: Id Program695626 +Node: Split Program699271 +Ref: Split Program-Footnote-1702719 +Node: Tee Program702847 +Node: Uniq Program705636 +Node: Wc Program713055 +Ref: Wc Program-Footnote-1717305 +Node: Miscellaneous Programs717399 +Node: Dupword Program718612 +Node: Alarm Program720643 +Node: Translate Program725447 +Ref: Translate Program-Footnote-1730012 +Node: Labels Program730282 +Ref: Labels Program-Footnote-1733633 +Node: Word Sorting733717 +Node: History Sorting737788 +Node: Extract Program739624 +Node: Simple Sed747149 +Node: Igawk Program750217 +Ref: Igawk Program-Footnote-1764541 +Ref: Igawk Program-Footnote-2764742 +Ref: Igawk Program-Footnote-3764864 +Node: Anagram Program764979 +Node: Signature Program768036 +Node: Programs Summary769283 +Node: Programs Exercises770476 +Ref: Programs Exercises-Footnote-1774607 +Node: Advanced Features774698 +Node: Nondecimal Data776646 +Node: Array Sorting778236 +Node: Controlling Array Traversal778933 +Ref: Controlling Array Traversal-Footnote-1787266 +Node: Array Sorting Functions787384 +Ref: Array Sorting Functions-Footnote-1791273 +Node: Two-way I/O791469 +Ref: Two-way I/O-Footnote-1796414 +Ref: Two-way I/O-Footnote-2796600 +Node: TCP/IP Networking796682 +Node: Profiling799555 +Node: Advanced Features Summary807102 +Node: Internationalization809035 +Node: I18N and L10N810515 +Node: Explaining gettext811201 +Ref: Explaining gettext-Footnote-1816226 +Ref: Explaining gettext-Footnote-2816410 +Node: Programmer i18n816575 +Ref: Programmer i18n-Footnote-1821441 +Node: Translator i18n821490 +Node: String Extraction822284 +Ref: String Extraction-Footnote-1823415 +Node: Printf Ordering823501 +Ref: Printf Ordering-Footnote-1826287 +Node: I18N Portability826351 +Ref: I18N Portability-Footnote-1828806 +Node: I18N Example828869 +Ref: I18N Example-Footnote-1831672 +Node: Gawk I18N831744 +Node: I18N Summary832382 +Node: Debugger833721 +Node: Debugging834743 +Node: Debugging Concepts835184 +Node: Debugging Terms837037 +Node: Awk Debugging839609 +Node: Sample Debugging Session840503 +Node: Debugger Invocation841023 +Node: Finding The Bug842407 +Node: List of Debugger Commands848882 +Node: Breakpoint Control850215 +Node: Debugger Execution Control853911 +Node: Viewing And Changing Data857275 +Node: Execution Stack860653 +Node: Debugger Info862290 +Node: Miscellaneous Debugger Commands866307 +Node: Readline Support871336 +Node: Limitations872228 +Node: Debugging Summary874342 +Node: Arbitrary Precision Arithmetic875510 +Node: Computer Arithmetic876926 +Ref: table-numeric-ranges880524 +Ref: Computer Arithmetic-Footnote-1881383 +Node: Math Definitions881440 +Ref: table-ieee-formats884728 +Ref: Math Definitions-Footnote-1885332 +Node: MPFR features885437 +Node: FP Math Caution887108 +Ref: FP Math Caution-Footnote-1888158 +Node: Inexactness of computations888527 +Node: Inexact representation889486 +Node: Comparing FP Values890843 +Node: Errors accumulate891925 +Node: Getting Accuracy893358 +Node: Try To Round896020 +Node: Setting precision896919 +Ref: table-predefined-precision-strings897603 +Node: Setting the rounding mode899392 +Ref: table-gawk-rounding-modes899756 +Ref: Setting the rounding mode-Footnote-1903211 +Node: Arbitrary Precision Integers903390 +Ref: Arbitrary Precision Integers-Footnote-1906376 +Node: POSIX Floating Point Problems906525 +Ref: POSIX Floating Point Problems-Footnote-1910398 +Node: Floating point summary910436 +Node: Dynamic Extensions912630 +Node: Extension Intro914182 +Node: Plugin License915448 +Node: Extension Mechanism Outline916245 +Ref: figure-load-extension916673 +Ref: figure-register-new-function918153 +Ref: figure-call-new-function919157 +Node: Extension API Description921143 +Node: Extension API Functions Introduction922593 +Node: General Data Types927417 +Ref: General Data Types-Footnote-1933156 +Node: Memory Allocation Functions933455 +Ref: Memory Allocation Functions-Footnote-1936294 +Node: Constructor Functions936390 +Node: Registration Functions938124 +Node: Extension Functions938809 +Node: Exit Callback Functions941106 +Node: Extension Version String942354 +Node: Input Parsers943019 +Node: Output Wrappers952898 +Node: Two-way processors957413 +Node: Printing Messages959617 +Ref: Printing Messages-Footnote-1960693 +Node: Updating `ERRNO'960845 +Node: Requesting Values961585 +Ref: table-value-types-returned962313 +Node: Accessing Parameters963270 +Node: Symbol Table Access964501 +Node: Symbol table by name965015 +Node: Symbol table by cookie966996 +Ref: Symbol table by cookie-Footnote-1971140 +Node: Cached values971203 +Ref: Cached values-Footnote-1974702 +Node: Array Manipulation974793 +Ref: Array Manipulation-Footnote-1975891 +Node: Array Data Types975928 +Ref: Array Data Types-Footnote-1978583 +Node: Array Functions978675 +Node: Flattening Arrays982529 +Node: Creating Arrays989421 +Node: Extension API Variables994192 +Node: Extension Versioning994828 +Node: Extension API Informational Variables996729 +Node: Extension API Boilerplate997794 +Node: Finding Extensions1001603 +Node: Extension Example1002163 +Node: Internal File Description1002935 +Node: Internal File Ops1007002 +Ref: Internal File Ops-Footnote-11018672 +Node: Using Internal File Ops1018812 +Ref: Using Internal File Ops-Footnote-11021195 +Node: Extension Samples1021468 +Node: Extension Sample File Functions1022994 +Node: Extension Sample Fnmatch1030632 +Node: Extension Sample Fork1032123 +Node: Extension Sample Inplace1033338 +Node: Extension Sample Ord1035013 +Node: Extension Sample Readdir1035849 +Ref: table-readdir-file-types1036725 +Node: Extension Sample Revout1037536 +Node: Extension Sample Rev2way1038126 +Node: Extension Sample Read write array1038866 +Node: Extension Sample Readfile1040806 +Node: Extension Sample Time1041901 +Node: Extension Sample API Tests1043250 +Node: gawkextlib1043741 +Node: Extension summary1046399 +Node: Extension Exercises1050088 +Node: Language History1050810 +Node: V7/SVR3.11052466 +Node: SVR41054647 +Node: POSIX1056092 +Node: BTL1057481 +Node: POSIX/GNU1058215 +Node: Feature History1063779 +Node: Common Extensions1076877 +Node: Ranges and Locales1078201 +Ref: Ranges and Locales-Footnote-11082819 +Ref: Ranges and Locales-Footnote-21082846 +Ref: Ranges and Locales-Footnote-31083080 +Node: Contributors1083301 +Node: History summary1088842 +Node: Installation1090212 +Node: Gawk Distribution1091158 +Node: Getting1091642 +Node: Extracting1092465 +Node: Distribution contents1094100 +Node: Unix Installation1099817 +Node: Quick Installation1100434 +Node: Additional Configuration Options1102858 +Node: Configuration Philosophy1104596 +Node: Non-Unix Installation1106965 +Node: PC Installation1107423 +Node: PC Binary Installation1108742 +Node: PC Compiling1110590 +Ref: PC Compiling-Footnote-11113611 +Node: PC Testing1113720 +Node: PC Using1114896 +Node: Cygwin1119011 +Node: MSYS1119834 +Node: VMS Installation1120334 +Node: VMS Compilation1121126 +Ref: VMS Compilation-Footnote-11122348 +Node: VMS Dynamic Extensions1122406 +Node: VMS Installation Details1124090 +Node: VMS Running1126342 +Node: VMS GNV1129178 +Node: VMS Old Gawk1129912 +Node: Bugs1130382 +Node: Other Versions1134265 +Node: Installation summary1140689 +Node: Notes1141745 +Node: Compatibility Mode1142610 +Node: Additions1143392 +Node: Accessing The Source1144317 +Node: Adding Code1145752 +Node: New Ports1151909 +Node: Derived Files1156391 +Ref: Derived Files-Footnote-11161866 +Ref: Derived Files-Footnote-21161900 +Ref: Derived Files-Footnote-31162496 +Node: Future Extensions1162610 +Node: Implementation Limitations1163216 +Node: Extension Design1164464 +Node: Old Extension Problems1165618 +Ref: Old Extension Problems-Footnote-11167135 +Node: Extension New Mechanism Goals1167192 +Ref: Extension New Mechanism Goals-Footnote-11170552 +Node: Extension Other Design Decisions1170741 +Node: Extension Future Growth1172849 +Node: Old Extension Mechanism1173685 +Node: Notes summary1175447 +Node: Basic Concepts1176633 +Node: Basic High Level1177314 +Ref: figure-general-flow1177586 +Ref: figure-process-flow1178185 +Ref: Basic High Level-Footnote-11181414 +Node: Basic Data Typing1181599 +Node: Glossary1184927 +Node: Copying1216856 +Node: GNU Free Documentation License1254412 +Node: Index1279548 End Tag Table |