diff options
-rw-r--r-- | doc/ChangeLog | 1 | ||||
-rw-r--r-- | doc/gawk.info | 622 | ||||
-rw-r--r-- | doc/gawk.texi | 123 |
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 |