aboutsummaryrefslogtreecommitdiffstats
path: root/doc/gawk.info
diff options
context:
space:
mode:
Diffstat (limited to 'doc/gawk.info')
-rw-r--r--doc/gawk.info1334
1 files changed, 643 insertions, 691 deletions
diff --git a/doc/gawk.info b/doc/gawk.info
index d6f23a7d..13fdbc0a 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -473,6 +473,7 @@ texts being (a) (see below), and with the Back-Cover Texts being (b)
* Compatibility Mode:: How to disable certain `gawk'
extensions.
* Additions:: Making Additions To `gawk'.
+* Accessing The Source:: Accessing the Git repository.
* Adding Code:: Adding code to the main body of
`gawk'.
* New Ports:: Porting `gawk' to a new operating
@@ -18437,15 +18438,13 @@ Oops!
mentioned):
dgawk> p @alast
- -| alast["4"] = string ("wonderful")
- -| alast["5"] = string ("program!")
-| alast["1"] = string ("awk")
-| alast["2"] = string ("is")
-| alast["3"] = string ("a")
+ -| alast["4"] = string ("wonderful")
+ -| alast["5"] = string ("program!")
- Ignoring the ordering of the elements for now (a `dgawk' internals
-issue), it looks like we got this far OK. Let's take another step or
-two:
+ It looks like we got this far OK. Let's take another step or two:
dgawk> n
-| 70 clast = join(alast, fcount, n)
@@ -18571,7 +18570,9 @@ controlling breakpoints are:
condition is an `awk' expression that `dgawk' evaluates whenever
the breakpoint or watchpoint is reached. If the condition is true,
then `dgawk' stops execution and prompts for a command. Otherwise,
- `dgawk' continues executing the program.
+ `dgawk' continues executing the program. If the condition
+ expression is not specified, any existing condition is removed;
+ i.e., the breakpoint or watchpoint is made unconditional.
`delete' [N1 N2 ...] [N-M]
`d' [N1 N2 ...] [N-M]
@@ -18589,7 +18590,7 @@ controlling breakpoints are:
specify how to enable the breakpoint:
`del'
- Enable the breakpoint(s) tempoarily, then delete it when the
+ Enable the breakpoint(s) temporarily, then delete it when the
program stops at the breakpoint.
`once'
@@ -18948,55 +18949,52 @@ categories, as follows:
dgawk> dump
-| # BEGIN
-|
- -| [ 2:0x1d4355f0] Op_rule : [in_rule = BEGIN] [source_file = brini.awk]
- -| [ 3:0x1d435710] Op_push_i : "~" [MALLOC|PERM|STRING|STRCUR]
- -| [ 3:0x1d4357c0] Op_push_i : "~" [MALLOC|PERM|STRING|STRCUR]
- -| [ 3:0x1d435790] Op_match :
- -| [ 3:0x1d435680] Op_push_lhs : O [do_reference = FALSE]
- -| [ 3:0x1d4356b0] Op_assign :
- -| [ :0x1d4356e0] Op_pop :
- -| [ 4:0x1d4358c0] Op_push_i : "==" [MALLOC|PERM|STRING|STRCUR]
- -| [ 4:0x1d435970] Op_push_i : "==" [MALLOC|PERM|STRING|STRCUR]
- -| [ 4:0x1d435940] Op_equal :
- -| [ 4:0x1d435810] Op_push_lhs : o [do_reference = FALSE]
- -| [ 4:0x1d435860] Op_assign :
- -| [ :0x1d435890] Op_pop :
- -| [ 5:0x1d435a70] Op_push : o
- -| [ 5:0x1d435a40] Op_plus_i : 0 [MALLOC|NUMCUR|NUMBER]
- -| [ 5:0x1d4359c0] Op_push_lhs : o [do_reference = TRUE]
- -| [ 5:0x1d435910] Op_assign_plus :
- -| [ :0x1d435a10] Op_pop :
- -| [ 6:0x1d435b50] Op_push : O
- -| [ 6:0x1d435b80] Op_push_i : "" [MALLOC|PERM|STRING|STRCUR]
- -| [ :0x1d435c60] Op_no_op :
- -| [ 6:0x1d435c30] Op_push : O
- -| [ :0x1d435c90] Op_concat : [expr_count = 3]
- -| [ 6:0x1d435ad0] Op_push_lhs : x [do_reference = FALSE]
- -| [ 6:0x1d435aa0] Op_assign :
- -| [ :0x1d435b00] Op_pop :
- -| [ 7:0x1d435c00] Op_push_loop : [target_continue = 0x1d435bd0] [target_break = 0x1d435fc0]
- -| [ 7:0x1d435bd0] Op_push_lhs : X [do_reference = TRUE]
- -| [ 7:0x1d435cc0] Op_postincrement :
- -| [ 7:0x1d435d70] Op_push : x
- -| [ 7:0x1d435e00] Op_push : o
- -| [ 7:0x1d435da0] Op_plus :
- -| [ 7:0x1d435e60] Op_push : o
- -| [ 7:0x1d435e30] Op_plus :
- -| [ 7:0x1d435d20] Op_leq :
- -| [ :0x1d435cf0] Op_jmp_false : [target_jmp = 0x1d435fc0]
- -| [ 8:0x1d435f40] Op_push_i : "%c" [MALLOC|PERM|STRING|STRCUR]
- -| [ :0x1d435ff0] Op_no_op :
- -| [ 8:0x1d435dd0] Op_push_lhs : c [do_reference = FALSE]
- -| [ 8:0x1d435e90] Op_assign_concat :
- -| [ :0x1d435ec0] Op_pop :
- -| [ :0x1d435f90] Op_jmp : [target_jmp = 0x1d435bd0]
- -| [ :0x1d435fc0] Op_pop_loop :
+ -| [ 2:0x89faef4] Op_rule : [in_rule = BEGIN] [source_file = brini.awk]
+ -| [ 3:0x89fa428] Op_push_i : "~" [PERM|STRING|STRCUR]
+ -| [ 3:0x89fa464] Op_push_i : "~" [PERM|STRING|STRCUR]
+ -| [ 3:0x89fa450] Op_match :
+ -| [ 3:0x89fa3ec] Op_store_var : O [do_reference = FALSE]
+ -| [ 4:0x89fa48c] Op_push_i : "==" [PERM|STRING|STRCUR]
+ -| [ 4:0x89fa4c8] Op_push_i : "==" [PERM|STRING|STRCUR]
+ -| [ 4:0x89fa4b4] Op_equal :
+ -| [ 4:0x89fa400] Op_store_var : o [do_reference = FALSE]
+ -| [ 5:0x89fa4f0] Op_push : o
+ -| [ 5:0x89fa4dc] Op_plus_i : 0 [PERM|NUMCUR|NUMBER]
+ -| [ 5:0x89fa414] Op_push_lhs : o [do_reference = TRUE]
+ -| [ 5:0x89fa4a0] Op_assign_plus :
+ -| [ :0x89fa478] Op_pop :
+ -| [ 6:0x89fa540] Op_push : O
+ -| [ 6:0x89fa554] Op_push_i : "" [PERM|STRING|STRCUR]
+ -| [ :0x89fa5a4] Op_no_op :
+ -| [ 6:0x89fa590] Op_push : O
+ -| [ :0x89fa5b8] Op_concat : [expr_count = 3] [concat_flag = 0]
+ -| [ 6:0x89fa518] Op_store_var : x [do_reference = FALSE]
+ -| [ 7:0x89fa504] Op_push_loop : [target_continue = 0x89fa568] [target_break = 0x89fa680]
+ -| [ 7:0x89fa568] Op_push_lhs : X [do_reference = TRUE]
+ -| [ 7:0x89fa52c] Op_postincrement :
+ -| [ 7:0x89fa5e0] Op_push : x
+ -| [ 7:0x89fa61c] Op_push : o
+ -| [ 7:0x89fa5f4] Op_plus :
+ -| [ 7:0x89fa644] Op_push : o
+ -| [ 7:0x89fa630] Op_plus :
+ -| [ 7:0x89fa5cc] Op_leq :
+ -| [ :0x89fa57c] Op_jmp_false : [target_jmp = 0x89fa680]
+ -| [ 7:0x89fa694] Op_push_i : "%c" [PERM|STRING|STRCUR]
+ -| [ :0x89fa6d0] Op_no_op :
+ -| [ 7:0x89fa608] Op_assign_concat : c
+ -| [ :0x89fa6a8] Op_jmp : [target_jmp = 0x89fa568]
+ -| [ :0x89fa680] Op_pop_loop :
-|
-| ...
-|
- -| [ 9:0x1d435f10] Op_K_printf : [expr_count = 17] [redir_type = Op_illegal]
- -| [ :0x1d435180] Op_no_op :
- -| [ :0x1d435240] Op_exit : [exit_value = 0]
+ -| [ 8:0x89fa658] Op_K_printf : [expr_count = 17] [redir_type = ""]
+ -| [ :0x89fa374] Op_no_op :
+ -| [ :0x89fa3d8] Op_atexit :
+ -| [ :0x89fa6bc] Op_stop :
+ -| [ :0x89fa39c] Op_no_op :
+ -| [ :0x89fa3b0] Op_after_beginfile :
+ -| [ :0x89fa388] Op_no_op :
+ -| [ :0x89fa3c4] Op_after_endfile :
dgawk>
`help'
@@ -20577,12 +20575,11 @@ considered authoritative if it conflicts with this Info file.
The people maintaining the non-Unix ports of `gawk' are as follows:
-MS-Windows using MINGW Eli Zaretskii, <eliz@gnu.org>.
- Scott Deifik, <scottd.mail@sbcglobal.net>.
-OS/2 Andreas Buening, <andreas.buening@nexgo.de>
-Tandem (POSIX-compliant) Matthew Woehlke, <mw_triad@users.sourceforge.net>
-VMS Pat Rankin, <rankin@pactechdata.com>.
-z/OS (OS/390) Dave Pitts, <pitts@cozx.com>.
+MS-Windows using MINGW Eli Zaretskii, <eliz@gnu.org>.
+ Scott Deifik, <scottd.mail@sbcglobal.net>.
+OS/2 Andreas Buening, <andreas.buening@nexgo.de>.
+VMS Pat Rankin, <rankin@pactechdata.com>.
+z/OS (OS/390) Dave Pitts, <dpitts@cozx.com>.
If your bug is also reproducible under Unix, please send a copy of
your report to the <bug-gawk@gnu.org> email list as well.
@@ -20781,21 +20778,57 @@ as well as any considerations you should bear in mind.
* Menu:
+* Accessing The Source:: Accessing the Git repository.
* Adding Code:: Adding code to the main body of
`gawk'.
* New Ports:: Porting `gawk' to a new operating
system.

-File: gawk.info, Node: Adding Code, Next: New Ports, Up: Additions
+File: gawk.info, Node: Accessing The Source, Next: Adding Code, Up: Additions
+
+C.2.1 Accessing The `gawk' Git Repository
+-----------------------------------------
+
+As `gawk' is Free Software, the source code is always available *note
+Gawk Distribution::, describes how to get and build the formal,
+released versions of `gawk'.
+
+ However, if you want to modify `gawk' and contribute back your
+changes, you will probably wish to work with the development version.
+To do so, you will need to access the `gawk' source code repository.
+The code is maintained using the Git distributed version control system
+(http://git-scm.com/). You will need to install it if your system
+doesn't have it. Once you have done so, use the command:
+
+ git clone git://git.savannah.gnu.org/gawk.git
+
+This will clone the `gawk' repository. If you are behind a firewall
+that will not allow you to use the Git native protocol, you can still
+access the repository using:
+
+ git clone http://git.savannah.gnu.org/r/gawk.git
+
+ Once you have made changes, you can use `git diff' to produce a
+patch, and send that to the `gawk' maintainer; see *note Bugs:: for how
+to do that.
+
+ Finally, if you cannot install Git (e.g., if it hasn't been ported
+yet to your operating system), you can use the Git-CVS gateway to check
+out a copy using CVS, as follows:
+
+ cvs -d:pserver:anonymous@pserver.git.sv.gnu.org:/gawk.git co -d gawk master
+
+
+File: gawk.info, Node: Adding Code, Next: New Ports, Prev: Accessing The Source, Up: Additions
-C.2.1 Adding New Features
+C.2.2 Adding New Features
-------------------------
You are free to add any new features you like to `gawk'. However, if
you want your changes to be incorporated into the `gawk' distribution,
there are several steps that you need to take in order to make it
-possible for me to include your changes:
+possible to include your changes:
1. Before building the new feature into `gawk' itself, consider
writing it as an extension module (*note Dynamic Extensions::).
@@ -20812,10 +20845,8 @@ possible for me to include your changes:
document describes how GNU software should be written. If you
haven't read it, please do so, preferably _before_ starting to
modify `gawk'. (The `GNU Coding Standards' are available from the
- GNU Project's `ftp' site, at
- `ftp://ftp.gnu.org/gnu/GNUinfo/standards.text'. An HTML version,
- suitable for reading with a WWW browser, is available at
- `http://www.gnu.org/prep/standards_toc.html'. Texinfo, Info, and
+ GNU Project's web site
+ (http://www.gnu.org/prep/standards_toc.html). Texinfo, Info, and
DVI versions are also available.)
4. Use the `gawk' coding style. The C code for `gawk' follows the
@@ -20859,19 +20890,12 @@ possible for me to include your changes:
character constant `'\0'' where appropriate, instead of `1'
and `0'.
- * Use the `ISALPHA', `ISDIGIT', etc. macros, instead of the
- traditional lowercase versions; these macros are better
- behaved for non-ASCII character sets.
-
* Provide one-line descriptive comments for each function.
- * Do not use `#elif'. Many older Unix C compilers cannot handle
- it.
-
- * Do not use the `alloca' function for allocating memory off
+ * Do not use the `alloca()' function for allocating memory off
the stack. Its use causes more portability trouble than is
worth the minor benefit of not having to free the storage.
- Instead, use `malloc' and `free'.
+ Instead, use `malloc()' and `free()'.
NOTE: If I have to reformat your code to follow the coding
style used in `gawk', I may not bother to integrate your
@@ -20883,7 +20907,7 @@ possible for me to include your changes:
effect, or assign the copyright in your changes to the FSF. Both
of these actions are easy to do and _many_ people have done so
already. If you have questions, please contact me (*note Bugs::),
- or <gnu@gnu.org>.
+ or <assign@gnu.org>.
6. Update the documentation. Along with your new code, please supply
new sections and/or chapters for this Info file. If at all
@@ -20897,13 +20921,11 @@ possible for me to include your changes:
You will also have to sign paperwork for your documentation
changes.
- 7. Submit changes as context diffs or unified diffs. Use `diff -c -r
- -N' or `diff -u -r -N' to compare the original `gawk' source tree
- with your version. (I find context diffs to be more readable but
- unified diffs are more compact.) I recommend using the GNU
- version of `diff'. Send the output produced by either run of
- `diff' to me when you submit your changes. (*Note Bugs::, for the
- electronic mail information.)
+ 7. Submit changes as unified diffs. Use `diff -u -r -N' to compare
+ the original `gawk' source tree with your version. I recommend
+ using the GNU version of `diff'. Send the output produced by
+ either run of `diff' to me when you submit your changes. (*Note
+ Bugs::, for the electronic mail information.)
Using this format makes it easy for me to apply your changes to the
master version of the `gawk' source code (using `patch'). If I
@@ -20922,7 +20944,7 @@ probably will not.

File: gawk.info, Node: New Ports, Prev: Adding Code, Up: Additions
-C.2.2 Porting `gawk' to a New Operating System
+C.2.3 Porting `gawk' to a New Operating System
----------------------------------------------
If you want to port `gawk' to a new operating system, there are several
@@ -20943,13 +20965,13 @@ steps:
you comply with the GPL (*note Copying::).
3. A number of the files that come with `gawk' are maintained by other
- people at the Free Software Foundation. Thus, you should not
- change them unless it is for a very good reason; i.e., changes are
- not out of the question, but changes to these files are
- scrutinized extra carefully. The files are `getopt.h',
- `getopt.c', `getopt1.c', `regex.h', `regex.c', `regcomp.c',
- `regex_internal.c', `regex_internal.h', `regexec.c', `dfa.h',
- `dfa.c', `install-sh', and `mkinstalldirs'.
+ people. Thus, you should not change them unless it is for a very
+ good reason; i.e., changes are not out of the question, but
+ changes to these files are scrutinized extra carefully. The files
+ are `dfa.c', `dfa.h', `getopt1.c', `getopt.c', `getopt.h',
+ `install-sh', `mkinstalldirs', `regcomp.c', `regex.c',
+ `regexec.c', `regexex.c', `regex.h', `regex_internal.c', and
+ `regex_internal.h'.
4. Be willing to continue to maintain the port. Non-Unix operating
systems are supported by volunteers who maintain the code needed
@@ -21011,23 +21033,24 @@ C.3 Adding New Built-in Functions to `gawk'
Warning! Warning!
The Robot
- Beginning with `gawk' 3.1, it is possible to add new built-in
-functions to `gawk' using dynamically loaded libraries. This facility
-is available on systems (such as GNU/Linux) that support the `dlopen'
-and `dlsym' functions. This minor node describes how to write and use
-dynamically loaded extensions for `gawk'. Experience with programming
-in C or C++ is necessary when reading this minor node.
+ It is possible to add new built-in functions to `gawk' using
+dynamically loaded libraries. This facility is available on systems
+(such as GNU/Linux) that support the C `dlopen()' and `dlsym()'
+functions. This minor node describes how to write and use dynamically
+loaded extensions for `gawk'. Experience with programming in C or C++
+is necessary when reading this minor node.
*Caution:* The facilities described in this minor node are very much
subject to change in a future `gawk' release. Be aware that you may
-have to re-do everything, perhaps from scratch, at some future time.
+have to re-do everything, at some future time.
*Caution:* If you have written your own dynamic extensions, be sure
to recompile them for each new `gawk' release. There is no guarantee
of binary compatibility between different releases, nor will there ever
be such a guarantee.
- NOTE: When `--sandbox' is specified, extensions are disabled.
+ NOTE: When `--sandbox' is specified, extensions are disabled
+ (*note Options::.
* Menu:
@@ -21072,6 +21095,11 @@ when writing extensions. The next minor node shows how they are used:
may end up calling an internal `gawk' function. It also
guarantees that the string is zero-terminated.
+`void force_wstring(NODE *n)'
+ Similarly, this macro guarantees that a `NODE''s wide-string value
+ is current. It may end up calling an internal `gawk' function.
+ It also guarantees that the wide string is zero-terminated.
+
`size_t get_curfunc_arg_count(void)'
This function returns the actual number of parameters passed to
the current function. Inside the code of an extension this can be
@@ -21079,11 +21107,9 @@ when writing extensions. The next minor node shows how they are used:
`get_actual_argument'. If this value is greater than `nargs', the
function was called incorrectly from the `awk' program.
- *Caution:* This function is new as of `gawk' 3.1.4.
-
`nargs'
Inside an extension function, this is the maximum number of
- expected parameters, as set by the `make_builtin' function.
+ expected parameters, as set by the `make_builtin()' function.
`n->stptr'
`n->stlen'
@@ -21093,9 +21119,15 @@ when writing extensions. The next minor node shows how they are used:
`n->stptr[n->stlen]', assign `'\0'' to it, call the routine, and
then restore the value.
+`n->wstptr'
+`n->wstlen'
+ The data and length of a `NODE''s wide-string value, respectively.
+ Use `force_wstring()' to make sure these values are current.
+
`n->type'
- The type of the `NODE'. This is a C `enum'. Values should be
- either `Node_var' or `Node_var_array' for function parameters.
+ The type of the `NODE'. This is a C `enum'. Values should be one
+ of `Node_var', `Node_var_new', or `Node_var_array' for function
+ parameters.
`n->vname'
The "variable name" of a node. This is not of much use inside
@@ -21132,7 +21164,7 @@ when writing extensions. The next minor node shows how they are used:
with `make_string' or `make_number'. Understanding of `gawk'
memory management is helpful.
-`void make_builtin(char *name, NODE *(*func)(NODE *), int count)'
+`void make_builtin(const char *name, NODE *(*func)(NODE *), int count)'
Register a C function pointed to by `func' as new built-in
function `name'. `name' is a regular C string. `count' is the
maximum number of arguments that the function takes. The function
@@ -21159,17 +21191,11 @@ when writing extensions. The next minor node shows how they are used:
If it wasn't, the return value is `NULL'. It is a fatal error if
`optional' is `TRUE' but the argument was not provided.
- *Caution:* This function is new as of `gawk' 3.1.4.
-
`get_scalar_argument(i, opt)'
- This is a convenience macro that calls `get_actual_argument'.
-
- *Caution:* This macro is new as of `gawk' 3.1.4.
+ This is a convenience macro that calls `get_actual_argument()'.
`get_array_argument(i, opt)'
- This is a convenience macro that calls `get_actual_argument'.
-
- *Caution:* This macro is new as of `gawk' 3.1.4.
+ This is a convenience macro that calls `get_actual_argument()'.
`void update_ERRNO(void)'
This function is called from within a C extension function to set
@@ -21182,8 +21208,6 @@ when writing extensions. The next minor node shows how they are used:
of the C `errno' variable provided as the argument. It is
provided as a convenience.
- *Caution:* This function is new as of `gawk' 3.1.5.
-
`void register_deferred_variable(const char *name, NODE *(*load_func)(void))'
This function is called to register a function to be called when a
reference to an undefined variable with the given name is
@@ -21191,31 +21215,29 @@ when writing extensions. The next minor node shows how they are used:
variable exists already, so, unless the calling code is running at
program startup, it should first check whether a variable of the
given name already exists. The argument function must return a
- pointer to a NODE containing the newly created variable. This
+ pointer to a `NODE' containing the newly created variable. This
function is used to implement the builtin `ENVIRON' and `PROCINFO'
variables, so you can refer to them for examples.
- *Caution:* This function is new as of `gawk' 3.1.5.
-
`void register_open_hook(void *(*open_func)(IOBUF *))'
This function is called to register a function to be called
whenever a new data file is opened, leading to the creation of an
- `IOBUF' structure in `iop_alloc'. After creating the new `IOBUF',
- `iop_alloc' will call (in reverse order of registration, so the
- last function registered is called first) each open hook until one
- returns non-NULL. If any hook returns a non-NULL value, that
- value is assigned to the `IOBUF''s `opaque' field (which will
- presumably point to a structure containing additional state
- associated with the input processing), and no further open hooks
- are called.
+ `IOBUF' structure in `iop_alloc()'. After creating the new
+ `IOBUF', `iop_alloc()' will call (in reverse order of
+ registration, so the last function registered is called first)
+ each open hook until one returns non-`NULL'. If any hook returns
+ a non-`NULL' value, that value is assigned to the `IOBUF''s
+ `opaque' field (which will presumably point to a structure
+ containing additional state associated with the input processing),
+ and no further open hooks are called.
The function called will most likely want to set the `IOBUF'
- `get_record' method to indicate that future input records should
+ `get_record()' method to indicate that future input records should
be retrieved by calling that method instead of using the standard
`gawk' input processing.
And the function will also probably want to set the `IOBUF'
- `close_func' method to be called when the file is closed to clean
+ `close_func()' method to be called when the file is closed to clean
up any state associated with the input.
Finally, hook functions should be prepared to receive an `IOBUF'
@@ -21228,57 +21250,11 @@ when writing extensions. The next minor node shows how they are used:
implement the XML parser shared library extension. For more info,
please look in `awk.h' and in `io.c'.
- *Caution:* This function is new as of `gawk' 3.1.5.
-
An argument that is supposed to be an array needs to be handled with
some extra code, in case the array being passed in is actually from a
function parameter.
- In versions of `gawk' up to and including 3.1.2, the following
-boilerplate code shows how to do this:
-
- NODE *the_arg;
-
- the_arg = get_argument(tree, 2); /* assume need 3rd arg, 0-based */
-
- /* if a parameter, get it off the stack */
- if (the_arg->type == Node_param_list)
- the_arg = stack_ptr[the_arg->param_cnt];
-
- /* parameter referenced an array, get it */
- if (the_arg->type == Node_array_ref)
- the_arg = the_arg->orig_array;
-
- /* check type */
- if (the_arg->type != Node_var && the_arg->type != Node_var_array)
- fatal("newfunc: third argument is not an array");
-
- /* force it to be an array, if necessary, clear it */
- the_arg->type = Node_var_array;
- assoc_clear(the_arg);
-
- For versions 3.1.3 and later, the internals changed. In particular,
-the interface was actually _simplified_ drastically. The following
-boilerplate code now suffices:
-
- NODE *the_arg;
-
- the_arg = get_argument(tree, 2); /* assume need 3rd arg, 0-based */
-
- /* force it to be an array: */
- the_arg = get_array(the_arg);
-
- /* if necessary, clear it: */
- assoc_clear(the_arg);
-
- In version 3.1.4, the internals improved again, and became even
-simpler:
-
- NODE *the_arg;
-
- the_arg = get_array_argument(tree, 2, FALSE); /* assume need 3rd arg, 0-based */
-
- As of version 4.0, the internals changed again:
+ The following boilerplate code shows how to do this:
NODE *the_arg;
@@ -21307,11 +21283,11 @@ the symbol exists in the global scope. Something like this is enough:

