aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--doc/ChangeLog1
-rw-r--r--doc/gawk.info622
-rw-r--r--doc/gawk.texi123
3 files changed, 390 insertions, 356 deletions
diff --git a/doc/ChangeLog b/doc/ChangeLog
index 325ed1f0..e2b23841 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,6 +1,7 @@
2013-04-14 Arnold D. Robbins <arnold@skeeve.com>
* gawk.texi: Add link to 'pawk' - awk for python.
+ Further cleanups.
2013-04-12 Arnold D. Robbins <arnold@skeeve.com>
diff --git a/doc/gawk.info b/doc/gawk.info
index fa533f94..43e8f129 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -15259,6 +15259,10 @@ function by adding an additional parameter named `process'.
index and value, use the indirect function call syntax (*note Indirect
Calls::) on `process', passing it the index and the value.
+ When calling `walk_array()', you would pass the name of a
+user-defined function that expects to receive and index and a value,
+and then processes the element.
+

File: gawk.info, Node: Sample Programs, Next: Internationalization, Prev: Library Functions, Up: Top
@@ -18452,8 +18456,8 @@ File: gawk.info, Node: Gawk I18N, Prev: I18N Example, Up: Internationalizatio
`gawk' itself has been internationalized using the GNU `gettext'
package. (GNU `gettext' is described in complete detail in *note (GNU
`gettext' utilities)Top:: gettext, GNU gettext tools.) As of this
-writing, the latest version of GNU `gettext' is version 0.18.1
-(ftp://ftp.gnu.org/gnu/gettext/gettext-0.18.1.tar.gz).
+writing, the latest version of GNU `gettext' is version 0.18.2.1
+(ftp://ftp.gnu.org/gnu/gettext/gettext-0.18.2.1.tar.gz).
If a translation of `gawk''s messages exists, then `gawk' produces
usage messages, warnings, and fatal errors in the local language.
@@ -18478,9 +18482,21 @@ full detail, along with the basics of TCP/IP networking. Finally,
`gawk' can "profile" an `awk' program, making it possible to tune it
for performance.
- *note Dynamic Extensions::, discusses the ability to dynamically add
-new built-in functions to `gawk'. As this feature is still immature
-and likely to change, its description is relegated to an appendix.
+ A number of advanced features require separate major nodes of their
+own:
+
+ * *note Internationalization::, discusses how to internationalize
+ your `awk' programs, so that they can speak multiple national
+ languages.
+
+ * *note Debugger::, describes `gawk''s built-in command-line
+ debugger for debugging `awk' programs.
+
+ * *note Arbitrary Precision Arithmetic::, describes how you can use
+ `gawk' to perform arbitrary-precision arithmetic.
+
+ * *note Dynamic Extensions::, discusses the ability to dynamically
+ add new built-in functions to `gawk'.
* Menu:
@@ -19304,7 +19320,7 @@ generated by the keyboard. The `INT' signal is generated by the
`Ctrl-<C>' or `Ctrl-<BREAK>' key, while the `QUIT' signal is generated
by the `Ctrl-<\>' key.
- Finally, `gawk' also accepts another option `--pretty-print'. When
+ Finally, `gawk' also accepts another option, `--pretty-print'. When
called this way, `gawk' "pretty prints" the program into `awkprof.out',
without any execution counts.
@@ -19495,10 +19511,10 @@ this:
where both `getopt.awk' and `uniq.awk' are in `$AWKPATH'. (Experienced
users of GDB or similar debuggers should note that this syntax is
-slightly different from what they are used to. With `gawk' debugger,
-the arguments for running the program are given in the command line to
-the debugger rather than as part of the `run' command at the debugger
-prompt.)
+slightly different from what they are used to. With the `gawk'
+debugger, you give the arguments for running the program in the command
+line to the debugger rather than as part of the `run' command at the
+debugger prompt.)
Instead of immediately running the program on `inputfile', as `gawk'
would ordinarily do, the debugger merely loads all the program source
@@ -20183,54 +20199,52 @@ categories, as follows:
Program::) demonstrates:
gawk> dump
- -| # BEGIN
+ -| # BEGIN
-|
- -| [ 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 :
+ -| [ 1:0xfcd340] Op_rule : [in_rule = BEGIN] [source_file = brini.awk]
+ -| [ 1:0xfcc240] Op_push_i : "~" [MALLOC|STRING|STRCUR]
+ -| [ 1:0xfcc2a0] Op_push_i : "~" [MALLOC|STRING|STRCUR]
+ -| [ 1:0xfcc280] Op_match :
+ -| [ 1:0xfcc1e0] Op_store_var : O
+ -| [ 1:0xfcc2e0] Op_push_i : "==" [MALLOC|STRING|STRCUR]
+ -| [ 1:0xfcc340] Op_push_i : "==" [MALLOC|STRING|STRCUR]
+ -| [ 1:0xfcc320] Op_equal :
+ -| [ 1:0xfcc200] Op_store_var : o
+ -| [ 1:0xfcc380] Op_push : o
+ -| [ 1:0xfcc360] Op_plus_i : 0 [MALLOC|NUMCUR|NUMBER]
+ -| [ 1:0xfcc220] Op_push_lhs : o [do_reference = true]
+ -| [ 1:0xfcc300] Op_assign_plus :
+ -| [ :0xfcc2c0] Op_pop :
+ -| [ 1:0xfcc400] Op_push : O
+ -| [ 1:0xfcc420] Op_push_i : "" [MALLOC|STRING|STRCUR]
+ -| [ :0xfcc4a0] Op_no_op :
+ -| [ 1:0xfcc480] Op_push : O
+ -| [ :0xfcc4c0] Op_concat : [expr_count = 3] [concat_flag = 0]
+ -| [ 1:0xfcc3c0] Op_store_var : x
+ -| [ 1:0xfcc440] Op_push_lhs : X [do_reference = true]
+ -| [ 1:0xfcc3a0] Op_postincrement :
+ -| [ 1:0xfcc4e0] Op_push : x
+ -| [ 1:0xfcc540] Op_push : o
+ -| [ 1:0xfcc500] Op_plus :
+ -| [ 1:0xfcc580] Op_push : o
+ -| [ 1:0xfcc560] Op_plus :
+ -| [ 1:0xfcc460] Op_leq :
+ -| [ :0xfcc5c0] Op_jmp_false : [target_jmp = 0xfcc5e0]
+ -| [ 1:0xfcc600] Op_push_i : "%c" [MALLOC|STRING|STRCUR]
+ -| [ :0xfcc660] Op_no_op :
+ -| [ 1:0xfcc520] Op_assign_concat : c
+ -| [ :0xfcc620] Op_jmp : [target_jmp = 0xfcc440]
-|
...
-|
- -| [ 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 :
+ -| [ 2:0xfcc5a0] Op_K_printf : [expr_count = 17] [redir_type = ""]
+ -| [ :0xfcc140] Op_no_op :
+ -| [ :0xfcc1c0] Op_atexit :
+ -| [ :0xfcc640] Op_stop :
+ -| [ :0xfcc180] Op_no_op :
+ -| [ :0xfcd150] Op_after_beginfile :
+ -| [ :0xfcc160] Op_no_op :
+ -| [ :0xfcc1a0] Op_after_endfile :
gawk>
`help'
@@ -30070,16 +30084,16 @@ Index
(line 39)
* debugger commands, frame: Execution Stack. (line 25)
* debugger commands, h (help): Miscellaneous Debugger Commands.
- (line 68)
+ (line 66)
* debugger commands, help: Miscellaneous Debugger Commands.
- (line 68)
+ (line 66)
* debugger commands, i (info): Debugger Info. (line 13)
* debugger commands, ignore: Breakpoint Control. (line 87)
* debugger commands, info: Debugger Info. (line 13)
* debugger commands, l (list): Miscellaneous Debugger Commands.
- (line 74)
+ (line 72)
* debugger commands, list: Miscellaneous Debugger Commands.
- (line 74)
+ (line 72)
* debugger commands, n (next): Debugger Execution Control.
(line 43)
* debugger commands, next: Debugger Execution Control.
@@ -30097,9 +30111,9 @@ Index
* debugger commands, printf: Viewing And Changing Data.
(line 54)
* debugger commands, q (quit): Miscellaneous Debugger Commands.
- (line 101)
+ (line 99)
* debugger commands, quit: Miscellaneous Debugger Commands.
- (line 101)
+ (line 99)
* debugger commands, r (run): Debugger Execution Control.
(line 62)
* debugger commands, return: Debugger Execution Control.
@@ -30121,7 +30135,7 @@ Index
* debugger commands, t (tbreak): Breakpoint Control. (line 90)
* debugger commands, tbreak: Breakpoint Control. (line 90)
* debugger commands, trace: Miscellaneous Debugger Commands.
- (line 110)
+ (line 108)
* debugger commands, u (until): Debugger Execution Control.
(line 83)
* debugger commands, undisplay: Viewing And Changing Data.
@@ -30738,7 +30752,7 @@ Index
* gsub() function, arguments of: String Functions. (line 462)
* gsub() function, escape processing: Gory Details. (line 6)
* h debugger command (alias for help): Miscellaneous Debugger Commands.
- (line 68)
+ (line 66)
* Hankerson, Darrel <1>: Contributors. (line 61)
* Hankerson, Darrel: Acknowledgments. (line 60)
* Haque, John <1>: Contributors. (line 103)
@@ -30747,7 +30761,7 @@ Index
* Hartholz, Marshall: Acknowledgments. (line 38)
* Hasegawa, Isamu: Contributors. (line 94)
* help debugger command: Miscellaneous Debugger Commands.
- (line 68)
+ (line 66)
* hexadecimal numbers: Nondecimal-numbers. (line 6)
* hexadecimal values, enabling interpretation of: Options. (line 207)
* histsort.awk program: History Sorting. (line 25)
@@ -30881,7 +30895,7 @@ Index
(line 6)
* Kwok, Conrad: Contributors. (line 35)
* l debugger command (alias for list): Miscellaneous Debugger Commands.
- (line 74)
+ (line 72)
* labels.awk program: Labels Program. (line 51)
* languages, data-driven: Basic High Level. (line 85)
* Laurie, Dirk: Changing Precision. (line 6)
@@ -30955,7 +30969,7 @@ Index
* Linux <2>: I18N Example. (line 55)
* Linux: Manual History. (line 28)
* list debugger command: Miscellaneous Debugger Commands.
- (line 74)
+ (line 72)
* loading, library: Options. (line 173)
* local variables: Variable Scope. (line 6)
* locale categories: Explaining gettext. (line 80)
@@ -31376,7 +31390,7 @@ Index
* programming, concepts: Basic Concepts. (line 6)
* pwcat program: Passwd Functions. (line 23)
* q debugger command (alias for quit): Miscellaneous Debugger Commands.
- (line 101)
+ (line 99)
* QSE Awk: Other Versions. (line 118)
* question mark (?) regexp operator <1>: GNU Regexp Operators.
(line 59)
@@ -31384,7 +31398,7 @@ Index
* question mark (?), ?: operator: Precedence. (line 92)
* QuikTrim Awk: Other Versions. (line 122)
* quit debugger command: Miscellaneous Debugger Commands.
- (line 101)
+ (line 99)
* QUIT signal (MS-Windows): Profiling. (line 206)
* quoting <1>: Comments. (line 27)
* quoting <2>: Long. (line 26)
@@ -31769,7 +31783,7 @@ Index
* toupper() function: String Functions. (line 529)
* tr utility: Translate Program. (line 6)
* trace debugger command: Miscellaneous Debugger Commands.
- (line 110)
+ (line 108)
* translate.awk program: Translate Program. (line 55)
* troubleshooting, --non-decimal-data option: Options. (line 207)
* troubleshooting, == operator: Comparison Operators.
@@ -32240,241 +32254,241 @@ Node: Passwd Functions611423
Ref: Passwd Functions-Footnote-1620398
Node: Group Functions620486
Node: Walking Arrays628570
-Node: Sample Programs630544
-Node: Running Examples631221
-Node: Clones631949
-Node: Cut Program633173
-Node: Egrep Program643018
-Ref: Egrep Program-Footnote-1650791
-Node: Id Program650901
-Node: Split Program654517
-Ref: Split Program-Footnote-1658036
-Node: Tee Program658164
-Node: Uniq Program660967
-Node: Wc Program668396
-Ref: Wc Program-Footnote-1672662
-Ref: Wc Program-Footnote-2672862
-Node: Miscellaneous Programs672954
-Node: Dupword Program674142
-Node: Alarm Program676173
-Node: Translate Program680922
-Ref: Translate Program-Footnote-1685309
-Ref: Translate Program-Footnote-2685537
-Node: Labels Program685671
-Ref: Labels Program-Footnote-1689042
-Node: Word Sorting689126
-Node: History Sorting693010
-Node: Extract Program694849
-Ref: Extract Program-Footnote-1702350
-Node: Simple Sed702478
-Node: Igawk Program705540
-Ref: Igawk Program-Footnote-1720697
-Ref: Igawk Program-Footnote-2720898
-Node: Anagram Program721036
-Node: Signature Program724104
-Node: Internationalization725204
-Node: I18N and L10N726636
-Node: Explaining gettext727322
-Ref: Explaining gettext-Footnote-1732388
-Ref: Explaining gettext-Footnote-2732572
-Node: Programmer i18n732737
-Node: Translator i18n736937
-Node: String Extraction737730
-Ref: String Extraction-Footnote-1738691
-Node: Printf Ordering738777
-Ref: Printf Ordering-Footnote-1741561
-Node: I18N Portability741625
-Ref: I18N Portability-Footnote-1744074
-Node: I18N Example744137
-Ref: I18N Example-Footnote-1746772
-Node: Gawk I18N746844
-Node: Advanced Features747461
-Node: Nondecimal Data748965
-Node: Array Sorting750548
-Node: Controlling Array Traversal751245
-Node: Array Sorting Functions759483
-Ref: Array Sorting Functions-Footnote-1763157
-Ref: Array Sorting Functions-Footnote-2763250
-Node: Two-way I/O763444
-Ref: Two-way I/O-Footnote-1768876
-Node: TCP/IP Networking768946
-Node: Profiling771790
-Node: Debugger779244
-Node: Debugging780212
-Node: Debugging Concepts780645
-Node: Debugging Terms782501
-Node: Awk Debugging785098
-Node: Sample Debugging Session785990
-Node: Debugger Invocation786510
-Node: Finding The Bug787839
-Node: List of Debugger Commands794327
-Node: Breakpoint Control795661
-Node: Debugger Execution Control799325
-Node: Viewing And Changing Data802685
-Node: Execution Stack806041
-Node: Debugger Info807508
-Node: Miscellaneous Debugger Commands811490
-Node: Readline Support816935
-Node: Limitations817766
-Node: Arbitrary Precision Arithmetic820018
-Ref: Arbitrary Precision Arithmetic-Footnote-1821660
-Node: General Arithmetic821808
-Node: Floating Point Issues823528
-Node: String Conversion Precision824409
-Ref: String Conversion Precision-Footnote-1826115
-Node: Unexpected Results826224
-Node: POSIX Floating Point Problems828377
-Ref: POSIX Floating Point Problems-Footnote-1832202
-Node: Integer Programming832240
-Node: Floating-point Programming833993
-Ref: Floating-point Programming-Footnote-1840302
-Node: Floating-point Representation840566
-Node: Floating-point Context841731
-Ref: table-ieee-formats842573
-Node: Rounding Mode843957
-Ref: table-rounding-modes844436
-Ref: Rounding Mode-Footnote-1847440
-Node: Gawk and MPFR847621
-Node: Arbitrary Precision Floats848863
-Ref: Arbitrary Precision Floats-Footnote-1851292
-Node: Setting Precision851603
-Node: Setting Rounding Mode854336
-Ref: table-gawk-rounding-modes854740
-Node: Floating-point Constants855920
-Node: Changing Precision857344
-Ref: Changing Precision-Footnote-1858744
-Node: Exact Arithmetic858918
-Node: Arbitrary Precision Integers862026
-Ref: Arbitrary Precision Integers-Footnote-1865026
-Node: Dynamic Extensions865173
-Node: Extension Intro866550
-Node: Plugin License867758
-Node: Extension Mechanism Outline868443
-Ref: load-extension868860
-Ref: load-new-function870338
-Ref: call-new-function871333
-Node: Extension API Description873341
-Node: Extension API Functions Introduction874680
-Node: General Data Types879458
-Ref: General Data Types-Footnote-1885060
-Node: Requesting Values885359
-Ref: table-value-types-returned886090
-Node: Constructor Functions887044
-Node: Registration Functions890040
-Node: Extension Functions890725
-Node: Exit Callback Functions892899
-Node: Extension Version String894142
-Node: Input Parsers894792
-Node: Output Wrappers904509
-Node: Two-way processors908925
-Node: Printing Messages911055
-Ref: Printing Messages-Footnote-1912132
-Node: Updating `ERRNO'912284
-Node: Accessing Parameters913023
-Node: Symbol Table Access914253
-Node: Symbol table by name914765
-Node: Symbol table by cookie916338
-Ref: Symbol table by cookie-Footnote-1920467
-Node: Cached values920530
-Ref: Cached values-Footnote-1923973
-Node: Array Manipulation924064
-Ref: Array Manipulation-Footnote-1925162
-Node: Array Data Types925201
-Ref: Array Data Types-Footnote-1927904
-Node: Array Functions927996
-Node: Flattening Arrays931762
-Node: Creating Arrays938601
-Node: Extension API Variables943396
-Node: Extension Versioning944032
-Node: Extension API Informational Variables945933
-Node: Extension API Boilerplate947019
-Node: Finding Extensions950850
-Node: Extension Example951397
-Node: Internal File Description952135
-Node: Internal File Ops955823
-Ref: Internal File Ops-Footnote-1967270
-Node: Using Internal File Ops967410
-Ref: Using Internal File Ops-Footnote-1969763
-Node: Extension Samples970029
-Node: Extension Sample File Functions971553
-Node: Extension Sample Fnmatch980026
-Node: Extension Sample Fork981752
-Node: Extension Sample Inplace982970
-Node: Extension Sample Ord984762
-Node: Extension Sample Readdir985541
-Node: Extension Sample Revout987045
-Node: Extension Sample Rev2way987638
-Node: Extension Sample Read write array988328
-Node: Extension Sample Readfile990211
-Node: Extension Sample API Tests990968
-Node: Extension Sample Time991493
-Node: gawkextlib992800
-Node: Language History995181
-Node: V7/SVR3.1996703
-Node: SVR4999024
-Node: POSIX1000466
-Node: BTL1001474
-Node: POSIX/GNU1002279
-Node: Common Extensions1007814
-Node: Ranges and Locales1008921
-Ref: Ranges and Locales-Footnote-11013539
-Ref: Ranges and Locales-Footnote-21013566
-Ref: Ranges and Locales-Footnote-31013826
-Node: Contributors1014047
-Node: Installation1018343
-Node: Gawk Distribution1019237
-Node: Getting1019721
-Node: Extracting1020547
-Node: Distribution contents1022239
-Node: Unix Installation1027500
-Node: Quick Installation1028117
-Node: Additional Configuration Options1030079
-Node: Configuration Philosophy1031556
-Node: Non-Unix Installation1033898
-Node: PC Installation1034356
-Node: PC Binary Installation1035655
-Node: PC Compiling1037503
-Node: PC Testing1040447
-Node: PC Using1041623
-Node: Cygwin1045808
-Node: MSYS1046808
-Node: VMS Installation1047322
-Node: VMS Compilation1047925
-Ref: VMS Compilation-Footnote-11048932
-Node: VMS Installation Details1048990
-Node: VMS Running1050625
-Node: VMS Old Gawk1052232
-Node: Bugs1052706
-Node: Other Versions1056558
-Node: Notes1062050
-Node: Compatibility Mode1062850
-Node: Additions1063633
-Node: Accessing The Source1064560
-Node: Adding Code1066163
-Node: New Ports1072205
-Node: Derived Files1076340
-Ref: Derived Files-Footnote-11081661
-Ref: Derived Files-Footnote-21081695
-Ref: Derived Files-Footnote-31082295
-Node: Future Extensions1082393
-Node: Implementation Limitations1082974
-Node: Extension Design1084226
-Node: Old Extension Problems1085375
-Ref: Old Extension Problems-Footnote-11086883
-Node: Extension New Mechanism Goals1086940
-Ref: Extension New Mechanism Goals-Footnote-11090299
-Node: Extension Other Design Decisions1090485
-Node: Extension Future Growth1092591
-Node: Old Extension Mechansim1093412
-Node: Basic Concepts1095169
-Node: Basic High Level1095850
-Ref: figure-general-flow1096121
-Ref: figure-process-flow1096720
-Ref: Basic High Level-Footnote-11099949
-Node: Basic Data Typing1100134
-Node: Glossary1103489
-Node: Copying1128967
-Node: GNU Free Documentation License1166524
-Node: Index1191661
+Node: Sample Programs630707
+Node: Running Examples631384
+Node: Clones632112
+Node: Cut Program633336
+Node: Egrep Program643181
+Ref: Egrep Program-Footnote-1650954
+Node: Id Program651064
+Node: Split Program654680
+Ref: Split Program-Footnote-1658199
+Node: Tee Program658327
+Node: Uniq Program661130
+Node: Wc Program668559
+Ref: Wc Program-Footnote-1672825
+Ref: Wc Program-Footnote-2673025
+Node: Miscellaneous Programs673117
+Node: Dupword Program674305
+Node: Alarm Program676336
+Node: Translate Program681085
+Ref: Translate Program-Footnote-1685472
+Ref: Translate Program-Footnote-2685700
+Node: Labels Program685834
+Ref: Labels Program-Footnote-1689205
+Node: Word Sorting689289
+Node: History Sorting693173
+Node: Extract Program695012
+Ref: Extract Program-Footnote-1702513
+Node: Simple Sed702641
+Node: Igawk Program705703
+Ref: Igawk Program-Footnote-1720860
+Ref: Igawk Program-Footnote-2721061
+Node: Anagram Program721199
+Node: Signature Program724267
+Node: Internationalization725367
+Node: I18N and L10N726799
+Node: Explaining gettext727485
+Ref: Explaining gettext-Footnote-1732551
+Ref: Explaining gettext-Footnote-2732735
+Node: Programmer i18n732900
+Node: Translator i18n737100
+Node: String Extraction737893
+Ref: String Extraction-Footnote-1738854
+Node: Printf Ordering738940
+Ref: Printf Ordering-Footnote-1741724
+Node: I18N Portability741788
+Ref: I18N Portability-Footnote-1744237
+Node: I18N Example744300
+Ref: I18N Example-Footnote-1746935
+Node: Gawk I18N747007
+Node: Advanced Features747628
+Node: Nondecimal Data749503
+Node: Array Sorting751086
+Node: Controlling Array Traversal751783
+Node: Array Sorting Functions760021
+Ref: Array Sorting Functions-Footnote-1763695
+Ref: Array Sorting Functions-Footnote-2763788
+Node: Two-way I/O763982
+Ref: Two-way I/O-Footnote-1769414
+Node: TCP/IP Networking769484
+Node: Profiling772328
+Node: Debugger779783
+Node: Debugging780751
+Node: Debugging Concepts781184
+Node: Debugging Terms783040
+Node: Awk Debugging785637
+Node: Sample Debugging Session786529
+Node: Debugger Invocation787049
+Node: Finding The Bug788381
+Node: List of Debugger Commands794869
+Node: Breakpoint Control796203
+Node: Debugger Execution Control799867
+Node: Viewing And Changing Data803227
+Node: Execution Stack806583
+Node: Debugger Info808050
+Node: Miscellaneous Debugger Commands812032
+Node: Readline Support817208
+Node: Limitations818039
+Node: Arbitrary Precision Arithmetic820291
+Ref: Arbitrary Precision Arithmetic-Footnote-1821933
+Node: General Arithmetic822081
+Node: Floating Point Issues823801
+Node: String Conversion Precision824682
+Ref: String Conversion Precision-Footnote-1826388
+Node: Unexpected Results826497
+Node: POSIX Floating Point Problems828650
+Ref: POSIX Floating Point Problems-Footnote-1832475
+Node: Integer Programming832513
+Node: Floating-point Programming834266
+Ref: Floating-point Programming-Footnote-1840575
+Node: Floating-point Representation840839
+Node: Floating-point Context842004
+Ref: table-ieee-formats842846
+Node: Rounding Mode844230
+Ref: table-rounding-modes844709
+Ref: Rounding Mode-Footnote-1847713
+Node: Gawk and MPFR847894
+Node: Arbitrary Precision Floats849136
+Ref: Arbitrary Precision Floats-Footnote-1851565
+Node: Setting Precision851876
+Node: Setting Rounding Mode854609
+Ref: table-gawk-rounding-modes855013
+Node: Floating-point Constants856193
+Node: Changing Precision857617
+Ref: Changing Precision-Footnote-1859017
+Node: Exact Arithmetic859191
+Node: Arbitrary Precision Integers862299
+Ref: Arbitrary Precision Integers-Footnote-1865299
+Node: Dynamic Extensions865446
+Node: Extension Intro866823
+Node: Plugin License868031
+Node: Extension Mechanism Outline868716
+Ref: load-extension869133
+Ref: load-new-function870611
+Ref: call-new-function871606
+Node: Extension API Description873614
+Node: Extension API Functions Introduction874953
+Node: General Data Types879731
+Ref: General Data Types-Footnote-1885333
+Node: Requesting Values885632
+Ref: table-value-types-returned886363
+Node: Constructor Functions887317
+Node: Registration Functions890313
+Node: Extension Functions890998
+Node: Exit Callback Functions893172
+Node: Extension Version String894415
+Node: Input Parsers895065
+Node: Output Wrappers904782
+Node: Two-way processors909198
+Node: Printing Messages911328
+Ref: Printing Messages-Footnote-1912405
+Node: Updating `ERRNO'912557
+Node: Accessing Parameters913296
+Node: Symbol Table Access914526
+Node: Symbol table by name915038
+Node: Symbol table by cookie916611
+Ref: Symbol table by cookie-Footnote-1920740
+Node: Cached values920803
+Ref: Cached values-Footnote-1924246
+Node: Array Manipulation924337
+Ref: Array Manipulation-Footnote-1925435
+Node: Array Data Types925474
+Ref: Array Data Types-Footnote-1928177
+Node: Array Functions928269
+Node: Flattening Arrays932035
+Node: Creating Arrays938874
+Node: Extension API Variables943669
+Node: Extension Versioning944305
+Node: Extension API Informational Variables946206
+Node: Extension API Boilerplate947292
+Node: Finding Extensions951123
+Node: Extension Example951670
+Node: Internal File Description952408
+Node: Internal File Ops956096
+Ref: Internal File Ops-Footnote-1967543
+Node: Using Internal File Ops967683
+Ref: Using Internal File Ops-Footnote-1970036
+Node: Extension Samples970302
+Node: Extension Sample File Functions971826
+Node: Extension Sample Fnmatch980299
+Node: Extension Sample Fork982025
+Node: Extension Sample Inplace983243
+Node: Extension Sample Ord985035
+Node: Extension Sample Readdir985814
+Node: Extension Sample Revout987318
+Node: Extension Sample Rev2way987911
+Node: Extension Sample Read write array988601
+Node: Extension Sample Readfile990484
+Node: Extension Sample API Tests991241
+Node: Extension Sample Time991766
+Node: gawkextlib993073
+Node: Language History995454
+Node: V7/SVR3.1996976
+Node: SVR4999297
+Node: POSIX1000739
+Node: BTL1001747
+Node: POSIX/GNU1002552
+Node: Common Extensions1008087
+Node: Ranges and Locales1009194
+Ref: Ranges and Locales-Footnote-11013812
+Ref: Ranges and Locales-Footnote-21013839
+Ref: Ranges and Locales-Footnote-31014099
+Node: Contributors1014320
+Node: Installation1018616
+Node: Gawk Distribution1019510
+Node: Getting1019994
+Node: Extracting1020820
+Node: Distribution contents1022512
+Node: Unix Installation1027773
+Node: Quick Installation1028390
+Node: Additional Configuration Options1030352
+Node: Configuration Philosophy1031829
+Node: Non-Unix Installation1034171
+Node: PC Installation1034629
+Node: PC Binary Installation1035928
+Node: PC Compiling1037776
+Node: PC Testing1040720
+Node: PC Using1041896
+Node: Cygwin1046081
+Node: MSYS1047081
+Node: VMS Installation1047595
+Node: VMS Compilation1048198
+Ref: VMS Compilation-Footnote-11049205
+Node: VMS Installation Details1049263
+Node: VMS Running1050898
+Node: VMS Old Gawk1052505
+Node: Bugs1052979
+Node: Other Versions1056831
+Node: Notes1062323
+Node: Compatibility Mode1063123
+Node: Additions1063906
+Node: Accessing The Source1064833
+Node: Adding Code1066436
+Node: New Ports1072478
+Node: Derived Files1076613
+Ref: Derived Files-Footnote-11081934
+Ref: Derived Files-Footnote-21081968
+Ref: Derived Files-Footnote-31082568
+Node: Future Extensions1082666
+Node: Implementation Limitations1083247
+Node: Extension Design1084499
+Node: Old Extension Problems1085648
+Ref: Old Extension Problems-Footnote-11087156
+Node: Extension New Mechanism Goals1087213
+Ref: Extension New Mechanism Goals-Footnote-11090572
+Node: Extension Other Design Decisions1090758
+Node: Extension Future Growth1092864
+Node: Old Extension Mechansim1093685
+Node: Basic Concepts1095442
+Node: Basic High Level1096123
+Ref: figure-general-flow1096394
+Ref: figure-process-flow1096993
+Ref: Basic High Level-Footnote-11100222
+Node: Basic Data Typing1100407
+Node: Glossary1103762
+Node: Copying1129240
+Node: GNU Free Documentation License1166797
+Node: Index1191934

End Tag Table
diff --git a/doc/gawk.texi b/doc/gawk.texi
index 2a5340d1..8009f122 100644
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -20486,6 +20486,10 @@ index and value, use the indirect function call syntax
(@pxref{Indirect Calls}) on @code{process}, passing it the index
and the value.
+When calling @code{walk_array()}, you would pass the name of a user-defined
+function that expects to receive and index and a value, and then processes
+the element.
+
@c ENDOFRANGE libfgdata
@c ENDOFRANGE flibgdata
@@ -24777,7 +24781,7 @@ complete detail in
@cite{GNU gettext tools}.)
@end ifnotinfo
As of this writing, the latest version of GNU @code{gettext} is
-@uref{ftp://ftp.gnu.org/gnu/gettext/gettext-0.18.1.tar.gz, @value{PVERSION} 0.18.1}.
+@uref{ftp://ftp.gnu.org/gnu/gettext/gettext-0.18.2.1.tar.gz, @value{PVERSION} 0.18.2.1}.
If a translation of @command{gawk}'s messages exists,
then @command{gawk} produces usage messages, warnings,
@@ -24818,10 +24822,28 @@ of TCP/IP networking. Finally, @command{gawk}
can @dfn{profile} an @command{awk} program, making it possible to tune
it for performance.
+A number of advanced features require separate @value{CHAPTER}s of their
+own:
+
+@itemize @bullet
+@item
+@ref{Internationalization}, discusses how to internationalize
+your @command{awk} programs, so that they can speak multiple
+national languages.
+
+@item
+@ref{Debugger}, describes @command{gawk}'s built-in command-line
+debugger for debugging @command{awk} programs.
+
+@item
+@ref{Arbitrary Precision Arithmetic}, describes how you can use
+@command{gawk} to perform arbitrary-precision arithmetic.
+
+@item
@ref{Dynamic Extensions},
discusses the ability to dynamically add new built-in functions to
-@command{gawk}. As this feature is still immature and likely to change,
-its description is relegated to an appendix.
+@command{gawk}.
+@end itemize
@menu
* Nondecimal Data:: Allowing nondecimal input data.
@@ -25023,7 +25045,6 @@ BEGIN @{
@end example
Here are the results when the program is run:
-@page
@example
$ @kbd{gawk -f compdemo.awk}
@@ -25872,7 +25893,7 @@ keyboard. The @code{INT} signal is generated by the
@kbd{@value{CTL}-@key{C}} or @kbd{@value{CTL}-@key{BREAK}} key, while the
@code{QUIT} signal is generated by the @kbd{@value{CTL}-@key{\}} key.
-Finally, @command{gawk} also accepts another option @option{--pretty-print}.
+Finally, @command{gawk} also accepts another option, @option{--pretty-print}.
When called this way, @command{gawk} ``pretty prints'' the program into
@file{awkprof.out}, without any execution counts.
@c ENDOFRANGE advgaw
@@ -26059,7 +26080,7 @@ $ @kbd{gawk -D -f getopt.awk -f join.awk -f uniq.awk inputfile}
where both @file{getopt.awk} and @file{uniq.awk} are in @env{$AWKPATH}.
(Experienced users of GDB or similar debuggers should note that
this syntax is slightly different from what they are used to.
-With @command{gawk} debugger, the arguments for running the program are given
+With the @command{gawk} debugger, you give the arguments for running the program
in the command line to the debugger rather than as part of the @code{run}
command at the debugger prompt.)
@@ -26925,54 +26946,52 @@ partial dump of Davide Brini's obfuscated code
@smallexample
gawk> @kbd{dump}
-@print{} # BEGIN
-@print{}
-@print{} [ 2:0x89faef4] Op_rule : [in_rule = BEGIN] [source_file = brini.awk]
-@print{} [ 3:0x89fa428] Op_push_i : "~" [PERM|STRING|STRCUR]
-@print{} [ 3:0x89fa464] Op_push_i : "~" [PERM|STRING|STRCUR]
-@print{} [ 3:0x89fa450] Op_match :
-@print{} [ 3:0x89fa3ec] Op_store_var : O [do_reference = FALSE]
-@print{} [ 4:0x89fa48c] Op_push_i : "==" [PERM|STRING|STRCUR]
-@print{} [ 4:0x89fa4c8] Op_push_i : "==" [PERM|STRING|STRCUR]
-@print{} [ 4:0x89fa4b4] Op_equal :
-@print{} [ 4:0x89fa400] Op_store_var : o [do_reference = FALSE]
-@print{} [ 5:0x89fa4f0] Op_push : o
-@print{} [ 5:0x89fa4dc] Op_plus_i : 0 [PERM|NUMCUR|NUMBER]
-@print{} [ 5:0x89fa414] Op_push_lhs : o [do_reference = TRUE]
-@print{} [ 5:0x89fa4a0] Op_assign_plus :
-@print{} [ :0x89fa478] Op_pop :
-@print{} [ 6:0x89fa540] Op_push : O
-@print{} [ 6:0x89fa554] Op_push_i : "" [PERM|STRING|STRCUR]
-@print{} [ :0x89fa5a4] Op_no_op :
-@print{} [ 6:0x89fa590] Op_push : O
-@print{} [ :0x89fa5b8] Op_concat : [expr_count = 3] [concat_flag = 0]
-@print{} [ 6:0x89fa518] Op_store_var : x [do_reference = FALSE]
-@print{} [ 7:0x89fa504] Op_push_loop : [target_continue = 0x89fa568] [target_break = 0x89fa680]
-@print{} [ 7:0x89fa568] Op_push_lhs : X [do_reference = TRUE]
-@print{} [ 7:0x89fa52c] Op_postincrement :
-@print{} [ 7:0x89fa5e0] Op_push : x
-@print{} [ 7:0x89fa61c] Op_push : o
-@print{} [ 7:0x89fa5f4] Op_plus :
-@print{} [ 7:0x89fa644] Op_push : o
-@print{} [ 7:0x89fa630] Op_plus :
-@print{} [ 7:0x89fa5cc] Op_leq :
-@print{} [ :0x89fa57c] Op_jmp_false : [target_jmp = 0x89fa680]
-@print{} [ 7:0x89fa694] Op_push_i : "%c" [PERM|STRING|STRCUR]
-@print{} [ :0x89fa6d0] Op_no_op :
-@print{} [ 7:0x89fa608] Op_assign_concat : c
-@print{} [ :0x89fa6a8] Op_jmp : [target_jmp = 0x89fa568]
-@print{} [ :0x89fa680] Op_pop_loop :
+@print{} # BEGIN
@print{}
-@dots{}
+@print{} [ 1:0xfcd340] Op_rule : [in_rule = BEGIN] [source_file = brini.awk]
+@print{} [ 1:0xfcc240] Op_push_i : "~" [MALLOC|STRING|STRCUR]
+@print{} [ 1:0xfcc2a0] Op_push_i : "~" [MALLOC|STRING|STRCUR]
+@print{} [ 1:0xfcc280] Op_match :
+@print{} [ 1:0xfcc1e0] Op_store_var : O
+@print{} [ 1:0xfcc2e0] Op_push_i : "==" [MALLOC|STRING|STRCUR]
+@print{} [ 1:0xfcc340] Op_push_i : "==" [MALLOC|STRING|STRCUR]
+@print{} [ 1:0xfcc320] Op_equal :
+@print{} [ 1:0xfcc200] Op_store_var : o
+@print{} [ 1:0xfcc380] Op_push : o
+@print{} [ 1:0xfcc360] Op_plus_i : 0 [MALLOC|NUMCUR|NUMBER]
+@print{} [ 1:0xfcc220] Op_push_lhs : o [do_reference = true]
+@print{} [ 1:0xfcc300] Op_assign_plus :
+@print{} [ :0xfcc2c0] Op_pop :
+@print{} [ 1:0xfcc400] Op_push : O
+@print{} [ 1:0xfcc420] Op_push_i : "" [MALLOC|STRING|STRCUR]
+@print{} [ :0xfcc4a0] Op_no_op :
+@print{} [ 1:0xfcc480] Op_push : O
+@print{} [ :0xfcc4c0] Op_concat : [expr_count = 3] [concat_flag = 0]
+@print{} [ 1:0xfcc3c0] Op_store_var : x
+@print{} [ 1:0xfcc440] Op_push_lhs : X [do_reference = true]
+@print{} [ 1:0xfcc3a0] Op_postincrement :
+@print{} [ 1:0xfcc4e0] Op_push : x
+@print{} [ 1:0xfcc540] Op_push : o
+@print{} [ 1:0xfcc500] Op_plus :
+@print{} [ 1:0xfcc580] Op_push : o
+@print{} [ 1:0xfcc560] Op_plus :
+@print{} [ 1:0xfcc460] Op_leq :
+@print{} [ :0xfcc5c0] Op_jmp_false : [target_jmp = 0xfcc5e0]
+@print{} [ 1:0xfcc600] Op_push_i : "%c" [MALLOC|STRING|STRCUR]
+@print{} [ :0xfcc660] Op_no_op :
+@print{} [ 1:0xfcc520] Op_assign_concat : c
+@print{} [ :0xfcc620] Op_jmp : [target_jmp = 0xfcc440]
+@print{}
+@dots{}
@print{}
-@print{} [ 8:0x89fa658] Op_K_printf : [expr_count = 17] [redir_type = ""]
-@print{} [ :0x89fa374] Op_no_op :
-@print{} [ :0x89fa3d8] Op_atexit :
-@print{} [ :0x89fa6bc] Op_stop :
-@print{} [ :0x89fa39c] Op_no_op :
-@print{} [ :0x89fa3b0] Op_after_beginfile :
-@print{} [ :0x89fa388] Op_no_op :
-@print{} [ :0x89fa3c4] Op_after_endfile :
+@print{} [ 2:0xfcc5a0] Op_K_printf : [expr_count = 17] [redir_type = ""]
+@print{} [ :0xfcc140] Op_no_op :
+@print{} [ :0xfcc1c0] Op_atexit :
+@print{} [ :0xfcc640] Op_stop :
+@print{} [ :0xfcc180] Op_no_op :
+@print{} [ :0xfcd150] Op_after_beginfile :
+@print{} [ :0xfcc160] Op_no_op :
+@print{} [ :0xfcc1a0] Op_after_endfile :
gawk>
@end smallexample