aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2012-02-28 21:24:26 +0200
committerArnold D. Robbins <arnold@skeeve.com>2012-02-28 21:24:26 +0200
commit4341f63af3b49a3f213c8cbd6d88985ea7312957 (patch)
treeaf8c46174fcb79400f90950297b61aab25341262
parenta2353048716e96cc0b3d5c69bc6159902602abe9 (diff)
downloadegawk-4341f63af3b49a3f213c8cbd6d88985ea7312957.tar.gz
egawk-4341f63af3b49a3f213c8cbd6d88985ea7312957.tar.bz2
egawk-4341f63af3b49a3f213c8cbd6d88985ea7312957.zip
Make getgroups error non-fatal. Minor doc update.
-rw-r--r--ChangeLog5
-rw-r--r--doc/gawk.info724
-rw-r--r--doc/gawk.texi4
-rw-r--r--main.c13
4 files changed, 381 insertions, 365 deletions
diff --git a/ChangeLog b/ChangeLog
index 375d1cfc..f72977c1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2012-02-28 Arnold D. Robbins <arnold@skeeve.com>
+
+ * main.c (init_groupset): Make `getgroups' failing a non-fatal
+ error. After all, what's the big deal? Should help on Plan 9.
+
2012-02-27 Arnold D. Robbins <arnold@skeeve.com>
* dfa.c (parse_bracket_exp): Revert changes 2012-02-15 to stay
diff --git a/doc/gawk.info b/doc/gawk.info
index bfaca25b..a33027cd 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -3173,6 +3173,10 @@ sequences and that are not listed in the table stand for themselves:
constants are valid and work the way you want them to, using any
version of `awk'.(2)
+ Finally, when `{' and `}' appear in regexp constants in a way that
+ cannot be interpreted as an interval expression (such as
+ `/q{a}/'), then they stand for themselves.
+
In regular expressions, the `*', `+', and `?' operators, as well as
the braces `{' and `}', have the highest precedence, followed by
concatenation, and finally by `|'. As in arithmetic, parentheses can
@@ -26079,7 +26083,7 @@ Index
(line 26)
* gawk, regular expressions, operators: GNU Regexp Operators.
(line 6)
-* gawk, regular expressions, precedence: Regexp Operators. (line 157)
+* gawk, regular expressions, precedence: Regexp Operators. (line 161)
* gawk, RT variable in <1>: Auto-set. (line 196)
* gawk, RT variable in <2>: Getline/Variable/File.
(line 10)
@@ -26761,7 +26765,7 @@ Index
* POSIX awk, OFMT variable and: OFMT. (line 27)
* POSIX awk, period (.), using: Regexp Operators. (line 50)
* POSIX awk, printf format strings and: Format Modifiers. (line 159)
-* POSIX awk, regular expressions and: Regexp Operators. (line 157)
+* POSIX awk, regular expressions and: Regexp Operators. (line 161)
* POSIX awk, timestamps and: Time Functions. (line 6)
* POSIX awk, | I/O operator and: Getline/Pipe. (line 52)
* POSIX mode: Options. (line 199)
@@ -26771,7 +26775,7 @@ Index
* POSIXLY_CORRECT environment variable: Options. (line 289)
* precedence <1>: Precedence. (line 6)
* precedence: Increment Ops. (line 61)
-* precedence, regexp operators: Regexp Operators. (line 152)
+* precedence, regexp operators: Regexp Operators. (line 156)
* print debugger command: Viewing And Changing Data.
(line 36)
* print statement: Printing. (line 16)
@@ -26937,7 +26941,7 @@ Index
* regular expressions, operators, gawk: GNU Regexp Operators.
(line 6)
* regular expressions, operators, precedence of: Regexp Operators.
- (line 152)
+ (line 156)
* regular expressions, searching for: Egrep Program. (line 6)
* relational operators, See comparison operators: Typing and Comparison.
(line 9)
@@ -27490,361 +27494,361 @@ Node: Regexp127250
Node: Regexp Usage128639
Node: Escape Sequences130665
Node: Regexp Operators136428
-Ref: Regexp Operators-Footnote-1143625
-Ref: Regexp Operators-Footnote-2143772
-Node: Bracket Expressions143870
-Ref: table-char-classes145760
-Node: GNU Regexp Operators148283
-Node: Case-sensitivity152006
-Ref: Case-sensitivity-Footnote-1154974
-Ref: Case-sensitivity-Footnote-2155209
-Node: Leftmost Longest155317
-Node: Computed Regexps156518
-Node: Reading Files159928
-Node: Records161869
-Ref: Records-Footnote-1170543
-Node: Fields170580
-Ref: Fields-Footnote-1173613
-Node: Nonconstant Fields173699
-Node: Changing Fields175901
-Node: Field Separators181882
-Node: Default Field Splitting184511
-Node: Regexp Field Splitting185628
-Node: Single Character Fields188970
-Node: Command Line Field Separator190029
-Node: Field Splitting Summary193470
-Ref: Field Splitting Summary-Footnote-1196662
-Node: Constant Size196763
-Node: Splitting By Content201347
-Ref: Splitting By Content-Footnote-1205073
-Node: Multiple Line205113
-Ref: Multiple Line-Footnote-1210960
-Node: Getline211139
-Node: Plain Getline213367
-Node: Getline/Variable215456
-Node: Getline/File216597
-Node: Getline/Variable/File217919
-Ref: Getline/Variable/File-Footnote-1219518
-Node: Getline/Pipe219605
-Node: Getline/Variable/Pipe222165
-Node: Getline/Coprocess223272
-Node: Getline/Variable/Coprocess224515
-Node: Getline Notes225229
-Node: Getline Summary227171
-Ref: table-getline-variants227514
-Node: Command line directories228370
-Node: Printing228995
-Node: Print230626
-Node: Print Examples231963
-Node: Output Separators234747
-Node: OFMT236507
-Node: Printf237865
-Node: Basic Printf238771
-Node: Control Letters240310
-Node: Format Modifiers244122
-Node: Printf Examples250131
-Node: Redirection252846
-Node: Special Files259830
-Node: Special FD260363
-Ref: Special FD-Footnote-1263988
-Node: Special Network264062
-Node: Special Caveats264912
-Node: Close Files And Pipes265708
-Ref: Close Files And Pipes-Footnote-1272731
-Ref: Close Files And Pipes-Footnote-2272879
-Node: Expressions273029
-Node: Values274161
-Node: Constants274837
-Node: Scalar Constants275517
-Ref: Scalar Constants-Footnote-1276376
-Node: Nondecimal-numbers276558
-Node: Regexp Constants279617
-Node: Using Constant Regexps280092
-Node: Variables283147
-Node: Using Variables283802
-Node: Assignment Options285526
-Node: Conversion287398
-Ref: table-locale-affects292774
-Ref: Conversion-Footnote-1293398
-Node: All Operators293507
-Node: Arithmetic Ops294137
-Node: Concatenation296642
-Ref: Concatenation-Footnote-1299435
-Node: Assignment Ops299555
-Ref: table-assign-ops304543
-Node: Increment Ops305951
-Node: Truth Values and Conditions309421
-Node: Truth Values310504
-Node: Typing and Comparison311553
-Node: Variable Typing312342
-Ref: Variable Typing-Footnote-1316239
-Node: Comparison Operators316361
-Ref: table-relational-ops316771
-Node: POSIX String Comparison320320
-Ref: POSIX String Comparison-Footnote-1321276
-Node: Boolean Ops321414
-Ref: Boolean Ops-Footnote-1325492
-Node: Conditional Exp325583
-Node: Function Calls327315
-Node: Precedence330909
-Node: Locales334578
-Node: Patterns and Actions335667
-Node: Pattern Overview336721
-Node: Regexp Patterns338390
-Node: Expression Patterns338933
-Node: Ranges342618
-Node: BEGIN/END345584
-Node: Using BEGIN/END346346
-Ref: Using BEGIN/END-Footnote-1349077
-Node: I/O And BEGIN/END349183
-Node: BEGINFILE/ENDFILE351465
-Node: Empty354358
-Node: Using Shell Variables354674
-Node: Action Overview356959
-Node: Statements359316
-Node: If Statement361170
-Node: While Statement362669
-Node: Do Statement364713
-Node: For Statement365869
-Node: Switch Statement369021
-Node: Break Statement371118
-Node: Continue Statement373108
-Node: Next Statement374901
-Node: Nextfile Statement377291
-Node: Exit Statement379836
-Node: Built-in Variables382252
-Node: User-modified383347
-Ref: User-modified-Footnote-1391373
-Node: Auto-set391435
-Ref: Auto-set-Footnote-1400726
-Node: ARGC and ARGV400931
-Node: Arrays404782
-Node: Array Basics406287
-Node: Array Intro407113
-Node: Reference to Elements411431
-Node: Assigning Elements413701
-Node: Array Example414192
-Node: Scanning an Array415924
-Node: Controlling Scanning418238
-Ref: Controlling Scanning-Footnote-1423171
-Node: Delete423487
-Ref: Delete-Footnote-1425922
-Node: Numeric Array Subscripts425979
-Node: Uninitialized Subscripts428162
-Node: Multi-dimensional429790
-Node: Multi-scanning432884
-Node: Arrays of Arrays434475
-Node: Functions439120
-Node: Built-in439942
-Node: Calling Built-in441020
-Node: Numeric Functions443008
-Ref: Numeric Functions-Footnote-1446840
-Ref: Numeric Functions-Footnote-2447197
-Ref: Numeric Functions-Footnote-3447245
-Node: String Functions447514
-Ref: String Functions-Footnote-1471011
-Ref: String Functions-Footnote-2471140
-Ref: String Functions-Footnote-3471388
-Node: Gory Details471475
-Ref: table-sub-escapes473154
-Ref: table-sub-posix-92474508
-Ref: table-sub-proposed475851
-Ref: table-posix-sub477201
-Ref: table-gensub-escapes478747
-Ref: Gory Details-Footnote-1479954
-Ref: Gory Details-Footnote-2480005
-Node: I/O Functions480156
-Ref: I/O Functions-Footnote-1486811
-Node: Time Functions486958
-Ref: Time Functions-Footnote-1497850
-Ref: Time Functions-Footnote-2497918
-Ref: Time Functions-Footnote-3498076
-Ref: Time Functions-Footnote-4498187
-Ref: Time Functions-Footnote-5498299
-Ref: Time Functions-Footnote-6498526
-Node: Bitwise Functions498792
-Ref: table-bitwise-ops499350
-Ref: Bitwise Functions-Footnote-1503510
-Node: Type Functions503694
-Node: I18N Functions504164
-Node: User-defined505791
-Node: Definition Syntax506595
-Ref: Definition Syntax-Footnote-1511505
-Node: Function Example511574
-Node: Function Caveats514168
-Node: Calling A Function514589
-Node: Variable Scope515704
-Node: Pass By Value/Reference517679
-Node: Return Statement521119
-Node: Dynamic Typing524100
-Node: Indirect Calls524835
-Node: Internationalization534520
-Node: I18N and L10N535946
-Node: Explaining gettext536632
-Ref: Explaining gettext-Footnote-1541698
-Ref: Explaining gettext-Footnote-2541882
-Node: Programmer i18n542047
-Node: Translator i18n546247
-Node: String Extraction547040
-Ref: String Extraction-Footnote-1548001
-Node: Printf Ordering548087
-Ref: Printf Ordering-Footnote-1550871
-Node: I18N Portability550935
-Ref: I18N Portability-Footnote-1553384
-Node: I18N Example553447
-Ref: I18N Example-Footnote-1556082
-Node: Gawk I18N556154
-Node: Advanced Features556771
-Node: Nondecimal Data558284
-Node: Array Sorting559867
-Node: Controlling Array Traversal560564
-Node: Array Sorting Functions568801
-Ref: Array Sorting Functions-Footnote-1572475
-Ref: Array Sorting Functions-Footnote-2572568
-Node: Two-way I/O572762
-Ref: Two-way I/O-Footnote-1578194
-Node: TCP/IP Networking578264
-Node: Profiling581108
-Node: Library Functions588582
-Ref: Library Functions-Footnote-1591589
-Node: Library Names591760
-Ref: Library Names-Footnote-1595231
-Ref: Library Names-Footnote-2595451
-Node: General Functions595537
-Node: Strtonum Function596490
-Node: Assert Function599420
-Node: Round Function602746
-Node: Cliff Random Function604289
-Node: Ordinal Functions605305
-Ref: Ordinal Functions-Footnote-1608375
-Ref: Ordinal Functions-Footnote-2608627
-Node: Join Function608836
-Ref: Join Function-Footnote-1610607
-Node: Gettimeofday Function610807
-Node: Data File Management614522
-Node: Filetrans Function615154
-Node: Rewind Function619293
-Node: File Checking620680
-Node: Empty Files621774
-Node: Ignoring Assigns624004
-Node: Getopt Function625557
-Ref: Getopt Function-Footnote-1636861
-Node: Passwd Functions637064
-Ref: Passwd Functions-Footnote-1646039
-Node: Group Functions646127
-Node: Walking Arrays654211
-Node: Sample Programs655780
-Node: Running Examples656445
-Node: Clones657173
-Node: Cut Program658397
-Node: Egrep Program668242
-Ref: Egrep Program-Footnote-1676015
-Node: Id Program676125
-Node: Split Program679741
-Ref: Split Program-Footnote-1683260
-Node: Tee Program683388
-Node: Uniq Program686191
-Node: Wc Program693620
-Ref: Wc Program-Footnote-1697886
-Ref: Wc Program-Footnote-2698086
-Node: Miscellaneous Programs698178
-Node: Dupword Program699366
-Node: Alarm Program701397
-Node: Translate Program706146
-Ref: Translate Program-Footnote-1710533
-Ref: Translate Program-Footnote-2710761
-Node: Labels Program710895
-Ref: Labels Program-Footnote-1714266
-Node: Word Sorting714350
-Node: History Sorting718234
-Node: Extract Program720073
-Ref: Extract Program-Footnote-1727556
-Node: Simple Sed727684
-Node: Igawk Program730746
-Ref: Igawk Program-Footnote-1745903
-Ref: Igawk Program-Footnote-2746104
-Node: Anagram Program746242
-Node: Signature Program749310
-Node: Debugger750410
-Node: Debugging751321
-Node: Debugging Concepts751734
-Node: Debugging Terms753590
-Node: Awk Debugging756213
-Node: Sample dgawk session757105
-Node: dgawk invocation757597
-Node: Finding The Bug758779
-Node: List of Debugger Commands765265
-Node: Breakpoint Control766576
-Node: Dgawk Execution Control770212
-Node: Viewing And Changing Data773563
-Node: Dgawk Stack776900
-Node: Dgawk Info778360
-Node: Miscellaneous Dgawk Commands782308
-Node: Readline Support787736
-Node: Dgawk Limitations788574
-Node: Language History790763
-Node: V7/SVR3.1792275
-Node: SVR4794596
-Node: POSIX796038
-Node: BTL797046
-Node: POSIX/GNU797780
-Node: Common Extensions802931
-Node: Ranges and Locales804038
-Ref: Ranges and Locales-Footnote-1808642
-Node: Contributors808863
-Node: Installation813125
-Node: Gawk Distribution814019
-Node: Getting814503
-Node: Extracting815329
-Node: Distribution contents817021
-Node: Unix Installation822243
-Node: Quick Installation822860
-Node: Additional Configuration Options824822
-Node: Configuration Philosophy826299
-Node: Non-Unix Installation828641
-Node: PC Installation829099
-Node: PC Binary Installation830398
-Node: PC Compiling832246
-Node: PC Testing835190
-Node: PC Using836366
-Node: Cygwin840551
-Node: MSYS841551
-Node: VMS Installation842065
-Node: VMS Compilation842668
-Ref: VMS Compilation-Footnote-1843675
-Node: VMS Installation Details843733
-Node: VMS Running845368
-Node: VMS Old Gawk846975
-Node: Bugs847449
-Node: Other Versions851301
-Node: Notes856582
-Node: Compatibility Mode857274
-Node: Additions858057
-Node: Accessing The Source858869
-Node: Adding Code860294
-Node: New Ports866261
-Node: Dynamic Extensions870374
-Node: Internals871750
-Node: Plugin License880853
-Node: Sample Library881487
-Node: Internal File Description882173
-Node: Internal File Ops885888
-Ref: Internal File Ops-Footnote-1890669
-Node: Using Internal File Ops890809
-Node: Future Extensions893186
-Node: Basic Concepts895690
-Node: Basic High Level896447
-Ref: Basic High Level-Footnote-1900482
-Node: Basic Data Typing900667
-Node: Floating Point Issues905192
-Node: String Conversion Precision906275
-Ref: String Conversion Precision-Footnote-1907975
-Node: Unexpected Results908084
-Node: POSIX Floating Point Problems909910
-Ref: POSIX Floating Point Problems-Footnote-1913615
-Node: Glossary913653
-Node: Copying938629
-Node: GNU Free Documentation License976186
-Node: Index1001323
+Ref: Regexp Operators-Footnote-1143808
+Ref: Regexp Operators-Footnote-2143955
+Node: Bracket Expressions144053
+Ref: table-char-classes145943
+Node: GNU Regexp Operators148466
+Node: Case-sensitivity152189
+Ref: Case-sensitivity-Footnote-1155157
+Ref: Case-sensitivity-Footnote-2155392
+Node: Leftmost Longest155500
+Node: Computed Regexps156701
+Node: Reading Files160111
+Node: Records162052
+Ref: Records-Footnote-1170726
+Node: Fields170763
+Ref: Fields-Footnote-1173796
+Node: Nonconstant Fields173882
+Node: Changing Fields176084
+Node: Field Separators182065
+Node: Default Field Splitting184694
+Node: Regexp Field Splitting185811
+Node: Single Character Fields189153
+Node: Command Line Field Separator190212
+Node: Field Splitting Summary193653
+Ref: Field Splitting Summary-Footnote-1196845
+Node: Constant Size196946
+Node: Splitting By Content201530
+Ref: Splitting By Content-Footnote-1205256
+Node: Multiple Line205296
+Ref: Multiple Line-Footnote-1211143
+Node: Getline211322
+Node: Plain Getline213550
+Node: Getline/Variable215639
+Node: Getline/File216780
+Node: Getline/Variable/File218102
+Ref: Getline/Variable/File-Footnote-1219701
+Node: Getline/Pipe219788
+Node: Getline/Variable/Pipe222348
+Node: Getline/Coprocess223455
+Node: Getline/Variable/Coprocess224698
+Node: Getline Notes225412
+Node: Getline Summary227354
+Ref: table-getline-variants227697
+Node: Command line directories228553
+Node: Printing229178
+Node: Print230809
+Node: Print Examples232146
+Node: Output Separators234930
+Node: OFMT236690
+Node: Printf238048
+Node: Basic Printf238954
+Node: Control Letters240493
+Node: Format Modifiers244305
+Node: Printf Examples250314
+Node: Redirection253029
+Node: Special Files260013
+Node: Special FD260546
+Ref: Special FD-Footnote-1264171
+Node: Special Network264245
+Node: Special Caveats265095
+Node: Close Files And Pipes265891
+Ref: Close Files And Pipes-Footnote-1272914
+Ref: Close Files And Pipes-Footnote-2273062
+Node: Expressions273212
+Node: Values274344
+Node: Constants275020
+Node: Scalar Constants275700
+Ref: Scalar Constants-Footnote-1276559
+Node: Nondecimal-numbers276741
+Node: Regexp Constants279800
+Node: Using Constant Regexps280275
+Node: Variables283330
+Node: Using Variables283985
+Node: Assignment Options285709
+Node: Conversion287581
+Ref: table-locale-affects292957
+Ref: Conversion-Footnote-1293581
+Node: All Operators293690
+Node: Arithmetic Ops294320
+Node: Concatenation296825
+Ref: Concatenation-Footnote-1299618
+Node: Assignment Ops299738
+Ref: table-assign-ops304726
+Node: Increment Ops306134
+Node: Truth Values and Conditions309604
+Node: Truth Values310687
+Node: Typing and Comparison311736
+Node: Variable Typing312525
+Ref: Variable Typing-Footnote-1316422
+Node: Comparison Operators316544
+Ref: table-relational-ops316954
+Node: POSIX String Comparison320503
+Ref: POSIX String Comparison-Footnote-1321459
+Node: Boolean Ops321597
+Ref: Boolean Ops-Footnote-1325675
+Node: Conditional Exp325766
+Node: Function Calls327498
+Node: Precedence331092
+Node: Locales334761
+Node: Patterns and Actions335850
+Node: Pattern Overview336904
+Node: Regexp Patterns338573
+Node: Expression Patterns339116
+Node: Ranges342801
+Node: BEGIN/END345767
+Node: Using BEGIN/END346529
+Ref: Using BEGIN/END-Footnote-1349260
+Node: I/O And BEGIN/END349366
+Node: BEGINFILE/ENDFILE351648
+Node: Empty354541
+Node: Using Shell Variables354857
+Node: Action Overview357142
+Node: Statements359499
+Node: If Statement361353
+Node: While Statement362852
+Node: Do Statement364896
+Node: For Statement366052
+Node: Switch Statement369204
+Node: Break Statement371301
+Node: Continue Statement373291
+Node: Next Statement375084
+Node: Nextfile Statement377474
+Node: Exit Statement380019
+Node: Built-in Variables382435
+Node: User-modified383530
+Ref: User-modified-Footnote-1391556
+Node: Auto-set391618
+Ref: Auto-set-Footnote-1400909
+Node: ARGC and ARGV401114
+Node: Arrays404965
+Node: Array Basics406470
+Node: Array Intro407296
+Node: Reference to Elements411614
+Node: Assigning Elements413884
+Node: Array Example414375
+Node: Scanning an Array416107
+Node: Controlling Scanning418421
+Ref: Controlling Scanning-Footnote-1423354
+Node: Delete423670
+Ref: Delete-Footnote-1426105
+Node: Numeric Array Subscripts426162
+Node: Uninitialized Subscripts428345
+Node: Multi-dimensional429973
+Node: Multi-scanning433067
+Node: Arrays of Arrays434658
+Node: Functions439303
+Node: Built-in440125
+Node: Calling Built-in441203
+Node: Numeric Functions443191
+Ref: Numeric Functions-Footnote-1447023
+Ref: Numeric Functions-Footnote-2447380
+Ref: Numeric Functions-Footnote-3447428
+Node: String Functions447697
+Ref: String Functions-Footnote-1471194
+Ref: String Functions-Footnote-2471323
+Ref: String Functions-Footnote-3471571
+Node: Gory Details471658
+Ref: table-sub-escapes473337
+Ref: table-sub-posix-92474691
+Ref: table-sub-proposed476034
+Ref: table-posix-sub477384
+Ref: table-gensub-escapes478930
+Ref: Gory Details-Footnote-1480137
+Ref: Gory Details-Footnote-2480188
+Node: I/O Functions480339
+Ref: I/O Functions-Footnote-1486994
+Node: Time Functions487141
+Ref: Time Functions-Footnote-1498033
+Ref: Time Functions-Footnote-2498101
+Ref: Time Functions-Footnote-3498259
+Ref: Time Functions-Footnote-4498370
+Ref: Time Functions-Footnote-5498482
+Ref: Time Functions-Footnote-6498709
+Node: Bitwise Functions498975
+Ref: table-bitwise-ops499533
+Ref: Bitwise Functions-Footnote-1503693
+Node: Type Functions503877
+Node: I18N Functions504347
+Node: User-defined505974
+Node: Definition Syntax506778
+Ref: Definition Syntax-Footnote-1511688
+Node: Function Example511757
+Node: Function Caveats514351
+Node: Calling A Function514772
+Node: Variable Scope515887
+Node: Pass By Value/Reference517862
+Node: Return Statement521302
+Node: Dynamic Typing524283
+Node: Indirect Calls525018
+Node: Internationalization534703
+Node: I18N and L10N536129
+Node: Explaining gettext536815
+Ref: Explaining gettext-Footnote-1541881
+Ref: Explaining gettext-Footnote-2542065
+Node: Programmer i18n542230
+Node: Translator i18n546430
+Node: String Extraction547223
+Ref: String Extraction-Footnote-1548184
+Node: Printf Ordering548270
+Ref: Printf Ordering-Footnote-1551054
+Node: I18N Portability551118
+Ref: I18N Portability-Footnote-1553567
+Node: I18N Example553630
+Ref: I18N Example-Footnote-1556265
+Node: Gawk I18N556337
+Node: Advanced Features556954
+Node: Nondecimal Data558467
+Node: Array Sorting560050
+Node: Controlling Array Traversal560747
+Node: Array Sorting Functions568984
+Ref: Array Sorting Functions-Footnote-1572658
+Ref: Array Sorting Functions-Footnote-2572751
+Node: Two-way I/O572945
+Ref: Two-way I/O-Footnote-1578377
+Node: TCP/IP Networking578447
+Node: Profiling581291
+Node: Library Functions588765
+Ref: Library Functions-Footnote-1591772
+Node: Library Names591943
+Ref: Library Names-Footnote-1595414
+Ref: Library Names-Footnote-2595634
+Node: General Functions595720
+Node: Strtonum Function596673
+Node: Assert Function599603
+Node: Round Function602929
+Node: Cliff Random Function604472
+Node: Ordinal Functions605488
+Ref: Ordinal Functions-Footnote-1608558
+Ref: Ordinal Functions-Footnote-2608810
+Node: Join Function609019
+Ref: Join Function-Footnote-1610790
+Node: Gettimeofday Function610990
+Node: Data File Management614705
+Node: Filetrans Function615337
+Node: Rewind Function619476
+Node: File Checking620863
+Node: Empty Files621957
+Node: Ignoring Assigns624187
+Node: Getopt Function625740
+Ref: Getopt Function-Footnote-1637044
+Node: Passwd Functions637247
+Ref: Passwd Functions-Footnote-1646222
+Node: Group Functions646310
+Node: Walking Arrays654394
+Node: Sample Programs655963
+Node: Running Examples656628
+Node: Clones657356
+Node: Cut Program658580
+Node: Egrep Program668425
+Ref: Egrep Program-Footnote-1676198
+Node: Id Program676308
+Node: Split Program679924
+Ref: Split Program-Footnote-1683443
+Node: Tee Program683571
+Node: Uniq Program686374
+Node: Wc Program693803
+Ref: Wc Program-Footnote-1698069
+Ref: Wc Program-Footnote-2698269
+Node: Miscellaneous Programs698361
+Node: Dupword Program699549
+Node: Alarm Program701580
+Node: Translate Program706329
+Ref: Translate Program-Footnote-1710716
+Ref: Translate Program-Footnote-2710944
+Node: Labels Program711078
+Ref: Labels Program-Footnote-1714449
+Node: Word Sorting714533
+Node: History Sorting718417
+Node: Extract Program720256
+Ref: Extract Program-Footnote-1727739
+Node: Simple Sed727867
+Node: Igawk Program730929
+Ref: Igawk Program-Footnote-1746086
+Ref: Igawk Program-Footnote-2746287
+Node: Anagram Program746425
+Node: Signature Program749493
+Node: Debugger750593
+Node: Debugging751504
+Node: Debugging Concepts751917
+Node: Debugging Terms753773
+Node: Awk Debugging756396
+Node: Sample dgawk session757288
+Node: dgawk invocation757780
+Node: Finding The Bug758962
+Node: List of Debugger Commands765448
+Node: Breakpoint Control766759
+Node: Dgawk Execution Control770395
+Node: Viewing And Changing Data773746
+Node: Dgawk Stack777083
+Node: Dgawk Info778543
+Node: Miscellaneous Dgawk Commands782491
+Node: Readline Support787919
+Node: Dgawk Limitations788757
+Node: Language History790946
+Node: V7/SVR3.1792458
+Node: SVR4794779
+Node: POSIX796221
+Node: BTL797229
+Node: POSIX/GNU797963
+Node: Common Extensions803114
+Node: Ranges and Locales804221
+Ref: Ranges and Locales-Footnote-1808825
+Node: Contributors809046
+Node: Installation813308
+Node: Gawk Distribution814202
+Node: Getting814686
+Node: Extracting815512
+Node: Distribution contents817204
+Node: Unix Installation822426
+Node: Quick Installation823043
+Node: Additional Configuration Options825005
+Node: Configuration Philosophy826482
+Node: Non-Unix Installation828824
+Node: PC Installation829282
+Node: PC Binary Installation830581
+Node: PC Compiling832429
+Node: PC Testing835373
+Node: PC Using836549
+Node: Cygwin840734
+Node: MSYS841734
+Node: VMS Installation842248
+Node: VMS Compilation842851
+Ref: VMS Compilation-Footnote-1843858
+Node: VMS Installation Details843916
+Node: VMS Running845551
+Node: VMS Old Gawk847158
+Node: Bugs847632
+Node: Other Versions851484
+Node: Notes856765
+Node: Compatibility Mode857457
+Node: Additions858240
+Node: Accessing The Source859052
+Node: Adding Code860477
+Node: New Ports866444
+Node: Dynamic Extensions870557
+Node: Internals871933
+Node: Plugin License881036
+Node: Sample Library881670
+Node: Internal File Description882356
+Node: Internal File Ops886071
+Ref: Internal File Ops-Footnote-1890852
+Node: Using Internal File Ops890992
+Node: Future Extensions893369
+Node: Basic Concepts895873
+Node: Basic High Level896630
+Ref: Basic High Level-Footnote-1900665
+Node: Basic Data Typing900850
+Node: Floating Point Issues905375
+Node: String Conversion Precision906458
+Ref: String Conversion Precision-Footnote-1908158
+Node: Unexpected Results908267
+Node: POSIX Floating Point Problems910093
+Ref: POSIX Floating Point Problems-Footnote-1913798
+Node: Glossary913836
+Node: Copying938812
+Node: GNU Free Documentation License976369
+Node: Index1001506

End Tag Table
diff --git a/doc/gawk.texi b/doc/gawk.texi
index ee401f9e..83bd3b5d 100644
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -4486,6 +4486,10 @@ it is good practice to always escape them with a backslash. Then the
regexp constants are valid and work the way you want them to, using
any version of @command{awk}.@footnote{Use two backslashes if you're
using a string constant with a regexp operator or function.}
+
+Finally, 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.
@end table
@cindex precedence, regexp operators
diff --git a/main.c b/main.c
index 05964a2d..3680e3f4 100644
--- a/main.c
+++ b/main.c
@@ -1372,17 +1372,20 @@ init_groupset()
*/
ngroups = getgroups(0, NULL);
#endif
- if (ngroups == -1)
- fatal(_("could not find groups: %s"), strerror(errno));
- else if (ngroups == 0)
+ /* If an error or no groups, just give up and get on with life. */
+ if (ngroups <= 0)
return;
/* fill in groups */
emalloc(groupset, GETGROUPS_T *, ngroups * sizeof(GETGROUPS_T), "init_groupset");
ngroups = getgroups(ngroups, groupset);
- if (ngroups == -1)
- fatal(_("could not find groups: %s"), strerror(errno));
+ /* same thing here, give up but keep going */
+ if (ngroups == -1) {
+ efree(groupset);
+ ngroups = 0;
+ groupset = NULL;
+ }
#endif
}