diff options
Diffstat (limited to 'doc/gawk.info')
-rw-r--r-- | doc/gawk.info | 1183 |
1 files changed, 624 insertions, 559 deletions
diff --git a/doc/gawk.info b/doc/gawk.info index 21e8fd3b..d83370e8 100644 --- a/doc/gawk.info +++ b/doc/gawk.info @@ -246,6 +246,7 @@ entitled "GNU Free Documentation License". * Special Caveats:: Things to watch out for. * Close Files And Pipes:: Closing Input and Output Files and Pipes. +* Nonfatal:: Enabling Nonfatal Output. * Output Summary:: Output summary. * Output Exercises:: Exercises. * Values:: Constants, Variables, and Regular @@ -6122,6 +6123,7 @@ function. `gawk' allows access to inherited file descriptors. * Close Files And Pipes:: Closing Input and Output Files and Pipes. +* Nonfatal:: Enabling Nonfatal Output. * Output Summary:: Output summary. * Output Exercises:: Exercises. @@ -7035,7 +7037,7 @@ that `gawk' provides: behavior. -File: gawk.info, Node: Close Files And Pipes, Next: Output Summary, Prev: Special Files, Up: Printing +File: gawk.info, Node: Close Files And Pipes, Next: Nonfatal, Prev: Special Files, Up: Printing 5.9 Closing Input and Output Redirections ========================================= @@ -7204,9 +7206,61 @@ call. See the system manual pages for information on how to decode this value. -File: gawk.info, Node: Output Summary, Next: Output Exercises, Prev: Close Files And Pipes, Up: Printing +File: gawk.info, Node: Nonfatal, Next: Output Summary, Prev: Close Files And Pipes, Up: Printing -5.10 Summary +5.10 Enabling Nonfatal Output +============================= + +This minor node describes a `gawk'-specific feature. + + In standard `awk', output with `print' or `printf' to a nonexistent +file, or some other I/O error (such as filling up the disk) is a fatal +error. + + $ gawk 'BEGIN { print "hi" > "/no/such/file" }' + error--> gawk: cmd. line:1: fatal: can't redirect to `/no/such/file' (No such file or directory) + + `gawk' makes it possible to detect that an error has occurred, +allowing you to possibly recover from the error, or at least print an +error message of your choosing before exiting. You can do this in one +of two ways: + + * For all output files, by assigning any value to + `PROCINFO["nonfatal"]'. + + * On a per-file basis, by assigning any value to `PROCINFO[FILENAME, + "nonfatal"]'. Here, FILENAME is the name of the file to which you + wish output to be nonfatal. + + Once you have enabled nonfatal output, you must check `ERRNO' after +every relevant `print' or `printf' statement to see if something went +wrong. It is also a good idea to initialize `ERRNO' to zero before +attempting the output. For example: + + $ gawk ' + > BEGIN { + > PROCINFO["nonfatal"] = 1 + > ERRNO = 0 + > print "hi" > "/no/such/file" + > if (ERRNO) { + > print("Output failed:", ERRNO) > "/dev/stderr" + > exit 1 + > } + > }' + error--> Output failed: No such file or directory + + Here, `gawk' did not produce a fatal error; instead it let the `awk' +program code detect the problem and handle it. + + This mechanism works also for standard output and standard error. +For standard output, you may use `PROCINFO["-", "nonfatal"]' or +`PROCINFO["/dev/stdout", "nonfatal"]'. For standard error, use +`PROCINFO["/dev/stderr", "nonfatal"]'. + + +File: gawk.info, Node: Output Summary, Next: Output Exercises, Prev: Nonfatal, Up: Printing + +5.11 Summary ============ * The `print' statement prints comma-separated expressions. Each @@ -7228,11 +7282,16 @@ File: gawk.info, Node: Output Summary, Next: Output Exercises, Prev: Close Fi For coprocesses, it is possible to close only one direction of the communications. + * Normally errors with `print' or `printf' are fatal. `gawk' lets + you make output errors be nonfatal either for all files or on a + per-file basis. You must then check for errors after every + relevant output statement. + File: gawk.info, Node: Output Exercises, Prev: Output Summary, Up: Printing -5.11 Exercises +5.12 Exercises ============== 1. Rewrite the program: @@ -26468,6 +26527,9 @@ the current version of `gawk'. - Directories on the command line produce a warning and are skipped (*note Command-line directories::). + - Output with `print' and `printf' need not be fatal (*note + Nonfatal::). + * New keywords: - The `BEGINFILE' and `ENDFILE' special patterns (*note @@ -26985,6 +27047,8 @@ in POSIX `awk', in the order they were added to `gawk'. * The maximum number of hexdecimal digits in `\x' escapes is now two. *Note Escape Sequences::. + * Nonfatal output with `print' and `printf'. *Note Nonfatal::. + * Support for MirBSD was removed. @@ -34656,560 +34720,561 @@ Index Tag Table: Node: Top1204 -Node: Foreword342225 -Node: Foreword446669 -Node: Preface48200 -Ref: Preface-Footnote-151071 -Ref: Preface-Footnote-251178 -Ref: Preface-Footnote-351411 -Node: History51553 -Node: Names53904 -Ref: Names-Footnote-154997 -Node: This Manual55143 -Ref: This Manual-Footnote-161643 -Node: Conventions61743 -Node: Manual History64080 -Ref: Manual History-Footnote-167073 -Ref: Manual History-Footnote-267114 -Node: How To Contribute67188 -Node: Acknowledgments68317 -Node: Getting Started73134 -Node: Running gawk75573 -Node: One-shot76763 -Node: Read Terminal78027 -Node: Long80058 -Node: Executable Scripts81571 -Ref: Executable Scripts-Footnote-184360 -Node: Comments84463 -Node: Quoting86945 -Node: DOS Quoting92463 -Node: Sample Data Files93138 -Node: Very Simple95733 -Node: Two Rules100632 -Node: More Complex102518 -Node: Statements/Lines105380 -Ref: Statements/Lines-Footnote-1109835 -Node: Other Features110100 -Node: When111036 -Ref: When-Footnote-1112790 -Node: Intro Summary112855 -Node: Invoking Gawk113739 -Node: Command Line115253 -Node: Options116051 -Ref: Options-Footnote-1131846 -Ref: Options-Footnote-2132075 -Node: Other Arguments132100 -Node: Naming Standard Input135048 -Node: Environment Variables136141 -Node: AWKPATH Variable136699 -Ref: AWKPATH Variable-Footnote-1140106 -Ref: AWKPATH Variable-Footnote-2140151 -Node: AWKLIBPATH Variable140411 -Node: Other Environment Variables141667 -Node: Exit Status145185 -Node: Include Files145861 -Node: Loading Shared Libraries149450 -Node: Obsolete150877 -Node: Undocumented151569 -Node: Invoking Summary151836 -Node: Regexp153499 -Node: Regexp Usage154953 -Node: Escape Sequences156990 -Node: Regexp Operators163219 -Ref: Regexp Operators-Footnote-1170629 -Ref: Regexp Operators-Footnote-2170776 -Node: Bracket Expressions170874 -Ref: table-char-classes172889 -Node: Leftmost Longest175831 -Node: Computed Regexps177133 -Node: GNU Regexp Operators180562 -Node: Case-sensitivity184234 -Ref: Case-sensitivity-Footnote-1187119 -Ref: Case-sensitivity-Footnote-2187354 -Node: Regexp Summary187462 -Node: Reading Files188929 -Node: Records191022 -Node: awk split records191755 -Node: gawk split records196684 -Ref: gawk split records-Footnote-1201223 -Node: Fields201260 -Ref: Fields-Footnote-1204038 -Node: Nonconstant Fields204124 -Ref: Nonconstant Fields-Footnote-1206362 -Node: Changing Fields206565 -Node: Field Separators212496 -Node: Default Field Splitting215200 -Node: Regexp Field Splitting216317 -Node: Single Character Fields219667 -Node: Command Line Field Separator220726 -Node: Full Line Fields223943 -Ref: Full Line Fields-Footnote-1225464 -Ref: Full Line Fields-Footnote-2225510 -Node: Field Splitting Summary225611 -Node: Constant Size227685 -Node: Splitting By Content232268 -Ref: Splitting By Content-Footnote-1236233 -Node: Multiple Line236396 -Ref: Multiple Line-Footnote-1242277 -Node: Getline242456 -Node: Plain Getline244663 -Node: Getline/Variable247303 -Node: Getline/File248452 -Node: Getline/Variable/File249837 -Ref: Getline/Variable/File-Footnote-1251440 -Node: Getline/Pipe251527 -Node: Getline/Variable/Pipe254205 -Node: Getline/Coprocess255336 -Node: Getline/Variable/Coprocess256600 -Node: Getline Notes257339 -Node: Getline Summary260133 -Ref: table-getline-variants260545 -Node: Read Timeout261374 -Ref: Read Timeout-Footnote-1265211 -Node: Command-line directories265269 -Node: Input Summary266174 -Node: Input Exercises269559 -Node: Printing270287 -Node: Print272064 -Node: Print Examples273521 -Node: Output Separators276300 -Node: OFMT278318 -Node: Printf279673 -Node: Basic Printf280458 -Node: Control Letters282030 -Node: Format Modifiers286015 -Node: Printf Examples292025 -Node: Redirection294511 -Node: Special FD301349 -Ref: Special FD-Footnote-1304515 -Node: Special Files304589 -Node: Other Inherited Files305206 -Node: Special Network306206 -Node: Special Caveats307068 -Node: Close Files And Pipes308017 -Ref: Close Files And Pipes-Footnote-1315208 -Ref: Close Files And Pipes-Footnote-2315356 -Node: Output Summary315506 -Node: Output Exercises316504 -Node: Expressions317184 -Node: Values318373 -Node: Constants319050 -Node: Scalar Constants319741 -Ref: Scalar Constants-Footnote-1320603 -Node: Nondecimal-numbers320853 -Node: Regexp Constants323863 -Node: Using Constant Regexps324389 -Node: Variables327552 -Node: Using Variables328209 -Node: Assignment Options330120 -Node: Conversion331995 -Node: Strings And Numbers332519 -Ref: Strings And Numbers-Footnote-1335584 -Node: Locale influences conversions335693 -Ref: table-locale-affects338439 -Node: All Operators339031 -Node: Arithmetic Ops339660 -Node: Concatenation342165 -Ref: Concatenation-Footnote-1344984 -Node: Assignment Ops345091 -Ref: table-assign-ops350070 -Node: Increment Ops351380 -Node: Truth Values and Conditions354811 -Node: Truth Values355894 -Node: Typing and Comparison356943 -Node: Variable Typing357759 -Node: Comparison Operators361426 -Ref: table-relational-ops361836 -Node: POSIX String Comparison365331 -Ref: POSIX String Comparison-Footnote-1366403 -Node: Boolean Ops366542 -Ref: Boolean Ops-Footnote-1371020 -Node: Conditional Exp371111 -Node: Function Calls372849 -Node: Precedence376729 -Node: Locales380389 -Node: Expressions Summary382021 -Node: Patterns and Actions384592 -Node: Pattern Overview385712 -Node: Regexp Patterns387391 -Node: Expression Patterns387934 -Node: Ranges391643 -Node: BEGIN/END394750 -Node: Using BEGIN/END395511 -Ref: Using BEGIN/END-Footnote-1398247 -Node: I/O And BEGIN/END398353 -Node: BEGINFILE/ENDFILE400668 -Node: Empty403565 -Node: Using Shell Variables403882 -Node: Action Overview406155 -Node: Statements408481 -Node: If Statement410329 -Node: While Statement411824 -Node: Do Statement413852 -Node: For Statement415000 -Node: Switch Statement418158 -Node: Break Statement420540 -Node: Continue Statement422581 -Node: Next Statement424408 -Node: Nextfile Statement426789 -Node: Exit Statement429417 -Node: Built-in Variables431828 -Node: User-modified432961 -Ref: User-modified-Footnote-1440664 -Node: Auto-set440726 -Ref: Auto-set-Footnote-1454435 -Ref: Auto-set-Footnote-2454640 -Node: ARGC and ARGV454696 -Node: Pattern Action Summary458914 -Node: Arrays461347 -Node: Array Basics462676 -Node: Array Intro463520 -Ref: figure-array-elements465454 -Ref: Array Intro-Footnote-1468074 -Node: Reference to Elements468202 -Node: Assigning Elements470664 -Node: Array Example471155 -Node: Scanning an Array472914 -Node: Controlling Scanning475934 -Ref: Controlling Scanning-Footnote-1481328 -Node: Numeric Array Subscripts481644 -Node: Uninitialized Subscripts483829 -Node: Delete485446 -Ref: Delete-Footnote-1488195 -Node: Multidimensional488252 -Node: Multiscanning491349 -Node: Arrays of Arrays492938 -Node: Arrays Summary497692 -Node: Functions499783 -Node: Built-in500822 -Node: Calling Built-in501900 -Node: Numeric Functions503895 -Ref: Numeric Functions-Footnote-1508713 -Ref: Numeric Functions-Footnote-2509070 -Ref: Numeric Functions-Footnote-3509118 -Node: String Functions509390 -Ref: String Functions-Footnote-1532891 -Ref: String Functions-Footnote-2533020 -Ref: String Functions-Footnote-3533268 -Node: Gory Details533355 -Ref: table-sub-escapes535136 -Ref: table-sub-proposed536651 -Ref: table-posix-sub538013 -Ref: table-gensub-escapes539550 -Ref: Gory Details-Footnote-1540383 -Node: I/O Functions540534 -Ref: I/O Functions-Footnote-1547770 -Node: Time Functions547917 -Ref: Time Functions-Footnote-1558426 -Ref: Time Functions-Footnote-2558494 -Ref: Time Functions-Footnote-3558652 -Ref: Time Functions-Footnote-4558763 -Ref: Time Functions-Footnote-5558875 -Ref: Time Functions-Footnote-6559102 -Node: Bitwise Functions559368 -Ref: table-bitwise-ops559930 -Ref: Bitwise Functions-Footnote-1564258 -Node: Type Functions564430 -Node: I18N Functions565582 -Node: User-defined567229 -Node: Definition Syntax568034 -Ref: Definition Syntax-Footnote-1573693 -Node: Function Example573764 -Ref: Function Example-Footnote-1576685 -Node: Function Caveats576707 -Node: Calling A Function577225 -Node: Variable Scope578183 -Node: Pass By Value/Reference581176 -Node: Return Statement584673 -Node: Dynamic Typing587652 -Node: Indirect Calls588581 -Ref: Indirect Calls-Footnote-1599887 -Node: Functions Summary600015 -Node: Library Functions602717 -Ref: Library Functions-Footnote-1606325 -Ref: Library Functions-Footnote-2606468 -Node: Library Names606639 -Ref: Library Names-Footnote-1610097 -Ref: Library Names-Footnote-2610320 -Node: General Functions610406 -Node: Strtonum Function611509 -Node: Assert Function614531 -Node: Round Function617855 -Node: Cliff Random Function619396 -Node: Ordinal Functions620412 -Ref: Ordinal Functions-Footnote-1623475 -Ref: Ordinal Functions-Footnote-2623727 -Node: Join Function623938 -Ref: Join Function-Footnote-1625708 -Node: Getlocaltime Function625908 -Node: Readfile Function629652 -Node: Shell Quoting631624 -Node: Data File Management633025 -Node: Filetrans Function633657 -Node: Rewind Function637753 -Node: File Checking639139 -Ref: File Checking-Footnote-1640472 -Node: Empty Files640673 -Node: Ignoring Assigns642652 -Node: Getopt Function644202 -Ref: Getopt Function-Footnote-1655666 -Node: Passwd Functions655866 -Ref: Passwd Functions-Footnote-1664706 -Node: Group Functions664794 -Ref: Group Functions-Footnote-1672691 -Node: Walking Arrays672896 -Node: Library Functions Summary674496 -Node: Library Exercises675900 -Node: Sample Programs677180 -Node: Running Examples677950 -Node: Clones678678 -Node: Cut Program679902 -Node: Egrep Program689622 -Ref: Egrep Program-Footnote-1697125 -Node: Id Program697235 -Node: Split Program700911 -Ref: Split Program-Footnote-1704365 -Node: Tee Program704493 -Node: Uniq Program707282 -Node: Wc Program714701 -Ref: Wc Program-Footnote-1718951 -Node: Miscellaneous Programs719045 -Node: Dupword Program720258 -Node: Alarm Program722289 -Node: Translate Program727094 -Ref: Translate Program-Footnote-1731657 -Node: Labels Program731927 -Ref: Labels Program-Footnote-1735278 -Node: Word Sorting735362 -Node: History Sorting739432 -Node: Extract Program741267 -Node: Simple Sed748791 -Node: Igawk Program751861 -Ref: Igawk Program-Footnote-1766187 -Ref: Igawk Program-Footnote-2766388 -Ref: Igawk Program-Footnote-3766510 -Node: Anagram Program766625 -Node: Signature Program769686 -Node: Programs Summary770933 -Node: Programs Exercises772154 -Ref: Programs Exercises-Footnote-1776285 -Node: Advanced Features776376 -Node: Nondecimal Data778358 -Node: Array Sorting779948 -Node: Controlling Array Traversal780648 -Ref: Controlling Array Traversal-Footnote-1789014 -Node: Array Sorting Functions789132 -Ref: Array Sorting Functions-Footnote-1793018 -Node: Two-way I/O793214 -Ref: Two-way I/O-Footnote-1798159 -Ref: Two-way I/O-Footnote-2798345 -Node: TCP/IP Networking798427 -Node: Profiling801299 -Node: Advanced Features Summary809570 -Node: Internationalization811503 -Node: I18N and L10N812983 -Node: Explaining gettext813669 -Ref: Explaining gettext-Footnote-1818694 -Ref: Explaining gettext-Footnote-2818878 -Node: Programmer i18n819043 -Ref: Programmer i18n-Footnote-1823919 -Node: Translator i18n823968 -Node: String Extraction824762 -Ref: String Extraction-Footnote-1825893 -Node: Printf Ordering825979 -Ref: Printf Ordering-Footnote-1828765 -Node: I18N Portability828829 -Ref: I18N Portability-Footnote-1831285 -Node: I18N Example831348 -Ref: I18N Example-Footnote-1834151 -Node: Gawk I18N834223 -Node: I18N Summary834867 -Node: Debugger836207 -Node: Debugging837229 -Node: Debugging Concepts837670 -Node: Debugging Terms839480 -Node: Awk Debugging842052 -Node: Sample Debugging Session842958 -Node: Debugger Invocation843492 -Node: Finding The Bug844877 -Node: List of Debugger Commands851356 -Node: Breakpoint Control852688 -Node: Debugger Execution Control856365 -Node: Viewing And Changing Data859724 -Node: Execution Stack863100 -Node: Debugger Info864735 -Node: Miscellaneous Debugger Commands868780 -Node: Readline Support873781 -Node: Limitations874675 -Node: Debugging Summary876790 -Node: Arbitrary Precision Arithmetic877964 -Node: Computer Arithmetic879380 -Ref: table-numeric-ranges882978 -Ref: Computer Arithmetic-Footnote-1883837 -Node: Math Definitions883894 -Ref: table-ieee-formats887182 -Ref: Math Definitions-Footnote-1887786 -Node: MPFR features887891 -Node: FP Math Caution889562 -Ref: FP Math Caution-Footnote-1890612 -Node: Inexactness of computations890981 -Node: Inexact representation891940 -Node: Comparing FP Values893297 -Node: Errors accumulate894379 -Node: Getting Accuracy895812 -Node: Try To Round898474 -Node: Setting precision899373 -Ref: table-predefined-precision-strings900057 -Node: Setting the rounding mode901846 -Ref: table-gawk-rounding-modes902210 -Ref: Setting the rounding mode-Footnote-1905665 -Node: Arbitrary Precision Integers905844 -Ref: Arbitrary Precision Integers-Footnote-1910744 -Node: POSIX Floating Point Problems910893 -Ref: POSIX Floating Point Problems-Footnote-1914766 -Node: Floating point summary914804 -Node: Dynamic Extensions916998 -Node: Extension Intro918550 -Node: Plugin License919816 -Node: Extension Mechanism Outline920613 -Ref: figure-load-extension921041 -Ref: figure-register-new-function922521 -Ref: figure-call-new-function923525 -Node: Extension API Description925511 -Node: Extension API Functions Introduction926961 -Node: General Data Types931785 -Ref: General Data Types-Footnote-1937524 -Node: Memory Allocation Functions937823 -Ref: Memory Allocation Functions-Footnote-1940662 -Node: Constructor Functions940758 -Node: Registration Functions942492 -Node: Extension Functions943177 -Node: Exit Callback Functions945474 -Node: Extension Version String946722 -Node: Input Parsers947387 -Node: Output Wrappers957266 -Node: Two-way processors961781 -Node: Printing Messages963985 -Ref: Printing Messages-Footnote-1965061 -Node: Updating `ERRNO'965213 -Node: Requesting Values965953 -Ref: table-value-types-returned966681 -Node: Accessing Parameters967638 -Node: Symbol Table Access968869 -Node: Symbol table by name969383 -Node: Symbol table by cookie971364 -Ref: Symbol table by cookie-Footnote-1975508 -Node: Cached values975571 -Ref: Cached values-Footnote-1979070 -Node: Array Manipulation979161 -Ref: Array Manipulation-Footnote-1980259 -Node: Array Data Types980296 -Ref: Array Data Types-Footnote-1982951 -Node: Array Functions983043 -Node: Flattening Arrays986897 -Node: Creating Arrays993789 -Node: Extension API Variables998560 -Node: Extension Versioning999196 -Node: Extension API Informational Variables1001097 -Node: Extension API Boilerplate1002162 -Node: Finding Extensions1005971 -Node: Extension Example1006531 -Node: Internal File Description1007303 -Node: Internal File Ops1011370 -Ref: Internal File Ops-Footnote-11023040 -Node: Using Internal File Ops1023180 -Ref: Using Internal File Ops-Footnote-11025563 -Node: Extension Samples1025836 -Node: Extension Sample File Functions1027362 -Node: Extension Sample Fnmatch1035000 -Node: Extension Sample Fork1036491 -Node: Extension Sample Inplace1037706 -Node: Extension Sample Ord1039381 -Node: Extension Sample Readdir1040217 -Ref: table-readdir-file-types1041093 -Node: Extension Sample Revout1041904 -Node: Extension Sample Rev2way1042494 -Node: Extension Sample Read write array1043234 -Node: Extension Sample Readfile1045174 -Node: Extension Sample Time1046269 -Node: Extension Sample API Tests1047618 -Node: gawkextlib1048109 -Node: Extension summary1050767 -Node: Extension Exercises1054456 -Node: Language History1055178 -Node: V7/SVR3.11056834 -Node: SVR41059015 -Node: POSIX1060460 -Node: BTL1061849 -Node: POSIX/GNU1062583 -Node: Feature History1068372 -Node: Common Extensions1082098 -Node: Ranges and Locales1083422 -Ref: Ranges and Locales-Footnote-11088040 -Ref: Ranges and Locales-Footnote-21088067 -Ref: Ranges and Locales-Footnote-31088301 -Node: Contributors1088522 -Node: History summary1094063 -Node: Installation1095433 -Node: Gawk Distribution1096379 -Node: Getting1096863 -Node: Extracting1097686 -Node: Distribution contents1099321 -Node: Unix Installation1105386 -Node: Quick Installation1106069 -Node: Shell Startup Files1108480 -Node: Additional Configuration Options1109559 -Node: Configuration Philosophy1111298 -Node: Non-Unix Installation1113667 -Node: PC Installation1114125 -Node: PC Binary Installation1115444 -Node: PC Compiling1117292 -Ref: PC Compiling-Footnote-11120313 -Node: PC Testing1120422 -Node: PC Using1121598 -Node: Cygwin1125713 -Node: MSYS1126536 -Node: VMS Installation1127036 -Node: VMS Compilation1127828 -Ref: VMS Compilation-Footnote-11129050 -Node: VMS Dynamic Extensions1129108 -Node: VMS Installation Details1130792 -Node: VMS Running1133044 -Node: VMS GNV1135880 -Node: VMS Old Gawk1136614 -Node: Bugs1137084 -Node: Other Versions1140967 -Node: Installation summary1147391 -Node: Notes1148447 -Node: Compatibility Mode1149312 -Node: Additions1150094 -Node: Accessing The Source1151019 -Node: Adding Code1152454 -Node: New Ports1158611 -Node: Derived Files1163093 -Ref: Derived Files-Footnote-11168568 -Ref: Derived Files-Footnote-21168602 -Ref: Derived Files-Footnote-31169198 -Node: Future Extensions1169312 -Node: Implementation Limitations1169918 -Node: Extension Design1171166 -Node: Old Extension Problems1172320 -Ref: Old Extension Problems-Footnote-11173837 -Node: Extension New Mechanism Goals1173894 -Ref: Extension New Mechanism Goals-Footnote-11177254 -Node: Extension Other Design Decisions1177443 -Node: Extension Future Growth1179551 -Node: Old Extension Mechanism1180387 -Node: Notes summary1182149 -Node: Basic Concepts1183335 -Node: Basic High Level1184016 -Ref: figure-general-flow1184288 -Ref: figure-process-flow1184887 -Ref: Basic High Level-Footnote-11188116 -Node: Basic Data Typing1188301 -Node: Glossary1191629 -Node: Copying1223558 -Node: GNU Free Documentation License1261114 -Node: Index1286250 +Node: Foreword342291 +Node: Foreword446735 +Node: Preface48266 +Ref: Preface-Footnote-151137 +Ref: Preface-Footnote-251244 +Ref: Preface-Footnote-351477 +Node: History51619 +Node: Names53970 +Ref: Names-Footnote-155063 +Node: This Manual55209 +Ref: This Manual-Footnote-161709 +Node: Conventions61809 +Node: Manual History64146 +Ref: Manual History-Footnote-167139 +Ref: Manual History-Footnote-267180 +Node: How To Contribute67254 +Node: Acknowledgments68383 +Node: Getting Started73200 +Node: Running gawk75639 +Node: One-shot76829 +Node: Read Terminal78093 +Node: Long80124 +Node: Executable Scripts81637 +Ref: Executable Scripts-Footnote-184426 +Node: Comments84529 +Node: Quoting87011 +Node: DOS Quoting92529 +Node: Sample Data Files93204 +Node: Very Simple95799 +Node: Two Rules100698 +Node: More Complex102584 +Node: Statements/Lines105446 +Ref: Statements/Lines-Footnote-1109901 +Node: Other Features110166 +Node: When111102 +Ref: When-Footnote-1112856 +Node: Intro Summary112921 +Node: Invoking Gawk113805 +Node: Command Line115319 +Node: Options116117 +Ref: Options-Footnote-1131912 +Ref: Options-Footnote-2132141 +Node: Other Arguments132166 +Node: Naming Standard Input135114 +Node: Environment Variables136207 +Node: AWKPATH Variable136765 +Ref: AWKPATH Variable-Footnote-1140172 +Ref: AWKPATH Variable-Footnote-2140217 +Node: AWKLIBPATH Variable140477 +Node: Other Environment Variables141733 +Node: Exit Status145251 +Node: Include Files145927 +Node: Loading Shared Libraries149516 +Node: Obsolete150943 +Node: Undocumented151635 +Node: Invoking Summary151902 +Node: Regexp153565 +Node: Regexp Usage155019 +Node: Escape Sequences157056 +Node: Regexp Operators163285 +Ref: Regexp Operators-Footnote-1170695 +Ref: Regexp Operators-Footnote-2170842 +Node: Bracket Expressions170940 +Ref: table-char-classes172955 +Node: Leftmost Longest175897 +Node: Computed Regexps177199 +Node: GNU Regexp Operators180628 +Node: Case-sensitivity184300 +Ref: Case-sensitivity-Footnote-1187185 +Ref: Case-sensitivity-Footnote-2187420 +Node: Regexp Summary187528 +Node: Reading Files188995 +Node: Records191088 +Node: awk split records191821 +Node: gawk split records196750 +Ref: gawk split records-Footnote-1201289 +Node: Fields201326 +Ref: Fields-Footnote-1204104 +Node: Nonconstant Fields204190 +Ref: Nonconstant Fields-Footnote-1206428 +Node: Changing Fields206631 +Node: Field Separators212562 +Node: Default Field Splitting215266 +Node: Regexp Field Splitting216383 +Node: Single Character Fields219733 +Node: Command Line Field Separator220792 +Node: Full Line Fields224009 +Ref: Full Line Fields-Footnote-1225530 +Ref: Full Line Fields-Footnote-2225576 +Node: Field Splitting Summary225677 +Node: Constant Size227751 +Node: Splitting By Content232334 +Ref: Splitting By Content-Footnote-1236299 +Node: Multiple Line236462 +Ref: Multiple Line-Footnote-1242343 +Node: Getline242522 +Node: Plain Getline244729 +Node: Getline/Variable247369 +Node: Getline/File248518 +Node: Getline/Variable/File249903 +Ref: Getline/Variable/File-Footnote-1251506 +Node: Getline/Pipe251593 +Node: Getline/Variable/Pipe254271 +Node: Getline/Coprocess255402 +Node: Getline/Variable/Coprocess256666 +Node: Getline Notes257405 +Node: Getline Summary260199 +Ref: table-getline-variants260611 +Node: Read Timeout261440 +Ref: Read Timeout-Footnote-1265277 +Node: Command-line directories265335 +Node: Input Summary266240 +Node: Input Exercises269625 +Node: Printing270353 +Node: Print272188 +Node: Print Examples273645 +Node: Output Separators276424 +Node: OFMT278442 +Node: Printf279797 +Node: Basic Printf280582 +Node: Control Letters282154 +Node: Format Modifiers286139 +Node: Printf Examples292149 +Node: Redirection294635 +Node: Special FD301473 +Ref: Special FD-Footnote-1304639 +Node: Special Files304713 +Node: Other Inherited Files305330 +Node: Special Network306330 +Node: Special Caveats307192 +Node: Close Files And Pipes308141 +Ref: Close Files And Pipes-Footnote-1315326 +Ref: Close Files And Pipes-Footnote-2315474 +Node: Nonfatal315624 +Node: Output Summary317547 +Node: Output Exercises318768 +Node: Expressions319448 +Node: Values320637 +Node: Constants321314 +Node: Scalar Constants322005 +Ref: Scalar Constants-Footnote-1322867 +Node: Nondecimal-numbers323117 +Node: Regexp Constants326127 +Node: Using Constant Regexps326653 +Node: Variables329816 +Node: Using Variables330473 +Node: Assignment Options332384 +Node: Conversion334259 +Node: Strings And Numbers334783 +Ref: Strings And Numbers-Footnote-1337848 +Node: Locale influences conversions337957 +Ref: table-locale-affects340703 +Node: All Operators341295 +Node: Arithmetic Ops341924 +Node: Concatenation344429 +Ref: Concatenation-Footnote-1347248 +Node: Assignment Ops347355 +Ref: table-assign-ops352334 +Node: Increment Ops353644 +Node: Truth Values and Conditions357075 +Node: Truth Values358158 +Node: Typing and Comparison359207 +Node: Variable Typing360023 +Node: Comparison Operators363690 +Ref: table-relational-ops364100 +Node: POSIX String Comparison367595 +Ref: POSIX String Comparison-Footnote-1368667 +Node: Boolean Ops368806 +Ref: Boolean Ops-Footnote-1373284 +Node: Conditional Exp373375 +Node: Function Calls375113 +Node: Precedence378993 +Node: Locales382653 +Node: Expressions Summary384285 +Node: Patterns and Actions386856 +Node: Pattern Overview387976 +Node: Regexp Patterns389655 +Node: Expression Patterns390198 +Node: Ranges393907 +Node: BEGIN/END397014 +Node: Using BEGIN/END397775 +Ref: Using BEGIN/END-Footnote-1400511 +Node: I/O And BEGIN/END400617 +Node: BEGINFILE/ENDFILE402932 +Node: Empty405829 +Node: Using Shell Variables406146 +Node: Action Overview408419 +Node: Statements410745 +Node: If Statement412593 +Node: While Statement414088 +Node: Do Statement416116 +Node: For Statement417264 +Node: Switch Statement420422 +Node: Break Statement422804 +Node: Continue Statement424845 +Node: Next Statement426672 +Node: Nextfile Statement429053 +Node: Exit Statement431681 +Node: Built-in Variables434092 +Node: User-modified435225 +Ref: User-modified-Footnote-1442928 +Node: Auto-set442990 +Ref: Auto-set-Footnote-1456699 +Ref: Auto-set-Footnote-2456904 +Node: ARGC and ARGV456960 +Node: Pattern Action Summary461178 +Node: Arrays463611 +Node: Array Basics464940 +Node: Array Intro465784 +Ref: figure-array-elements467718 +Ref: Array Intro-Footnote-1470338 +Node: Reference to Elements470466 +Node: Assigning Elements472928 +Node: Array Example473419 +Node: Scanning an Array475178 +Node: Controlling Scanning478198 +Ref: Controlling Scanning-Footnote-1483592 +Node: Numeric Array Subscripts483908 +Node: Uninitialized Subscripts486093 +Node: Delete487710 +Ref: Delete-Footnote-1490459 +Node: Multidimensional490516 +Node: Multiscanning493613 +Node: Arrays of Arrays495202 +Node: Arrays Summary499956 +Node: Functions502047 +Node: Built-in503086 +Node: Calling Built-in504164 +Node: Numeric Functions506159 +Ref: Numeric Functions-Footnote-1510977 +Ref: Numeric Functions-Footnote-2511334 +Ref: Numeric Functions-Footnote-3511382 +Node: String Functions511654 +Ref: String Functions-Footnote-1535155 +Ref: String Functions-Footnote-2535284 +Ref: String Functions-Footnote-3535532 +Node: Gory Details535619 +Ref: table-sub-escapes537400 +Ref: table-sub-proposed538915 +Ref: table-posix-sub540277 +Ref: table-gensub-escapes541814 +Ref: Gory Details-Footnote-1542647 +Node: I/O Functions542798 +Ref: I/O Functions-Footnote-1550034 +Node: Time Functions550181 +Ref: Time Functions-Footnote-1560690 +Ref: Time Functions-Footnote-2560758 +Ref: Time Functions-Footnote-3560916 +Ref: Time Functions-Footnote-4561027 +Ref: Time Functions-Footnote-5561139 +Ref: Time Functions-Footnote-6561366 +Node: Bitwise Functions561632 +Ref: table-bitwise-ops562194 +Ref: Bitwise Functions-Footnote-1566522 +Node: Type Functions566694 +Node: I18N Functions567846 +Node: User-defined569493 +Node: Definition Syntax570298 +Ref: Definition Syntax-Footnote-1575957 +Node: Function Example576028 +Ref: Function Example-Footnote-1578949 +Node: Function Caveats578971 +Node: Calling A Function579489 +Node: Variable Scope580447 +Node: Pass By Value/Reference583440 +Node: Return Statement586937 +Node: Dynamic Typing589916 +Node: Indirect Calls590845 +Ref: Indirect Calls-Footnote-1602151 +Node: Functions Summary602279 +Node: Library Functions604981 +Ref: Library Functions-Footnote-1608589 +Ref: Library Functions-Footnote-2608732 +Node: Library Names608903 +Ref: Library Names-Footnote-1612361 +Ref: Library Names-Footnote-2612584 +Node: General Functions612670 +Node: Strtonum Function613773 +Node: Assert Function616795 +Node: Round Function620119 +Node: Cliff Random Function621660 +Node: Ordinal Functions622676 +Ref: Ordinal Functions-Footnote-1625739 +Ref: Ordinal Functions-Footnote-2625991 +Node: Join Function626202 +Ref: Join Function-Footnote-1627972 +Node: Getlocaltime Function628172 +Node: Readfile Function631916 +Node: Shell Quoting633888 +Node: Data File Management635289 +Node: Filetrans Function635921 +Node: Rewind Function640017 +Node: File Checking641403 +Ref: File Checking-Footnote-1642736 +Node: Empty Files642937 +Node: Ignoring Assigns644916 +Node: Getopt Function646466 +Ref: Getopt Function-Footnote-1657930 +Node: Passwd Functions658130 +Ref: Passwd Functions-Footnote-1666970 +Node: Group Functions667058 +Ref: Group Functions-Footnote-1674955 +Node: Walking Arrays675160 +Node: Library Functions Summary676760 +Node: Library Exercises678164 +Node: Sample Programs679444 +Node: Running Examples680214 +Node: Clones680942 +Node: Cut Program682166 +Node: Egrep Program691886 +Ref: Egrep Program-Footnote-1699389 +Node: Id Program699499 +Node: Split Program703175 +Ref: Split Program-Footnote-1706629 +Node: Tee Program706757 +Node: Uniq Program709546 +Node: Wc Program716965 +Ref: Wc Program-Footnote-1721215 +Node: Miscellaneous Programs721309 +Node: Dupword Program722522 +Node: Alarm Program724553 +Node: Translate Program729358 +Ref: Translate Program-Footnote-1733921 +Node: Labels Program734191 +Ref: Labels Program-Footnote-1737542 +Node: Word Sorting737626 +Node: History Sorting741696 +Node: Extract Program743531 +Node: Simple Sed751055 +Node: Igawk Program754125 +Ref: Igawk Program-Footnote-1768451 +Ref: Igawk Program-Footnote-2768652 +Ref: Igawk Program-Footnote-3768774 +Node: Anagram Program768889 +Node: Signature Program771950 +Node: Programs Summary773197 +Node: Programs Exercises774418 +Ref: Programs Exercises-Footnote-1778549 +Node: Advanced Features778640 +Node: Nondecimal Data780622 +Node: Array Sorting782212 +Node: Controlling Array Traversal782912 +Ref: Controlling Array Traversal-Footnote-1791278 +Node: Array Sorting Functions791396 +Ref: Array Sorting Functions-Footnote-1795282 +Node: Two-way I/O795478 +Ref: Two-way I/O-Footnote-1800423 +Ref: Two-way I/O-Footnote-2800609 +Node: TCP/IP Networking800691 +Node: Profiling803563 +Node: Advanced Features Summary811834 +Node: Internationalization813767 +Node: I18N and L10N815247 +Node: Explaining gettext815933 +Ref: Explaining gettext-Footnote-1820958 +Ref: Explaining gettext-Footnote-2821142 +Node: Programmer i18n821307 +Ref: Programmer i18n-Footnote-1826183 +Node: Translator i18n826232 +Node: String Extraction827026 +Ref: String Extraction-Footnote-1828157 +Node: Printf Ordering828243 +Ref: Printf Ordering-Footnote-1831029 +Node: I18N Portability831093 +Ref: I18N Portability-Footnote-1833549 +Node: I18N Example833612 +Ref: I18N Example-Footnote-1836415 +Node: Gawk I18N836487 +Node: I18N Summary837131 +Node: Debugger838471 +Node: Debugging839493 +Node: Debugging Concepts839934 +Node: Debugging Terms841744 +Node: Awk Debugging844316 +Node: Sample Debugging Session845222 +Node: Debugger Invocation845756 +Node: Finding The Bug847141 +Node: List of Debugger Commands853620 +Node: Breakpoint Control854952 +Node: Debugger Execution Control858629 +Node: Viewing And Changing Data861988 +Node: Execution Stack865364 +Node: Debugger Info866999 +Node: Miscellaneous Debugger Commands871044 +Node: Readline Support876045 +Node: Limitations876939 +Node: Debugging Summary879054 +Node: Arbitrary Precision Arithmetic880228 +Node: Computer Arithmetic881644 +Ref: table-numeric-ranges885242 +Ref: Computer Arithmetic-Footnote-1886101 +Node: Math Definitions886158 +Ref: table-ieee-formats889446 +Ref: Math Definitions-Footnote-1890050 +Node: MPFR features890155 +Node: FP Math Caution891826 +Ref: FP Math Caution-Footnote-1892876 +Node: Inexactness of computations893245 +Node: Inexact representation894204 +Node: Comparing FP Values895561 +Node: Errors accumulate896643 +Node: Getting Accuracy898076 +Node: Try To Round900738 +Node: Setting precision901637 +Ref: table-predefined-precision-strings902321 +Node: Setting the rounding mode904110 +Ref: table-gawk-rounding-modes904474 +Ref: Setting the rounding mode-Footnote-1907929 +Node: Arbitrary Precision Integers908108 +Ref: Arbitrary Precision Integers-Footnote-1913008 +Node: POSIX Floating Point Problems913157 +Ref: POSIX Floating Point Problems-Footnote-1917030 +Node: Floating point summary917068 +Node: Dynamic Extensions919262 +Node: Extension Intro920814 +Node: Plugin License922080 +Node: Extension Mechanism Outline922877 +Ref: figure-load-extension923305 +Ref: figure-register-new-function924785 +Ref: figure-call-new-function925789 +Node: Extension API Description927775 +Node: Extension API Functions Introduction929225 +Node: General Data Types934049 +Ref: General Data Types-Footnote-1939788 +Node: Memory Allocation Functions940087 +Ref: Memory Allocation Functions-Footnote-1942926 +Node: Constructor Functions943022 +Node: Registration Functions944756 +Node: Extension Functions945441 +Node: Exit Callback Functions947738 +Node: Extension Version String948986 +Node: Input Parsers949651 +Node: Output Wrappers959530 +Node: Two-way processors964045 +Node: Printing Messages966249 +Ref: Printing Messages-Footnote-1967325 +Node: Updating `ERRNO'967477 +Node: Requesting Values968217 +Ref: table-value-types-returned968945 +Node: Accessing Parameters969902 +Node: Symbol Table Access971133 +Node: Symbol table by name971647 +Node: Symbol table by cookie973628 +Ref: Symbol table by cookie-Footnote-1977772 +Node: Cached values977835 +Ref: Cached values-Footnote-1981334 +Node: Array Manipulation981425 +Ref: Array Manipulation-Footnote-1982523 +Node: Array Data Types982560 +Ref: Array Data Types-Footnote-1985215 +Node: Array Functions985307 +Node: Flattening Arrays989161 +Node: Creating Arrays996053 +Node: Extension API Variables1000824 +Node: Extension Versioning1001460 +Node: Extension API Informational Variables1003361 +Node: Extension API Boilerplate1004426 +Node: Finding Extensions1008235 +Node: Extension Example1008795 +Node: Internal File Description1009567 +Node: Internal File Ops1013634 +Ref: Internal File Ops-Footnote-11025304 +Node: Using Internal File Ops1025444 +Ref: Using Internal File Ops-Footnote-11027827 +Node: Extension Samples1028100 +Node: Extension Sample File Functions1029626 +Node: Extension Sample Fnmatch1037264 +Node: Extension Sample Fork1038755 +Node: Extension Sample Inplace1039970 +Node: Extension Sample Ord1041645 +Node: Extension Sample Readdir1042481 +Ref: table-readdir-file-types1043357 +Node: Extension Sample Revout1044168 +Node: Extension Sample Rev2way1044758 +Node: Extension Sample Read write array1045498 +Node: Extension Sample Readfile1047438 +Node: Extension Sample Time1048533 +Node: Extension Sample API Tests1049882 +Node: gawkextlib1050373 +Node: Extension summary1053031 +Node: Extension Exercises1056720 +Node: Language History1057442 +Node: V7/SVR3.11059098 +Node: SVR41061279 +Node: POSIX1062724 +Node: BTL1064113 +Node: POSIX/GNU1064847 +Node: Feature History1070728 +Node: Common Extensions1084522 +Node: Ranges and Locales1085846 +Ref: Ranges and Locales-Footnote-11090464 +Ref: Ranges and Locales-Footnote-21090491 +Ref: Ranges and Locales-Footnote-31090725 +Node: Contributors1090946 +Node: History summary1096487 +Node: Installation1097857 +Node: Gawk Distribution1098803 +Node: Getting1099287 +Node: Extracting1100110 +Node: Distribution contents1101745 +Node: Unix Installation1107810 +Node: Quick Installation1108493 +Node: Shell Startup Files1110904 +Node: Additional Configuration Options1111983 +Node: Configuration Philosophy1113722 +Node: Non-Unix Installation1116091 +Node: PC Installation1116549 +Node: PC Binary Installation1117868 +Node: PC Compiling1119716 +Ref: PC Compiling-Footnote-11122737 +Node: PC Testing1122846 +Node: PC Using1124022 +Node: Cygwin1128137 +Node: MSYS1128960 +Node: VMS Installation1129460 +Node: VMS Compilation1130252 +Ref: VMS Compilation-Footnote-11131474 +Node: VMS Dynamic Extensions1131532 +Node: VMS Installation Details1133216 +Node: VMS Running1135468 +Node: VMS GNV1138304 +Node: VMS Old Gawk1139038 +Node: Bugs1139508 +Node: Other Versions1143391 +Node: Installation summary1149815 +Node: Notes1150871 +Node: Compatibility Mode1151736 +Node: Additions1152518 +Node: Accessing The Source1153443 +Node: Adding Code1154878 +Node: New Ports1161035 +Node: Derived Files1165517 +Ref: Derived Files-Footnote-11170992 +Ref: Derived Files-Footnote-21171026 +Ref: Derived Files-Footnote-31171622 +Node: Future Extensions1171736 +Node: Implementation Limitations1172342 +Node: Extension Design1173590 +Node: Old Extension Problems1174744 +Ref: Old Extension Problems-Footnote-11176261 +Node: Extension New Mechanism Goals1176318 +Ref: Extension New Mechanism Goals-Footnote-11179678 +Node: Extension Other Design Decisions1179867 +Node: Extension Future Growth1181975 +Node: Old Extension Mechanism1182811 +Node: Notes summary1184573 +Node: Basic Concepts1185759 +Node: Basic High Level1186440 +Ref: figure-general-flow1186712 +Ref: figure-process-flow1187311 +Ref: Basic High Level-Footnote-11190540 +Node: Basic Data Typing1190725 +Node: Glossary1194053 +Node: Copying1225982 +Node: GNU Free Documentation License1263538 +Node: Index1288674 End Tag Table |