diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2022-02-22 20:32:05 +0200 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2022-02-22 20:32:05 +0200 |
commit | d330a2bdc9d6892dc55ce8f5d299196f32ab1003 (patch) | |
tree | f5a95b6ab6d34679192183bad8fee26ddf2ca994 | |
parent | f8f77e08c471d62bb462db5498f1980c564cdc78 (diff) | |
download | egawk-d330a2bdc9d6892dc55ce8f5d299196f32ab1003.tar.gz egawk-d330a2bdc9d6892dc55ce8f5d299196f32ab1003.tar.bz2 egawk-d330a2bdc9d6892dc55ce8f5d299196f32ab1003.zip |
Enable interval expressions for --traditional. Update docs.
-rw-r--r-- | ChangeLog | 11 | ||||
-rw-r--r-- | NEWS | 4 | ||||
-rw-r--r-- | doc/ChangeLog | 5 | ||||
-rw-r--r-- | doc/awkcard.in | 3 | ||||
-rw-r--r-- | doc/gawk.info | 1199 | ||||
-rw-r--r-- | doc/gawk.texi | 19 | ||||
-rw-r--r-- | doc/gawktexi.in | 19 | ||||
-rw-r--r-- | main.c | 10 | ||||
-rw-r--r-- | re.c | 12 |
9 files changed, 655 insertions, 627 deletions
@@ -1,5 +1,16 @@ 2022-02-22 Arnold D. Robbins <arnold@skeeve.com> + Enable interval expressions even for --traditional, as BWK + awk has supported them since 2019. + + * NEWS: Updated. + * main.c (main): Add lint warning for --re-interval. + (parse_args): Add explanatory comment. + * re.c (resetup): Update the comment w.r.t. interval expressions. + Change the test for enabled them to if do_traditional. + +2022-02-22 Arnold D. Robbins <arnold@skeeve.com> + Fix resource links found by Coverity. Thanks to Jakub Martisko <jamartis@redhat.com> for the report. @@ -24,6 +24,10 @@ Boolean. This is mainly for use with data exchange to/from languages or environments that support real Boolean values. See the manual for details. +5. As BWK awk has supported interval expressions since 2019, they are +now enabled even if --traditional is supplied. The -r/--re-interval option +remains, but it does nothing. + Changes from 5.1.1 to 5.1.2 --------------------------- diff --git a/doc/ChangeLog b/doc/ChangeLog index 04bec844..1f535624 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,3 +1,8 @@ +2022-02-22 Arnold D. Robbins <arnold@skeeve.com> + + * awkcard.in: Update --re-interval description. + * gawktexi.in: Ditto, in all relevant places. + 2022-02-07 Arnold D. Robbins <arnold@skeeve.com> * gawktexi.in (Indirect Calls): Expand discussion of calling diff --git a/doc/awkcard.in b/doc/awkcard.in index f83cec63..76ae9f27 100644 --- a/doc/awkcard.in +++ b/doc/awkcard.in @@ -304,8 +304,7 @@ The profile contains execution counts in the left margin. .TI "\*(FC\-P\*(FR, \*(FC\-\^\-posix\*(FR Disable common and GNU extensions. .TI "\*(FC\-r\*(FR, \*(FC\-\^\-re\-interval\*(FR -Enable \*(FIinterval expressions\*(FR. -(Needed with \*(FC\-c\*(FR.)\*(CB +Does nothing; for backwards compatibility only.\*(CB .in -4n .EB "\s+2\f(HBCOMMAND LINE ARGUMENTS (\*(GK\f(HB)\*(FR\s0" diff --git a/doc/gawk.info b/doc/gawk.info index 0be3deca..f424ef99 100644 --- a/doc/gawk.info +++ b/doc/gawk.info @@ -2821,8 +2821,7 @@ The following list describes options mandated by the POSIX standard: '--re-interval' Allow interval expressions (*note Regexp Operators::) in regexps. This is now 'gawk''s default behavior. Nevertheless, this option - remains (both for backward compatibility and for use in combination - with '--traditional'). + remains for backward compatibility. '-s' '--no-optimize' @@ -3993,9 +3992,8 @@ stand for themselves. As mentioned, interval expressions were not traditionally available in 'awk'. In March of 2019, BWK 'awk' (finally) acquired them. -Nonetheless, because they were not available for so many decades, 'gawk' -continues to not supply them when in compatibility mode (*note -Options::). +Starting with version 5.2, 'gawk''s '--traditional' option no longer +disables interval expressions in regular expressions. POSIX says that interval expressions containing repetition counts greater than 255 produce unspecified results. @@ -4336,16 +4334,15 @@ No options '--traditional' Match traditional Unix 'awk' regexps. The GNU operators are not - special, and interval expressions are not available. Because BWK - 'awk' supports them, the POSIX character classes ('[[:alnum:]]', - etc.) are available. Characters described by octal and + special. Because BWK 'awk' supports them, the POSIX character + classes ('[[:alnum:]]', etc.) are available. So too, interval + expressions are allowed. Characters described by octal and hexadecimal escape sequences are treated literally, even if they represent regexp metacharacters. '--re-interval' - Allow interval expressions in regexps, if '--traditional' has been - provided. Otherwise, interval expressions are available by - default. + This option remains for backwards compatibility but no longer has + any real effect. File: gawk.info, Node: Case-sensitivity, Next: Regexp Summary, Prev: GNU Regexp Operators, Up: Regexp @@ -35294,7 +35291,7 @@ Index * + (plus sign), += operator <1>: Precedence. (line 94) * , (comma), in range patterns: Ranges. (line 6) * - (hyphen), file names beginning with: Options. (line 63) -* - (hyphen), -- end of options marker: Options. (line 348) +* - (hyphen), -- end of options marker: Options. (line 347) * - (hyphen), in bracket expressions: Bracket Expressions. (line 25) * - (hyphen), -= operator: Assignment Ops. (line 129) * - (hyphen), -- operator: Increment Ops. (line 48) @@ -35330,9 +35327,9 @@ Index * --include option: Options. (line 180) * --lint option: Command Line. (line 20) * --lint option <1>: Options. (line 215) -* --lint-old option: Options. (line 338) +* --lint-old option: Options. (line 337) * --load option: Options. (line 203) -* --no-optimize option: Options. (line 323) +* --no-optimize option: Options. (line 322) * --non-decimal-data option: Options. (line 248) * --non-decimal-data option <1>: Nondecimal Data. (line 6) * --non-decimal-data option, strtonum() function and: Nondecimal Data. @@ -35344,7 +35341,7 @@ Index * --profile option: Options. (line 283) * --profile option <1>: Profiling. (line 12) * --re-interval option: Options. (line 316) -* --sandbox option: Options. (line 328) +* --sandbox option: Options. (line 327) * --sandbox option, input redirection with getline: Getline. (line 19) * --sandbox option, output redirection with print, printf: Redirection. (line 6) @@ -35355,7 +35352,7 @@ Index * --traditional option: Options. (line 85) * --traditional option, --posix option and: Options. (line 310) * --use-lc-numeric option: Options. (line 257) -* --version option: Options. (line 343) +* --version option: Options. (line 342) * -b option: Options. (line 72) * -c option: Options. (line 85) * -C option: Options. (line 92) @@ -35363,12 +35360,12 @@ Index * -D option: Options. (line 111) * -e option: Options. (line 120) * -E option: Options. (line 146) -* -e option <1>: Options. (line 384) +* -e option <1>: Options. (line 383) * -f option: Long. (line 12) * -F option: Options. (line 21) * -f option <1>: Options. (line 25) -* -F option, -Ft sets FS to TAB: Options. (line 356) -* -f option, multiple uses: Options. (line 361) +* -F option, -Ft sets FS to TAB: Options. (line 355) +* -f option, multiple uses: Options. (line 360) * -F option, command-line: Command Line Field Separator. (line 6) * -g option: Options. (line 168) @@ -35377,7 +35374,7 @@ Index * -I option: Options. (line 197) * -l option: Options. (line 203) * -l option <1>: Options. (line 215) -* -L option: Options. (line 338) +* -L option: Options. (line 337) * -M option: Options. (line 242) * -n option: Options. (line 248) * -N option: Options. (line 257) @@ -35386,10 +35383,10 @@ Index * -p option: Options. (line 283) * -P option: Options. (line 295) * -r option: Options. (line 316) -* -s option: Options. (line 323) -* -S option: Options. (line 328) +* -s option: Options. (line 322) +* -S option: Options. (line 327) * -v option: Options. (line 36) -* -V option: Options. (line 343) +* -V option: Options. (line 342) * -v option <1>: Assignment Options. (line 12) * -W option: Options. (line 50) * . (period), regexp operator: Regexp Operator Details. @@ -35625,7 +35622,7 @@ Index * arguments, command-line <1>: Auto-set. (line 15) * arguments, command-line <2>: ARGC and ARGV. (line 6) * arguments, processing: Getopt Function. (line 6) -* ARGV array: Options. (line 328) +* ARGV array: Options. (line 327) * ARGV array, indexing into: Other Arguments. (line 21) * arithmetic operators: Arithmetic Ops. (line 6) * array manipulation in extensions: Array Manipulation. (line 6) @@ -35997,6 +35994,8 @@ Index * built-in functions: Functions. (line 6) * built-in functions, evaluation order: Calling Built-in. (line 30) * BusyBox Awk: Other Versions. (line 92) +* BWK awk, interval expressions in: Interval Expressions. + (line 27) * bytes, counting: Wc Program. (line 6) * C library functions, assert(): Assert Function. (line 6) * C library functions, getopt(): Getopt Function. (line 15) @@ -36197,7 +36196,7 @@ Index * cosine: Numeric Functions. (line 15) * counting words, lines, characters, and bytes: Wc Program. (line 6) * csh utility: Statements/Lines. (line 45) -* csh utility, POSIXLY_CORRECT environment variable: Options. (line 405) +* csh utility, POSIXLY_CORRECT environment variable: Options. (line 404) * csh utility, |& operator, comparison with: Two-way I/O. (line 27) * CSV (comma separated values) data, parsing with FPAT: Splitting By Content. (line 20) @@ -36579,7 +36578,7 @@ Index * effective group ID of gawk user: Auto-set. (line 172) * effective user ID of gawk user: Auto-set. (line 180) * Eggert, Paul: Interval Expressions. - (line 36) + (line 35) * egrep utility: Bracket Expressions. (line 34) * egrep utility <1>: Egrep Program. (line 6) * egrep.awk program: Egrep Program. (line 76) @@ -36628,7 +36627,7 @@ Index * endpwent() user-defined function: Passwd Functions. (line 210) * English, Steve: Advanced Features. (line 6) * ENVIRON array: Auto-set. (line 59) -* environment variables, POSIXLY_CORRECT: Options. (line 390) +* environment variables, POSIXLY_CORRECT: Options. (line 389) * environment variables, used by gawk: Environment Variables. (line 6) * environment variables, AWKPATH: AWKPATH Variable. (line 6) @@ -36997,7 +36996,7 @@ Index * gawk, awk and <1>: This Manual. (line 14) * gawk, newlines in: Statements/Lines. (line 12) * gawk, extensions, disabling: Options. (line 295) -* gawk, version of, printing information about: Options. (line 343) +* gawk, version of, printing information about: Options. (line 342) * gawk, ARGIND variable in: Other Arguments. (line 21) * gawk, PROCINFO array in: Other Arguments. (line 21) * gawk, escape sequences: Escape Sequences. (line 120) @@ -37207,7 +37206,7 @@ Index * Hughes, Phil: Acknowledgments. (line 43) * HUP signal, for dynamic profiling: Profiling. (line 217) * hyphen (-), file names beginning with: Options. (line 63) -* hyphen (-), -- end of options marker: Options. (line 348) +* hyphen (-), -- end of options marker: Options. (line 347) * hyphen (-), in bracket expressions: Bracket Expressions. (line 25) * hyphen (-), -= operator: Assignment Ops. (line 129) * hyphen (-), -- operator: Increment Ops. (line 48) @@ -37431,7 +37430,7 @@ Index * lint checking, empty programs: Command Line. (line 16) * lint checking, issuing warnings: Options. (line 215) * lint checking, POSIXLY_CORRECT environment variable: Options. - (line 390) + (line 389) * lint checking: User-modified. (line 90) * lint checking, array subscripts: Uninitialized Subscripts. (line 43) @@ -37777,7 +37776,7 @@ Index * portability, #! (executable scripts): Executable Scripts. (line 29) * portability, ARGV variable: Executable Scripts. (line 55) * portability, backslash continuation and: Statements/Lines. (line 30) -* portability, POSIXLY_CORRECT environment variable: Options. (line 410) +* portability, POSIXLY_CORRECT environment variable: Options. (line 409) * portability: Escape Sequences. (line 103) * portability, backslash in escape sequences: Escape Sequences. (line 108) @@ -37854,7 +37853,7 @@ Index * POSIX awk, function keyword in: Definition Syntax. (line 99) * POSIX awk, changes in awk versions: POSIX. (line 6) * POSIX mode: Options. (line 295) -* POSIX mode <1>: Options. (line 390) +* POSIX mode <1>: Options. (line 389) * POSIX mode <2>: Regexp Operator Details. (line 47) * POSIX mode <3>: Input Summary. (line 69) @@ -37874,7 +37873,7 @@ Index * POSIX mode <12>: POSIX Floating Point Problems. (line 83) * POSIX mode <13>: Feature History. (line 315) -* POSIXLY_CORRECT environment variable: Options. (line 390) +* POSIXLY_CORRECT environment variable: Options. (line 389) * PREC variable: User-modified. (line 126) * precedence, regexp operators: Regexp Operator Details. (line 137) @@ -38158,7 +38157,7 @@ Index (line 68) * sample debugging session: Sample Debugging Session. (line 6) -* sandbox mode: Options. (line 328) +* sandbox mode: Options. (line 327) * save debugger options: Debugger Info. (line 85) * scalar or array: Type Functions. (line 11) * scalar values: Basic Data Typing. (line 13) @@ -38780,572 +38779,572 @@ Node: Intro Summary118206 Node: Invoking Gawk119090 Node: Command Line120604 Node: Options121402 -Ref: Options-Footnote-1139316 -Ref: Options-Footnote-2139547 -Node: Other Arguments139572 -Node: Naming Standard Input143583 -Node: Environment Variables144793 -Node: AWKPATH Variable145351 -Ref: AWKPATH Variable-Footnote-1148763 -Ref: AWKPATH Variable-Footnote-2148797 -Node: AWKLIBPATH Variable149168 -Ref: AWKLIBPATH Variable-Footnote-1150865 -Node: Other Environment Variables151240 -Node: Exit Status155192 -Node: Include Files155869 -Node: Loading Shared Libraries159559 -Node: Obsolete160987 -Node: Undocumented161679 -Node: Invoking Summary161976 -Node: Regexp164817 -Node: Regexp Usage166271 -Node: Escape Sequences168308 -Node: Regexp Operators174549 -Node: Regexp Operator Details175034 -Ref: Regexp Operator Details-Footnote-1182398 -Node: Interval Expressions182545 -Ref: Interval Expressions-Footnote-1184745 -Node: Bracket Expressions184843 -Ref: table-char-classes187319 -Node: Leftmost Longest190646 -Node: Computed Regexps191949 -Node: GNU Regexp Operators195376 -Node: Case-sensitivity199113 -Ref: Case-sensitivity-Footnote-1201979 -Ref: Case-sensitivity-Footnote-2202214 -Node: Regexp Summary202322 -Node: Reading Files203788 -Node: Records206057 -Node: awk split records207132 -Node: gawk split records211832 -Ref: gawk split records-Footnote-1216906 -Node: Fields216943 -Node: Nonconstant Fields219684 -Ref: Nonconstant Fields-Footnote-1221920 -Node: Changing Fields222124 -Node: Field Separators228155 -Node: Default Field Splitting230853 -Node: Regexp Field Splitting231971 -Node: Single Character Fields235648 -Node: Command Line Field Separator236708 -Node: Full Line Fields239926 -Ref: Full Line Fields-Footnote-1241448 -Ref: Full Line Fields-Footnote-2241494 -Node: Field Splitting Summary241595 -Node: Constant Size243669 -Node: Fixed width data244401 -Node: Skipping intervening247868 -Node: Allowing trailing data248666 -Node: Fields with fixed data249703 -Node: Splitting By Content251221 -Ref: Splitting By Content-Footnote-1255057 -Node: More CSV255220 -Node: FS versus FPAT256835 -Node: Testing field creation257995 -Node: Multiple Line259620 -Node: Getline265897 -Node: Plain Getline268366 -Node: Getline/Variable270939 -Node: Getline/File272090 -Node: Getline/Variable/File273478 -Ref: Getline/Variable/File-Footnote-1275083 -Node: Getline/Pipe275171 -Node: Getline/Variable/Pipe277875 -Node: Getline/Coprocess279010 -Node: Getline/Variable/Coprocess280277 -Node: Getline Notes281019 -Node: Getline Summary283816 -Ref: table-getline-variants284240 -Node: Read Timeout284989 -Ref: Read Timeout-Footnote-1288895 -Node: Retrying Input288953 -Node: Command-line directories290152 -Node: Input Summary291058 -Node: Input Exercises294230 -Node: Printing294664 -Node: Print296498 -Node: Print Examples297955 -Node: Output Separators300735 -Node: OFMT302752 -Node: Printf304108 -Node: Basic Printf304893 -Node: Control Letters306467 -Node: Format Modifiers311629 -Node: Printf Examples317644 -Node: Redirection320130 -Node: Special FD326971 -Ref: Special FD-Footnote-1330139 -Node: Special Files330213 -Node: Other Inherited Files330830 -Node: Special Network331831 -Node: Special Caveats332691 -Node: Close Files And Pipes333640 -Ref: table-close-pipe-return-values340547 -Ref: Close Files And Pipes-Footnote-1341361 -Ref: Close Files And Pipes-Footnote-2341509 -Node: Nonfatal341661 -Node: Output Summary343999 -Node: Output Exercises345221 -Node: Expressions345900 -Node: Values347088 -Node: Constants347766 -Node: Scalar Constants348457 -Ref: Scalar Constants-Footnote-1350967 -Node: Nondecimal-numbers351217 -Node: Regexp Constants354218 -Node: Using Constant Regexps354744 -Node: Standard Regexp Constants355366 -Node: Strong Regexp Constants358554 -Node: Variables362269 -Node: Using Variables362926 -Node: Assignment Options364836 -Node: Conversion367307 -Node: Strings And Numbers367831 -Ref: Strings And Numbers-Footnote-1370894 -Node: Locale influences conversions371003 -Ref: table-locale-affects373761 -Node: All Operators374380 -Node: Arithmetic Ops375009 -Node: Concatenation377725 -Ref: Concatenation-Footnote-1380572 -Node: Assignment Ops380679 -Ref: table-assign-ops385670 -Node: Increment Ops386984 -Node: Truth Values and Conditions390444 -Node: Truth Values391518 -Node: Typing and Comparison392566 -Node: Variable Typing393386 -Ref: Variable Typing-Footnote-1399849 -Ref: Variable Typing-Footnote-2399921 -Node: Comparison Operators399998 -Ref: table-relational-ops400417 -Node: POSIX String Comparison403913 -Ref: POSIX String Comparison-Footnote-1405608 -Ref: POSIX String Comparison-Footnote-2405747 -Node: Boolean Ops405831 -Ref: Boolean Ops-Footnote-1410313 -Node: Conditional Exp410405 -Node: Function Calls412141 -Node: Precedence416018 -Node: Locales419677 -Node: Expressions Summary421309 -Node: Patterns and Actions423882 -Node: Pattern Overview425002 -Node: Regexp Patterns426679 -Node: Expression Patterns427221 -Node: Ranges431002 -Node: BEGIN/END434110 -Node: Using BEGIN/END434871 -Ref: Using BEGIN/END-Footnote-1437625 -Node: I/O And BEGIN/END437731 -Node: BEGINFILE/ENDFILE440044 -Node: Empty443275 -Node: Using Shell Variables443592 -Node: Action Overview445866 -Node: Statements448191 -Node: If Statement450039 -Node: While Statement451534 -Node: Do Statement453562 -Node: For Statement454710 -Node: Switch Statement457965 -Node: Break Statement460406 -Node: Continue Statement462498 -Node: Next Statement464325 -Node: Nextfile Statement466708 -Node: Exit Statement469397 -Node: Built-in Variables471800 -Node: User-modified472933 -Node: Auto-set480700 -Ref: Auto-set-Footnote-1497507 -Ref: Auto-set-Footnote-2497713 -Node: ARGC and ARGV497769 -Node: Pattern Action Summary501982 -Node: Arrays504412 -Node: Array Basics505741 -Node: Array Intro506585 -Ref: figure-array-elements508560 -Ref: Array Intro-Footnote-1511265 -Node: Reference to Elements511393 -Node: Assigning Elements513857 -Node: Array Example514348 -Node: Scanning an Array516107 -Node: Controlling Scanning519129 -Ref: Controlling Scanning-Footnote-1525585 -Node: Numeric Array Subscripts525901 -Node: Uninitialized Subscripts528085 -Node: Delete529704 -Ref: Delete-Footnote-1532456 -Node: Multidimensional532513 -Node: Multiscanning535608 -Node: Arrays of Arrays537199 -Node: Arrays Summary541967 -Node: Functions544060 -Node: Built-in545098 -Node: Calling Built-in546251 -Node: Boolean Functions548247 -Node: Numeric Functions548801 -Ref: Numeric Functions-Footnote-1552828 -Ref: Numeric Functions-Footnote-2553476 -Ref: Numeric Functions-Footnote-3553524 -Node: String Functions553796 -Ref: String Functions-Footnote-1578638 -Ref: String Functions-Footnote-2578766 -Ref: String Functions-Footnote-3579014 -Node: Gory Details579101 -Ref: table-sub-escapes580892 -Ref: table-sub-proposed582412 -Ref: table-posix-sub583776 -Ref: table-gensub-escapes585318 -Ref: Gory Details-Footnote-1586142 -Node: I/O Functions586296 -Ref: table-system-return-values592750 -Ref: I/O Functions-Footnote-1594831 -Ref: I/O Functions-Footnote-2594979 -Node: Time Functions595099 -Ref: Time Functions-Footnote-1605770 -Ref: Time Functions-Footnote-2605838 -Ref: Time Functions-Footnote-3605996 -Ref: Time Functions-Footnote-4606107 -Ref: Time Functions-Footnote-5606219 -Ref: Time Functions-Footnote-6606446 -Node: Bitwise Functions606712 -Ref: table-bitwise-ops607306 -Ref: Bitwise Functions-Footnote-1613370 -Ref: Bitwise Functions-Footnote-2613543 -Node: Type Functions613734 -Node: I18N Functions617154 -Node: User-defined618805 -Node: Definition Syntax619617 -Ref: Definition Syntax-Footnote-1625311 -Node: Function Example625382 -Ref: Function Example-Footnote-1628304 -Node: Function Calling628326 -Node: Calling A Function628914 -Node: Variable Scope629872 -Node: Pass By Value/Reference632866 -Node: Function Caveats635510 -Ref: Function Caveats-Footnote-1637557 -Node: Return Statement637677 -Node: Dynamic Typing640656 -Node: Indirect Calls641586 -Node: Functions Summary652513 -Node: Library Functions655218 -Ref: Library Functions-Footnote-1658825 -Ref: Library Functions-Footnote-2658968 -Node: Library Names659139 -Ref: Library Names-Footnote-1662806 -Ref: Library Names-Footnote-2663029 -Node: General Functions663115 -Node: Strtonum Function664297 -Node: Assert Function667319 -Node: Round Function670645 -Node: Cliff Random Function672185 -Node: Ordinal Functions673201 -Ref: Ordinal Functions-Footnote-1676264 -Ref: Ordinal Functions-Footnote-2676516 -Node: Join Function676726 -Ref: Join Function-Footnote-1678496 -Node: Getlocaltime Function678696 -Node: Readfile Function682438 -Node: Shell Quoting684415 -Node: Isnumeric Function685843 -Node: Data File Management687231 -Node: Filetrans Function687863 -Node: Rewind Function691959 -Node: File Checking693868 -Ref: File Checking-Footnote-1695202 -Node: Empty Files695403 -Node: Ignoring Assigns697382 -Node: Getopt Function698932 -Ref: Getopt Function-Footnote-1714229 -Node: Passwd Functions714429 -Ref: Passwd Functions-Footnote-1723268 -Node: Group Functions723356 -Ref: Group Functions-Footnote-1731254 -Node: Walking Arrays731461 -Node: Library Functions Summary734469 -Node: Library Exercises735875 -Node: Sample Programs736340 -Node: Running Examples737110 -Node: Clones737838 -Node: Cut Program739062 -Node: Egrep Program749202 -Node: Id Program758203 -Node: Split Program768138 -Ref: Split Program-Footnote-1778031 -Node: Tee Program778204 -Node: Uniq Program780994 -Node: Wc Program788582 -Node: Bytes vs. Characters788969 -Node: Using extensions790517 -Node: wc program791271 -Node: Miscellaneous Programs796136 -Node: Dupword Program797349 -Node: Alarm Program799379 -Node: Translate Program804234 -Ref: Translate Program-Footnote-1808799 -Node: Labels Program809069 -Ref: Labels Program-Footnote-1812420 -Node: Word Sorting812504 -Node: History Sorting816576 -Node: Extract Program818801 -Node: Simple Sed826814 -Node: Igawk Program829888 -Ref: Igawk Program-Footnote-1844219 -Ref: Igawk Program-Footnote-2844421 -Ref: Igawk Program-Footnote-3844543 -Node: Anagram Program844658 -Node: Signature Program847720 -Node: Programs Summary848967 -Node: Programs Exercises850181 -Ref: Programs Exercises-Footnote-1854311 -Node: Advanced Features854397 -Node: Nondecimal Data856528 -Node: Boolean Typed Values858126 -Node: Array Sorting860007 -Node: Controlling Array Traversal860712 -Ref: Controlling Array Traversal-Footnote-1869080 -Node: Array Sorting Functions869198 -Ref: Array Sorting Functions-Footnote-1874572 -Node: Two-way I/O874768 -Ref: Two-way I/O-Footnote-1882494 -Ref: Two-way I/O-Footnote-2882681 -Node: TCP/IP Networking882763 -Node: Profiling885839 -Node: Extension Philosophy895148 -Node: Advanced Features Summary896627 -Node: Internationalization898642 -Node: I18N and L10N900316 -Node: Explaining gettext901003 -Ref: Explaining gettext-Footnote-1906895 -Ref: Explaining gettext-Footnote-2907080 -Node: Programmer i18n907245 -Ref: Programmer i18n-Footnote-1912194 -Node: Translator i18n912243 -Node: String Extraction913037 -Ref: String Extraction-Footnote-1914169 -Node: Printf Ordering914255 -Ref: Printf Ordering-Footnote-1917041 -Node: I18N Portability917105 -Ref: I18N Portability-Footnote-1919561 -Node: I18N Example919624 -Ref: I18N Example-Footnote-1922899 -Ref: I18N Example-Footnote-2922972 -Node: Gawk I18N923081 -Node: I18N Summary923703 -Node: Debugger925044 -Node: Debugging926044 -Node: Debugging Concepts926485 -Node: Debugging Terms928294 -Node: Awk Debugging930869 -Ref: Awk Debugging-Footnote-1931814 -Node: Sample Debugging Session931946 -Node: Debugger Invocation932480 -Node: Finding The Bug933866 -Node: List of Debugger Commands940340 -Node: Breakpoint Control941673 -Node: Debugger Execution Control945367 -Node: Viewing And Changing Data948729 -Node: Execution Stack952270 -Node: Debugger Info953907 -Node: Miscellaneous Debugger Commands957978 -Node: Readline Support963040 -Node: Limitations963936 -Node: Debugging Summary966490 -Node: Namespaces967769 -Node: Global Namespace968880 -Node: Qualified Names970278 -Node: Default Namespace971277 -Node: Changing The Namespace972018 -Node: Naming Rules973632 -Node: Internal Name Management975480 -Node: Namespace Example976522 -Node: Namespace And Features979084 -Node: Namespace Summary980519 -Node: Arbitrary Precision Arithmetic981996 -Node: Computer Arithmetic983483 -Ref: table-numeric-ranges987249 -Ref: table-floating-point-ranges987743 -Ref: Computer Arithmetic-Footnote-1988402 -Node: Math Definitions988459 -Ref: table-ieee-formats991435 -Node: MPFR features992003 -Node: FP Math Caution993721 -Ref: FP Math Caution-Footnote-1994793 -Node: Inexactness of computations995162 -Node: Inexact representation996193 -Node: Comparing FP Values997553 -Node: Errors accumulate998794 -Node: Strange values1000250 -Ref: Strange values-Footnote-11002838 -Node: Getting Accuracy1002943 -Node: Try To Round1005653 -Node: Setting precision1006552 -Ref: table-predefined-precision-strings1007249 -Node: Setting the rounding mode1009080 -Ref: table-gawk-rounding-modes1009454 -Ref: Setting the rounding mode-Footnote-11013386 -Node: Arbitrary Precision Integers1013565 -Ref: Arbitrary Precision Integers-Footnote-11016740 -Node: Checking for MPFR1016889 -Node: POSIX Floating Point Problems1018363 -Ref: POSIX Floating Point Problems-Footnote-11023016 -Node: Floating point summary1023054 -Node: Dynamic Extensions1025244 -Node: Extension Intro1026797 -Node: Plugin License1028063 -Node: Extension Mechanism Outline1028860 -Ref: figure-load-extension1029299 -Ref: figure-register-new-function1030865 -Ref: figure-call-new-function1031958 -Node: Extension API Description1034021 -Node: Extension API Functions Introduction1035734 -Ref: table-api-std-headers1037570 -Node: General Data Types1041820 -Ref: General Data Types-Footnote-11050526 -Node: Memory Allocation Functions1050825 -Ref: Memory Allocation Functions-Footnote-11055326 -Node: Constructor Functions1055425 -Node: API Ownership of MPFR and GMP Values1059078 -Node: Registration Functions1060391 -Node: Extension Functions1061091 -Node: Exit Callback Functions1066413 -Node: Extension Version String1067663 -Node: Input Parsers1068326 -Node: Output Wrappers1081047 -Node: Two-way processors1085559 -Node: Printing Messages1087824 -Ref: Printing Messages-Footnote-11088995 -Node: Updating ERRNO1089148 -Node: Requesting Values1089887 -Ref: table-value-types-returned1090624 -Node: Accessing Parameters1091733 -Node: Symbol Table Access1092970 -Node: Symbol table by name1093482 -Ref: Symbol table by name-Footnote-11096507 -Node: Symbol table by cookie1096635 -Ref: Symbol table by cookie-Footnote-11100820 -Node: Cached values1100884 -Ref: Cached values-Footnote-11104420 -Node: Array Manipulation1104573 -Ref: Array Manipulation-Footnote-11105664 -Node: Array Data Types1105701 -Ref: Array Data Types-Footnote-11108359 -Node: Array Functions1108451 -Node: Flattening Arrays1112949 -Node: Creating Arrays1119925 -Node: Redirection API1124692 -Node: Extension API Variables1127525 -Node: Extension Versioning1128236 -Ref: gawk-api-version1128665 -Node: Extension GMP/MPFR Versioning1130397 -Node: Extension API Informational Variables1132025 -Node: Extension API Boilerplate1133098 -Node: Changes from API V11137072 -Node: Finding Extensions1138644 -Node: Extension Example1139203 -Node: Internal File Description1140001 -Node: Internal File Ops1144081 -Ref: Internal File Ops-Footnote-11155431 -Node: Using Internal File Ops1155571 -Ref: Using Internal File Ops-Footnote-11157954 -Node: Extension Samples1158228 -Node: Extension Sample File Functions1159757 -Node: Extension Sample Fnmatch1167406 -Node: Extension Sample Fork1168893 -Node: Extension Sample Inplace1170111 -Node: Extension Sample Ord1173737 -Node: Extension Sample Readdir1174573 -Ref: table-readdir-file-types1175462 -Node: Extension Sample Revout1176530 -Node: Extension Sample Rev2way1177119 -Node: Extension Sample Read write array1177859 -Node: Extension Sample Readfile1179801 -Node: Extension Sample Time1180896 -Node: Extension Sample API Tests1182648 -Node: gawkextlib1183140 -Node: Extension summary1186058 -Node: Extension Exercises1189760 -Node: Language History1191002 -Node: V7/SVR3.11192658 -Node: SVR41194810 -Node: POSIX1196244 -Node: BTL1197625 -Node: POSIX/GNU1198354 -Node: Feature History1204132 -Node: Common Extensions1221307 -Node: Ranges and Locales1222590 -Ref: Ranges and Locales-Footnote-11227206 -Ref: Ranges and Locales-Footnote-21227233 -Ref: Ranges and Locales-Footnote-31227468 -Node: Contributors1227691 -Node: History summary1233688 -Node: Installation1235068 -Node: Gawk Distribution1236012 -Node: Getting1236496 -Node: Extracting1237459 -Node: Distribution contents1239097 -Node: Unix Installation1246158 -Node: Quick Installation1246962 -Node: Compiling with MPFR1249382 -Node: Shell Startup Files1250072 -Node: Additional Configuration Options1251161 -Node: Configuration Philosophy1253476 -Node: Compiling from Git1255872 -Node: Building the Documentation1256427 -Node: Non-Unix Installation1257811 -Node: PC Installation1258271 -Node: PC Binary Installation1259109 -Node: PC Compiling1259982 -Node: PC Using1261099 -Node: Cygwin1264652 -Node: MSYS1265876 -Node: VMS Installation1266478 -Node: VMS Compilation1267197 -Ref: VMS Compilation-Footnote-11268426 -Node: VMS Dynamic Extensions1268484 -Node: VMS Installation Details1270169 -Node: VMS Running1272431 -Node: VMS GNV1276710 -Node: Bugs1277424 -Node: Bug definition1278336 -Node: Bug address1281272 -Node: Usenet1284660 -Node: Performance bugs1285849 -Node: Asking for help1288770 -Node: Maintainers1290737 -Node: Other Versions1291931 -Node: Installation summary1300095 -Node: Notes1301459 -Node: Compatibility Mode1302253 -Node: Additions1303035 -Node: Accessing The Source1303960 -Node: Adding Code1305397 -Node: New Ports1311589 -Node: Derived Files1315964 -Ref: Derived Files-Footnote-11321624 -Ref: Derived Files-Footnote-21321659 -Ref: Derived Files-Footnote-31322257 -Node: Future Extensions1322371 -Node: Implementation Limitations1323029 -Node: Extension Design1324239 -Node: Old Extension Problems1325383 -Ref: Old Extension Problems-Footnote-11326901 -Node: Extension New Mechanism Goals1326958 -Ref: Extension New Mechanism Goals-Footnote-11330322 -Node: Extension Other Design Decisions1330511 -Node: Extension Future Growth1332624 -Node: Notes summary1333230 -Node: Basic Concepts1334388 -Node: Basic High Level1335069 -Ref: figure-general-flow1335351 -Ref: figure-process-flow1336037 -Ref: Basic High Level-Footnote-11339339 -Node: Basic Data Typing1339524 -Node: Glossary1342852 -Node: Copying1374739 -Node: GNU Free Documentation License1412282 -Node: Index1437402 +Ref: Options-Footnote-1139256 +Ref: Options-Footnote-2139487 +Node: Other Arguments139512 +Node: Naming Standard Input143523 +Node: Environment Variables144733 +Node: AWKPATH Variable145291 +Ref: AWKPATH Variable-Footnote-1148703 +Ref: AWKPATH Variable-Footnote-2148737 +Node: AWKLIBPATH Variable149108 +Ref: AWKLIBPATH Variable-Footnote-1150805 +Node: Other Environment Variables151180 +Node: Exit Status155132 +Node: Include Files155809 +Node: Loading Shared Libraries159499 +Node: Obsolete160927 +Node: Undocumented161619 +Node: Invoking Summary161916 +Node: Regexp164757 +Node: Regexp Usage166211 +Node: Escape Sequences168248 +Node: Regexp Operators174489 +Node: Regexp Operator Details174974 +Ref: Regexp Operator Details-Footnote-1182338 +Node: Interval Expressions182485 +Ref: Interval Expressions-Footnote-1184660 +Node: Bracket Expressions184758 +Ref: table-char-classes187234 +Node: Leftmost Longest190561 +Node: Computed Regexps191864 +Node: GNU Regexp Operators195291 +Node: Case-sensitivity198969 +Ref: Case-sensitivity-Footnote-1201835 +Ref: Case-sensitivity-Footnote-2202070 +Node: Regexp Summary202178 +Node: Reading Files203644 +Node: Records205913 +Node: awk split records206988 +Node: gawk split records211688 +Ref: gawk split records-Footnote-1216762 +Node: Fields216799 +Node: Nonconstant Fields219540 +Ref: Nonconstant Fields-Footnote-1221776 +Node: Changing Fields221980 +Node: Field Separators228011 +Node: Default Field Splitting230709 +Node: Regexp Field Splitting231827 +Node: Single Character Fields235504 +Node: Command Line Field Separator236564 +Node: Full Line Fields239782 +Ref: Full Line Fields-Footnote-1241304 +Ref: Full Line Fields-Footnote-2241350 +Node: Field Splitting Summary241451 +Node: Constant Size243525 +Node: Fixed width data244257 +Node: Skipping intervening247724 +Node: Allowing trailing data248522 +Node: Fields with fixed data249559 +Node: Splitting By Content251077 +Ref: Splitting By Content-Footnote-1254913 +Node: More CSV255076 +Node: FS versus FPAT256691 +Node: Testing field creation257851 +Node: Multiple Line259476 +Node: Getline265753 +Node: Plain Getline268222 +Node: Getline/Variable270795 +Node: Getline/File271946 +Node: Getline/Variable/File273334 +Ref: Getline/Variable/File-Footnote-1274939 +Node: Getline/Pipe275027 +Node: Getline/Variable/Pipe277731 +Node: Getline/Coprocess278866 +Node: Getline/Variable/Coprocess280133 +Node: Getline Notes280875 +Node: Getline Summary283672 +Ref: table-getline-variants284096 +Node: Read Timeout284845 +Ref: Read Timeout-Footnote-1288751 +Node: Retrying Input288809 +Node: Command-line directories290008 +Node: Input Summary290914 +Node: Input Exercises294086 +Node: Printing294520 +Node: Print296354 +Node: Print Examples297811 +Node: Output Separators300591 +Node: OFMT302608 +Node: Printf303964 +Node: Basic Printf304749 +Node: Control Letters306323 +Node: Format Modifiers311485 +Node: Printf Examples317500 +Node: Redirection319986 +Node: Special FD326827 +Ref: Special FD-Footnote-1329995 +Node: Special Files330069 +Node: Other Inherited Files330686 +Node: Special Network331687 +Node: Special Caveats332547 +Node: Close Files And Pipes333496 +Ref: table-close-pipe-return-values340403 +Ref: Close Files And Pipes-Footnote-1341217 +Ref: Close Files And Pipes-Footnote-2341365 +Node: Nonfatal341517 +Node: Output Summary343855 +Node: Output Exercises345077 +Node: Expressions345756 +Node: Values346944 +Node: Constants347622 +Node: Scalar Constants348313 +Ref: Scalar Constants-Footnote-1350823 +Node: Nondecimal-numbers351073 +Node: Regexp Constants354074 +Node: Using Constant Regexps354600 +Node: Standard Regexp Constants355222 +Node: Strong Regexp Constants358410 +Node: Variables362125 +Node: Using Variables362782 +Node: Assignment Options364692 +Node: Conversion367163 +Node: Strings And Numbers367687 +Ref: Strings And Numbers-Footnote-1370750 +Node: Locale influences conversions370859 +Ref: table-locale-affects373617 +Node: All Operators374236 +Node: Arithmetic Ops374865 +Node: Concatenation377581 +Ref: Concatenation-Footnote-1380428 +Node: Assignment Ops380535 +Ref: table-assign-ops385526 +Node: Increment Ops386840 +Node: Truth Values and Conditions390300 +Node: Truth Values391374 +Node: Typing and Comparison392422 +Node: Variable Typing393242 +Ref: Variable Typing-Footnote-1399705 +Ref: Variable Typing-Footnote-2399777 +Node: Comparison Operators399854 +Ref: table-relational-ops400273 +Node: POSIX String Comparison403769 +Ref: POSIX String Comparison-Footnote-1405464 +Ref: POSIX String Comparison-Footnote-2405603 +Node: Boolean Ops405687 +Ref: Boolean Ops-Footnote-1410169 +Node: Conditional Exp410261 +Node: Function Calls411997 +Node: Precedence415874 +Node: Locales419533 +Node: Expressions Summary421165 +Node: Patterns and Actions423738 +Node: Pattern Overview424858 +Node: Regexp Patterns426535 +Node: Expression Patterns427077 +Node: Ranges430858 +Node: BEGIN/END433966 +Node: Using BEGIN/END434727 +Ref: Using BEGIN/END-Footnote-1437481 +Node: I/O And BEGIN/END437587 +Node: BEGINFILE/ENDFILE439900 +Node: Empty443131 +Node: Using Shell Variables443448 +Node: Action Overview445722 +Node: Statements448047 +Node: If Statement449895 +Node: While Statement451390 +Node: Do Statement453418 +Node: For Statement454566 +Node: Switch Statement457821 +Node: Break Statement460262 +Node: Continue Statement462354 +Node: Next Statement464181 +Node: Nextfile Statement466564 +Node: Exit Statement469253 +Node: Built-in Variables471656 +Node: User-modified472789 +Node: Auto-set480556 +Ref: Auto-set-Footnote-1497363 +Ref: Auto-set-Footnote-2497569 +Node: ARGC and ARGV497625 +Node: Pattern Action Summary501838 +Node: Arrays504268 +Node: Array Basics505597 +Node: Array Intro506441 +Ref: figure-array-elements508416 +Ref: Array Intro-Footnote-1511121 +Node: Reference to Elements511249 +Node: Assigning Elements513713 +Node: Array Example514204 +Node: Scanning an Array515963 +Node: Controlling Scanning518985 +Ref: Controlling Scanning-Footnote-1525441 +Node: Numeric Array Subscripts525757 +Node: Uninitialized Subscripts527941 +Node: Delete529560 +Ref: Delete-Footnote-1532312 +Node: Multidimensional532369 +Node: Multiscanning535464 +Node: Arrays of Arrays537055 +Node: Arrays Summary541823 +Node: Functions543916 +Node: Built-in544954 +Node: Calling Built-in546107 +Node: Boolean Functions548103 +Node: Numeric Functions548657 +Ref: Numeric Functions-Footnote-1552684 +Ref: Numeric Functions-Footnote-2553332 +Ref: Numeric Functions-Footnote-3553380 +Node: String Functions553652 +Ref: String Functions-Footnote-1578494 +Ref: String Functions-Footnote-2578622 +Ref: String Functions-Footnote-3578870 +Node: Gory Details578957 +Ref: table-sub-escapes580748 +Ref: table-sub-proposed582268 +Ref: table-posix-sub583632 +Ref: table-gensub-escapes585174 +Ref: Gory Details-Footnote-1585998 +Node: I/O Functions586152 +Ref: table-system-return-values592606 +Ref: I/O Functions-Footnote-1594687 +Ref: I/O Functions-Footnote-2594835 +Node: Time Functions594955 +Ref: Time Functions-Footnote-1605626 +Ref: Time Functions-Footnote-2605694 +Ref: Time Functions-Footnote-3605852 +Ref: Time Functions-Footnote-4605963 +Ref: Time Functions-Footnote-5606075 +Ref: Time Functions-Footnote-6606302 +Node: Bitwise Functions606568 +Ref: table-bitwise-ops607162 +Ref: Bitwise Functions-Footnote-1613226 +Ref: Bitwise Functions-Footnote-2613399 +Node: Type Functions613590 +Node: I18N Functions617010 +Node: User-defined618661 +Node: Definition Syntax619473 +Ref: Definition Syntax-Footnote-1625167 +Node: Function Example625238 +Ref: Function Example-Footnote-1628160 +Node: Function Calling628182 +Node: Calling A Function628770 +Node: Variable Scope629728 +Node: Pass By Value/Reference632722 +Node: Function Caveats635366 +Ref: Function Caveats-Footnote-1637413 +Node: Return Statement637533 +Node: Dynamic Typing640512 +Node: Indirect Calls641442 +Node: Functions Summary652369 +Node: Library Functions655074 +Ref: Library Functions-Footnote-1658681 +Ref: Library Functions-Footnote-2658824 +Node: Library Names658995 +Ref: Library Names-Footnote-1662662 +Ref: Library Names-Footnote-2662885 +Node: General Functions662971 +Node: Strtonum Function664153 +Node: Assert Function667175 +Node: Round Function670501 +Node: Cliff Random Function672041 +Node: Ordinal Functions673057 +Ref: Ordinal Functions-Footnote-1676120 +Ref: Ordinal Functions-Footnote-2676372 +Node: Join Function676582 +Ref: Join Function-Footnote-1678352 +Node: Getlocaltime Function678552 +Node: Readfile Function682294 +Node: Shell Quoting684271 +Node: Isnumeric Function685699 +Node: Data File Management687087 +Node: Filetrans Function687719 +Node: Rewind Function691815 +Node: File Checking693724 +Ref: File Checking-Footnote-1695058 +Node: Empty Files695259 +Node: Ignoring Assigns697238 +Node: Getopt Function698788 +Ref: Getopt Function-Footnote-1714085 +Node: Passwd Functions714285 +Ref: Passwd Functions-Footnote-1723124 +Node: Group Functions723212 +Ref: Group Functions-Footnote-1731110 +Node: Walking Arrays731317 +Node: Library Functions Summary734325 +Node: Library Exercises735731 +Node: Sample Programs736196 +Node: Running Examples736966 +Node: Clones737694 +Node: Cut Program738918 +Node: Egrep Program749058 +Node: Id Program758059 +Node: Split Program767994 +Ref: Split Program-Footnote-1777887 +Node: Tee Program778060 +Node: Uniq Program780850 +Node: Wc Program788438 +Node: Bytes vs. Characters788825 +Node: Using extensions790373 +Node: wc program791127 +Node: Miscellaneous Programs795992 +Node: Dupword Program797205 +Node: Alarm Program799235 +Node: Translate Program804090 +Ref: Translate Program-Footnote-1808655 +Node: Labels Program808925 +Ref: Labels Program-Footnote-1812276 +Node: Word Sorting812360 +Node: History Sorting816432 +Node: Extract Program818657 +Node: Simple Sed826670 +Node: Igawk Program829744 +Ref: Igawk Program-Footnote-1844075 +Ref: Igawk Program-Footnote-2844277 +Ref: Igawk Program-Footnote-3844399 +Node: Anagram Program844514 +Node: Signature Program847576 +Node: Programs Summary848823 +Node: Programs Exercises850037 +Ref: Programs Exercises-Footnote-1854167 +Node: Advanced Features854253 +Node: Nondecimal Data856384 +Node: Boolean Typed Values857982 +Node: Array Sorting859863 +Node: Controlling Array Traversal860568 +Ref: Controlling Array Traversal-Footnote-1868936 +Node: Array Sorting Functions869054 +Ref: Array Sorting Functions-Footnote-1874428 +Node: Two-way I/O874624 +Ref: Two-way I/O-Footnote-1882350 +Ref: Two-way I/O-Footnote-2882537 +Node: TCP/IP Networking882619 +Node: Profiling885695 +Node: Extension Philosophy895004 +Node: Advanced Features Summary896483 +Node: Internationalization898498 +Node: I18N and L10N900172 +Node: Explaining gettext900859 +Ref: Explaining gettext-Footnote-1906751 +Ref: Explaining gettext-Footnote-2906936 +Node: Programmer i18n907101 +Ref: Programmer i18n-Footnote-1912050 +Node: Translator i18n912099 +Node: String Extraction912893 +Ref: String Extraction-Footnote-1914025 +Node: Printf Ordering914111 +Ref: Printf Ordering-Footnote-1916897 +Node: I18N Portability916961 +Ref: I18N Portability-Footnote-1919417 +Node: I18N Example919480 +Ref: I18N Example-Footnote-1922755 +Ref: I18N Example-Footnote-2922828 +Node: Gawk I18N922937 +Node: I18N Summary923559 +Node: Debugger924900 +Node: Debugging925900 +Node: Debugging Concepts926341 +Node: Debugging Terms928150 +Node: Awk Debugging930725 +Ref: Awk Debugging-Footnote-1931670 +Node: Sample Debugging Session931802 +Node: Debugger Invocation932336 +Node: Finding The Bug933722 +Node: List of Debugger Commands940196 +Node: Breakpoint Control941529 +Node: Debugger Execution Control945223 +Node: Viewing And Changing Data948585 +Node: Execution Stack952126 +Node: Debugger Info953763 +Node: Miscellaneous Debugger Commands957834 +Node: Readline Support962896 +Node: Limitations963792 +Node: Debugging Summary966346 +Node: Namespaces967625 +Node: Global Namespace968736 +Node: Qualified Names970134 +Node: Default Namespace971133 +Node: Changing The Namespace971874 +Node: Naming Rules973488 +Node: Internal Name Management975336 +Node: Namespace Example976378 +Node: Namespace And Features978940 +Node: Namespace Summary980375 +Node: Arbitrary Precision Arithmetic981852 +Node: Computer Arithmetic983339 +Ref: table-numeric-ranges987105 +Ref: table-floating-point-ranges987599 +Ref: Computer Arithmetic-Footnote-1988258 +Node: Math Definitions988315 +Ref: table-ieee-formats991291 +Node: MPFR features991859 +Node: FP Math Caution993577 +Ref: FP Math Caution-Footnote-1994649 +Node: Inexactness of computations995018 +Node: Inexact representation996049 +Node: Comparing FP Values997409 +Node: Errors accumulate998650 +Node: Strange values1000106 +Ref: Strange values-Footnote-11002694 +Node: Getting Accuracy1002799 +Node: Try To Round1005509 +Node: Setting precision1006408 +Ref: table-predefined-precision-strings1007105 +Node: Setting the rounding mode1008936 +Ref: table-gawk-rounding-modes1009310 +Ref: Setting the rounding mode-Footnote-11013242 +Node: Arbitrary Precision Integers1013421 +Ref: Arbitrary Precision Integers-Footnote-11016596 +Node: Checking for MPFR1016745 +Node: POSIX Floating Point Problems1018219 +Ref: POSIX Floating Point Problems-Footnote-11022872 +Node: Floating point summary1022910 +Node: Dynamic Extensions1025100 +Node: Extension Intro1026653 +Node: Plugin License1027919 +Node: Extension Mechanism Outline1028716 +Ref: figure-load-extension1029155 +Ref: figure-register-new-function1030721 +Ref: figure-call-new-function1031814 +Node: Extension API Description1033877 +Node: Extension API Functions Introduction1035590 +Ref: table-api-std-headers1037426 +Node: General Data Types1041676 +Ref: General Data Types-Footnote-11050382 +Node: Memory Allocation Functions1050681 +Ref: Memory Allocation Functions-Footnote-11055182 +Node: Constructor Functions1055281 +Node: API Ownership of MPFR and GMP Values1058934 +Node: Registration Functions1060247 +Node: Extension Functions1060947 +Node: Exit Callback Functions1066269 +Node: Extension Version String1067519 +Node: Input Parsers1068182 +Node: Output Wrappers1080903 +Node: Two-way processors1085415 +Node: Printing Messages1087680 +Ref: Printing Messages-Footnote-11088851 +Node: Updating ERRNO1089004 +Node: Requesting Values1089743 +Ref: table-value-types-returned1090480 +Node: Accessing Parameters1091589 +Node: Symbol Table Access1092826 +Node: Symbol table by name1093338 +Ref: Symbol table by name-Footnote-11096363 +Node: Symbol table by cookie1096491 +Ref: Symbol table by cookie-Footnote-11100676 +Node: Cached values1100740 +Ref: Cached values-Footnote-11104276 +Node: Array Manipulation1104429 +Ref: Array Manipulation-Footnote-11105520 +Node: Array Data Types1105557 +Ref: Array Data Types-Footnote-11108215 +Node: Array Functions1108307 +Node: Flattening Arrays1112805 +Node: Creating Arrays1119781 +Node: Redirection API1124548 +Node: Extension API Variables1127381 +Node: Extension Versioning1128092 +Ref: gawk-api-version1128521 +Node: Extension GMP/MPFR Versioning1130253 +Node: Extension API Informational Variables1131881 +Node: Extension API Boilerplate1132954 +Node: Changes from API V11136928 +Node: Finding Extensions1138500 +Node: Extension Example1139059 +Node: Internal File Description1139857 +Node: Internal File Ops1143937 +Ref: Internal File Ops-Footnote-11155287 +Node: Using Internal File Ops1155427 +Ref: Using Internal File Ops-Footnote-11157810 +Node: Extension Samples1158084 +Node: Extension Sample File Functions1159613 +Node: Extension Sample Fnmatch1167262 +Node: Extension Sample Fork1168749 +Node: Extension Sample Inplace1169967 +Node: Extension Sample Ord1173593 +Node: Extension Sample Readdir1174429 +Ref: table-readdir-file-types1175318 +Node: Extension Sample Revout1176386 +Node: Extension Sample Rev2way1176975 +Node: Extension Sample Read write array1177715 +Node: Extension Sample Readfile1179657 +Node: Extension Sample Time1180752 +Node: Extension Sample API Tests1182504 +Node: gawkextlib1182996 +Node: Extension summary1185914 +Node: Extension Exercises1189616 +Node: Language History1190858 +Node: V7/SVR3.11192514 +Node: SVR41194666 +Node: POSIX1196100 +Node: BTL1197481 +Node: POSIX/GNU1198210 +Node: Feature History1203988 +Node: Common Extensions1221163 +Node: Ranges and Locales1222446 +Ref: Ranges and Locales-Footnote-11227062 +Ref: Ranges and Locales-Footnote-21227089 +Ref: Ranges and Locales-Footnote-31227324 +Node: Contributors1227547 +Node: History summary1233544 +Node: Installation1234924 +Node: Gawk Distribution1235868 +Node: Getting1236352 +Node: Extracting1237315 +Node: Distribution contents1238953 +Node: Unix Installation1246014 +Node: Quick Installation1246818 +Node: Compiling with MPFR1249238 +Node: Shell Startup Files1249928 +Node: Additional Configuration Options1251017 +Node: Configuration Philosophy1253332 +Node: Compiling from Git1255728 +Node: Building the Documentation1256283 +Node: Non-Unix Installation1257667 +Node: PC Installation1258127 +Node: PC Binary Installation1258965 +Node: PC Compiling1259838 +Node: PC Using1260955 +Node: Cygwin1264508 +Node: MSYS1265732 +Node: VMS Installation1266334 +Node: VMS Compilation1267053 +Ref: VMS Compilation-Footnote-11268282 +Node: VMS Dynamic Extensions1268340 +Node: VMS Installation Details1270025 +Node: VMS Running1272287 +Node: VMS GNV1276566 +Node: Bugs1277280 +Node: Bug definition1278192 +Node: Bug address1281128 +Node: Usenet1284516 +Node: Performance bugs1285705 +Node: Asking for help1288626 +Node: Maintainers1290593 +Node: Other Versions1291787 +Node: Installation summary1299951 +Node: Notes1301315 +Node: Compatibility Mode1302109 +Node: Additions1302891 +Node: Accessing The Source1303816 +Node: Adding Code1305253 +Node: New Ports1311445 +Node: Derived Files1315820 +Ref: Derived Files-Footnote-11321480 +Ref: Derived Files-Footnote-21321515 +Ref: Derived Files-Footnote-31322113 +Node: Future Extensions1322227 +Node: Implementation Limitations1322885 +Node: Extension Design1324095 +Node: Old Extension Problems1325239 +Ref: Old Extension Problems-Footnote-11326757 +Node: Extension New Mechanism Goals1326814 +Ref: Extension New Mechanism Goals-Footnote-11330178 +Node: Extension Other Design Decisions1330367 +Node: Extension Future Growth1332480 +Node: Notes summary1333086 +Node: Basic Concepts1334244 +Node: Basic High Level1334925 +Ref: figure-general-flow1335207 +Ref: figure-process-flow1335893 +Ref: Basic High Level-Footnote-11339195 +Node: Basic Data Typing1339380 +Node: Glossary1342708 +Node: Copying1374595 +Node: GNU Free Documentation License1412138 +Node: Index1437258 End Tag Table diff --git a/doc/gawk.texi b/doc/gawk.texi index bfd1a00b..5881a3b8 100644 --- a/doc/gawk.texi +++ b/doc/gawk.texi @@ -4321,8 +4321,7 @@ Allow interval expressions (@pxref{Regexp Operators}) in regexps. This is now @command{gawk}'s default behavior. -Nevertheless, this option remains (both for backward compatibility -and for use in combination with @option{--traditional}). +Nevertheless, this option remains for backward compatibility. @item @option{-s} @itemx @option{--no-optimize} @@ -6110,11 +6109,12 @@ When @samp{@{} and @samp{@}} appear in regexp constants in a way that cannot be interpreted as an interval expression (such as @code{/q@{a@}/}), then they stand for themselves. +@cindex BWK @command{awk} @subentry interval expressions in As mentioned, interval expressions were not traditionally available in @command{awk}. In March of 2019, BWK @command{awk} (finally) acquired them. -Nonetheless, because they were not available for -so many decades, @command{gawk} continues to not supply them -when in compatibility mode (@pxref{Options}). +Starting with @value{PVERSION} 5.2, @command{gawk}'s +@option{--traditional} option no longer disables interval +expressions in regular expressions. POSIX says that interval expressions containing repetition counts greater than 255 produce unspecified results. @@ -6678,16 +6678,15 @@ are allowed. @cindex Brian Kernighan's @command{awk} @item @option{--traditional} Match traditional Unix @command{awk} regexps. The GNU operators -are not special, and interval expressions are not available. -Because BWK @command{awk} supports them, +are not special. Because BWK @command{awk} supports them, the POSIX character classes (@samp{[[:alnum:]]}, etc.) are available. +So too, interval expressions are allowed. Characters described by octal and hexadecimal escape sequences are treated literally, even if they represent regexp metacharacters. @item @option{--re-interval} -Allow interval expressions in regexps, if @option{--traditional} -has been provided. -Otherwise, interval expressions are available by default. +This option remains for backwards compatibility but no longer has any +real effect. @end table @node Case-sensitivity diff --git a/doc/gawktexi.in b/doc/gawktexi.in index 66de1068..8ad59282 100644 --- a/doc/gawktexi.in +++ b/doc/gawktexi.in @@ -4231,8 +4231,7 @@ Allow interval expressions (@pxref{Regexp Operators}) in regexps. This is now @command{gawk}'s default behavior. -Nevertheless, this option remains (both for backward compatibility -and for use in combination with @option{--traditional}). +Nevertheless, this option remains for backward compatibility. @item @option{-s} @itemx @option{--no-optimize} @@ -5838,11 +5837,12 @@ When @samp{@{} and @samp{@}} appear in regexp constants in a way that cannot be interpreted as an interval expression (such as @code{/q@{a@}/}), then they stand for themselves. +@cindex BWK @command{awk} @subentry interval expressions in As mentioned, interval expressions were not traditionally available in @command{awk}. In March of 2019, BWK @command{awk} (finally) acquired them. -Nonetheless, because they were not available for -so many decades, @command{gawk} continues to not supply them -when in compatibility mode (@pxref{Options}). +Starting with @value{PVERSION} 5.2, @command{gawk}'s +@option{--traditional} option no longer disables interval +expressions in regular expressions. POSIX says that interval expressions containing repetition counts greater than 255 produce unspecified results. @@ -6362,16 +6362,15 @@ are allowed. @cindex Brian Kernighan's @command{awk} @item @option{--traditional} Match traditional Unix @command{awk} regexps. The GNU operators -are not special, and interval expressions are not available. -Because BWK @command{awk} supports them, +are not special. Because BWK @command{awk} supports them, the POSIX character classes (@samp{[[:alnum:]]}, etc.) are available. +So too, interval expressions are allowed. Characters described by octal and hexadecimal escape sequences are treated literally, even if they represent regexp metacharacters. @item @option{--re-interval} -Allow interval expressions in regexps, if @option{--traditional} -has been provided. -Otherwise, interval expressions are available by default. +This option remains for backwards compatibility but no longer has any +real effect. @end table @node Case-sensitivity @@ -368,8 +368,12 @@ main(int argc, char **argv) } } - if (do_lint && os_is_setuid()) - lintwarn(_("running %s setuid root may be a security problem"), myname); + if (do_lint) { + if (os_is_setuid()) + lintwarn(_("running %s setuid root may be a security problem"), myname); + if (do_intervals) + lintwarn(_("The -r/--re-interval options no longer have any effect")); + } if (do_debug) /* Need to register the debugger pre-exec hook before any other */ init_debug(); @@ -1688,6 +1692,8 @@ parse_args(int argc, char **argv) break; case 'r': + // This no longer has any effect. It remains for the + // lint check in main(). do_flags |= DO_INTERVALS; break; @@ -478,10 +478,16 @@ resetup() /* * Interval expressions are now on by default, as POSIX is - * wide-spread enough that people want it. The do_intervals - * variable remains for use with --traditional. + * wide-spread enough that people want it. + * + * 2/2022: BWK awk has supported interval expressions since + * March 2019, with an important fix added in Januay 2020. + * So we add that support even for --traditional. It's easier to + * do it here than to try to get the GLIBC / GNULIB folks to change + * the definition of RE_SYNTAX_AWK, which likely would cause + * binary compatibility issues. */ - if (do_intervals) + if (do_traditional) syn |= RE_INTERVALS | RE_INVALID_INTERVAL_ORD | RE_NO_BK_BRACES; (void) re_set_syntax(syn); |