diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2019-04-21 18:02:30 +0300 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2019-04-21 18:02:30 +0300 |
commit | d3b5c776178a0b0680f984eab536c83089bbc92a (patch) | |
tree | cd8ddac13b54b47ddd2e52b58d5d7a88850c512d | |
parent | dfb4f3b18cc0490cf1db9dad021fce62a99443b5 (diff) | |
parent | 7760ee121f8f3a231f4d949819fb49025d840297 (diff) | |
download | egawk-d3b5c776178a0b0680f984eab536c83089bbc92a.tar.gz egawk-d3b5c776178a0b0680f984eab536c83089bbc92a.tar.bz2 egawk-d3b5c776178a0b0680f984eab536c83089bbc92a.zip |
Merge branch 'gawk-5.0-stable'
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | doc/ChangeLog | 6 | ||||
-rw-r--r-- | doc/gawk.info | 1290 | ||||
-rw-r--r-- | doc/gawk.texi | 18 | ||||
-rw-r--r-- | doc/gawktexi.in | 18 | ||||
-rw-r--r-- | interpret.h | 3 |
6 files changed, 691 insertions, 650 deletions
@@ -1,3 +1,9 @@ +2019-02-21 Andrew J. Schorr <aschorr@telemetry-investments.com> + + * interpert.h (Op_store_field): Move call to force_string to + here from unfield. Speeds up work with fields that are numeric + only. Thanks to Tom Gray <tom_gray@keysight.com> for the report. + 2019-04-21 Arnold D. Robbins <arnold@skeeve.com> * POSIX.STD: Updated. diff --git a/doc/ChangeLog b/doc/ChangeLog index 2af0aa5e..fa330c20 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -7,6 +7,12 @@ (Multiple Lines): Note that POSIX seems to require \n as separator for all values of FS, but that in reality it doesn't apply to regexps; this is a POSIX bug. + (Options): Document clearly that if no -f or -e, anything + after the program text is placed into ARGV and not + parsed for options. Thanks to Neil Ormos <ormos-gnulists17@ormos.org> + for the tip. + (Other Versions): Add a link to Mircea Neacsu's embeddable + awk interpreter. 2019-04-18 Arnold D. Robbins <arnold@skeeve.com> diff --git a/doc/gawk.info b/doc/gawk.info index 513be76b..85bd5749 100644 --- a/doc/gawk.info +++ b/doc/gawk.info @@ -2832,8 +2832,11 @@ your source code; it allows you to easily mix command-line and library source code (*note AWKPATH Variable::). As with '-f', the '-e' and '-i' options may also be used multiple times on the command line. - If no '-f' or '-e' option is specified, then 'gawk' uses the first -nonoption command-line argument as the text of the program source code. + If no '-f' option (or '-e' option for 'gawk') is specified, then +'awk' uses the first nonoption command-line argument as the text of the +program source code. Arguments on the command line that follow the +program text are entered into the 'ARGV' array; 'awk' does _not_ +continue to parse the command line looking for options. If the environment variable 'POSIXLY_CORRECT' exists, then 'gawk' behaves in strict POSIX mode, exactly as if you had supplied '--posix'. @@ -5597,91 +5600,90 @@ whatever field separations result from 'FS'. 'awk' has never behaved that way, nor has 'gawk'. This is essentially a bug in POSIX. - The original motivation for this special exception was probably to - provide useful behavior in the default case (i.e., 'FS' is equal to - '" "'). This feature can be a problem if you really don't want the - newline character to separate fields, because there is no way to - prevent it. However, you can work around this by using the - 'split()' function to break up the record manually (*note String - Functions::). If you have a single-character field separator, you - can work around the special feature in a different way, by making - 'FS' into a regexp for that single character. For example, if the - field separator is a percent character, instead of 'FS = "%"', use - 'FS = "[%]"'. - - Another way to separate fields is to put each field on a separate - line: to do this, just set the variable 'FS' to the string '"\n"'. - (This single-character separator matches a single newline.) A - practical example of a data file organized this way might be a - mailing list, where blank lines separate the entries. Consider a - mailing list in a file named 'addresses', which looks like this: - - Jane Doe - 123 Main Street - Anywhere, SE 12345-6789 - - John Smith - 456 Tree-lined Avenue - Smallville, MW 98765-4321 - ... + The original motivation for this special exception was probably to +provide useful behavior in the default case (i.e., 'FS' is equal to +'" "'). This feature can be a problem if you really don't want the +newline character to separate fields, because there is no way to prevent +it. However, you can work around this by using the 'split()' function +to break up the record manually (*note String Functions::). If you have +a single-character field separator, you can work around the special +feature in a different way, by making 'FS' into a regexp for that single +character. For example, if the field separator is a percent character, +instead of 'FS = "%"', use 'FS = "[%]"'. + + Another way to separate fields is to put each field on a separate +line: to do this, just set the variable 'FS' to the string '"\n"'. +(This single-character separator matches a single newline.) A practical +example of a data file organized this way might be a mailing list, where +blank lines separate the entries. Consider a mailing list in a file +named 'addresses', which looks like this: + + Jane Doe + 123 Main Street + Anywhere, SE 12345-6789 + + John Smith + 456 Tree-lined Avenue + Smallville, MW 98765-4321 + ... - A simple program to process this file is as follows: +A simple program to process this file is as follows: - # addrs.awk --- simple mailing list program + # addrs.awk --- simple mailing list program - # Records are separated by blank lines. - # Each line is one field. - BEGIN { RS = "" ; FS = "\n" } + # Records are separated by blank lines. + # Each line is one field. + BEGIN { RS = "" ; FS = "\n" } - { - print "Name is:", $1 - print "Address is:", $2 - print "City and State are:", $3 - print "" - } + { + print "Name is:", $1 + print "Address is:", $2 + print "City and State are:", $3 + print "" + } - Running the program produces the following output: + Running the program produces the following output: - $ awk -f addrs.awk addresses - -| Name is: Jane Doe - -| Address is: 123 Main Street - -| City and State are: Anywhere, SE 12345-6789 - -| - -| Name is: John Smith - -| Address is: 456 Tree-lined Avenue - -| City and State are: Smallville, MW 98765-4321 - -| - ... + $ awk -f addrs.awk addresses + -| Name is: Jane Doe + -| Address is: 123 Main Street + -| City and State are: Anywhere, SE 12345-6789 + -| + -| Name is: John Smith + -| Address is: 456 Tree-lined Avenue + -| City and State are: Smallville, MW 98765-4321 + -| + ... - *Note Labels Program:: for a more realistic program dealing with - address lists. The following list summarizes how records are - split, based on the value of 'RS'. ('==' means "is equal to.") + *Note Labels Program:: for a more realistic program dealing with +address lists. The following list summarizes how records are split, +based on the value of 'RS'. ('==' means "is equal to.") - 'RS == "\n"' - Records are separated by the newline character ('\n'). In - effect, every line in the data file is a separate record, - including blank lines. This is the default. +'RS == "\n"' + Records are separated by the newline character ('\n'). In effect, + every line in the data file is a separate record, including blank + lines. This is the default. - 'RS == ANY SINGLE CHARACTER' - Records are separated by each occurrence of the character. - Multiple successive occurrences delimit empty records. +'RS == ANY SINGLE CHARACTER' + Records are separated by each occurrence of the character. + Multiple successive occurrences delimit empty records. - 'RS == ""' - Records are separated by runs of blank lines. When 'FS' is a - single character, then the newline character always serves as - a field separator, in addition to whatever value 'FS' may - have. Leading and trailing newlines in a file are ignored. +'RS == ""' + Records are separated by runs of blank lines. When 'FS' is a + single character, then the newline character always serves as a + field separator, in addition to whatever value 'FS' may have. + Leading and trailing newlines in a file are ignored. - 'RS == REGEXP' - Records are separated by occurrences of characters that match - REGEXP. Leading and trailing matches of REGEXP delimit empty - records. (This is a 'gawk' extension; it is not specified by - the POSIX standard.) +'RS == REGEXP' + Records are separated by occurrences of characters that match + REGEXP. Leading and trailing matches of REGEXP delimit empty + records. (This is a 'gawk' extension; it is not specified by the + POSIX standard.) - If not in compatibility mode (*note Options::), 'gawk' sets 'RT' to - the input text that matched the value specified by 'RS'. But if - the input file ended without any text that matches 'RS', then - 'gawk' sets 'RT' to the null string. + If not in compatibility mode (*note Options::), 'gawk' sets 'RT' to +the input text that matched the value specified by 'RS'. But if the +input file ended without any text that matches 'RS', then 'gawk' sets +'RT' to the null string. File: gawk.info, Node: Getline, Next: Read Timeout, Prev: Multiple Line, Up: Reading Files @@ -30591,6 +30593,10 @@ Libmawk This is an embeddable 'awk' interpreter derived from 'mawk'. For more information, see <http://repo.hu/projects/libmawk/>. +Mircea Neacsu's Embeddable 'awk' + Mircea Neacsu has created an embeddable 'awk' interpreter, based on + BWK awk. It's available at <https://github.com/neacsum/awk>. + 'pawk' This is a Python module that claims to bring 'awk'-like features to Python. See <https://github.com/alecthomas/pawk> for more @@ -34481,7 +34487,7 @@ Index * cosine: Numeric Functions. (line 16) * counting: Wc Program. (line 6) * csh utility: Statements/Lines. (line 43) -* csh utility, POSIXLY_CORRECT environment variable: Options. (line 383) +* csh utility, POSIXLY_CORRECT environment variable: Options. (line 386) * csh utility, |& operator, comparison with: Two-way I/O. (line 27) * ctime() user-defined function: Function Example. (line 74) * Curreli, Marco: Contributors. (line 147) @@ -34790,7 +34796,7 @@ Index * differences in awk and gawk, RS/RT variables <1>: gawk split records. (line 58) * differences in awk and gawk, RS/RT variables <2>: Multiple Line. - (line 140) + (line 139) * differences in awk and gawk, RS/RT variables <3>: Auto-set. (line 348) * differences in awk and gawk, single-character fields: Single Character Fields. (line 6) @@ -35318,7 +35324,7 @@ Index (line 136) * gawk, RT variable in: awk split records. (line 131) * gawk, RT variable in <1>: gawk split records. (line 58) -* gawk, RT variable in <2>: Multiple Line. (line 140) +* gawk, RT variable in <2>: Multiple Line. (line 139) * gawk, RT variable in <3>: Auto-set. (line 348) * gawk, See Also awk: Preface. (line 34) * gawk, source code, obtaining: Getting. (line 6) @@ -35663,7 +35669,7 @@ Index * lint checking, empty programs: Command Line. (line 16) * lint checking, issuing warnings: Options. (line 210) * lint checking, POSIXLY_CORRECT environment variable: Options. - (line 368) + (line 371) * lint checking, undefined functions: Function Caveats. (line 23) * LINT variable: User-modified. (line 90) * Linux: Manual History. (line 28) @@ -35785,6 +35791,7 @@ Index (line 9) * namespaces, qualified names: Qualified Names. (line 6) * naming rules, namespaces and component names: Naming Rules. (line 6) +* Neacsu, Mircea: Other Versions. (line 132) * NetBSD: Glossary. (line 746) * networks, programming: TCP/IP Networking. (line 6) * networks, support for: Special Network. (line 6) @@ -35969,7 +35976,7 @@ Index * patterns, types of: Pattern Overview. (line 15) * pawk (profiling version of Brian Kernighan's awk): Other Versions. (line 78) -* pawk, awk-like facilities for Python: Other Versions. (line 133) +* pawk, awk-like facilities for Python: Other Versions. (line 137) * PC operating systems, gawk on: PC Using. (line 6) * PC operating systems, gawk on, installing: PC Installation. (line 6) * percent sign (%), % operator: Precedence. (line 54) @@ -36024,7 +36031,7 @@ Index * portability, NF variable, decrementing: Changing Fields. (line 115) * portability, operators: Increment Ops. (line 60) * portability, operators, not in POSIX awk: Precedence. (line 97) -* portability, POSIXLY_CORRECT environment variable: Options. (line 388) +* portability, POSIXLY_CORRECT environment variable: Options. (line 391) * portability, substr() function: String Functions. (line 518) * portable object files: Explaining gettext. (line 37) * portable object files <1>: Translator i18n. (line 6) @@ -36076,11 +36083,11 @@ Index * POSIX awk, timestamps and: Time Functions. (line 6) * POSIX awk, | I/O operator and: Getline/Pipe. (line 56) * POSIX mode: Options. (line 282) -* POSIX mode <1>: Options. (line 368) +* POSIX mode <1>: Options. (line 371) * POSIX, awk and: Preface. (line 21) * POSIX, gawk extensions not included in: POSIX/GNU. (line 6) * POSIX, programs, implementing in awk: Clones. (line 6) -* POSIXLY_CORRECT environment variable: Options. (line 368) +* POSIXLY_CORRECT environment variable: Options. (line 371) * PREC variable: User-modified. (line 127) * precedence: Increment Ops. (line 60) * precedence <1>: Precedence. (line 6) @@ -36180,7 +36187,7 @@ Index * pwcat program: Passwd Functions. (line 23) * q debugger command (alias for quit): Miscellaneous Debugger Commands. (line 100) -* QSE awk: Other Versions. (line 139) +* QSE awk: Other Versions. (line 143) * qualified name, definition of: Qualified Names. (line 6) * qualified name, use of: Qualified Names. (line 17) * Quanstrom, Erik: Alarm Program. (line 8) @@ -36189,7 +36196,7 @@ Index (line 107) * question mark (?), regexp operator <1>: GNU Regexp Operators. (line 62) -* QuikTrim Awk: Other Versions. (line 143) +* QuikTrim Awk: Other Versions. (line 147) * quit debugger command: Miscellaneous Debugger Commands. (line 100) * QUIT signal (MS-Windows): Profiling. (line 214) @@ -36352,7 +36359,7 @@ Index * RSTART variable, match() function and: String Functions. (line 228) * RT variable: awk split records. (line 131) * RT variable <1>: gawk split records. (line 58) -* RT variable <2>: Multiple Line. (line 140) +* RT variable <2>: Multiple Line. (line 139) * RT variable <3>: Auto-set. (line 348) * Rubin, Paul: History. (line 30) * Rubin, Paul <1>: Contributors. (line 16) @@ -36526,6 +36533,7 @@ Index * source code, awka: Other Versions. (line 64) * source code, Brian Kernighan's awk: Other Versions. (line 13) * source code, BusyBox Awk: Other Versions. (line 88) +* source code, embeddable awk interpreter: Other Versions. (line 132) * source code, gawk: Gawk Distribution. (line 6) * source code, goawk: Other Versions. (line 113) * source code, Illumos awk: Other Versions. (line 105) @@ -36534,9 +36542,9 @@ Index * source code, mawk: Other Versions. (line 39) * source code, mixing: Options. (line 121) * source code, pawk: Other Versions. (line 78) -* source code, pawk (Python version): Other Versions. (line 133) -* source code, QSE awk: Other Versions. (line 139) -* source code, QuikTrim Awk: Other Versions. (line 143) +* source code, pawk (Python version): Other Versions. (line 137) +* source code, QSE awk: Other Versions. (line 143) +* source code, QuikTrim Awk: Other Versions. (line 147) * source code, Solaris awk: Other Versions. (line 96) * source files, search path for: Programs Exercises. (line 70) * sparse arrays: Array Intro. (line 76) @@ -36924,557 +36932,557 @@ Node: Intro Summary116293 Node: Invoking Gawk117177 Node: Command Line118691 Node: Options119489 -Ref: Options-Footnote-1136567 -Ref: Options-Footnote-2136798 -Node: Other Arguments136823 -Node: Naming Standard Input139770 -Node: Environment Variables140980 -Node: AWKPATH Variable141538 -Ref: AWKPATH Variable-Footnote-1144950 -Ref: AWKPATH Variable-Footnote-2144984 -Node: AWKLIBPATH Variable145245 -Node: Other Environment Variables146903 -Node: Exit Status150724 -Node: Include Files151401 -Node: Loading Shared Libraries155091 -Node: Obsolete156519 -Node: Undocumented157211 -Node: Invoking Summary157508 -Node: Regexp159168 -Node: Regexp Usage160622 -Node: Escape Sequences162659 -Node: Regexp Operators168891 -Node: Regexp Operator Details169376 -Ref: Regexp Operator Details-Footnote-1175498 -Node: Interval Expressions175645 -Ref: Interval Expressions-Footnote-1177080 -Node: Bracket Expressions177178 -Ref: table-char-classes179654 -Node: Leftmost Longest182980 -Node: Computed Regexps184283 -Node: GNU Regexp Operators187710 -Node: Case-sensitivity191389 -Ref: Case-sensitivity-Footnote-1194255 -Ref: Case-sensitivity-Footnote-2194490 -Node: Regexp Summary194598 -Node: Reading Files196064 -Node: Records198333 -Node: awk split records199408 -Node: gawk split records204683 -Ref: gawk split records-Footnote-1209269 -Node: Fields209306 -Node: Nonconstant Fields212047 -Ref: Nonconstant Fields-Footnote-1214283 -Node: Changing Fields214487 -Node: Field Separators220518 -Node: Default Field Splitting223216 -Node: Regexp Field Splitting224334 -Node: Single Character Fields227687 -Node: Command Line Field Separator228747 -Node: Full Line Fields231965 -Ref: Full Line Fields-Footnote-1233487 -Ref: Full Line Fields-Footnote-2233533 -Node: Field Splitting Summary233634 -Node: Constant Size235708 -Node: Fixed width data236440 -Node: Skipping intervening239907 -Node: Allowing trailing data240705 -Node: Fields with fixed data241742 -Node: Splitting By Content243260 -Ref: Splitting By Content-Footnote-1246910 -Node: Testing field creation247073 -Node: Multiple Line248698 -Node: Getline255311 -Node: Plain Getline257780 -Node: Getline/Variable260421 -Node: Getline/File261572 -Node: Getline/Variable/File262960 -Ref: Getline/Variable/File-Footnote-1264565 -Node: Getline/Pipe264653 -Node: Getline/Variable/Pipe267360 -Node: Getline/Coprocess268495 -Node: Getline/Variable/Coprocess269762 -Node: Getline Notes270504 -Node: Getline Summary273301 -Ref: table-getline-variants273725 -Node: Read Timeout274473 -Ref: Read Timeout-Footnote-1278379 -Node: Retrying Input278437 -Node: Command-line directories279636 -Node: Input Summary280542 -Node: Input Exercises283714 -Node: Printing284442 -Node: Print286276 -Node: Print Examples287733 -Node: Output Separators290513 -Node: OFMT292530 -Node: Printf293886 -Node: Basic Printf294671 -Node: Control Letters296245 -Node: Format Modifiers301409 -Node: Printf Examples307424 -Node: Redirection309910 -Node: Special FD316751 -Ref: Special FD-Footnote-1319919 -Node: Special Files319993 -Node: Other Inherited Files320610 -Node: Special Network321611 -Node: Special Caveats322471 -Node: Close Files And Pipes323420 -Ref: table-close-pipe-return-values330327 -Ref: Close Files And Pipes-Footnote-1331140 -Ref: Close Files And Pipes-Footnote-2331288 -Node: Nonfatal331440 -Node: Output Summary333778 -Node: Output Exercises335000 -Node: Expressions335679 -Node: Values336867 -Node: Constants337545 -Node: Scalar Constants338236 -Ref: Scalar Constants-Footnote-1340760 -Node: Nondecimal-numbers341010 -Node: Regexp Constants344011 -Node: Using Constant Regexps344537 -Node: Standard Regexp Constants345159 -Node: Strong Regexp Constants348347 -Node: Variables351305 -Node: Using Variables351962 -Node: Assignment Options353872 -Node: Conversion356339 -Node: Strings And Numbers356863 -Ref: Strings And Numbers-Footnote-1359926 -Node: Locale influences conversions360035 -Ref: table-locale-affects362793 -Node: All Operators363411 -Node: Arithmetic Ops364040 -Node: Concatenation366546 -Ref: Concatenation-Footnote-1369393 -Node: Assignment Ops369500 -Ref: table-assign-ops374491 -Node: Increment Ops375804 -Node: Truth Values and Conditions379264 -Node: Truth Values380338 -Node: Typing and Comparison381386 -Node: Variable Typing382206 -Ref: Variable Typing-Footnote-1388669 -Ref: Variable Typing-Footnote-2388741 -Node: Comparison Operators388818 -Ref: table-relational-ops389237 -Node: POSIX String Comparison392732 -Ref: POSIX String Comparison-Footnote-1394427 -Ref: POSIX String Comparison-Footnote-2394566 -Node: Boolean Ops394650 -Ref: Boolean Ops-Footnote-1399132 -Node: Conditional Exp399224 -Node: Function Calls400960 -Node: Precedence404837 -Node: Locales408496 -Node: Expressions Summary410128 -Node: Patterns and Actions412701 -Node: Pattern Overview413821 -Node: Regexp Patterns415498 -Node: Expression Patterns416040 -Node: Ranges419821 -Node: BEGIN/END422929 -Node: Using BEGIN/END423690 -Ref: Using BEGIN/END-Footnote-1426426 -Node: I/O And BEGIN/END426532 -Node: BEGINFILE/ENDFILE428846 -Node: Empty431759 -Node: Using Shell Variables432076 -Node: Action Overview434350 -Node: Statements436675 -Node: If Statement438523 -Node: While Statement440018 -Node: Do Statement442046 -Node: For Statement443194 -Node: Switch Statement446365 -Node: Break Statement448751 -Node: Continue Statement450843 -Node: Next Statement452670 -Node: Nextfile Statement455053 -Node: Exit Statement457705 -Node: Built-in Variables460108 -Node: User-modified461241 -Node: Auto-set469008 -Ref: Auto-set-Footnote-1485815 -Ref: Auto-set-Footnote-2486021 -Node: ARGC and ARGV486077 -Node: Pattern Action Summary490290 -Node: Arrays492720 -Node: Array Basics494049 -Node: Array Intro494893 -Ref: figure-array-elements496868 -Ref: Array Intro-Footnote-1499572 -Node: Reference to Elements499700 -Node: Assigning Elements502164 -Node: Array Example502655 -Node: Scanning an Array504414 -Node: Controlling Scanning507436 -Ref: Controlling Scanning-Footnote-1512835 -Node: Numeric Array Subscripts513151 -Node: Uninitialized Subscripts515335 -Node: Delete516954 -Ref: Delete-Footnote-1519706 -Node: Multidimensional519763 -Node: Multiscanning522858 -Node: Arrays of Arrays524449 -Node: Arrays Summary529217 -Node: Functions531310 -Node: Built-in532348 -Node: Calling Built-in533429 -Node: Numeric Functions535425 -Ref: Numeric Functions-Footnote-1539453 -Ref: Numeric Functions-Footnote-2540098 -Ref: Numeric Functions-Footnote-3540146 -Node: String Functions540418 -Ref: String Functions-Footnote-1564276 -Ref: String Functions-Footnote-2564404 -Ref: String Functions-Footnote-3564652 -Node: Gory Details564739 -Ref: table-sub-escapes566530 -Ref: table-sub-proposed568049 -Ref: table-posix-sub569412 -Ref: table-gensub-escapes570953 -Ref: Gory Details-Footnote-1571776 -Node: I/O Functions571930 -Ref: table-system-return-values578398 -Ref: I/O Functions-Footnote-1580478 -Ref: I/O Functions-Footnote-2580626 -Node: Time Functions580746 -Ref: Time Functions-Footnote-1591417 -Ref: Time Functions-Footnote-2591485 -Ref: Time Functions-Footnote-3591643 -Ref: Time Functions-Footnote-4591754 -Ref: Time Functions-Footnote-5591866 -Ref: Time Functions-Footnote-6592093 -Node: Bitwise Functions592359 -Ref: table-bitwise-ops592953 -Ref: Bitwise Functions-Footnote-1599016 -Ref: Bitwise Functions-Footnote-2599189 -Node: Type Functions599380 -Node: I18N Functions602131 -Node: User-defined603782 -Node: Definition Syntax604594 -Ref: Definition Syntax-Footnote-1610281 -Node: Function Example610352 -Ref: Function Example-Footnote-1613274 -Node: Function Calling613296 -Node: Calling A Function613884 -Node: Variable Scope614842 -Node: Pass By Value/Reference617836 -Node: Function Caveats620480 -Ref: Function Caveats-Footnote-1622527 -Node: Return Statement622647 -Node: Dynamic Typing625626 -Node: Indirect Calls626556 -Ref: Indirect Calls-Footnote-1636808 -Node: Functions Summary636936 -Node: Library Functions639641 -Ref: Library Functions-Footnote-1643248 -Ref: Library Functions-Footnote-2643391 -Node: Library Names643562 -Ref: Library Names-Footnote-1647229 -Ref: Library Names-Footnote-2647452 -Node: General Functions647538 -Node: Strtonum Function648641 -Node: Assert Function651663 -Node: Round Function654989 -Node: Cliff Random Function656529 -Node: Ordinal Functions657545 -Ref: Ordinal Functions-Footnote-1660608 -Ref: Ordinal Functions-Footnote-2660860 -Node: Join Function661070 -Ref: Join Function-Footnote-1662840 -Node: Getlocaltime Function663040 -Node: Readfile Function666782 -Node: Shell Quoting668759 -Node: Data File Management670160 -Node: Filetrans Function670792 -Node: Rewind Function674888 -Node: File Checking676797 -Ref: File Checking-Footnote-1678131 -Node: Empty Files678332 -Node: Ignoring Assigns680311 -Node: Getopt Function681861 -Ref: Getopt Function-Footnote-1693330 -Node: Passwd Functions693530 -Ref: Passwd Functions-Footnote-1702369 -Node: Group Functions702457 -Ref: Group Functions-Footnote-1710355 -Node: Walking Arrays710562 -Node: Library Functions Summary713570 -Node: Library Exercises714976 -Node: Sample Programs715441 -Node: Running Examples716211 -Node: Clones716939 -Node: Cut Program718163 -Node: Egrep Program728092 -Ref: Egrep Program-Footnote-1735604 -Node: Id Program735714 -Node: Split Program739394 -Ref: Split Program-Footnote-1742852 -Node: Tee Program742981 -Node: Uniq Program745771 -Node: Wc Program753392 -Ref: Wc Program-Footnote-1757647 -Node: Miscellaneous Programs757741 -Node: Dupword Program758954 -Node: Alarm Program760984 -Node: Translate Program765839 -Ref: Translate Program-Footnote-1770404 -Node: Labels Program770674 -Ref: Labels Program-Footnote-1774025 -Node: Word Sorting774109 -Node: History Sorting778181 -Node: Extract Program780016 -Node: Simple Sed788070 -Node: Igawk Program791144 -Ref: Igawk Program-Footnote-1805475 -Ref: Igawk Program-Footnote-2805677 -Ref: Igawk Program-Footnote-3805799 -Node: Anagram Program805914 -Node: Signature Program808976 -Node: Programs Summary810223 -Node: Programs Exercises811437 -Ref: Programs Exercises-Footnote-1815566 -Node: Advanced Features815657 -Node: Nondecimal Data817647 -Node: Array Sorting819238 -Node: Controlling Array Traversal819938 -Ref: Controlling Array Traversal-Footnote-1828306 -Node: Array Sorting Functions828424 -Ref: Array Sorting Functions-Footnote-1833515 -Node: Two-way I/O833711 -Ref: Two-way I/O-Footnote-1841432 -Ref: Two-way I/O-Footnote-2841619 -Node: TCP/IP Networking841701 -Node: Profiling844819 -Node: Advanced Features Summary853837 -Node: Internationalization855681 -Node: I18N and L10N857161 -Node: Explaining gettext857848 -Ref: Explaining gettext-Footnote-1863740 -Ref: Explaining gettext-Footnote-2863925 -Node: Programmer i18n864090 -Ref: Programmer i18n-Footnote-1869039 -Node: Translator i18n869088 -Node: String Extraction869882 -Ref: String Extraction-Footnote-1871014 -Node: Printf Ordering871100 -Ref: Printf Ordering-Footnote-1873886 -Node: I18N Portability873950 -Ref: I18N Portability-Footnote-1876406 -Node: I18N Example876469 -Ref: I18N Example-Footnote-1879744 -Ref: I18N Example-Footnote-2879817 -Node: Gawk I18N879926 -Node: I18N Summary880575 -Node: Debugger881916 -Node: Debugging882916 -Node: Debugging Concepts883357 -Node: Debugging Terms885166 -Node: Awk Debugging887741 -Ref: Awk Debugging-Footnote-1888686 -Node: Sample Debugging Session888818 -Node: Debugger Invocation889352 -Node: Finding The Bug890738 -Node: List of Debugger Commands897212 -Node: Breakpoint Control898545 -Node: Debugger Execution Control902239 -Node: Viewing And Changing Data905601 -Node: Execution Stack909142 -Node: Debugger Info910779 -Node: Miscellaneous Debugger Commands914850 -Node: Readline Support919912 -Node: Limitations920808 -Node: Debugging Summary923362 -Node: Namespaces924641 -Node: Global Namespace925720 -Node: Qualified Names927118 -Node: Default Namespace928117 -Node: Changing The Namespace928858 -Node: Naming Rules930472 -Node: Internal Name Management932320 -Node: Namespace Example933362 -Node: Namespace And Features935924 -Node: Namespace Summary937359 -Node: Arbitrary Precision Arithmetic938836 -Node: Computer Arithmetic940323 -Ref: table-numeric-ranges944089 -Ref: table-floating-point-ranges944582 -Ref: Computer Arithmetic-Footnote-1945240 -Node: Math Definitions945297 -Ref: table-ieee-formats948613 -Ref: Math Definitions-Footnote-1949216 -Node: MPFR features949321 -Node: FP Math Caution951039 -Ref: FP Math Caution-Footnote-1952111 -Node: Inexactness of computations952480 -Node: Inexact representation953440 -Node: Comparing FP Values954800 -Node: Errors accumulate956041 -Node: Getting Accuracy957474 -Node: Try To Round960184 -Node: Setting precision961083 -Ref: table-predefined-precision-strings961780 -Node: Setting the rounding mode963610 -Ref: table-gawk-rounding-modes963984 -Ref: Setting the rounding mode-Footnote-1967915 -Node: Arbitrary Precision Integers968094 -Ref: Arbitrary Precision Integers-Footnote-1971269 -Node: Checking for MPFR971418 -Node: POSIX Floating Point Problems972892 -Ref: POSIX Floating Point Problems-Footnote-1977177 -Node: Floating point summary977215 -Node: Dynamic Extensions979405 -Node: Extension Intro980958 -Node: Plugin License982224 -Node: Extension Mechanism Outline983021 -Ref: figure-load-extension983460 -Ref: figure-register-new-function985025 -Ref: figure-call-new-function986117 -Node: Extension API Description988179 -Node: Extension API Functions Introduction989821 -Ref: table-api-std-headers991657 -Node: General Data Types995522 -Ref: General Data Types-Footnote-11003883 -Node: Memory Allocation Functions1004182 -Ref: Memory Allocation Functions-Footnote-11008392 -Node: Constructor Functions1008491 -Node: Registration Functions1012077 -Node: Extension Functions1012762 -Node: Exit Callback Functions1018084 -Node: Extension Version String1019334 -Node: Input Parsers1019997 -Node: Output Wrappers1032718 -Node: Two-way processors1037230 -Node: Printing Messages1039495 -Ref: Printing Messages-Footnote-11040666 -Node: Updating ERRNO1040819 -Node: Requesting Values1041558 -Ref: table-value-types-returned1042295 -Node: Accessing Parameters1043231 -Node: Symbol Table Access1044466 -Node: Symbol table by name1044978 -Ref: Symbol table by name-Footnote-11048002 -Node: Symbol table by cookie1048130 -Ref: Symbol table by cookie-Footnote-11052315 -Node: Cached values1052379 -Ref: Cached values-Footnote-11055915 -Node: Array Manipulation1056068 -Ref: Array Manipulation-Footnote-11057159 -Node: Array Data Types1057196 -Ref: Array Data Types-Footnote-11059854 -Node: Array Functions1059946 -Node: Flattening Arrays1064444 -Node: Creating Arrays1071420 -Node: Redirection API1076187 -Node: Extension API Variables1079020 -Node: Extension Versioning1079731 -Ref: gawk-api-version1080160 -Node: Extension GMP/MPFR Versioning1081891 -Node: Extension API Informational Variables1083519 -Node: Extension API Boilerplate1084592 -Node: Changes from API V11088566 -Node: Finding Extensions1090138 -Node: Extension Example1090697 -Node: Internal File Description1091495 -Node: Internal File Ops1095575 -Ref: Internal File Ops-Footnote-11106925 -Node: Using Internal File Ops1107065 -Ref: Using Internal File Ops-Footnote-11109448 -Node: Extension Samples1109722 -Node: Extension Sample File Functions1111251 -Node: Extension Sample Fnmatch1118900 -Node: Extension Sample Fork1120387 -Node: Extension Sample Inplace1121605 -Node: Extension Sample Ord1124909 -Node: Extension Sample Readdir1125745 -Ref: table-readdir-file-types1126634 -Node: Extension Sample Revout1127439 -Node: Extension Sample Rev2way1128028 -Node: Extension Sample Read write array1128768 -Node: Extension Sample Readfile1130710 -Node: Extension Sample Time1131805 -Node: Extension Sample API Tests1133153 -Node: gawkextlib1133645 -Node: Extension summary1136563 -Node: Extension Exercises1140265 -Node: Language History1141507 -Node: V7/SVR3.11143163 -Node: SVR41145315 -Node: POSIX1146749 -Node: BTL1148129 -Node: POSIX/GNU1148858 -Node: Feature History1154636 -Node: Common Extensions1170682 -Node: Ranges and Locales1171965 -Ref: Ranges and Locales-Footnote-11176581 -Ref: Ranges and Locales-Footnote-21176608 -Ref: Ranges and Locales-Footnote-31176843 -Node: Contributors1177064 -Node: History summary1183009 -Node: Installation1184389 -Node: Gawk Distribution1185333 -Node: Getting1185817 -Node: Extracting1186780 -Node: Distribution contents1188418 -Node: Unix Installation1194898 -Node: Quick Installation1195580 -Node: Shell Startup Files1197994 -Node: Additional Configuration Options1199083 -Node: Configuration Philosophy1201248 -Node: Non-Unix Installation1203617 -Node: PC Installation1204077 -Node: PC Binary Installation1204915 -Node: PC Compiling1205350 -Node: PC Using1206467 -Node: Cygwin1210020 -Node: MSYS1211119 -Node: VMS Installation1211620 -Node: VMS Compilation1212411 -Ref: VMS Compilation-Footnote-11213640 -Node: VMS Dynamic Extensions1213698 -Node: VMS Installation Details1215383 -Node: VMS Running1217636 -Node: VMS GNV1221915 -Node: VMS Old Gawk1222650 -Node: Bugs1223121 -Node: Bug address1223784 -Node: Usenet1226766 -Node: Maintainers1227770 -Node: Other Versions1229031 -Node: Installation summary1235945 -Node: Notes1237147 -Node: Compatibility Mode1237941 -Node: Additions1238723 -Node: Accessing The Source1239648 -Node: Adding Code1241085 -Node: New Ports1247304 -Node: Derived Files1251679 -Ref: Derived Files-Footnote-11257339 -Ref: Derived Files-Footnote-21257374 -Ref: Derived Files-Footnote-31257972 -Node: Future Extensions1258086 -Node: Implementation Limitations1258744 -Node: Extension Design1259927 -Node: Old Extension Problems1261071 -Ref: Old Extension Problems-Footnote-11262589 -Node: Extension New Mechanism Goals1262646 -Ref: Extension New Mechanism Goals-Footnote-11266010 -Node: Extension Other Design Decisions1266199 -Node: Extension Future Growth1268312 -Node: Notes summary1269148 -Node: Basic Concepts1270306 -Node: Basic High Level1270987 -Ref: figure-general-flow1271269 -Ref: figure-process-flow1271954 -Ref: Basic High Level-Footnote-11275255 -Node: Basic Data Typing1275440 -Node: Glossary1278768 -Node: Copying1310606 -Node: GNU Free Documentation License1348149 -Node: Index1373269 +Ref: Options-Footnote-1136754 +Ref: Options-Footnote-2136985 +Node: Other Arguments137010 +Node: Naming Standard Input139957 +Node: Environment Variables141167 +Node: AWKPATH Variable141725 +Ref: AWKPATH Variable-Footnote-1145137 +Ref: AWKPATH Variable-Footnote-2145171 +Node: AWKLIBPATH Variable145432 +Node: Other Environment Variables147090 +Node: Exit Status150911 +Node: Include Files151588 +Node: Loading Shared Libraries155278 +Node: Obsolete156706 +Node: Undocumented157398 +Node: Invoking Summary157695 +Node: Regexp159355 +Node: Regexp Usage160809 +Node: Escape Sequences162846 +Node: Regexp Operators169078 +Node: Regexp Operator Details169563 +Ref: Regexp Operator Details-Footnote-1175685 +Node: Interval Expressions175832 +Ref: Interval Expressions-Footnote-1177267 +Node: Bracket Expressions177365 +Ref: table-char-classes179841 +Node: Leftmost Longest183167 +Node: Computed Regexps184470 +Node: GNU Regexp Operators187897 +Node: Case-sensitivity191576 +Ref: Case-sensitivity-Footnote-1194442 +Ref: Case-sensitivity-Footnote-2194677 +Node: Regexp Summary194785 +Node: Reading Files196251 +Node: Records198520 +Node: awk split records199595 +Node: gawk split records204870 +Ref: gawk split records-Footnote-1209456 +Node: Fields209493 +Node: Nonconstant Fields212234 +Ref: Nonconstant Fields-Footnote-1214470 +Node: Changing Fields214674 +Node: Field Separators220705 +Node: Default Field Splitting223403 +Node: Regexp Field Splitting224521 +Node: Single Character Fields227874 +Node: Command Line Field Separator228934 +Node: Full Line Fields232152 +Ref: Full Line Fields-Footnote-1233674 +Ref: Full Line Fields-Footnote-2233720 +Node: Field Splitting Summary233821 +Node: Constant Size235895 +Node: Fixed width data236627 +Node: Skipping intervening240094 +Node: Allowing trailing data240892 +Node: Fields with fixed data241929 +Node: Splitting By Content243447 +Ref: Splitting By Content-Footnote-1247097 +Node: Testing field creation247260 +Node: Multiple Line248885 +Node: Getline255162 +Node: Plain Getline257631 +Node: Getline/Variable260272 +Node: Getline/File261423 +Node: Getline/Variable/File262811 +Ref: Getline/Variable/File-Footnote-1264416 +Node: Getline/Pipe264504 +Node: Getline/Variable/Pipe267211 +Node: Getline/Coprocess268346 +Node: Getline/Variable/Coprocess269613 +Node: Getline Notes270355 +Node: Getline Summary273152 +Ref: table-getline-variants273576 +Node: Read Timeout274324 +Ref: Read Timeout-Footnote-1278230 +Node: Retrying Input278288 +Node: Command-line directories279487 +Node: Input Summary280393 +Node: Input Exercises283565 +Node: Printing284293 +Node: Print286127 +Node: Print Examples287584 +Node: Output Separators290364 +Node: OFMT292381 +Node: Printf293737 +Node: Basic Printf294522 +Node: Control Letters296096 +Node: Format Modifiers301260 +Node: Printf Examples307275 +Node: Redirection309761 +Node: Special FD316602 +Ref: Special FD-Footnote-1319770 +Node: Special Files319844 +Node: Other Inherited Files320461 +Node: Special Network321462 +Node: Special Caveats322322 +Node: Close Files And Pipes323271 +Ref: table-close-pipe-return-values330178 +Ref: Close Files And Pipes-Footnote-1330991 +Ref: Close Files And Pipes-Footnote-2331139 +Node: Nonfatal331291 +Node: Output Summary333629 +Node: Output Exercises334851 +Node: Expressions335530 +Node: Values336718 +Node: Constants337396 +Node: Scalar Constants338087 +Ref: Scalar Constants-Footnote-1340611 +Node: Nondecimal-numbers340861 +Node: Regexp Constants343862 +Node: Using Constant Regexps344388 +Node: Standard Regexp Constants345010 +Node: Strong Regexp Constants348198 +Node: Variables351156 +Node: Using Variables351813 +Node: Assignment Options353723 +Node: Conversion356190 +Node: Strings And Numbers356714 +Ref: Strings And Numbers-Footnote-1359777 +Node: Locale influences conversions359886 +Ref: table-locale-affects362644 +Node: All Operators363262 +Node: Arithmetic Ops363891 +Node: Concatenation366397 +Ref: Concatenation-Footnote-1369244 +Node: Assignment Ops369351 +Ref: table-assign-ops374342 +Node: Increment Ops375655 +Node: Truth Values and Conditions379115 +Node: Truth Values380189 +Node: Typing and Comparison381237 +Node: Variable Typing382057 +Ref: Variable Typing-Footnote-1388520 +Ref: Variable Typing-Footnote-2388592 +Node: Comparison Operators388669 +Ref: table-relational-ops389088 +Node: POSIX String Comparison392583 +Ref: POSIX String Comparison-Footnote-1394278 +Ref: POSIX String Comparison-Footnote-2394417 +Node: Boolean Ops394501 +Ref: Boolean Ops-Footnote-1398983 +Node: Conditional Exp399075 +Node: Function Calls400811 +Node: Precedence404688 +Node: Locales408347 +Node: Expressions Summary409979 +Node: Patterns and Actions412552 +Node: Pattern Overview413672 +Node: Regexp Patterns415349 +Node: Expression Patterns415891 +Node: Ranges419672 +Node: BEGIN/END422780 +Node: Using BEGIN/END423541 +Ref: Using BEGIN/END-Footnote-1426277 +Node: I/O And BEGIN/END426383 +Node: BEGINFILE/ENDFILE428697 +Node: Empty431610 +Node: Using Shell Variables431927 +Node: Action Overview434201 +Node: Statements436526 +Node: If Statement438374 +Node: While Statement439869 +Node: Do Statement441897 +Node: For Statement443045 +Node: Switch Statement446216 +Node: Break Statement448602 +Node: Continue Statement450694 +Node: Next Statement452521 +Node: Nextfile Statement454904 +Node: Exit Statement457556 +Node: Built-in Variables459959 +Node: User-modified461092 +Node: Auto-set468859 +Ref: Auto-set-Footnote-1485666 +Ref: Auto-set-Footnote-2485872 +Node: ARGC and ARGV485928 +Node: Pattern Action Summary490141 +Node: Arrays492571 +Node: Array Basics493900 +Node: Array Intro494744 +Ref: figure-array-elements496719 +Ref: Array Intro-Footnote-1499423 +Node: Reference to Elements499551 +Node: Assigning Elements502015 +Node: Array Example502506 +Node: Scanning an Array504265 +Node: Controlling Scanning507287 +Ref: Controlling Scanning-Footnote-1512686 +Node: Numeric Array Subscripts513002 +Node: Uninitialized Subscripts515186 +Node: Delete516805 +Ref: Delete-Footnote-1519557 +Node: Multidimensional519614 +Node: Multiscanning522709 +Node: Arrays of Arrays524300 +Node: Arrays Summary529068 +Node: Functions531161 +Node: Built-in532199 +Node: Calling Built-in533280 +Node: Numeric Functions535276 +Ref: Numeric Functions-Footnote-1539304 +Ref: Numeric Functions-Footnote-2539949 +Ref: Numeric Functions-Footnote-3539997 +Node: String Functions540269 +Ref: String Functions-Footnote-1564127 +Ref: String Functions-Footnote-2564255 +Ref: String Functions-Footnote-3564503 +Node: Gory Details564590 +Ref: table-sub-escapes566381 +Ref: table-sub-proposed567900 +Ref: table-posix-sub569263 +Ref: table-gensub-escapes570804 +Ref: Gory Details-Footnote-1571627 +Node: I/O Functions571781 +Ref: table-system-return-values578249 +Ref: I/O Functions-Footnote-1580329 +Ref: I/O Functions-Footnote-2580477 +Node: Time Functions580597 +Ref: Time Functions-Footnote-1591268 +Ref: Time Functions-Footnote-2591336 +Ref: Time Functions-Footnote-3591494 +Ref: Time Functions-Footnote-4591605 +Ref: Time Functions-Footnote-5591717 +Ref: Time Functions-Footnote-6591944 +Node: Bitwise Functions592210 +Ref: table-bitwise-ops592804 +Ref: Bitwise Functions-Footnote-1598867 +Ref: Bitwise Functions-Footnote-2599040 +Node: Type Functions599231 +Node: I18N Functions601982 +Node: User-defined603633 +Node: Definition Syntax604445 +Ref: Definition Syntax-Footnote-1610132 +Node: Function Example610203 +Ref: Function Example-Footnote-1613125 +Node: Function Calling613147 +Node: Calling A Function613735 +Node: Variable Scope614693 +Node: Pass By Value/Reference617687 +Node: Function Caveats620331 +Ref: Function Caveats-Footnote-1622378 +Node: Return Statement622498 +Node: Dynamic Typing625477 +Node: Indirect Calls626407 +Ref: Indirect Calls-Footnote-1636659 +Node: Functions Summary636787 +Node: Library Functions639492 +Ref: Library Functions-Footnote-1643099 +Ref: Library Functions-Footnote-2643242 +Node: Library Names643413 +Ref: Library Names-Footnote-1647080 +Ref: Library Names-Footnote-2647303 +Node: General Functions647389 +Node: Strtonum Function648492 +Node: Assert Function651514 +Node: Round Function654840 +Node: Cliff Random Function656380 +Node: Ordinal Functions657396 +Ref: Ordinal Functions-Footnote-1660459 +Ref: Ordinal Functions-Footnote-2660711 +Node: Join Function660921 +Ref: Join Function-Footnote-1662691 +Node: Getlocaltime Function662891 +Node: Readfile Function666633 +Node: Shell Quoting668610 +Node: Data File Management670011 +Node: Filetrans Function670643 +Node: Rewind Function674739 +Node: File Checking676648 +Ref: File Checking-Footnote-1677982 +Node: Empty Files678183 +Node: Ignoring Assigns680162 +Node: Getopt Function681712 +Ref: Getopt Function-Footnote-1693181 +Node: Passwd Functions693381 +Ref: Passwd Functions-Footnote-1702220 +Node: Group Functions702308 +Ref: Group Functions-Footnote-1710206 +Node: Walking Arrays710413 +Node: Library Functions Summary713421 +Node: Library Exercises714827 +Node: Sample Programs715292 +Node: Running Examples716062 +Node: Clones716790 +Node: Cut Program718014 +Node: Egrep Program727943 +Ref: Egrep Program-Footnote-1735455 +Node: Id Program735565 +Node: Split Program739245 +Ref: Split Program-Footnote-1742703 +Node: Tee Program742832 +Node: Uniq Program745622 +Node: Wc Program753243 +Ref: Wc Program-Footnote-1757498 +Node: Miscellaneous Programs757592 +Node: Dupword Program758805 +Node: Alarm Program760835 +Node: Translate Program765690 +Ref: Translate Program-Footnote-1770255 +Node: Labels Program770525 +Ref: Labels Program-Footnote-1773876 +Node: Word Sorting773960 +Node: History Sorting778032 +Node: Extract Program779867 +Node: Simple Sed787921 +Node: Igawk Program790995 +Ref: Igawk Program-Footnote-1805326 +Ref: Igawk Program-Footnote-2805528 +Ref: Igawk Program-Footnote-3805650 +Node: Anagram Program805765 +Node: Signature Program808827 +Node: Programs Summary810074 +Node: Programs Exercises811288 +Ref: Programs Exercises-Footnote-1815417 +Node: Advanced Features815508 +Node: Nondecimal Data817498 +Node: Array Sorting819089 +Node: Controlling Array Traversal819789 +Ref: Controlling Array Traversal-Footnote-1828157 +Node: Array Sorting Functions828275 +Ref: Array Sorting Functions-Footnote-1833366 +Node: Two-way I/O833562 +Ref: Two-way I/O-Footnote-1841283 +Ref: Two-way I/O-Footnote-2841470 +Node: TCP/IP Networking841552 +Node: Profiling844670 +Node: Advanced Features Summary853688 +Node: Internationalization855532 +Node: I18N and L10N857012 +Node: Explaining gettext857699 +Ref: Explaining gettext-Footnote-1863591 +Ref: Explaining gettext-Footnote-2863776 +Node: Programmer i18n863941 +Ref: Programmer i18n-Footnote-1868890 +Node: Translator i18n868939 +Node: String Extraction869733 +Ref: String Extraction-Footnote-1870865 +Node: Printf Ordering870951 +Ref: Printf Ordering-Footnote-1873737 +Node: I18N Portability873801 +Ref: I18N Portability-Footnote-1876257 +Node: I18N Example876320 +Ref: I18N Example-Footnote-1879595 +Ref: I18N Example-Footnote-2879668 +Node: Gawk I18N879777 +Node: I18N Summary880426 +Node: Debugger881767 +Node: Debugging882767 +Node: Debugging Concepts883208 +Node: Debugging Terms885017 +Node: Awk Debugging887592 +Ref: Awk Debugging-Footnote-1888537 +Node: Sample Debugging Session888669 +Node: Debugger Invocation889203 +Node: Finding The Bug890589 +Node: List of Debugger Commands897063 +Node: Breakpoint Control898396 +Node: Debugger Execution Control902090 +Node: Viewing And Changing Data905452 +Node: Execution Stack908993 +Node: Debugger Info910630 +Node: Miscellaneous Debugger Commands914701 +Node: Readline Support919763 +Node: Limitations920659 +Node: Debugging Summary923213 +Node: Namespaces924492 +Node: Global Namespace925571 +Node: Qualified Names926969 +Node: Default Namespace927968 +Node: Changing The Namespace928709 +Node: Naming Rules930323 +Node: Internal Name Management932171 +Node: Namespace Example933213 +Node: Namespace And Features935775 +Node: Namespace Summary937210 +Node: Arbitrary Precision Arithmetic938687 +Node: Computer Arithmetic940174 +Ref: table-numeric-ranges943940 +Ref: table-floating-point-ranges944433 +Ref: Computer Arithmetic-Footnote-1945091 +Node: Math Definitions945148 +Ref: table-ieee-formats948464 +Ref: Math Definitions-Footnote-1949067 +Node: MPFR features949172 +Node: FP Math Caution950890 +Ref: FP Math Caution-Footnote-1951962 +Node: Inexactness of computations952331 +Node: Inexact representation953291 +Node: Comparing FP Values954651 +Node: Errors accumulate955892 +Node: Getting Accuracy957325 +Node: Try To Round960035 +Node: Setting precision960934 +Ref: table-predefined-precision-strings961631 +Node: Setting the rounding mode963461 +Ref: table-gawk-rounding-modes963835 +Ref: Setting the rounding mode-Footnote-1967766 +Node: Arbitrary Precision Integers967945 +Ref: Arbitrary Precision Integers-Footnote-1971120 +Node: Checking for MPFR971269 +Node: POSIX Floating Point Problems972743 +Ref: POSIX Floating Point Problems-Footnote-1977028 +Node: Floating point summary977066 +Node: Dynamic Extensions979256 +Node: Extension Intro980809 +Node: Plugin License982075 +Node: Extension Mechanism Outline982872 +Ref: figure-load-extension983311 +Ref: figure-register-new-function984876 +Ref: figure-call-new-function985968 +Node: Extension API Description988030 +Node: Extension API Functions Introduction989672 +Ref: table-api-std-headers991508 +Node: General Data Types995373 +Ref: General Data Types-Footnote-11003734 +Node: Memory Allocation Functions1004033 +Ref: Memory Allocation Functions-Footnote-11008243 +Node: Constructor Functions1008342 +Node: Registration Functions1011928 +Node: Extension Functions1012613 +Node: Exit Callback Functions1017935 +Node: Extension Version String1019185 +Node: Input Parsers1019848 +Node: Output Wrappers1032569 +Node: Two-way processors1037081 +Node: Printing Messages1039346 +Ref: Printing Messages-Footnote-11040517 +Node: Updating ERRNO1040670 +Node: Requesting Values1041409 +Ref: table-value-types-returned1042146 +Node: Accessing Parameters1043082 +Node: Symbol Table Access1044317 +Node: Symbol table by name1044829 +Ref: Symbol table by name-Footnote-11047853 +Node: Symbol table by cookie1047981 +Ref: Symbol table by cookie-Footnote-11052166 +Node: Cached values1052230 +Ref: Cached values-Footnote-11055766 +Node: Array Manipulation1055919 +Ref: Array Manipulation-Footnote-11057010 +Node: Array Data Types1057047 +Ref: Array Data Types-Footnote-11059705 +Node: Array Functions1059797 +Node: Flattening Arrays1064295 +Node: Creating Arrays1071271 +Node: Redirection API1076038 +Node: Extension API Variables1078871 +Node: Extension Versioning1079582 +Ref: gawk-api-version1080011 +Node: Extension GMP/MPFR Versioning1081742 +Node: Extension API Informational Variables1083370 +Node: Extension API Boilerplate1084443 +Node: Changes from API V11088417 +Node: Finding Extensions1089989 +Node: Extension Example1090548 +Node: Internal File Description1091346 +Node: Internal File Ops1095426 +Ref: Internal File Ops-Footnote-11106776 +Node: Using Internal File Ops1106916 +Ref: Using Internal File Ops-Footnote-11109299 +Node: Extension Samples1109573 +Node: Extension Sample File Functions1111102 +Node: Extension Sample Fnmatch1118751 +Node: Extension Sample Fork1120238 +Node: Extension Sample Inplace1121456 +Node: Extension Sample Ord1124760 +Node: Extension Sample Readdir1125596 +Ref: table-readdir-file-types1126485 +Node: Extension Sample Revout1127290 +Node: Extension Sample Rev2way1127879 +Node: Extension Sample Read write array1128619 +Node: Extension Sample Readfile1130561 +Node: Extension Sample Time1131656 +Node: Extension Sample API Tests1133004 +Node: gawkextlib1133496 +Node: Extension summary1136414 +Node: Extension Exercises1140116 +Node: Language History1141358 +Node: V7/SVR3.11143014 +Node: SVR41145166 +Node: POSIX1146600 +Node: BTL1147980 +Node: POSIX/GNU1148709 +Node: Feature History1154487 +Node: Common Extensions1170533 +Node: Ranges and Locales1171816 +Ref: Ranges and Locales-Footnote-11176432 +Ref: Ranges and Locales-Footnote-21176459 +Ref: Ranges and Locales-Footnote-31176694 +Node: Contributors1176915 +Node: History summary1182860 +Node: Installation1184240 +Node: Gawk Distribution1185184 +Node: Getting1185668 +Node: Extracting1186631 +Node: Distribution contents1188269 +Node: Unix Installation1194749 +Node: Quick Installation1195431 +Node: Shell Startup Files1197845 +Node: Additional Configuration Options1198934 +Node: Configuration Philosophy1201099 +Node: Non-Unix Installation1203468 +Node: PC Installation1203928 +Node: PC Binary Installation1204766 +Node: PC Compiling1205201 +Node: PC Using1206318 +Node: Cygwin1209871 +Node: MSYS1210970 +Node: VMS Installation1211471 +Node: VMS Compilation1212262 +Ref: VMS Compilation-Footnote-11213491 +Node: VMS Dynamic Extensions1213549 +Node: VMS Installation Details1215234 +Node: VMS Running1217487 +Node: VMS GNV1221766 +Node: VMS Old Gawk1222501 +Node: Bugs1222972 +Node: Bug address1223635 +Node: Usenet1226617 +Node: Maintainers1227621 +Node: Other Versions1228882 +Node: Installation summary1235970 +Node: Notes1237172 +Node: Compatibility Mode1237966 +Node: Additions1238748 +Node: Accessing The Source1239673 +Node: Adding Code1241110 +Node: New Ports1247329 +Node: Derived Files1251704 +Ref: Derived Files-Footnote-11257364 +Ref: Derived Files-Footnote-21257399 +Ref: Derived Files-Footnote-31257997 +Node: Future Extensions1258111 +Node: Implementation Limitations1258769 +Node: Extension Design1259952 +Node: Old Extension Problems1261096 +Ref: Old Extension Problems-Footnote-11262614 +Node: Extension New Mechanism Goals1262671 +Ref: Extension New Mechanism Goals-Footnote-11266035 +Node: Extension Other Design Decisions1266224 +Node: Extension Future Growth1268337 +Node: Notes summary1269173 +Node: Basic Concepts1270331 +Node: Basic High Level1271012 +Ref: figure-general-flow1271294 +Ref: figure-process-flow1271979 +Ref: Basic High Level-Footnote-11275280 +Node: Basic Data Typing1275465 +Node: Glossary1278793 +Node: Copying1310631 +Node: GNU Free Documentation License1348174 +Node: Index1373294 End Tag Table diff --git a/doc/gawk.texi b/doc/gawk.texi index 21670d57..4b146a52 100644 --- a/doc/gawk.texi +++ b/doc/gawk.texi @@ -4340,9 +4340,12 @@ As with @option{-f}, the @option{-e} and @option{-i} options may also be used multiple times on the command line. @cindex @option{-e} option -If no @option{-f} or @option{-e} option is specified, then @command{gawk} -uses the first nonoption command-line argument as the text of the -program source code. +If no @option{-f} option (or @option{-e} option for @command{gawk}) +is specified, then @command{awk} uses the first nonoption command-line +argument as the text of the program source code. Arguments on +the command line that follow the program text are entered into the +@code{ARGV} array; @command{awk} does @emph{not} continue to parse the +command line looking for options. @cindex @env{POSIXLY_CORRECT} environment variable @cindex lint checking, @env{POSIXLY_CORRECT} environment variable @@ -8315,7 +8318,7 @@ this special feature should apply when @code{FS} is a regexp. However, Unix @command{awk} has never behaved that way, nor has @command{gawk}. This is essentially a bug in POSIX. @c Noted as of 4/2019; working to get the standard fixed. -@end NOTE +@end quotation The original motivation for this special exception was probably to provide useful behavior in the default case (i.e., @code{FS} is equal @@ -41601,6 +41604,13 @@ This is an embeddable @command{awk} interpreter derived from @command{mawk}. For more information, see @uref{http://repo.hu/projects/libmawk/}. +@cindex source code, embeddable @command{awk} interpreter +@cindex Neacsu, Mircea +@item Mircea Neacsu's Embeddable @command{awk} +Mircea Neacsu has created an embeddable @command{awk} +interpreter, based on BWK awk. It's available +at @uref{https://github.com/neacsum/awk}. + @item @code{pawk} @cindex source code, @command{pawk} (Python version) @cindex @code{pawk}, @command{awk}-like facilities for Python diff --git a/doc/gawktexi.in b/doc/gawktexi.in index e986d033..757fb4c0 100644 --- a/doc/gawktexi.in +++ b/doc/gawktexi.in @@ -4250,9 +4250,12 @@ As with @option{-f}, the @option{-e} and @option{-i} options may also be used multiple times on the command line. @cindex @option{-e} option -If no @option{-f} or @option{-e} option is specified, then @command{gawk} -uses the first nonoption command-line argument as the text of the -program source code. +If no @option{-f} option (or @option{-e} option for @command{gawk}) +is specified, then @command{awk} uses the first nonoption command-line +argument as the text of the program source code. Arguments on +the command line that follow the program text are entered into the +@code{ARGV} array; @command{awk} does @emph{not} continue to parse the +command line looking for options. @cindex @env{POSIXLY_CORRECT} environment variable @cindex lint checking, @env{POSIXLY_CORRECT} environment variable @@ -7913,7 +7916,7 @@ this special feature should apply when @code{FS} is a regexp. However, Unix @command{awk} has never behaved that way, nor has @command{gawk}. This is essentially a bug in POSIX. @c Noted as of 4/2019; working to get the standard fixed. -@end NOTE +@end quotation The original motivation for this special exception was probably to provide useful behavior in the default case (i.e., @code{FS} is equal @@ -40574,6 +40577,13 @@ This is an embeddable @command{awk} interpreter derived from @command{mawk}. For more information, see @uref{http://repo.hu/projects/libmawk/}. +@cindex source code, embeddable @command{awk} interpreter +@cindex Neacsu, Mircea +@item Mircea Neacsu's Embeddable @command{awk} +Mircea Neacsu has created an embeddable @command{awk} +interpreter, based on BWK awk. It's available +at @uref{https://github.com/neacsum/awk}. + @item @code{pawk} @cindex source code, @command{pawk} (Python version) @cindex @code{pawk}, @command{awk}-like facilities for Python diff --git a/interpret.h b/interpret.h index cc6e02af..478dc82a 100644 --- a/interpret.h +++ b/interpret.h @@ -46,7 +46,6 @@ unfield(NODE **l, NODE **r) (*l) = dupnode(*r); DEREF(*r); } - force_string(*l); } #define UNFIELD(l, r) unfield(& (l), & (r)) @@ -729,6 +728,8 @@ mod: unref(*lhs); r = POP_SCALAR(); UNFIELD(*lhs, r); + /* field variables need the string representation: */ + force_string(*lhs); } break; |