File: gawk.info, Node: Sample Library, Prev: Plugin License, Up: Dynamic Extensions
-C.3.3 Directory and File Operation Built-ins
---------------------------------------------
+C.3.3 Example: Directory and File Operation Built-ins
+-----------------------------------------------------
-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'
+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 external extension library.
@@ -21329,7 +21305,7 @@ C.3.3.1 Using `chdir' and `stat'
This minor node shows how to use the new functions at the `awk' level
once they've been integrated into the running `gawk' interpreter.
-Using `chdir' is very straightforward. It takes one argument, the new
+Using `chdir()' is very straightforward. It takes one argument, the new
directory to change to:
...
@@ -21345,9 +21321,9 @@ directory to change to:
The return value is negative if the `chdir' failed, and `ERRNO'
(*note Built-in Variables::) is set to a string indicating the error.
- Using `stat' is a bit more complicated. The C `stat' function fills
-in a structure that has a fair amount of information. The right way to
-model this in `awk' is to fill in an associative array with the
+ Using `stat()' is a bit more complicated. The C `stat()' function
+fills in a structure that has a fair amount of information. The right
+way to model this in `awk' is to fill in an associative array with the
appropriate information:
file = "/home/arnold/.profile"
@@ -21360,11 +21336,11 @@ appropriate information:
}
printf("size of %s is %d bytes\n", file, fdata["size"])
- The `stat' function always clears the data array, even if the `stat'
-fails. It fills in the following elements:
+ The `stat()' function always clears the data array, even if the
+`stat()' fails. It fills in the following elements:
`"name"'
- The name of the file that was `stat''ed.
+ The name of the file that was `stat()''ed.
`"dev"'
`"ino"'
@@ -21447,8 +21423,8 @@ Elements::):

File: gawk.info, Node: Internal File Ops, Next: Using Internal File Ops, Prev: Internal File Description, Up: Sample Library
-C.3.3.2 C Code for `chdir' and `stat'
-.....................................
+C.3.3.2 C Code for `chdir()' and `stat()'
+.........................................
Here is the C code for these extensions. They were written for
GNU/Linux. The code needs some more work for complete portability to
@@ -21733,32 +21709,6 @@ Integrating the DBUG library
Integrating Fred Fish's DBUG library would be helpful during
development, but it's a lot of work to do.
- Following is a list of probable improvements that will make `gawk'
-perform better:
-
- *FIXME: NEXT ED:* remove this item. awka and mawk do these
- respectively.
-
-Compilation of `awk' programs
- `gawk' uses a Bison (YACC-like) parser to convert the script given
- it into a syntax tree; the syntax tree is then executed by a
- simple recursive evaluator. This method incurs a lot of overhead,
- since the recursive evaluator performs many procedure calls to do
- even the simplest things.
-
- It should be possible for `gawk' to convert the script's parse tree
- into a C program which the user would then compile, using the
- normal C compiler and a special `gawk' library to provide all the
- needed functions (regexps, fields, associative arrays, type
- coercion, and so on).
-
- An easier possibility might be for an intermediate phase of `gawk'
- to convert the parse tree into a linear byte code form like the
- one used in GNU Emacs Lisp. The recursive evaluator would then be
- replaced by a straight line byte code interpreter that would be
- intermediate in speed between running a compiled program and doing
- what `gawk' does now.
-
Finally, the programs in the test suite could use documenting in
this Info file.
@@ -24486,18 +24436,18 @@ Index
* arguments, command-line, invoking awk: Command Line. (line 6)
* arguments, in function calls: Function Calls. (line 16)
* arguments, processing: Getopt Function. (line 6)
-* arguments, retrieving: Internals. (line 111)
+* arguments, retrieving: Internals. (line 120)
* arithmetic operators: Arithmetic Ops. (line 6)
* arrays: Arrays. (line 6)
* arrays, as parameters to functions: Pass By Value/Reference.
(line 47)
* arrays, associative: Array Intro. (line 50)
-* arrays, associative, clearing: Internals. (line 66)
+* arrays, associative, clearing: Internals. (line 75)
* arrays, associative, library functions and: Library Names. (line 57)
* arrays, deleting entire contents: Delete. (line 39)
* arrays, elements, assigning: Assigning Elements. (line 6)
* arrays, elements, deleting: Delete. (line 6)
-* arrays, elements, installing: Internals. (line 70)
+* arrays, elements, installing: Internals. (line 79)
* arrays, elements, order of: Scanning an Array. (line 48)
* arrays, elements, referencing: Reference to Elements.
(line 6)
@@ -24531,8 +24481,8 @@ Index
* assignment operators, evaluation order: Assignment Ops. (line 111)
* assignment operators, lvalues/rvalues: Assignment Ops. (line 32)
* assignments as filenames: Ignoring Assigns. (line 6)
-* assoc_clear internal function: Internals. (line 66)
-* assoc_lookup internal function: Internals. (line 70)
+* assoc_clear() internal function: Internals. (line 75)
+* assoc_lookup() internal function: Internals. (line 79)
* associative arrays: Array Intro. (line 50)
* asterisk (*), * operator, as multiplication operator: Precedence.
(line 55)
@@ -24778,7 +24728,7 @@ Index
* characters, transliterating: Translate Program. (line 6)
* characters, values of as numbers: Ordinal Functions. (line 6)
* Chassell, Robert J.: Acknowledgments. (line 32)
-* chdir function, implementing in gawk: Sample Library. (line 6)
+* chdir() function, implementing in gawk: Sample Library. (line 6)
* chem utility: Glossary. (line 145)
* chr() user-defined function: Ordinal Functions. (line 16)
* clear debugger command: Breakpoint Control. (line 33)
@@ -24797,7 +24747,7 @@ Index
* close() function, two-way pipes and: Two-way I/O. (line 77)
* Close, Diane <1>: Contributors. (line 21)
* Close, Diane: Manual History. (line 39)
-* close_func input method: Internals. (line 162)
+* close_func() input method: Internals. (line 161)
* collating elements: Character Lists. (line 70)
* collating symbols: Character Lists. (line 77)
* Colombo, Antonio: Acknowledgments. (line 59)
@@ -24890,7 +24840,7 @@ Index
* cut utility: Cut Program. (line 6)
* cut.awk program: Cut Program. (line 45)
* Cygwin build of gawk: Cygwin. (line 6)
-* d debugger command (alias for break): Breakpoint Control. (line 58)
+* d debugger command (alias for break): Breakpoint Control. (line 60)
* d.c., See dark corner: Conventions. (line 37)
* dark corner <1>: Glossary. (line 187)
* dark corner <2>: Truth Values. (line 24)
@@ -24965,16 +24915,16 @@ Index
* debugger commands, condition: Breakpoint Control. (line 51)
* debugger commands, continue: Dgawk Execution Control.
(line 33)
-* debugger commands, d (delete): Breakpoint Control. (line 58)
-* debugger commands, delete: Breakpoint Control. (line 58)
-* debugger commands, disable: Breakpoint Control. (line 63)
+* debugger commands, d (delete): Breakpoint Control. (line 60)
+* debugger commands, delete: Breakpoint Control. (line 60)
+* debugger commands, disable: Breakpoint Control. (line 65)
* debugger commands, display: Viewing And Changing Data.
(line 8)
* debugger commands, down: Dgawk Stack. (line 21)
* debugger commands, dump: Miscellaneous Dgawk Commands.
(line 9)
-* debugger commands, e (enable): Breakpoint Control. (line 67)
-* debugger commands, enable: Breakpoint Control. (line 67)
+* debugger commands, e (enable): Breakpoint Control. (line 69)
+* debugger commands, enable: Breakpoint Control. (line 69)
* debugger commands, end: Dgawk Execution Control.
(line 10)
* debugger commands, eval: Viewing And Changing Data.
@@ -24984,16 +24934,16 @@ Index
(line 39)
* debugger commands, frame: Dgawk Stack. (line 25)
* debugger commands, h (help): Miscellaneous Dgawk Commands.
- (line 71)
+ (line 68)
* debugger commands, help: Miscellaneous Dgawk Commands.
- (line 71)
+ (line 68)
* debugger commands, i (info): Dgawk Info. (line 12)
-* debugger commands, ignore: Breakpoint Control. (line 81)
+* debugger commands, ignore: Breakpoint Control. (line 83)
* debugger commands, info: Dgawk Info. (line 12)
* debugger commands, l (list): Miscellaneous Dgawk Commands.
- (line 77)
+ (line 74)
* debugger commands, list: Miscellaneous Dgawk Commands.
- (line 77)
+ (line 74)
* debugger commands, n (next): Dgawk Execution Control.
(line 43)
* debugger commands, next: Dgawk Execution Control.
@@ -25011,9 +24961,9 @@ Index
* debugger commands, printf: Viewing And Changing Data.
(line 54)
* debugger commands, q (quit): Miscellaneous Dgawk Commands.
- (line 104)
+ (line 101)
* debugger commands, quit: Miscellaneous Dgawk Commands.
- (line 104)
+ (line 101)
* debugger commands, r (run): Dgawk Execution Control.
(line 62)
* debugger commands, return: Dgawk Execution Control.
@@ -25032,10 +24982,10 @@ Index
(line 68)
* debugger commands, stepi: Dgawk Execution Control.
(line 76)
-* debugger commands, t (tbreak): Breakpoint Control. (line 84)
-* debugger commands, tbreak: Breakpoint Control. (line 84)
+* debugger commands, t (tbreak): Breakpoint Control. (line 86)
+* debugger commands, tbreak: Breakpoint Control. (line 86)
* debugger commands, trace: Miscellaneous Dgawk Commands.
- (line 113)
+ (line 110)
* debugger commands, u (until): Dgawk Execution Control.
(line 83)
* debugger commands, undisplay: Viewing And Changing Data.
@@ -25056,7 +25006,7 @@ Index
* Deifik, Scott <1>: Bugs. (line 70)
* Deifik, Scott <2>: Contributors. (line 53)
* Deifik, Scott: Acknowledgments. (line 59)
-* delete debugger command: Breakpoint Control. (line 58)
+* delete debugger command: Breakpoint Control. (line 60)
* delete statement: Delete. (line 6)
* deleting elements in arrays: Delete. (line 6)
* deleting entire arrays: Delete. (line 39)
@@ -25131,7 +25081,7 @@ Index
(line 6)
* directories, searching <1>: Igawk Program. (line 364)
* directories, searching: AWKPATH Variable. (line 6)
-* disable debugger command: Breakpoint Control. (line 63)
+* disable debugger command: Breakpoint Control. (line 65)
* display debugger command: Viewing And Changing Data.
(line 8)
* division: Arithmetic Ops. (line 44)
@@ -25154,9 +25104,9 @@ Index
* DuBois, John: Acknowledgments. (line 59)
* dump debugger command: Miscellaneous Dgawk Commands.
(line 9)
-* dupnode internal function: Internals. (line 87)
+* dupnode() internal function: Internals. (line 96)
* dupword.awk program: Dupword Program. (line 31)
-* e debugger command (alias for break): Breakpoint Control. (line 67)
+* e debugger command (alias for break): Breakpoint Control. (line 69)
* EBCDIC: Ordinal Functions. (line 45)
* egrep utility <1>: Egrep Program. (line 6)
* egrep utility: Character Lists. (line 23)
@@ -25172,7 +25122,7 @@ Index
* empty pattern: Empty. (line 6)
* empty strings, See null strings: Regexp Field Splitting.
(line 43)
-* enable debugger command: Breakpoint Control. (line 67)
+* enable debugger command: Breakpoint Control. (line 69)
* end debugger command: Dgawk Execution Control.
(line 10)
* END pattern: BEGIN/END. (line 6)
@@ -25195,7 +25145,7 @@ Index
* endgrent() user-defined function: Group Functions. (line 219)
* endpwent() function (C library): Passwd Functions. (line 211)
* endpwent() user-defined function: Passwd Functions. (line 214)
-* ENVIRON variable <1>: Internals. (line 149)
+* ENVIRON variable <1>: Internals. (line 150)
* ENVIRON variable: Auto-set. (line 60)
* environment variables: Auto-set. (line 60)
* epoch, definition of: Glossary. (line 229)
@@ -25204,7 +25154,7 @@ Index
* equals sign (=), == operator: Comparison Operators.
(line 11)
* EREs (Extended Regular Expressions): Character Lists. (line 23)
-* ERRNO variable <1>: Internals. (line 136)
+* ERRNO variable <1>: Internals. (line 139)
* ERRNO variable <2>: Auto-set. (line 72)
* ERRNO variable: Getline. (line 19)
* error handling: Special FD. (line 15)
@@ -25379,8 +25329,9 @@ Index
* FNR variable, changing: Auto-set. (line 200)
* for statement: For Statement. (line 6)
* for statement, in arrays: Scanning an Array. (line 20)
-* force_number internal function: Internals. (line 27)
-* force_string internal function: Internals. (line 32)
+* force_number() internal function: Internals. (line 27)
+* force_string() internal function: Internals. (line 32)
+* force_wstring() internal function: Internals. (line 37)
* format specifiers, mixing regular with positional specifiers: Printf Ordering.
(line 57)
* format specifiers, printf statement: Control Letters. (line 6)
@@ -25455,7 +25406,7 @@ Index
* functions, names of <1>: Definition Syntax. (line 20)
* functions, names of: Arrays. (line 18)
* functions, recursive: Definition Syntax. (line 73)
-* functions, return values, setting: Internals. (line 136)
+* functions, return values, setting: Internals. (line 139)
* functions, string-translation: I18N Functions. (line 6)
* functions, undefined: Pass By Value/Reference.
(line 71)
@@ -25475,7 +25426,7 @@ Index
* gawk, break statement in: Break Statement. (line 51)
* gawk, built-in variables and: Built-in Variables. (line 14)
* gawk, character classes and: Character Lists. (line 91)
-* gawk, coding style in: Adding Code. (line 32)
+* gawk, coding style in: Adding Code. (line 30)
* gawk, command-line options: GNU Regexp Operators.
(line 70)
* gawk, comparison operators and: Comparison Operators.
@@ -25511,7 +25462,6 @@ Index
* gawk, internals: Internals. (line 6)
* gawk, internationalization and, See internationalization: Internationalization.
(line 13)
-* gawk, interpreter, adding code to <1>: Future Extensions. (line 90)
* gawk, interpreter, adding code to: Using Internal File Ops.
(line 6)
* gawk, interval expressions and: Regexp Operators. (line 138)
@@ -25545,12 +25495,12 @@ Index
* gensub() function (gawk): Using Constant Regexps.
(line 43)
* gensub() function (gawk), escape processing: Gory Details. (line 6)
-* get_actual_argument internal function: Internals. (line 116)
-* get_argument internal function: Internals. (line 111)
-* get_array_argument internal macro: Internals. (line 131)
-* get_curfunc_arg_count internal function: Internals. (line 37)
-* get_record input method: Internals. (line 162)
-* get_scalar_argument internal macro: Internals. (line 126)
+* get_actual_argument() internal function: Internals. (line 125)
+* get_argument() internal function: Internals. (line 120)
+* get_array_argument() internal macro: Internals. (line 136)
+* get_curfunc_arg_count() internal function: Internals. (line 42)
+* get_record() input method: Internals. (line 161)
+* get_scalar_argument() internal macro: Internals. (line 133)
* getaddrinfo() function (C library): TCP/IP Networking. (line 37)
* getgrent() function (C library): Group Functions. (line 6)
* getgrent() user-defined function: Group Functions. (line 6)
@@ -25614,7 +25564,7 @@ Index
* gsub() function, arguments of: String Functions. (line 434)
* gsub() function, escape processing: Gory Details. (line 6)
* h debugger command (alias for help): Miscellaneous Dgawk Commands.
- (line 71)
+ (line 68)
* Hankerson, Darrel <1>: Contributors. (line 58)
* Hankerson, Darrel: Acknowledgments. (line 59)
* Haque, John <1>: Contributors. (line 98)
@@ -25623,7 +25573,7 @@ Index
* Hartholz, Marshall: Acknowledgments. (line 37)
* Hasegawa, Isamu: Contributors. (line 89)
* help debugger command: Miscellaneous Dgawk Commands.
- (line 71)
+ (line 68)
* hexadecimal numbers: Nondecimal-numbers. (line 6)
* hexadecimal values, enabling interpretation of: Options. (line 166)
* histsort.awk program: History Sorting. (line 25)
@@ -25643,7 +25593,7 @@ Index
* if statement: Regexp Usage. (line 19)
* if statement, actions, changing: Ranges. (line 25)
* igawk.sh program: Igawk Program. (line 124)
-* ignore debugger command: Breakpoint Control. (line 81)
+* ignore debugger command: Breakpoint Control. (line 83)
* IGNORECASE variable <1>: User-modified. (line 82)
* IGNORECASE variable: Case-sensitivity. (line 26)
* IGNORECASE variable, array sorting and: Array Sorting. (line 69)
@@ -25717,8 +25667,8 @@ Index
* interpreted programs: Basic High Level. (line 15)
* interval expressions: Regexp Operators. (line 115)
* inventory-shipped file: Sample Data Files. (line 32)
-* IOBUF internal structure: Internals. (line 162)
-* iop_alloc internal function: Internals. (line 162)
+* IOBUF internal structure: Internals. (line 161)
+* iop_alloc() internal function: Internals. (line 161)
* ISO: Glossary. (line 356)
* ISO 8859-1: Glossary. (line 137)
* ISO Latin-1: Glossary. (line 137)
@@ -25745,7 +25695,7 @@ Index
* Knights, jedi: Undocumented. (line 6)
* Kwok, Conrad: Contributors. (line 37)
* l debugger command (alias for list): Miscellaneous Dgawk Commands.
- (line 77)
+ (line 74)
* labels.awk program: Labels Program. (line 51)
* languages, data-driven: Basic High Level. (line 85)
* LC_ALL locale category: Explaining gettext. (line 120)
@@ -25820,7 +25770,7 @@ Index
* Linux <2>: I18N Example. (line 55)
* Linux: Manual History. (line 28)
* list debugger command: Miscellaneous Dgawk Commands.
- (line 77)
+ (line 74)
* local variables: Variable Scope. (line 6)
* locale categories: Explaining gettext. (line 80)
* locale decimal point character: Options. (line 222)
@@ -25845,9 +25795,9 @@ Index
* lvalues/rvalues: Assignment Ops. (line 32)
* mailing labels, printing: Labels Program. (line 6)
* mailing list, GNITS: Acknowledgments. (line 51)
-* make_builtin internal function: Internals. (line 97)
-* make_number internal function: Internals. (line 82)
-* make_string internal function: Internals. (line 77)
+* make_builtin() internal function: Internals. (line 106)
+* make_number() internal function: Internals. (line 91)
+* make_string() internal function: Internals. (line 86)
* mark parity: Ordinal Functions. (line 45)
* marked string extraction (internationalization): String Extraction.
(line 6)
@@ -25862,7 +25812,7 @@ Index
* matching, null strings: Gory Details. (line 96)
* mawk program: Other Versions. (line 34)
* McPhee, Patrick: Contributors. (line 95)
-* memory, releasing: Internals. (line 92)
+* memory, releasing: Internals. (line 101)
* message object files: Explaining gettext. (line 41)
* message object files, converting from portable object files: I18N Example.
(line 62)
@@ -25884,7 +25834,7 @@ Index
* namespace issues <1>: Library Names. (line 6)
* namespace issues: Arrays. (line 18)
* namespace issues, functions: Definition Syntax. (line 20)
-* nargs internal variable: Internals. (line 46)
+* nargs internal variable: Internals. (line 49)
* nawk utility: Names. (line 17)
* negative zero: Unexpected Results. (line 28)
* NetBSD: Glossary. (line 580)
@@ -25924,7 +25874,7 @@ Index
(line 49)
* noassign.awk program: Ignoring Assigns. (line 15)
* NODE internal type: Internals. (line 23)
-* nodes, duplicating: Internals. (line 87)
+* nodes, duplicating: Internals. (line 96)
* not Boolean-logic operator: Boolean Ops. (line 6)
* NR variable <1>: Auto-set. (line 118)
* NR variable: Records. (line 6)
@@ -25945,7 +25895,7 @@ Index
* number sign (#), #! (executable scripts), portability issues with: Executable Scripts.
(line 6)
* number sign (#), commenting: Comments. (line 6)
-* numbers: Internals. (line 82)
+* numbers: Internals. (line 91)
* numbers, as array subscripts: Numeric Array Subscripts.
(line 6)
* numbers, as values of characters: Ordinal Functions. (line 6)
@@ -26048,7 +25998,7 @@ Index
(line 36)
* P1003.1 POSIX standard: Glossary. (line 427)
* P1003.2 POSIX standard: Glossary. (line 427)
-* parameters, number of: Internals. (line 46)
+* parameters, number of: Internals. (line 49)
* parentheses (): Regexp Operators. (line 78)
* parentheses (), pgawk program: Profiling. (line 141)
* password file: Passwd Functions. (line 16)
@@ -26080,7 +26030,7 @@ Index
(line 6)
* pipes, input: Getline/Pipe. (line 6)
* pipes, output: Redirection. (line 57)
-* Pitts, Dave <1>: Bugs. (line 74)
+* Pitts, Dave <1>: Bugs. (line 73)
* Pitts, Dave: Acknowledgments. (line 59)
* plus sign (+): Regexp Operators. (line 101)
* plus sign (+), + operator: Precedence. (line 52)
@@ -26212,7 +26162,7 @@ Index
* PROCINFO array <1>: Group Functions. (line 6)
* PROCINFO array <2>: Passwd Functions. (line 6)
* PROCINFO array: Auto-set. (line 123)
-* PROCINFO variable: Internals. (line 149)
+* PROCINFO variable: Internals. (line 150)
* profiling awk programs: Profiling. (line 6)
* profiling awk programs, dynamically: Profiling. (line 174)
* profiling gawk, See pgawk program: Profiling. (line 6)
@@ -26240,7 +26190,7 @@ Index
* programming, concepts: Basic Concepts. (line 6)
* pwcat program: Passwd Functions. (line 23)
* q debugger command (alias for quit): Miscellaneous Dgawk Commands.
- (line 104)
+ (line 101)
* QSE Awk: Other Versions. (line 128)
* question mark (?) <1>: GNU Regexp Operators.
(line 59)
@@ -26248,7 +26198,7 @@ Index
* question mark (?), ?: operator: Precedence. (line 92)
* QuikTrim Awk: Other Versions. (line 121)
* quit debugger command: Miscellaneous Dgawk Commands.
- (line 104)
+ (line 101)
* QUIT signal (MS-Windows): Profiling. (line 207)
* quoting <1>: Comments. (line 27)
* quoting <2>: Long. (line 26)
@@ -26266,7 +26216,7 @@ Index
* random numbers, seed of: Numeric Functions. (line 63)
* range expressions: Character Lists. (line 6)
* range patterns: Ranges. (line 6)
-* Rankin, Pat <1>: Bugs. (line 73)
+* Rankin, Pat <1>: Bugs. (line 72)
* Rankin, Pat <2>: Contributors. (line 35)
* Rankin, Pat <3>: Assignment Ops. (line 100)
* Rankin, Pat: Acknowledgments. (line 59)
@@ -26300,8 +26250,8 @@ Index
* regexp constants, slashes vs. quotes: Computed Regexps. (line 28)
* regexp constants, vs. string constants: Computed Regexps. (line 38)
* regexp, See regular expressions: Regexp. (line 6)
-* register_deferred_variable internal function: Internals. (line 149)
-* register_open_hook internal function: Internals. (line 162)
+* register_deferred_variable() internal function: Internals. (line 150)
+* register_open_hook() internal function: Internals. (line 161)
* regular expressions: Regexp. (line 6)
* regular expressions as field separators: Field Separators. (line 50)
* regular expressions, anchors in: Regexp Operators. (line 22)
@@ -26500,7 +26450,7 @@ Index
* standard input <1>: Special FD. (line 6)
* standard input: Read Terminal. (line 6)
* standard output: Special FD. (line 6)
-* stat function, implementing in gawk: Sample Library. (line 6)
+* stat() function, implementing in gawk: Sample Library. (line 6)
* statements, compound, control statements and: Statements. (line 10)
* statements, control, in actions: Statements. (line 6)
* statements, multiple: Statements/Lines. (line 90)
@@ -26508,8 +26458,8 @@ Index
(line 68)
* stepi debugger command: Dgawk Execution Control.
(line 76)
-* stlen internal variable: Internals. (line 50)
-* stptr internal variable: Internals. (line 50)
+* stlen internal variable: Internals. (line 53)
+* stptr internal variable: Internals. (line 53)
* stream editors <1>: Simple Sed. (line 6)
* stream editors: Field Splitting Summary.
(line 47)
@@ -26520,7 +26470,7 @@ Index
(line 6)
* string operators: Concatenation. (line 9)
* string-matching operators: Regexp Usage. (line 19)
-* strings: Internals. (line 77)
+* strings: Internals. (line 86)
* strings, converting: Conversion. (line 6)
* strings, converting, numbers to <1>: Bitwise Functions. (line 107)
* strings, converting, numbers to: User-modified. (line 28)
@@ -26560,8 +26510,8 @@ Index
(line 148)
* system() function: I/O Functions. (line 64)
* systime() function (gawk): Time Functions. (line 64)
-* t debugger command (alias for tbreak): Breakpoint Control. (line 84)
-* tbreak debugger command: Breakpoint Control. (line 84)
+* t debugger command (alias for tbreak): Breakpoint Control. (line 86)
+* tbreak debugger command: Breakpoint Control. (line 86)
* Tcl: Library Names. (line 57)
* TCP/IP: TCP/IP Networking. (line 6)
* TCP/IP, support for: Special Network. (line 6)
@@ -26569,7 +26519,7 @@ Index
* tee.awk program: Tee Program. (line 26)
* terminating records: Records. (line 112)
* testbits.awk program: Bitwise Functions. (line 68)
-* Texinfo <1>: Adding Code. (line 99)
+* Texinfo <1>: Adding Code. (line 90)
* Texinfo <2>: Distribution contents.
(line 68)
* Texinfo <3>: Extract Program. (line 12)
@@ -26608,7 +26558,7 @@ Index
* toupper() function: String Functions. (line 501)
* tr utility: Translate Program. (line 6)
* trace debugger command: Miscellaneous Dgawk Commands.
- (line 113)
+ (line 110)
* translate.awk program: Translate Program. (line 55)
* troubleshooting, --non-decimal-data option: Options. (line 169)
* troubleshooting, == operator: Comparison Operators.
@@ -26650,7 +26600,7 @@ Index
* trunc-mod operation: Arithmetic Ops. (line 66)
* truth values: Truth Values. (line 6)
* type conversion: Conversion. (line 21)
-* type internal variable: Internals. (line 58)
+* type internal variable: Internals. (line 66)
* u debugger command (alias for until): Dgawk Execution Control.
(line 83)
* undefined functions: Pass By Value/Reference.
@@ -26675,15 +26625,15 @@ Index
(line 72)
* Unix, awk scripts and: Executable Scripts. (line 6)
* UNIXROOT variable, on OS/2 systems: PC Using. (line 17)
-* unref internal function: Internals. (line 92)
+* unref() internal function: Internals. (line 101)
* unsigned integers: Basic Data Typing. (line 28)
* until debugger command: Dgawk Execution Control.
(line 83)
* unwatch debugger command: Viewing And Changing Data.
(line 84)
* up debugger command: Dgawk Stack. (line 33)
-* update_ERRNO internal function: Internals. (line 136)
-* update_ERRNO_saved internal function: Internals. (line 141)
+* update_ERRNO() internal function: Internals. (line 139)
+* update_ERRNO_saved() internal function: Internals. (line 144)
* user database, reading: Passwd Functions. (line 6)
* user-defined, functions: User-defined. (line 6)
* user-defined, functions, counts: Profiling. (line 132)
@@ -26735,7 +26685,7 @@ Index
* vertical bar (|), || operator <1>: Precedence. (line 89)
* vertical bar (|), || operator: Boolean Ops. (line 57)
* Vinschen, Corinna: Acknowledgments. (line 59)
-* vname internal variable: Internals. (line 62)
+* vname internal variable: Internals. (line 71)
* w debugger command (alias for watch): Viewing And Changing Data.
(line 67)
* w utility: Constant Size. (line 22)
@@ -26756,7 +26706,6 @@ Index
* whitespace, functions, calling: Calling Built-in. (line 10)
* whitespace, newlines as: Options. (line 205)
* Williams, Kent: Contributors. (line 37)
-* Woehlke, Matthew <1>: Bugs. (line 72)
* Woehlke, Matthew: Contributors. (line 75)
* Woods, John: Contributors. (line 28)
* word boundaries, matching: GNU Regexp Operators.
@@ -26769,8 +26718,10 @@ Index
* words, counting: Wc Program. (line 6)
* words, duplicate, searching for: Dupword Program. (line 6)
* words, usage counts, generating: Word Sorting. (line 6)
+* wstlen internal variable: Internals. (line 61)
+* wstptr internal variable: Internals. (line 61)
* xgettext utility: String Extraction. (line 13)
-* XML: Internals. (line 162)
+* XML: Internals. (line 161)
* XOR bitwise operation: Bitwise Functions. (line 6)
* xor() function (gawk): Bitwise Functions. (line 54)
* Zaretskii, Eli <1>: Bugs. (line 70)
@@ -26806,404 +26757,405 @@ Index

Tag Table:
Node: Top1340
-Node: Foreword29910
-Node: Preface34230
-Ref: Preface-Footnote-137182
-Ref: Preface-Footnote-237288
-Node: History37520
-Node: Names39752
-Ref: Names-Footnote-141229
-Node: This Manual41301
-Ref: This Manual-Footnote-146199
-Node: Conventions46299
-Node: Manual History48358
-Ref: Manual History-Footnote-151536
-Ref: Manual History-Footnote-251577
-Node: How To Contribute51651
-Node: Acknowledgments52795
-Node: Getting Started57064
-Node: Running gawk59443
-Node: One-shot60629
-Node: Read Terminal61854
-Ref: Read Terminal-Footnote-163504
-Ref: Read Terminal-Footnote-263778
-Node: Long63949
-Node: Executable Scripts65325
-Ref: Executable Scripts-Footnote-167186
-Ref: Executable Scripts-Footnote-267288
-Node: Comments67739
-Node: Quoting70107
-Node: DOS Quoting74724
-Node: Sample Data Files75399
-Node: Very Simple78431
-Node: Two Rules83028
-Node: More Complex85175
-Ref: More Complex-Footnote-188105
-Node: Statements/Lines88185
-Ref: Statements/Lines-Footnote-192543
-Node: Other Features92808
-Node: When93677
-Node: Invoking Gawk95820
-Node: Command Line97205
-Node: Options97988
-Ref: Options-Footnote-1111334
-Node: Other Arguments111359
-Node: Naming Standard Input114022
-Node: Environment Variables114986
-Node: AWKPATH Variable115430
-Ref: AWKPATH Variable-Footnote-1118167
-Node: Other Environment Variables118427
-Node: Exit Status120775
-Node: Include Files121450
-Node: Obsolete124841
-Node: Undocumented125527
-Node: Regexp125768
-Node: Regexp Usage127220
-Node: Escape Sequences129246
-Node: Regexp Operators134989
-Ref: Regexp Operators-Footnote-1142161
-Ref: Regexp Operators-Footnote-2142308
-Node: Character Lists142406
-Ref: table-char-classes144181
-Node: GNU Regexp Operators146806
-Node: Case-sensitivity150519
-Ref: Case-sensitivity-Footnote-1153474
-Ref: Case-sensitivity-Footnote-2153709
-Node: Leftmost Longest153817
-Node: Computed Regexps155018
-Node: Locales158435
-Node: Reading Files161977
-Node: Records163918
-Ref: Records-Footnote-1172590
-Node: Fields172627
-Ref: Fields-Footnote-1175659
-Node: Nonconstant Fields175745
-Node: Changing Fields177947
-Node: Field Separators183232
-Node: Default Field Splitting185861
-Node: Regexp Field Splitting186978
-Node: Single Character Fields190328
-Node: Command Line Field Separator191379
-Node: Field Splitting Summary194818
-Ref: Field Splitting Summary-Footnote-1198004
-Node: Constant Size198105
-Node: Splitting By Content202667
-Ref: Splitting By Content-Footnote-1206393
-Node: Multiple Line206433
-Ref: Multiple Line-Footnote-1212280
-Node: Getline212459
-Node: Plain Getline214687
-Node: Getline/Variable216776
-Node: Getline/File217917
-Node: Getline/Variable/File219239
-Ref: Getline/Variable/File-Footnote-1220838
-Node: Getline/Pipe220925
-Node: Getline/Variable/Pipe223473
-Node: Getline/Coprocess224580
-Node: Getline/Variable/Coprocess225823
-Node: Getline Notes226537
-Node: Getline Summary228479
-Ref: table-getline-variants228763
-Node: Command line directories229668
-Node: Printing230293
-Node: Print231924
-Node: Print Examples233261
-Node: Output Separators236045
-Node: OFMT237804
-Node: Printf239162
-Node: Basic Printf240068
-Node: Control Letters241605
-Node: Format Modifiers245417
-Node: Printf Examples251428
-Node: Redirection254143
-Node: Special Files261121
-Node: Special FD261654
-Ref: Special FD-Footnote-1265229
-Node: Special Network265303
-Node: Special Caveats266158
-Node: Close Files And Pipes266952
-Ref: Close Files And Pipes-Footnote-1273896
-Ref: Close Files And Pipes-Footnote-2274044
-Node: Expressions274194
-Node: Values275263
-Node: Constants275939
-Node: Scalar Constants276619
-Ref: Scalar Constants-Footnote-1277478
-Node: Nondecimal-numbers277660
-Node: Regexp Constants280719
-Node: Using Constant Regexps281194
-Node: Variables284199
-Node: Using Variables284854
-Node: Assignment Options286581
-Node: Conversion288462
-Ref: table-locale-affects293836
-Ref: Conversion-Footnote-1294460
-Node: All Operators294569
-Node: Arithmetic Ops295199
-Node: Concatenation297698
-Ref: Concatenation-Footnote-1300491
-Node: Assignment Ops300610
-Ref: table-assign-ops305598
-Node: Increment Ops306999
-Node: Truth Values and Conditions310477
-Node: Truth Values311560
-Node: Typing and Comparison312608
-Node: Variable Typing313397
-Ref: Variable Typing-Footnote-1317294
-Node: Comparison Operators317416
-Ref: table-relational-ops317826
-Node: POSIX String Comparison321375
-Ref: POSIX String Comparison-Footnote-1322332
-Node: Boolean Ops322470
-Ref: Boolean Ops-Footnote-1326548
-Node: Conditional Exp326639
-Node: Function Calls328371
-Node: Precedence331930
-Node: Patterns and Actions335583
-Node: Pattern Overview336637
-Node: Regexp Patterns338303
-Node: Expression Patterns338846
-Node: Ranges342420
-Node: BEGIN/END345386
-Node: Using BEGIN/END346136
-Ref: Using BEGIN/END-Footnote-1348867
-Node: I/O And BEGIN/END348981
-Node: Empty351250
-Node: BEGINFILE/ENDFILE351584
-Node: Using Shell Variables354409
-Node: Action Overview356688
-Node: Statements359045
-Node: If Statement360904
-Node: While Statement362403
-Node: Do Statement364447
-Node: For Statement365603
-Node: Switch Statement368755
-Node: Break Statement370852
-Node: Continue Statement372828
-Node: Next Statement374529
-Node: Nextfile Statement376911
-Node: Exit Statement379429
-Node: Built-in Variables381760
-Node: User-modified382855
-Ref: User-modified-Footnote-1390856
-Node: Auto-set390918
-Ref: Auto-set-Footnote-1399901
-Node: ARGC and ARGV400106
-Node: Arrays403865
-Node: Array Basics405436
-Node: Array Intro406147
-Node: Reference to Elements410465
-Node: Assigning Elements412735
-Node: Array Example413226
-Node: Scanning an Array414958
-Node: Delete417235
-Ref: Delete-Footnote-1419633
-Node: Numeric Array Subscripts419690
-Node: Uninitialized Subscripts421873
-Node: Multi-dimensional423501
-Node: Multi-scanning426592
-Node: Array Sorting428176
-Ref: Array Sorting-Footnote-1431374
-Node: Arrays of Arrays431568
-Node: Functions435730
-Node: Built-in436552
-Node: Calling Built-in437566
-Node: Numeric Functions439542
-Ref: Numeric Functions-Footnote-1443251
-Ref: Numeric Functions-Footnote-2443587
-Ref: Numeric Functions-Footnote-3443635
-Node: String Functions443904
-Ref: String Functions-Footnote-1465703
-Ref: String Functions-Footnote-2465832
-Ref: String Functions-Footnote-3466080
-Node: Gory Details466167
-Ref: table-sub-escapes467824
-Ref: table-posix-sub469138
-Ref: table-gensub-escapes470038
-Node: I/O Functions471209
-Ref: I/O Functions-Footnote-1477906
-Node: Time Functions478053
-Ref: Time Functions-Footnote-1488920
-Ref: Time Functions-Footnote-2488988
-Ref: Time Functions-Footnote-3489146
-Ref: Time Functions-Footnote-4489257
-Ref: Time Functions-Footnote-5489369
-Ref: Time Functions-Footnote-6489596
-Node: Bitwise Functions489862
-Ref: table-bitwise-ops490420
-Ref: Bitwise Functions-Footnote-1494580
-Node: I18N Functions494764
-Node: User-defined496394
-Node: Definition Syntax497198
-Ref: Definition Syntax-Footnote-1501828
-Node: Function Example501897
-Node: Function Caveats504491
-Node: Calling A Function504912
-Node: Variable Scope506001
-Node: Pass By Value/Reference507929
-Node: Return Statement511369
-Node: Dynamic Typing514311
-Node: Indirect Calls515048
-Node: Internationalization524733
-Node: I18N and L10N526161
-Node: Explaining gettext526847
-Ref: Explaining gettext-Footnote-1531909
-Ref: Explaining gettext-Footnote-2532092
-Node: Programmer i18n532257
-Node: Translator i18n536520
-Node: String Extraction537313
-Ref: String Extraction-Footnote-1538274
-Node: Printf Ordering538360
-Ref: Printf Ordering-Footnote-1541144
-Node: I18N Portability541208
-Ref: I18N Portability-Footnote-1543657
-Node: I18N Example543720
-Ref: I18N Example-Footnote-1546355
-Node: Gawk I18N546427
-Node: Advanced Features546996
-Node: Nondecimal Data548315
-Node: Two-way I/O549876
-Ref: Two-way I/O-Footnote-1555290
-Node: TCP/IP Networking555367
-Node: Profiling558139
-Node: Library Functions565539
-Ref: Library Functions-Footnote-1568509
-Node: Library Names568680
-Ref: Library Names-Footnote-1572151
-Ref: Library Names-Footnote-2572371
-Node: General Functions572457
-Node: Nextfile Function573520
-Node: Strtonum Function577901
-Node: Assert Function580852
-Node: Round Function584178
-Node: Cliff Random Function585719
-Node: Ordinal Functions586735
-Ref: Ordinal Functions-Footnote-1589805
-Ref: Ordinal Functions-Footnote-2590057
-Node: Join Function590273
-Ref: Join Function-Footnote-1592044
-Node: Gettimeofday Function592244
-Node: Data File Management595959
-Node: Filetrans Function596591
-Node: Rewind Function600828
-Node: File Checking602281
-Node: Empty Files603375
-Node: Ignoring Assigns605605
-Node: Getopt Function607158
-Ref: Getopt Function-Footnote-1618483
-Node: Passwd Functions618686
-Ref: Passwd Functions-Footnote-1627674
-Node: Group Functions627762
-Node: Sample Programs635842
-Node: Running Examples636507
-Node: Clones637235
-Node: Cut Program638358
-Node: Egrep Program648199
-Ref: Egrep Program-Footnote-1655970
-Node: Id Program656080
-Node: Split Program659696
-Ref: Split Program-Footnote-1663215
-Node: Tee Program663343
-Node: Uniq Program666146
-Node: Wc Program673569
-Ref: Wc Program-Footnote-1677833
-Node: Miscellaneous Programs678033
-Node: Dupword Program679153
-Node: Alarm Program681184
-Node: Translate Program685906
-Ref: Translate Program-Footnote-1690285
-Ref: Translate Program-Footnote-2690513
-Node: Labels Program690647
-Ref: Labels Program-Footnote-1694018
-Node: Word Sorting694102
-Node: History Sorting698447
-Node: Extract Program700285
-Ref: Extract Program-Footnote-1707711
-Node: Simple Sed707839
-Node: Igawk Program710901
-Ref: Igawk Program-Footnote-1725935
-Ref: Igawk Program-Footnote-2726136
-Node: Signature Program726274
-Node: Debugger727354
-Node: Debugging728265
-Node: Debugging Concepts728579
-Node: Debugging Terms730435
-Node: Awk Debugging732980
-Node: Sample dgawk session733872
-Node: dgawk invocation734364
-Node: Finding The Bug735546
-Node: List of Debugger Commands742105
-Node: Breakpoint Control743416
-Node: Dgawk Execution Control746742
-Node: Viewing And Changing Data750093
-Node: Dgawk Stack753402
-Node: Dgawk Info754862
-Node: Miscellaneous Dgawk Commands758810
-Node: Readline Support764524
-Node: Dgawk Limitations765351
-Node: Language History767490
-Node: V7/SVR3.1768867
-Node: SVR4771162
-Node: POSIX772607
-Node: BTL774862
-Node: POSIX/GNU776266
-Node: Contributors781396
-Node: Installation785341
-Node: Gawk Distribution786235
-Node: Getting786719
-Node: Extracting787545
-Node: Distribution contents789223
-Node: Unix Installation794088
-Node: Quick Installation794705
-Node: Additional Configuration Options796595
-Node: Configuration Philosophy798072
-Node: Non-Unix Installation800414
-Node: PC Installation800872
-Node: PC Binary Installation802171
-Node: PC Compiling804019
-Node: PC Testing807425
-Node: PC Using808249
-Node: Cygwin812426
-Node: MSYS813423
-Node: VMS Installation813937
-Node: VMS Compilation814541
-Node: VMS Installation Details816118
-Node: VMS Running817748
-Node: VMS POSIX819345
-Node: VMS Old Gawk820643
-Node: Bugs821115
-Node: Other Versions825045
-Node: Notes830493
-Node: Compatibility Mode831185
-Node: Additions831968
-Node: Adding Code832718
-Node: New Ports838770
-Node: Dynamic Extensions842902
-Node: Internals844283
-Node: Plugin License854688
-Node: Sample Library855322
-Node: Internal File Description855986
-Node: Internal File Ops859681
-Ref: Internal File Ops-Footnote-1864557
-Node: Using Internal File Ops864705
-Node: Future Extensions866730
-Node: Basic Concepts870767
-Node: Basic High Level871524
-Ref: Basic High Level-Footnote-1875643
-Node: Basic Data Typing875837
-Node: Floating Point Issues880274
-Node: String Conversion Precision881357
-Ref: String Conversion Precision-Footnote-1883051
-Node: Unexpected Results883160
-Node: POSIX Floating Point Problems884986
-Ref: POSIX Floating Point Problems-Footnote-1888685
-Node: Glossary888723
-Node: Copying912358
-Node: GNU Free Documentation License949915
-Node: next-edition975059
-Node: unresolved975411
-Node: revision975911
-Node: consistency976334
-Node: Index979687
+Node: Foreword29975
+Node: Preface34295
+Ref: Preface-Footnote-137247
+Ref: Preface-Footnote-237353
+Node: History37585
+Node: Names39817
+Ref: Names-Footnote-141294
+Node: This Manual41366
+Ref: This Manual-Footnote-146264
+Node: Conventions46364
+Node: Manual History48423
+Ref: Manual History-Footnote-151601
+Ref: Manual History-Footnote-251642
+Node: How To Contribute51716
+Node: Acknowledgments52860
+Node: Getting Started57129
+Node: Running gawk59508
+Node: One-shot60694
+Node: Read Terminal61919
+Ref: Read Terminal-Footnote-163569
+Ref: Read Terminal-Footnote-263843
+Node: Long64014
+Node: Executable Scripts65390
+Ref: Executable Scripts-Footnote-167251
+Ref: Executable Scripts-Footnote-267353
+Node: Comments67804
+Node: Quoting70172
+Node: DOS Quoting74789
+Node: Sample Data Files75464
+Node: Very Simple78496
+Node: Two Rules83093
+Node: More Complex85240
+Ref: More Complex-Footnote-188170
+Node: Statements/Lines88250
+Ref: Statements/Lines-Footnote-192608
+Node: Other Features92873
+Node: When93742
+Node: Invoking Gawk95885
+Node: Command Line97270
+Node: Options98053
+Ref: Options-Footnote-1111399
+Node: Other Arguments111424
+Node: Naming Standard Input114087
+Node: Environment Variables115051
+Node: AWKPATH Variable115495
+Ref: AWKPATH Variable-Footnote-1118232
+Node: Other Environment Variables118492
+Node: Exit Status120840
+Node: Include Files121515
+Node: Obsolete124906
+Node: Undocumented125592
+Node: Regexp125833
+Node: Regexp Usage127285
+Node: Escape Sequences129311
+Node: Regexp Operators135054
+Ref: Regexp Operators-Footnote-1142226
+Ref: Regexp Operators-Footnote-2142373
+Node: Character Lists142471
+Ref: table-char-classes144246
+Node: GNU Regexp Operators146871
+Node: Case-sensitivity150584
+Ref: Case-sensitivity-Footnote-1153539
+Ref: Case-sensitivity-Footnote-2153774
+Node: Leftmost Longest153882
+Node: Computed Regexps155083
+Node: Locales158500
+Node: Reading Files162042
+Node: Records163983
+Ref: Records-Footnote-1172655
+Node: Fields172692
+Ref: Fields-Footnote-1175724
+Node: Nonconstant Fields175810
+Node: Changing Fields178012
+Node: Field Separators183297
+Node: Default Field Splitting185926
+Node: Regexp Field Splitting187043
+Node: Single Character Fields190393
+Node: Command Line Field Separator191444
+Node: Field Splitting Summary194883
+Ref: Field Splitting Summary-Footnote-1198069
+Node: Constant Size198170
+Node: Splitting By Content202732
+Ref: Splitting By Content-Footnote-1206458
+Node: Multiple Line206498
+Ref: Multiple Line-Footnote-1212345
+Node: Getline212524
+Node: Plain Getline214752
+Node: Getline/Variable216841
+Node: Getline/File217982
+Node: Getline/Variable/File219304
+Ref: Getline/Variable/File-Footnote-1220903
+Node: Getline/Pipe220990
+Node: Getline/Variable/Pipe223538
+Node: Getline/Coprocess224645
+Node: Getline/Variable/Coprocess225888
+Node: Getline Notes226602
+Node: Getline Summary228544
+Ref: table-getline-variants228828
+Node: Command line directories229733
+Node: Printing230358
+Node: Print231989
+Node: Print Examples233326
+Node: Output Separators236110
+Node: OFMT237869
+Node: Printf239227
+Node: Basic Printf240133
+Node: Control Letters241670
+Node: Format Modifiers245482
+Node: Printf Examples251493
+Node: Redirection254208
+Node: Special Files261186
+Node: Special FD261719
+Ref: Special FD-Footnote-1265294
+Node: Special Network265368
+Node: Special Caveats266223
+Node: Close Files And Pipes267017
+Ref: Close Files And Pipes-Footnote-1273961
+Ref: Close Files And Pipes-Footnote-2274109
+Node: Expressions274259
+Node: Values275328
+Node: Constants276004
+Node: Scalar Constants276684
+Ref: Scalar Constants-Footnote-1277543
+Node: Nondecimal-numbers277725
+Node: Regexp Constants280784
+Node: Using Constant Regexps281259
+Node: Variables284264
+Node: Using Variables284919
+Node: Assignment Options286646
+Node: Conversion288527
+Ref: table-locale-affects293901
+Ref: Conversion-Footnote-1294525
+Node: All Operators294634
+Node: Arithmetic Ops295264
+Node: Concatenation297763
+Ref: Concatenation-Footnote-1300556
+Node: Assignment Ops300675
+Ref: table-assign-ops305663
+Node: Increment Ops307064
+Node: Truth Values and Conditions310542
+Node: Truth Values311625
+Node: Typing and Comparison312673
+Node: Variable Typing313462
+Ref: Variable Typing-Footnote-1317359
+Node: Comparison Operators317481
+Ref: table-relational-ops317891
+Node: POSIX String Comparison321440
+Ref: POSIX String Comparison-Footnote-1322397
+Node: Boolean Ops322535
+Ref: Boolean Ops-Footnote-1326613
+Node: Conditional Exp326704
+Node: Function Calls328436
+Node: Precedence331995
+Node: Patterns and Actions335648
+Node: Pattern Overview336702
+Node: Regexp Patterns338368
+Node: Expression Patterns338911
+Node: Ranges342485
+Node: BEGIN/END345451
+Node: Using BEGIN/END346201
+Ref: Using BEGIN/END-Footnote-1348932
+Node: I/O And BEGIN/END349046
+Node: Empty351315
+Node: BEGINFILE/ENDFILE351649
+Node: Using Shell Variables354474
+Node: Action Overview356753
+Node: Statements359110
+Node: If Statement360969
+Node: While Statement362468
+Node: Do Statement364512
+Node: For Statement365668
+Node: Switch Statement368820
+Node: Break Statement370917
+Node: Continue Statement372893
+Node: Next Statement374594
+Node: Nextfile Statement376976
+Node: Exit Statement379494
+Node: Built-in Variables381825
+Node: User-modified382920
+Ref: User-modified-Footnote-1390921
+Node: Auto-set390983
+Ref: Auto-set-Footnote-1399966
+Node: ARGC and ARGV400171
+Node: Arrays403930
+Node: Array Basics405501
+Node: Array Intro406212
+Node: Reference to Elements410530
+Node: Assigning Elements412800
+Node: Array Example413291
+Node: Scanning an Array415023
+Node: Delete417300
+Ref: Delete-Footnote-1419698
+Node: Numeric Array Subscripts419755
+Node: Uninitialized Subscripts421938
+Node: Multi-dimensional423566
+Node: Multi-scanning426657
+Node: Array Sorting428241
+Ref: Array Sorting-Footnote-1431439
+Node: Arrays of Arrays431633
+Node: Functions435795
+Node: Built-in436617
+Node: Calling Built-in437631
+Node: Numeric Functions439607
+Ref: Numeric Functions-Footnote-1443316
+Ref: Numeric Functions-Footnote-2443652
+Ref: Numeric Functions-Footnote-3443700
+Node: String Functions443969
+Ref: String Functions-Footnote-1465768
+Ref: String Functions-Footnote-2465897
+Ref: String Functions-Footnote-3466145
+Node: Gory Details466232
+Ref: table-sub-escapes467889
+Ref: table-posix-sub469203
+Ref: table-gensub-escapes470103
+Node: I/O Functions471274
+Ref: I/O Functions-Footnote-1477971
+Node: Time Functions478118
+Ref: Time Functions-Footnote-1488985
+Ref: Time Functions-Footnote-2489053
+Ref: Time Functions-Footnote-3489211
+Ref: Time Functions-Footnote-4489322
+Ref: Time Functions-Footnote-5489434
+Ref: Time Functions-Footnote-6489661
+Node: Bitwise Functions489927
+Ref: table-bitwise-ops490485
+Ref: Bitwise Functions-Footnote-1494645
+Node: I18N Functions494829
+Node: User-defined496459
+Node: Definition Syntax497263
+Ref: Definition Syntax-Footnote-1501893
+Node: Function Example501962
+Node: Function Caveats504556
+Node: Calling A Function504977
+Node: Variable Scope506066
+Node: Pass By Value/Reference507994
+Node: Return Statement511434
+Node: Dynamic Typing514376
+Node: Indirect Calls515113
+Node: Internationalization524798
+Node: I18N and L10N526226
+Node: Explaining gettext526912
+Ref: Explaining gettext-Footnote-1531974
+Ref: Explaining gettext-Footnote-2532157
+Node: Programmer i18n532322
+Node: Translator i18n536585
+Node: String Extraction537378
+Ref: String Extraction-Footnote-1538339
+Node: Printf Ordering538425
+Ref: Printf Ordering-Footnote-1541209
+Node: I18N Portability541273
+Ref: I18N Portability-Footnote-1543722
+Node: I18N Example543785
+Ref: I18N Example-Footnote-1546420
+Node: Gawk I18N546492
+Node: Advanced Features547061
+Node: Nondecimal Data548380
+Node: Two-way I/O549941
+Ref: Two-way I/O-Footnote-1555355
+Node: TCP/IP Networking555432
+Node: Profiling558204
+Node: Library Functions565604
+Ref: Library Functions-Footnote-1568574
+Node: Library Names568745
+Ref: Library Names-Footnote-1572216
+Ref: Library Names-Footnote-2572436
+Node: General Functions572522
+Node: Nextfile Function573585
+Node: Strtonum Function577966
+Node: Assert Function580917
+Node: Round Function584243
+Node: Cliff Random Function585784
+Node: Ordinal Functions586800
+Ref: Ordinal Functions-Footnote-1589870
+Ref: Ordinal Functions-Footnote-2590122
+Node: Join Function590338
+Ref: Join Function-Footnote-1592109
+Node: Gettimeofday Function592309
+Node: Data File Management596024
+Node: Filetrans Function596656
+Node: Rewind Function600893
+Node: File Checking602346
+Node: Empty Files603440
+Node: Ignoring Assigns605670
+Node: Getopt Function607223
+Ref: Getopt Function-Footnote-1618548
+Node: Passwd Functions618751
+Ref: Passwd Functions-Footnote-1627739
+Node: Group Functions627827
+Node: Sample Programs635907
+Node: Running Examples636572
+Node: Clones637300
+Node: Cut Program638423
+Node: Egrep Program648264
+Ref: Egrep Program-Footnote-1656035
+Node: Id Program656145
+Node: Split Program659761
+Ref: Split Program-Footnote-1663280
+Node: Tee Program663408
+Node: Uniq Program666211
+Node: Wc Program673634
+Ref: Wc Program-Footnote-1677898
+Node: Miscellaneous Programs678098
+Node: Dupword Program679218
+Node: Alarm Program681249
+Node: Translate Program685971
+Ref: Translate Program-Footnote-1690350
+Ref: Translate Program-Footnote-2690578
+Node: Labels Program690712
+Ref: Labels Program-Footnote-1694083
+Node: Word Sorting694167
+Node: History Sorting698512
+Node: Extract Program700350
+Ref: Extract Program-Footnote-1707776
+Node: Simple Sed707904
+Node: Igawk Program710966
+Ref: Igawk Program-Footnote-1726000
+Ref: Igawk Program-Footnote-2726201
+Node: Signature Program726339
+Node: Debugger727419
+Node: Debugging728330
+Node: Debugging Concepts728644
+Node: Debugging Terms730500
+Node: Awk Debugging733045
+Node: Sample dgawk session733937
+Node: dgawk invocation734429
+Node: Finding The Bug735611
+Node: List of Debugger Commands742095
+Node: Breakpoint Control743406
+Node: Dgawk Execution Control746882
+Node: Viewing And Changing Data750233
+Node: Dgawk Stack753542
+Node: Dgawk Info755002
+Node: Miscellaneous Dgawk Commands758950
+Node: Readline Support764378
+Node: Dgawk Limitations765205
+Node: Language History767344
+Node: V7/SVR3.1768721
+Node: SVR4771016
+Node: POSIX772461
+Node: BTL774716
+Node: POSIX/GNU776120
+Node: Contributors781250
+Node: Installation785195
+Node: Gawk Distribution786089
+Node: Getting786573
+Node: Extracting787399
+Node: Distribution contents789077
+Node: Unix Installation793942
+Node: Quick Installation794559
+Node: Additional Configuration Options796449
+Node: Configuration Philosophy797926
+Node: Non-Unix Installation800268
+Node: PC Installation800726
+Node: PC Binary Installation802025
+Node: PC Compiling803873
+Node: PC Testing807279
+Node: PC Using808103
+Node: Cygwin812280
+Node: MSYS813277
+Node: VMS Installation813791
+Node: VMS Compilation814395
+Node: VMS Installation Details815972
+Node: VMS Running817602
+Node: VMS POSIX819199
+Node: VMS Old Gawk820497
+Node: Bugs820969
+Node: Other Versions824814
+Node: Notes830262
+Node: Compatibility Mode830954
+Node: Additions831737
+Node: Accessing The Source832549
+Node: Adding Code833972
+Node: New Ports839520
+Node: Dynamic Extensions843633
+Node: Internals844993
+Node: Plugin License854112
+Node: Sample Library854746
+Node: Internal File Description855432
+Node: Internal File Ops859139
+Ref: Internal File Ops-Footnote-1864023
+Node: Using Internal File Ops864171
+Node: Future Extensions866196
+Node: Basic Concepts869033
+Node: Basic High Level869790
+Ref: Basic High Level-Footnote-1873909
+Node: Basic Data Typing874103
+Node: Floating Point Issues878540
+Node: String Conversion Precision879623
+Ref: String Conversion Precision-Footnote-1881317
+Node: Unexpected Results881426
+Node: POSIX Floating Point Problems883252
+Ref: POSIX Floating Point Problems-Footnote-1886951
+Node: Glossary886989
+Node: Copying910624
+Node: GNU Free Documentation License948181
+Node: next-edition973325
+Node: unresolved973677
+Node: revision974177
+Node: consistency974600
+Node: Index977953

End Tag Table