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 a227afd6..eeca9a77 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -22722,9 +22722,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
@@ -22796,9 +22795,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.
@@ -22903,62 +22901,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()'.
@@ -22968,11 +22934,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:
@@ -22982,7 +22947,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.
@@ -23002,9 +22967,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 ----------
@@ -23014,7 +22979,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
@@ -23033,10 +22998,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)'
@@ -23052,7 +23017,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
@@ -23070,7 +23035,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:
@@ -23088,17 +23053,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.
@@ -23109,7 +23073,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
@@ -23124,7 +23088,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
@@ -23154,7 +23118,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
@@ -23170,7 +23134,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
@@ -23339,7 +23303,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.
@@ -23393,7 +23357,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
@@ -23500,7 +23464,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
@@ -23553,7 +23517,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,
@@ -23584,7 +23548,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:
@@ -23599,10 +23563,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
@@ -23661,7 +23658,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.).
@@ -23679,7 +23676,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.
@@ -23701,7 +23698,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.
@@ -23760,7 +23757,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 */
@@ -23811,7 +23808,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)
@@ -23875,8 +23872,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
@@ -23942,7 +23939,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;'
@@ -23960,8 +23957,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.
@@ -23972,8 +23969,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;'
@@ -23997,7 +23994,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.
@@ -24017,9 +24014,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,'
@@ -24041,7 +24038,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.
@@ -24077,7 +24074,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 {
@@ -24198,8 +24196,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",
@@ -24289,9 +24286,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 */
@@ -24513,12 +24510,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")
@@ -24550,8 +24547,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.
@@ -24605,8 +24602,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:
@@ -24630,8 +24628,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
}
...
@@ -24796,7 +24793,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)
@@ -24984,7 +24981,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;
}
@@ -26889,7 +26886,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
@@ -28386,9 +28383,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
@@ -34573,138 +34570,138 @@ Ref: figure-register-new-function911987
Ref: figure-call-new-function912991
Node: Extension API Description914977
Node: Extension API Functions Introduction916427
-Node: General Data Types921293
-Ref: General Data Types-Footnote-1926986
-Node: Requesting Values927285
-Ref: table-value-types-returned928022
-Node: Memory Allocation Functions928980
-Ref: Memory Allocation Functions-Footnote-1931727
-Node: Constructor Functions931823
-Node: Registration Functions933581
-Node: Extension Functions934266
-Node: Exit Callback Functions936568
-Node: Extension Version String937816
-Node: Input Parsers938466
-Node: Output Wrappers948280
-Node: Two-way processors952796
-Node: Printing Messages955000
-Ref: Printing Messages-Footnote-1956077
-Node: Updating `ERRNO'956229
-Node: Accessing Parameters956968
-Node: Symbol Table Access958198
-Node: Symbol table by name958712
-Node: Symbol table by cookie960688
-Ref: Symbol table by cookie-Footnote-1964821
-Node: Cached values964884
-Ref: Cached values-Footnote-1968388
-Node: Array Manipulation968479
-Ref: Array Manipulation-Footnote-1969577
-Node: Array Data Types969616
-Ref: Array Data Types-Footnote-1972319
-Node: Array Functions972411
-Node: Flattening Arrays976285
-Node: Creating Arrays983137
-Node: Extension API Variables987868
-Node: Extension Versioning988504
-Node: Extension API Informational Variables990405
-Node: Extension API Boilerplate991491
-Node: Finding Extensions995295
-Node: Extension Example995855
-Node: Internal File Description996585
-Node: Internal File Ops1000676
-Ref: Internal File Ops-Footnote-11012108
-Node: Using Internal File Ops1012248
-Ref: Using Internal File Ops-Footnote-11014595
-Node: Extension Samples1014863
-Node: Extension Sample File Functions1016387
-Node: Extension Sample Fnmatch1023955
-Node: Extension Sample Fork1025437
-Node: Extension Sample Inplace1026650
-Node: Extension Sample Ord1028325
-Node: Extension Sample Readdir1029161
-Ref: table-readdir-file-types1030017
-Node: Extension Sample Revout1030816
-Node: Extension Sample Rev2way1031407
-Node: Extension Sample Read write array1032148
-Node: Extension Sample Readfile1034027
-Node: Extension Sample API Tests1035127
-Node: Extension Sample Time1035652
-Node: gawkextlib1036967
-Node: Extension summary1039780
-Node: Extension Exercises1043473
-Node: Language History1044195
-Node: V7/SVR3.11045838
-Node: SVR41048158
-Node: POSIX1049600
-Node: BTL1050986
-Node: POSIX/GNU1051720
-Node: Feature History1057496
-Node: Common Extensions1070587
-Node: Ranges and Locales1071899
-Ref: Ranges and Locales-Footnote-11076516
-Ref: Ranges and Locales-Footnote-21076543
-Ref: Ranges and Locales-Footnote-31076777
-Node: Contributors1076998
-Node: History summary1082423
-Node: Installation1083792
-Node: Gawk Distribution1084743
-Node: Getting1085227
-Node: Extracting1086051
-Node: Distribution contents1087693
-Node: Unix Installation1093463
-Node: Quick Installation1094080
-Node: Additional Configuration Options1096522
-Node: Configuration Philosophy1098260
-Node: Non-Unix Installation1100611
-Node: PC Installation1101069
-Node: PC Binary Installation1102380
-Node: PC Compiling1104228
-Ref: PC Compiling-Footnote-11107227
-Node: PC Testing1107332
-Node: PC Using1108508
-Node: Cygwin1112660
-Node: MSYS1113469
-Node: VMS Installation1113967
-Node: VMS Compilation1114763
-Ref: VMS Compilation-Footnote-11115985
-Node: VMS Dynamic Extensions1116043
-Node: VMS Installation Details1117416
-Node: VMS Running1119668
-Node: VMS GNV1122502
-Node: VMS Old Gawk1123225
-Node: Bugs1123695
-Node: Other Versions1127699
-Node: Installation summary1133923
-Node: Notes1134979
-Node: Compatibility Mode1135844
-Node: Additions1136626
-Node: Accessing The Source1137551
-Node: Adding Code1138987
-Node: New Ports1145165
-Node: Derived Files1149646
-Ref: Derived Files-Footnote-11155121
-Ref: Derived Files-Footnote-21155155
-Ref: Derived Files-Footnote-31155751
-Node: Future Extensions1155865
-Node: Implementation Limitations1156471
-Node: Extension Design1157719
-Node: Old Extension Problems1158873
-Ref: Old Extension Problems-Footnote-11160390
-Node: Extension New Mechanism Goals1160447
-Ref: Extension New Mechanism Goals-Footnote-11163807
-Node: Extension Other Design Decisions1163996
-Node: Extension Future Growth1166102
-Node: Old Extension Mechanism1166938
-Node: Notes summary1168700
-Node: Basic Concepts1169886
-Node: Basic High Level1170567
-Ref: figure-general-flow1170839
-Ref: figure-process-flow1171438
-Ref: Basic High Level-Footnote-11174667
-Node: Basic Data Typing1174852
-Node: Glossary1178180
-Node: Copying1203332
-Node: GNU Free Documentation License1240888
-Node: Index1266024
+Node: General Data Types921263
+Ref: General Data Types-Footnote-1926940
+Node: Memory Allocation Functions927239
+Ref: Memory Allocation Functions-Footnote-1930068
+Node: Constructor Functions930164
+Node: Registration Functions931898
+Node: Extension Functions932583
+Node: Exit Callback Functions934879
+Node: Extension Version String936127
+Node: Input Parsers936777
+Node: Output Wrappers946592
+Node: Two-way processors951108
+Node: Printing Messages953312
+Ref: Printing Messages-Footnote-1954389
+Node: Updating `ERRNO'954541
+Node: Requesting Values955284
+Ref: table-value-types-returned956021
+Node: Accessing Parameters956979
+Node: Symbol Table Access958209
+Node: Symbol table by name958723
+Node: Symbol table by cookie960703
+Ref: Symbol table by cookie-Footnote-1964840
+Node: Cached values964903
+Ref: Cached values-Footnote-1968407
+Node: Array Manipulation968498
+Ref: Array Manipulation-Footnote-1969596
+Node: Array Data Types969635
+Ref: Array Data Types-Footnote-1972292
+Node: Array Functions972384
+Node: Flattening Arrays976238
+Node: Creating Arrays983125
+Node: Extension API Variables987892
+Node: Extension Versioning988528
+Node: Extension API Informational Variables990429
+Node: Extension API Boilerplate991515
+Node: Finding Extensions995331
+Node: Extension Example995891
+Node: Internal File Description996663
+Node: Internal File Ops1000730
+Ref: Internal File Ops-Footnote-11012164
+Node: Using Internal File Ops1012304
+Ref: Using Internal File Ops-Footnote-11014651
+Node: Extension Samples1014919
+Node: Extension Sample File Functions1016443
+Node: Extension Sample Fnmatch1024011
+Node: Extension Sample Fork1025493
+Node: Extension Sample Inplace1026706
+Node: Extension Sample Ord1028381
+Node: Extension Sample Readdir1029217
+Ref: table-readdir-file-types1030073
+Node: Extension Sample Revout1030872
+Node: Extension Sample Rev2way1031463
+Node: Extension Sample Read write array1032204
+Node: Extension Sample Readfile1034083
+Node: Extension Sample API Tests1035183
+Node: Extension Sample Time1035708
+Node: gawkextlib1037023
+Node: Extension summary1039836
+Node: Extension Exercises1043529
+Node: Language History1044251
+Node: V7/SVR3.11045894
+Node: SVR41048214
+Node: POSIX1049656
+Node: BTL1051042
+Node: POSIX/GNU1051776
+Node: Feature History1057552
+Node: Common Extensions1070643
+Node: Ranges and Locales1071955
+Ref: Ranges and Locales-Footnote-11076572
+Ref: Ranges and Locales-Footnote-21076599
+Ref: Ranges and Locales-Footnote-31076833
+Node: Contributors1077054
+Node: History summary1082481
+Node: Installation1083850
+Node: Gawk Distribution1084801
+Node: Getting1085285
+Node: Extracting1086109
+Node: Distribution contents1087751
+Node: Unix Installation1093521
+Node: Quick Installation1094138
+Node: Additional Configuration Options1096580
+Node: Configuration Philosophy1098318
+Node: Non-Unix Installation1100669
+Node: PC Installation1101127
+Node: PC Binary Installation1102438
+Node: PC Compiling1104286
+Ref: PC Compiling-Footnote-11107285
+Node: PC Testing1107390
+Node: PC Using1108566
+Node: Cygwin1112718
+Node: MSYS1113527
+Node: VMS Installation1114025
+Node: VMS Compilation1114821
+Ref: VMS Compilation-Footnote-11116043
+Node: VMS Dynamic Extensions1116101
+Node: VMS Installation Details1117474
+Node: VMS Running1119726
+Node: VMS GNV1122560
+Node: VMS Old Gawk1123283
+Node: Bugs1123753
+Node: Other Versions1127757
+Node: Installation summary1133981
+Node: Notes1135037
+Node: Compatibility Mode1135902
+Node: Additions1136684
+Node: Accessing The Source1137609
+Node: Adding Code1139045
+Node: New Ports1145217
+Node: Derived Files1149698
+Ref: Derived Files-Footnote-11155173
+Ref: Derived Files-Footnote-21155207
+Ref: Derived Files-Footnote-31155803
+Node: Future Extensions1155917
+Node: Implementation Limitations1156523
+Node: Extension Design1157771
+Node: Old Extension Problems1158925
+Ref: Old Extension Problems-Footnote-11160442
+Node: Extension New Mechanism Goals1160499
+Ref: Extension New Mechanism Goals-Footnote-11163859
+Node: Extension Other Design Decisions1164048
+Node: Extension Future Growth1166154
+Node: Old Extension Mechanism1166990
+Node: Notes summary1168752
+Node: Basic Concepts1169938
+Node: Basic High Level1170619
+Ref: figure-general-flow1170891
+Ref: figure-process-flow1171490
+Ref: Basic High Level-Footnote-11174719
+Node: Basic Data Typing1174904
+Node: Glossary1178232
+Node: Copying1203384
+Node: GNU Free Documentation License1240940
+Node: Index1266076

End Tag Table