diff options
Diffstat (limited to 'doc/gawk.info')
-rw-r--r-- | doc/gawk.info | 497 |
1 files changed, 247 insertions, 250 deletions
diff --git a/doc/gawk.info b/doc/gawk.info index b8981b17..e6872457 100644 --- a/doc/gawk.info +++ b/doc/gawk.info @@ -22683,9 +22683,8 @@ operations: * All pointers filled in by `gawk' point to memory managed by `gawk' and should be treated by the extension as read-only. Memory for _all_ strings passed into `gawk' from the extension _must_ come - from calling the API-provided function pointers `api_malloc()', - `api_calloc()' or `api_realloc()', and is managed by `gawk' from - then on. + from calling one of `gawk_malloc()', `gawk_calloc()' or + `gawk_realloc()', and is managed by `gawk' from then on. * The API defines several simple `struct's that map values as seen from `awk'. A value can be a `double', a string, or an array (as @@ -22757,9 +22756,8 @@ that use them. `} awk_string_t;' This represents a mutable string. `gawk' owns the memory pointed to if it supplied the value. Otherwise, it takes ownership of the - memory pointed to. *Such memory must come from calling the - API-provided function pointers `api_malloc()', `api_calloc()', or - `api_realloc()'!* + memory pointed to. *Such memory must come from calling one of the + `gawk_malloc()', `gawk_calloc()', or `gawk_realloc()' functions!* As mentioned earlier, strings are maintained using the current multibyte encoding. @@ -22864,62 +22862,30 @@ the value. See also the entry for "Cookie" in the *note Glossary::. -File: gawk.info, Node: Requesting Values, Next: Memory Allocation Functions, Prev: General Data Types, Up: Extension API Description - -16.4.3 Requesting Values ------------------------- - -All of the functions that return values from `gawk' work in the same -way. You pass in an `awk_valtype_t' value to indicate what kind of -value you expect. If the actual value matches what you requested, the -function returns true and fills in the `awk_value_t' result. -Otherwise, the function returns false, and the `val_type' member -indicates the type of the actual value. You may then print an error -message, or reissue the request for the actual value type, as -appropriate. This behavior is summarized in *note -table-value-types-returned::. - - Type of Actual Value: --------------------------------------------------------------------------- - - String Number Array Undefined ------------------------------------------------------------------------------- - String String String false false - Number Number if can Number false false - be converted, - else false -Type Array false false Array false -Requested: Scalar Scalar Scalar false false - Undefined String Number Array Undefined - Value false false false false - Cookie - -Table 16.1: API Value Types Returned - - File: gawk.info, Node: Memory Allocation Functions, Next: Constructor Functions, Prev: Requesting Values, Up: Extension API Description -16.4.4 Memory Allocation Functions and Convenience Macros +16.4.3 Memory Allocation Functions and Convenience Macros --------------------------------------------------------- The API provides a number of "memory allocation" functions for allocating memory that can be passed to `gawk', as well as a number of -convenience macros. +convenience macros. This node presents them all as function +prototypes, in the way that extension code would use them. `void *gawk_malloc(size_t size);' - Call `gawk'-provided `api_malloc()' to allocate storage that may + Call the correct version of `malloc()' to allocate storage that may be passed to `gawk'. `void *gawk_calloc(size_t nmemb, size_t size);' - Call `gawk'-provided `api_calloc()' to allocate storage that may + Call the correct version of `calloc()' to allocate storage that may be passed to `gawk'. `void *gawk_realloc(void *ptr, size_t size);' - Call `gawk'-provided `api_realloc()' to allocate storage that may - be passed to `gawk'. + Call the correct version of `realloc()' to allocate storage that + may be passed to `gawk'. `void gawk_free(void *ptr);' - Call `gawk'-provided `api_free()' to release storage that was + Call the correct version of `free()' to release storage that was allocated with `gawk_malloc()', `gawk_calloc()' or `gawk_realloc()'. @@ -22929,11 +22895,10 @@ C library than was used for the `gawk' executable.(1) If `gawk' were to use its version of `free()' when the memory came from an unrelated version of `malloc()', unexpected behavior would likely result. - Two convenience macros may be used for allocating storage from the -API-provided function pointers `api_malloc()' and `api_realloc()'. If -the allocation fails, they cause `gawk' to exit with a fatal error -message. They should be used as if they were procedure calls that do -not return a value. + Two convenience macros may be used for allocating storage from +`gawk_malloc()' and `gawk_realloc()'. If the allocation fails, they +cause `gawk' to exit with a fatal error message. They should be used +as if they were procedure calls that do not return a value. `#define emalloc(pointer, type, size, message) ...' The arguments to this macro are as follows: @@ -22943,7 +22908,7 @@ not return a value. `type' The type of the pointer variable, used to create a cast for - the call to `api_malloc()'. + the call to `gawk_malloc()'. `size' The total number of bytes to be allocated. @@ -22963,9 +22928,9 @@ not return a value. make_malloced_string(message, strlen(message), & result); `#define erealloc(pointer, type, size, message) ...' - This is like `emalloc()', but it calls `api_realloc()', instead of - `api_malloc()'. The arguments are the same as for the `emalloc()' - macro. + This is like `emalloc()', but it calls `gawk_realloc()', instead + of `gawk_malloc()'. The arguments are the same as for the + `emalloc()' macro. ---------- Footnotes ---------- @@ -22975,7 +22940,7 @@ Unix-like systems as well. File: gawk.info, Node: Constructor Functions, Next: Registration Functions, Prev: Memory Allocation Functions, Up: Extension API Description -16.4.5 Constructor Functions +16.4.4 Constructor Functions ---------------------------- The API provides a number of "constructor" functions for creating @@ -22994,10 +22959,10 @@ extension code would use them. `make_malloced_string(const char *string, size_t length, awk_value_t *result)' This function creates a string value in the `awk_value_t' variable pointed to by `result'. It expects `string' to be a `char *' value - pointing to data previously obtained from the api-provided - functions `api_malloc()', `api_calloc()' or `api_realloc()'. The - idea here is that the data is passed directly to `gawk', which - assumes responsibility for it. It returns `result'. + pointing to data previously obtained from `gawk_malloc()', + `gawk_calloc()' or `gawk_realloc()'. The idea here is that the + data is passed directly to `gawk', which assumes responsibility + for it. It returns `result'. `static inline awk_value_t *' `make_null_string(awk_value_t *result)' @@ -23013,7 +22978,7 @@ extension code would use them. File: gawk.info, Node: Registration Functions, Next: Printing Messages, Prev: Constructor Functions, Up: Extension API Description -16.4.6 Registration Functions +16.4.5 Registration Functions ----------------------------- This minor node describes the API functions for registering parts of @@ -23031,7 +22996,7 @@ your extension with `gawk'. File: gawk.info, Node: Extension Functions, Next: Exit Callback Functions, Up: Registration Functions -16.4.6.1 Registering An Extension Function +16.4.5.1 Registering An Extension Function .......................................... Extension functions are described by the following record: @@ -23049,17 +23014,16 @@ Extension functions are described by the following record: by this name. This is a regular C string. Function names must obey the rules for `awk' identifiers. That is, - they must begin with either a letter or an underscore, which may - be followed by any number of letters, digits, and underscores. - Letter case in function names is significant. + they must begin with either an English letter or an underscore, + which may be followed by any number of letters, digits, and + underscores. Letter case in function names is significant. `awk_value_t *(*function)(int num_actual_args, awk_value_t *result);' - This is a pointer to the C function that provides the desired - functionality. The function must fill in the result with either a + This is a pointer to the C function that provides the extension's + functionality. The function must fill in `*result' with either a number or a string. `gawk' takes ownership of any string memory. - As mentioned earlier, string memory *must* come from the - api-provided functions `api_malloc()', `api_calloc()' or - `api_realloc()'. + As mentioned earlier, string memory *must* come from one of + `gawk_malloc()', `gawk_calloc()' or `gawk_realloc()'. The `num_actual_args' argument tells the C function how many actual parameters were passed from the calling `awk' code. @@ -23070,7 +23034,7 @@ Extension functions are described by the following record: `size_t num_expected_args;' This is the number of arguments the function expects to receive. Each extension function may decide what to do if the number of - arguments isn't what it expected. Following `awk' functions, it + arguments isn't what it expected. As with real `awk' functions, it is likely OK to ignore extra arguments. Once you have a record representing your extension function, you @@ -23085,7 +23049,7 @@ register it with `gawk' using this API function: File: gawk.info, Node: Exit Callback Functions, Next: Extension Version String, Prev: Extension Functions, Up: Registration Functions -16.4.6.2 Registering An Exit Callback Function +16.4.5.2 Registering An Exit Callback Function .............................................. An "exit callback" function is a function that `gawk' calls before it @@ -23115,7 +23079,7 @@ order--that is, in the reverse order in which they are registered with File: gawk.info, Node: Extension Version String, Next: Input Parsers, Prev: Exit Callback Functions, Up: Registration Functions -16.4.6.3 Registering An Extension Version String +16.4.5.3 Registering An Extension Version String ................................................ You can register a version string which indicates the name and version @@ -23131,7 +23095,7 @@ invoked with the `--version' option. File: gawk.info, Node: Input Parsers, Next: Output Wrappers, Prev: Extension Version String, Up: Registration Functions -16.4.6.4 Customized Input Parsers +16.4.5.4 Customized Input Parsers ................................. By default, `gawk' reads text files as its input. It uses the value of @@ -23300,7 +23264,7 @@ records. The parameters are as follows: `*rt_start' should be set to point to the data to be used for `RT', and `*rt_len' should be set to the length of the data. Otherwise, `*rt_len' should be set to zero. `gawk' makes its own - copy of this data, so the extension must manage the storage. + copy of this data, so the extension must manage this storage. The return value is the length of the buffer pointed to by `*out', or `EOF' if end-of-file was reached or an error occurred. @@ -23354,7 +23318,7 @@ whether or not to activate an input parser (*note BEGINFILE/ENDFILE::). File: gawk.info, Node: Output Wrappers, Next: Two-way processors, Prev: Input Parsers, Up: Registration Functions -16.4.6.5 Customized Output Wrappers +16.4.5.5 Customized Output Wrappers ................................... An "output wrapper" is the mirror image of an input parser. It allows @@ -23461,7 +23425,7 @@ just use normally. File: gawk.info, Node: Two-way processors, Prev: Output Wrappers, Up: Registration Functions -16.4.6.6 Customized Two-way Processors +16.4.5.6 Customized Two-way Processors ...................................... A "two-way processor" combines an input parser and an output wrapper for @@ -23514,7 +23478,7 @@ can take this" and "take over for this" functions, File: gawk.info, Node: Printing Messages, Next: Updating `ERRNO', Prev: Registration Functions, Up: Extension API Description -16.4.7 Printing Messages +16.4.6 Printing Messages ------------------------ You can print different kinds of warning messages from your extension, @@ -23545,7 +23509,7 @@ the pity. File: gawk.info, Node: Updating `ERRNO', Next: Accessing Parameters, Prev: Printing Messages, Up: Extension API Description -16.4.8 Updating `ERRNO' +16.4.7 Updating `ERRNO' ----------------------- The following functions allow you to update the `ERRNO' variable: @@ -23560,10 +23524,43 @@ The following functions allow you to update the `ERRNO' variable: Set `ERRNO' directly to the string value of `ERRNO'. `gawk' makes a copy of the value of `string'. -`void unset_ERRNO();' +`void unset_ERRNO(void);' Unset `ERRNO'. +File: gawk.info, Node: Requesting Values, Next: Memory Allocation Functions, Prev: General Data Types, Up: Extension API Description + +16.4.8 Requesting Values +------------------------ + +All of the functions that return values from `gawk' work in the same +way. You pass in an `awk_valtype_t' value to indicate what kind of +value you expect. If the actual value matches what you requested, the +function returns true and fills in the `awk_value_t' result. +Otherwise, the function returns false, and the `val_type' member +indicates the type of the actual value. You may then print an error +message, or reissue the request for the actual value type, as +appropriate. This behavior is summarized in *note +table-value-types-returned::. + + Type of Actual Value: +-------------------------------------------------------------------------- + + String Number Array Undefined +------------------------------------------------------------------------------ + String String String false false + Number Number if can Number false false + be converted, + else false +Type Array false false Array false +Requested: Scalar Scalar Scalar false false + Undefined String Number Array Undefined + Value false false false false + Cookie + +Table 16.1: API Value Types Returned + + File: gawk.info, Node: Accessing Parameters, Next: Symbol Table Access, Prev: Updating `ERRNO', Up: Extension API Description 16.4.9 Accessing and Updating Parameters @@ -23622,7 +23619,7 @@ termed a "symbol table". Fill in the `awk_value_t' structure pointed to by `result' with the value of the variable named by the string `name', which is a regular C string. `wanted' indicates the type of value expected. - Return true if the actual type matches `wanted', false otherwise + Return true if the actual type matches `wanted', false otherwise. In the latter case, `result->val_type' indicates the actual type (*note Table 16.1: table-value-types-returned.). @@ -23640,7 +23637,7 @@ termed a "symbol table". However, with the exception of the `PROCINFO' array, an extension cannot change any of those variables. - NOTE: It is possible for the lookup of `PROCINFO' to fail. This + CAUTION: It is possible for the lookup of `PROCINFO' to fail. This happens if the `awk' program being run does not reference `PROCINFO'; in this case `gawk' doesn't bother to create the array and populate it. @@ -23662,7 +23659,7 @@ was discussed earlier, in *note General Data Types::. ` awk_valtype_t wanted,' ` awk_value_t *result);' Retrieve the current value of a scalar cookie. Once you have - obtained a scalar_cookie using `sym_lookup()', you can use this + obtained a scalar cookie using `sym_lookup()', you can use this function to get its value more efficiently. Return false if the value cannot be retrieved. @@ -23721,7 +23718,7 @@ usual. Then get a scalar cookie for the variable using `sym_lookup()': /* install initial value */ sym_update("MAGIC_VAR", make_number(42.0, & value)); - /* get cookie */ + /* get the cookie */ sym_lookup("MAGIC_VAR", AWK_SCALAR, & value); /* save the cookie */ @@ -23772,7 +23769,7 @@ variables using `sym_update()' or `sym_update_scalar()', as you like. However, you can understand the point of cached values if you remember that _every_ string value's storage _must_ come from -`api_malloc()', `api_calloc()' or `api_realloc()'. If you have 20 +`gawk_malloc()', `gawk_calloc()' or `gawk_realloc()'. If you have 20 variables, all of which have the same string value, you must create 20 identical copies of the string.(1) @@ -23836,8 +23833,8 @@ Using value cookies in this way saves considerable storage, since all of `VAR1' through `VAR100' share the same value. You might be wondering, "Is this sharing problematic? What happens -if `awk' code assigns a new value to `VAR1', are all the others be -changed too?" +if `awk' code assigns a new value to `VAR1', are all the others changed +too?" That's a great question. The answer is that no, it's not a problem. Internally, `gawk' uses "reference-counted strings". This means that @@ -23903,7 +23900,7 @@ The data types associated with arrays are listed below. ` struct awk_element *next;' ` enum {' ` AWK_ELEMENT_DEFAULT = 0, /* set by gawk */' -` AWK_ELEMENT_DELETE = 1 /* set by extension if should be deleted */' +` AWK_ELEMENT_DELETE = 1 /* set by extension */' ` } flags;' ` awk_value_t index;' ` awk_value_t value;' @@ -23921,8 +23918,8 @@ The data types associated with arrays are listed below. the list. `enum { ... } flags;' - A set of flag values that convey information between `gawk' - and the extension. Currently there is only one: + A set of flag values that convey information between the + extension and `gawk'. Currently there is only one: `AWK_ELEMENT_DELETE'. Setting it causes `gawk' to delete the element from the original array upon release of the flattened array. @@ -23933,8 +23930,8 @@ The data types associated with arrays are listed below. memory pointed to by `index' and `value' belongs to `gawk'. `typedef struct awk_flat_array {' -` awk_const void *awk_const opaque1; /* private data for use by gawk */' -` awk_const void *awk_const opaque2; /* private data for use by gawk */' +` awk_const void *awk_const opaque1; /* for use by gawk */' +` awk_const void *awk_const opaque2; /* for use by gawk */' ` awk_const size_t count; /* how many elements */' ` awk_element_t elements[1]; /* will be extended */' `} awk_flat_array_t;' @@ -23958,7 +23955,7 @@ File: gawk.info, Node: Array Functions, Next: Flattening Arrays, Prev: Array The following functions relate to individual array elements. `awk_bool_t get_element_count(awk_array_t a_cookie, size_t *count);' - For the array represented by `a_cookie', return in `*count' the + For the array represented by `a_cookie', place in `*count' the number of elements it contains. A subarray counts as a single element. Return false if there is an error. @@ -23978,9 +23975,9 @@ The following functions relate to individual array elements. strings (*note Conversion::); thus using integral values is safest. As with _all_ strings passed into `gawk' from an extension, the - string value of `index' must come from the API-provided functions - `api_malloc()', `api_calloc()' or `api_realloc()' and `gawk' - releases the storage. + string value of `index' must come from `gawk_malloc()', + `gawk_calloc()' or `gawk_realloc()', and `gawk' releases the + storage. `awk_bool_t set_array_element(awk_array_t a_cookie,' ` const awk_value_t *const index,' @@ -24002,7 +23999,7 @@ The following functions relate to individual array elements. The following functions relate to arrays as a whole: -`awk_array_t create_array();' +`awk_array_t create_array(void);' Create a new array to which elements may be added. *Note Creating Arrays::, for a discussion of how to create a new array and add elements to it. @@ -24038,7 +24035,8 @@ array in a fashion that makes it easy for C code to traverse the entire array. Test code in `extension/testext.c' does this, and also serves as a nice example showing how to use the APIs. - First, the `gawk' script that drives the test extension: + We walk through that part of the code one step at a time. First, +the `gawk' script that drives the test extension: @load "testext" BEGIN { @@ -24159,8 +24157,7 @@ flag bit set: valrep2str(& flat_array->elements[i].value)); if (strcmp(value3.str_value.str, - flat_array->elements[i].index.str_value.str) - == 0) { + flat_array->elements[i].index.str_value.str) == 0) { flat_array->elements[i].flags |= AWK_ELEMENT_DELETE; printf("dump_array_and_delete: marking element \"%s\" " "for deletion\n", @@ -24250,9 +24247,9 @@ code: The following C code is a simple test extension to create an array with two regular elements and with a subarray. The leading `#include' -directives and boilerplate variable declarations are omitted for -brevity. The first step is to create a new array and then install it -in the symbol table: +directives and boilerplate variable declarations (*note Extension API +Boilerplate::) are omitted for brevity. The first step is to create a +new array and then install it in the symbol table: /* create_new_array --- create a named array */ @@ -24474,12 +24471,12 @@ in the `gawkapi.h' header file: /* OR: */ static awk_bool_t - init_my_module(void) + init_my_extension(void) { ... } - static awk_bool_t (*init_func)(void) = init_my_module; + static awk_bool_t (*init_func)(void) = init_my_extension; dl_load_func(func_table, some_name, "name_space_in_quotes") @@ -24511,8 +24508,8 @@ in the `gawkapi.h' header file: `static awk_bool_t (*init_func)(void) = NULL;' ` OR' -`static awk_bool_t init_my_module(void) { ... }' -`static awk_bool_t (*init_func)(void) = init_my_module;' +`static awk_bool_t init_my_extension(void) { ... }' +`static awk_bool_t (*init_func)(void) = init_my_extension;' If you need to do some initialization work, you should define a function that does it (creates variables, opens files, etc.) and then define the `init_func' pointer to point to your function. @@ -24566,8 +24563,9 @@ File: gawk.info, Node: Extension Example, Next: Extension Samples, Prev: Find Two useful functions that are not in `awk' are `chdir()' (so that an `awk' program can change its directory) and `stat()' (so that an `awk' -program can gather information about a file). This minor node -implements these functions for `gawk' in an extension. +program can gather information about a file). In order to illustrate +the API in action, this minor node implements these functions for +`gawk' in an extension. * Menu: @@ -24591,8 +24589,7 @@ directory to change to: newdir = "/home/arnold/funstuff" ret = chdir(newdir) if (ret < 0) { - printf("could not change to %s: %s\n", - newdir, ERRNO) > "/dev/stderr" + printf("could not change to %s: %s\n", newdir, ERRNO) > "/dev/stderr" exit 1 } ... @@ -24757,7 +24754,7 @@ arguments: the first is an `int' usually called `nargs', that represents the number of actual arguments for the function. The second is a pointer to an `awk_value_t', usually named `result'. - /* do_chdir --- provide dynamically loaded chdir() builtin for gawk */ + /* do_chdir --- provide dynamically loaded chdir() function for gawk */ static awk_value_t * do_chdir(int nargs, awk_value_t *result) @@ -24945,7 +24942,7 @@ and/or the type of the file. It then returns zero, for success: } } - array_set(array, "type", make_const_string(type, strlen(type), &tmp)); + array_set(array, "type", make_const_string(type, strlen(type), & tmp)); return 0; } @@ -26848,7 +26845,7 @@ Info file, in approximate chronological order: various PC platforms. * Christos Zoulas provided the `extension()' built-in function for - dynamically adding new modules. (This was obsoleted at `gawk' + dynamically adding new functions. (This was obsoleted at `gawk' 4.1.) * Ju"rgen Kahrs contributed the initial version of the TCP/IP @@ -28344,9 +28341,9 @@ there are several steps that you need to take in order to make it possible to include them: 1. Before building the new feature into `gawk' itself, consider - writing it as an extension module (*note Dynamic Extensions::). - If that's not possible, continue with the rest of the steps in - this list. + writing it as an extension (*note Dynamic Extensions::). If + that's not possible, continue with the rest of the steps in this + list. 2. Be prepared to sign the appropriate paperwork. In order for the FSF to distribute your changes, you must either place those @@ -34530,138 +34527,138 @@ Ref: figure-register-new-function910322 Ref: figure-call-new-function911326 Node: Extension API Description913312 Node: Extension API Functions Introduction914762 -Node: General Data Types919628 -Ref: General Data Types-Footnote-1925321 -Node: Requesting Values925620 -Ref: table-value-types-returned926357 -Node: Memory Allocation Functions927315 -Ref: Memory Allocation Functions-Footnote-1930062 -Node: Constructor Functions930158 -Node: Registration Functions931916 -Node: Extension Functions932601 -Node: Exit Callback Functions934903 -Node: Extension Version String936151 -Node: Input Parsers936801 -Node: Output Wrappers946615 -Node: Two-way processors951131 -Node: Printing Messages953335 -Ref: Printing Messages-Footnote-1954412 -Node: Updating `ERRNO'954564 -Node: Accessing Parameters955303 -Node: Symbol Table Access956533 -Node: Symbol table by name957047 -Node: Symbol table by cookie959023 -Ref: Symbol table by cookie-Footnote-1963156 -Node: Cached values963219 -Ref: Cached values-Footnote-1966723 -Node: Array Manipulation966814 -Ref: Array Manipulation-Footnote-1967912 -Node: Array Data Types967951 -Ref: Array Data Types-Footnote-1970654 -Node: Array Functions970746 -Node: Flattening Arrays974620 -Node: Creating Arrays981472 -Node: Extension API Variables986203 -Node: Extension Versioning986839 -Node: Extension API Informational Variables988740 -Node: Extension API Boilerplate989826 -Node: Finding Extensions993630 -Node: Extension Example994190 -Node: Internal File Description994920 -Node: Internal File Ops999011 -Ref: Internal File Ops-Footnote-11010443 -Node: Using Internal File Ops1010583 -Ref: Using Internal File Ops-Footnote-11012930 -Node: Extension Samples1013198 -Node: Extension Sample File Functions1014722 -Node: Extension Sample Fnmatch1022290 -Node: Extension Sample Fork1023772 -Node: Extension Sample Inplace1024985 -Node: Extension Sample Ord1026660 -Node: Extension Sample Readdir1027496 -Ref: table-readdir-file-types1028352 -Node: Extension Sample Revout1029151 -Node: Extension Sample Rev2way1029742 -Node: Extension Sample Read write array1030483 -Node: Extension Sample Readfile1032362 -Node: Extension Sample API Tests1033462 -Node: Extension Sample Time1033987 -Node: gawkextlib1035302 -Node: Extension summary1038115 -Node: Extension Exercises1041808 -Node: Language History1042530 -Node: V7/SVR3.11044173 -Node: SVR41046493 -Node: POSIX1047935 -Node: BTL1049321 -Node: POSIX/GNU1050055 -Node: Feature History1055771 -Node: Common Extensions1068862 -Node: Ranges and Locales1070174 -Ref: Ranges and Locales-Footnote-11074791 -Ref: Ranges and Locales-Footnote-21074818 -Ref: Ranges and Locales-Footnote-31075052 -Node: Contributors1075273 -Node: History summary1080698 -Node: Installation1082067 -Node: Gawk Distribution1083018 -Node: Getting1083502 -Node: Extracting1084326 -Node: Distribution contents1085968 -Node: Unix Installation1091685 -Node: Quick Installation1092302 -Node: Additional Configuration Options1094744 -Node: Configuration Philosophy1096482 -Node: Non-Unix Installation1098833 -Node: PC Installation1099291 -Node: PC Binary Installation1100602 -Node: PC Compiling1102450 -Ref: PC Compiling-Footnote-11105449 -Node: PC Testing1105554 -Node: PC Using1106730 -Node: Cygwin1110882 -Node: MSYS1111691 -Node: VMS Installation1112189 -Node: VMS Compilation1112985 -Ref: VMS Compilation-Footnote-11114207 -Node: VMS Dynamic Extensions1114265 -Node: VMS Installation Details1115638 -Node: VMS Running1117890 -Node: VMS GNV1120724 -Node: VMS Old Gawk1121447 -Node: Bugs1121917 -Node: Other Versions1125921 -Node: Installation summary1132145 -Node: Notes1133201 -Node: Compatibility Mode1134066 -Node: Additions1134848 -Node: Accessing The Source1135773 -Node: Adding Code1137209 -Node: New Ports1143387 -Node: Derived Files1147868 -Ref: Derived Files-Footnote-11153343 -Ref: Derived Files-Footnote-21153377 -Ref: Derived Files-Footnote-31153973 -Node: Future Extensions1154087 -Node: Implementation Limitations1154693 -Node: Extension Design1155941 -Node: Old Extension Problems1157095 -Ref: Old Extension Problems-Footnote-11158612 -Node: Extension New Mechanism Goals1158669 -Ref: Extension New Mechanism Goals-Footnote-11162029 -Node: Extension Other Design Decisions1162218 -Node: Extension Future Growth1164324 -Node: Old Extension Mechanism1165160 -Node: Notes summary1166922 -Node: Basic Concepts1168108 -Node: Basic High Level1168789 -Ref: figure-general-flow1169061 -Ref: figure-process-flow1169660 -Ref: Basic High Level-Footnote-11172889 -Node: Basic Data Typing1173074 -Node: Glossary1176402 -Node: Copying1201554 -Node: GNU Free Documentation License1239110 -Node: Index1264246 +Node: General Data Types919598 +Ref: General Data Types-Footnote-1925275 +Node: Memory Allocation Functions925574 +Ref: Memory Allocation Functions-Footnote-1928403 +Node: Constructor Functions928499 +Node: Registration Functions930233 +Node: Extension Functions930918 +Node: Exit Callback Functions933214 +Node: Extension Version String934462 +Node: Input Parsers935112 +Node: Output Wrappers944927 +Node: Two-way processors949443 +Node: Printing Messages951647 +Ref: Printing Messages-Footnote-1952724 +Node: Updating `ERRNO'952876 +Node: Requesting Values953619 +Ref: table-value-types-returned954356 +Node: Accessing Parameters955314 +Node: Symbol Table Access956544 +Node: Symbol table by name957058 +Node: Symbol table by cookie959038 +Ref: Symbol table by cookie-Footnote-1963175 +Node: Cached values963238 +Ref: Cached values-Footnote-1966742 +Node: Array Manipulation966833 +Ref: Array Manipulation-Footnote-1967931 +Node: Array Data Types967970 +Ref: Array Data Types-Footnote-1970627 +Node: Array Functions970719 +Node: Flattening Arrays974573 +Node: Creating Arrays981460 +Node: Extension API Variables986227 +Node: Extension Versioning986863 +Node: Extension API Informational Variables988764 +Node: Extension API Boilerplate989850 +Node: Finding Extensions993666 +Node: Extension Example994226 +Node: Internal File Description994998 +Node: Internal File Ops999065 +Ref: Internal File Ops-Footnote-11010499 +Node: Using Internal File Ops1010639 +Ref: Using Internal File Ops-Footnote-11012986 +Node: Extension Samples1013254 +Node: Extension Sample File Functions1014778 +Node: Extension Sample Fnmatch1022346 +Node: Extension Sample Fork1023828 +Node: Extension Sample Inplace1025041 +Node: Extension Sample Ord1026716 +Node: Extension Sample Readdir1027552 +Ref: table-readdir-file-types1028408 +Node: Extension Sample Revout1029207 +Node: Extension Sample Rev2way1029798 +Node: Extension Sample Read write array1030539 +Node: Extension Sample Readfile1032418 +Node: Extension Sample API Tests1033518 +Node: Extension Sample Time1034043 +Node: gawkextlib1035358 +Node: Extension summary1038171 +Node: Extension Exercises1041864 +Node: Language History1042586 +Node: V7/SVR3.11044229 +Node: SVR41046549 +Node: POSIX1047991 +Node: BTL1049377 +Node: POSIX/GNU1050111 +Node: Feature History1055827 +Node: Common Extensions1068918 +Node: Ranges and Locales1070230 +Ref: Ranges and Locales-Footnote-11074847 +Ref: Ranges and Locales-Footnote-21074874 +Ref: Ranges and Locales-Footnote-31075108 +Node: Contributors1075329 +Node: History summary1080756 +Node: Installation1082125 +Node: Gawk Distribution1083076 +Node: Getting1083560 +Node: Extracting1084384 +Node: Distribution contents1086026 +Node: Unix Installation1091743 +Node: Quick Installation1092360 +Node: Additional Configuration Options1094802 +Node: Configuration Philosophy1096540 +Node: Non-Unix Installation1098891 +Node: PC Installation1099349 +Node: PC Binary Installation1100660 +Node: PC Compiling1102508 +Ref: PC Compiling-Footnote-11105507 +Node: PC Testing1105612 +Node: PC Using1106788 +Node: Cygwin1110940 +Node: MSYS1111749 +Node: VMS Installation1112247 +Node: VMS Compilation1113043 +Ref: VMS Compilation-Footnote-11114265 +Node: VMS Dynamic Extensions1114323 +Node: VMS Installation Details1115696 +Node: VMS Running1117948 +Node: VMS GNV1120782 +Node: VMS Old Gawk1121505 +Node: Bugs1121975 +Node: Other Versions1125979 +Node: Installation summary1132203 +Node: Notes1133259 +Node: Compatibility Mode1134124 +Node: Additions1134906 +Node: Accessing The Source1135831 +Node: Adding Code1137267 +Node: New Ports1143439 +Node: Derived Files1147920 +Ref: Derived Files-Footnote-11153395 +Ref: Derived Files-Footnote-21153429 +Ref: Derived Files-Footnote-31154025 +Node: Future Extensions1154139 +Node: Implementation Limitations1154745 +Node: Extension Design1155993 +Node: Old Extension Problems1157147 +Ref: Old Extension Problems-Footnote-11158664 +Node: Extension New Mechanism Goals1158721 +Ref: Extension New Mechanism Goals-Footnote-11162081 +Node: Extension Other Design Decisions1162270 +Node: Extension Future Growth1164376 +Node: Old Extension Mechanism1165212 +Node: Notes summary1166974 +Node: Basic Concepts1168160 +Node: Basic High Level1168841 +Ref: figure-general-flow1169113 +Ref: figure-process-flow1169712 +Ref: Basic High Level-Footnote-11172941 +Node: Basic Data Typing1173126 +Node: Glossary1176454 +Node: Copying1201606 +Node: GNU Free Documentation License1239162 +Node: Index1264298 End Tag Table |