aboutsummaryrefslogtreecommitdiffstats
path: root/doc/gawk.info
diff options
context:
space:
mode:
Diffstat (limited to 'doc/gawk.info')
-rw-r--r--doc/gawk.info497
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