summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2022-02-22 20:32:05 +0200
committerArnold D. Robbins <arnold@skeeve.com>2022-02-22 20:32:05 +0200
commitd330a2bdc9d6892dc55ce8f5d299196f32ab1003 (patch)
treef5a95b6ab6d34679192183bad8fee26ddf2ca994
parentf8f77e08c471d62bb462db5498f1980c564cdc78 (diff)
downloadgawk-d330a2bdc9d6892dc55ce8f5d299196f32ab1003.tar.gz
Enable interval expressions for --traditional. Update docs.
-rw-r--r--ChangeLog11
-rw-r--r--NEWS4
-rw-r--r--doc/ChangeLog5
-rw-r--r--doc/awkcard.in3
-rw-r--r--doc/gawk.info1199
-rw-r--r--doc/gawk.texi19
-rw-r--r--doc/gawktexi.in19
-rw-r--r--main.c10
-rw-r--r--re.c12
9 files changed, 655 insertions, 627 deletions
diff --git a/ChangeLog b/ChangeLog
index 711cd0ce..cde50c6f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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.
diff --git a/NEWS b/NEWS
index 5bf493e3..84513b95 100644
--- a/NEWS
+++ b/NEWS
@@ -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
diff --git a/main.c b/main.c
index c88c23a6..7d14c8bf 100644
--- a/main.c
+++ b/main.c
@@ -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;
diff --git a/re.c b/re.c
index fd134727..1e959373 100644
--- a/re.c
+++ b/re.c
@@ -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);