aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog10
-rw-r--r--awkgram.c2
-rw-r--r--awkgram.y2
-rw-r--r--doc/ChangeLog4
-rw-r--r--doc/gawk.info1047
-rw-r--r--doc/gawk.texi25
-rw-r--r--doc/gawktexi.in2
-rw-r--r--eval.c25
8 files changed, 590 insertions, 527 deletions
diff --git a/ChangeLog b/ChangeLog
index 1c53e2f8..e7ea7bc4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2016-07-19 Andrew J. Schorr <aschorr@telemetry-investments.com>
+
+ * eval.c (set_LINT): Simplify the code considerably.
+
+2016-07-19 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.y (shadow_funcs): Change test at end to be
+ `lintfunc == r_fatal' instead of `lintfunc != warning'.
+ Thank to Andrew Schorr for the suggestion.
+
2016-07-18 Arnold D. Robbins <arnold@skeeve.com>
* main.c (locale_dir): New variable, init to LOCALEDIR (set by
diff --git a/awkgram.c b/awkgram.c
index 6556d0a7..6037d424 100644
--- a/awkgram.c
+++ b/awkgram.c
@@ -7090,7 +7090,7 @@ shadow_funcs()
efree(funcs);
/* End with fatal if the user requested it. */
- if (shadow && lintfunc != warning)
+ if (shadow && lintfunc == r_fatal)
lintwarn(_("there were shadowed variables."));
}
diff --git a/awkgram.y b/awkgram.y
index cd5353f9..0b7e29f3 100644
--- a/awkgram.y
+++ b/awkgram.y
@@ -4670,7 +4670,7 @@ shadow_funcs()
efree(funcs);
/* End with fatal if the user requested it. */
- if (shadow && lintfunc != warning)
+ if (shadow && lintfunc == r_fatal)
lintwarn(_("there were shadowed variables."));
}
diff --git a/doc/ChangeLog b/doc/ChangeLog
index 2bccf3c1..51a14780 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,3 +1,7 @@
+2016-07-18 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawktexi.in: Fix a typo. Thanks to Antonio Colombo for reporting.
+
2016-07-17 Arnold D. Robbins <arnold@skeeve.com>
* gawktexi.in: Document GAWK_LOCALE_DIR env var and also to not
diff --git a/doc/gawk.info b/doc/gawk.info
index 0c2c9597..a946b129 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -3052,6 +3052,11 @@ change. The variables are:
source of a message, as there are multiple places that produce the
same warning or error message.
+'GAWK_LOCALE_DIR'
+ Specifies the location of compiled message object files for 'gawk'
+ itself. This is passed to the 'bindtextdomain()' function when
+ 'gawk' starts up.
+
'GAWK_NO_DFA'
If this variable exists, 'gawk' does not use the DFA regexp matcher
for "does it match" kinds of tests. This can cause 'gawk' to be
@@ -20550,6 +20555,23 @@ are:
'LC_ALL'
All of the above. (Not too useful in the context of 'gettext'.)
+ NOTE: As described in *note Locales::, environment variables with
+ the same name as the locale categories ('LC_CTYPE', 'LC_ALL', etc.)
+ influence 'gawk''s behavior (and that of other utilities).
+
+ Normally, these variables also affect how the 'gettext' library
+ finds translations. However, the 'LANGUAGE' environment variable
+ overrides the 'LC_XXX' variables. Many GNU/Linux systems may
+ define this variable without your knowledge, causing 'gawk' to not
+ find the correct translations. If this happens to you, look to see
+ if 'LANGUAGE' is defined, and if so, use the shell's 'unset'
+ command to remove it.
+
+ For testing translations of 'gawk' itself, you can set the
+'GAWK_LOCALE_DIR' environment variable. See the documentation for the C
+'bindtextdomain()' function and also see *note Other Environment
+Variables::.
+
---------- Footnotes ----------
(1) For some operating systems, the 'gawk' port doesn't support GNU
@@ -34059,6 +34081,7 @@ Index
(line 75)
* labels.awk program: Labels Program. (line 51)
* Langston, Peter: Advanced Features. (line 6)
+* LANGUAGE environment variable: Explaining gettext. (line 120)
* languages, data-driven: Basic High Level. (line 74)
* LC_ALL locale category: Explaining gettext. (line 117)
* LC_COLLATE locale category: Explaining gettext. (line 94)
@@ -35327,517 +35350,517 @@ Ref: AWKPATH Variable-Footnote-1140788
Ref: AWKPATH Variable-Footnote-2140833
Node: AWKLIBPATH Variable141094
Node: Other Environment Variables142351
-Node: Exit Status145989
-Node: Include Files146666
-Node: Loading Shared Libraries150261
-Node: Obsolete151689
-Node: Undocumented152381
-Node: Invoking Summary152678
-Node: Regexp154338
-Node: Regexp Usage155857
-Node: Escape Sequences157894
-Node: Regexp Operators164126
-Ref: Regexp Operators-Footnote-1171542
-Ref: Regexp Operators-Footnote-2171689
-Node: Bracket Expressions171787
-Ref: table-char-classes174263
-Node: Leftmost Longest177400
-Node: Computed Regexps178703
-Node: GNU Regexp Operators182130
-Node: Case-sensitivity185809
-Ref: Case-sensitivity-Footnote-1188705
-Ref: Case-sensitivity-Footnote-2188940
-Node: Strong Regexp Constants189048
-Node: Regexp Summary191990
-Node: Reading Files193596
-Node: Records195759
-Node: awk split records196492
-Node: gawk split records201423
-Ref: gawk split records-Footnote-1205963
-Node: Fields206000
-Node: Nonconstant Fields208741
-Ref: Nonconstant Fields-Footnote-1210977
-Node: Changing Fields211181
-Node: Field Separators217109
-Node: Default Field Splitting219807
-Node: Regexp Field Splitting220925
-Node: Single Character Fields224278
-Node: Command Line Field Separator225338
-Node: Full Line Fields228556
-Ref: Full Line Fields-Footnote-1230078
-Ref: Full Line Fields-Footnote-2230124
-Node: Field Splitting Summary230225
-Node: Constant Size232299
-Node: Splitting By Content236877
-Ref: Splitting By Content-Footnote-1240848
-Node: Multiple Line241011
-Ref: Multiple Line-Footnote-1246893
-Node: Getline247072
-Node: Plain Getline249538
-Node: Getline/Variable252177
-Node: Getline/File253326
-Node: Getline/Variable/File254712
-Ref: Getline/Variable/File-Footnote-1256315
-Node: Getline/Pipe256403
-Node: Getline/Variable/Pipe259108
-Node: Getline/Coprocess260241
-Node: Getline/Variable/Coprocess261506
-Node: Getline Notes262246
-Node: Getline Summary265041
-Ref: table-getline-variants265463
-Node: Read Timeout266211
-Ref: Read Timeout-Footnote-1270117
-Node: Retrying Input270175
-Node: Command-line directories271374
-Node: Input Summary272280
-Node: Input Exercises275452
-Node: Printing276180
-Node: Print278014
-Node: Print Examples279471
-Node: Output Separators282251
-Node: OFMT284268
-Node: Printf285624
-Node: Basic Printf286409
-Node: Control Letters287983
-Node: Format Modifiers291971
-Node: Printf Examples297986
-Node: Redirection300472
-Node: Special FD307313
-Ref: Special FD-Footnote-1310481
-Node: Special Files310555
-Node: Other Inherited Files311172
-Node: Special Network312173
-Node: Special Caveats313033
-Node: Close Files And Pipes313982
-Ref: Close Files And Pipes-Footnote-1321169
-Ref: Close Files And Pipes-Footnote-2321317
-Node: Nonfatal321468
-Node: Output Summary323793
-Node: Output Exercises325015
-Node: Expressions325694
-Node: Values326882
-Node: Constants327560
-Node: Scalar Constants328251
-Ref: Scalar Constants-Footnote-1329115
-Node: Nondecimal-numbers329365
-Node: Regexp Constants332378
-Node: Using Constant Regexps332904
-Node: Variables336067
-Node: Using Variables336724
-Node: Assignment Options338634
-Node: Conversion340507
-Node: Strings And Numbers341031
-Ref: Strings And Numbers-Footnote-1344094
-Node: Locale influences conversions344203
-Ref: table-locale-affects346961
-Node: All Operators347579
-Node: Arithmetic Ops348208
-Node: Concatenation350714
-Ref: Concatenation-Footnote-1353561
-Node: Assignment Ops353668
-Ref: table-assign-ops358659
-Node: Increment Ops359972
-Node: Truth Values and Conditions363432
-Node: Truth Values364506
-Node: Typing and Comparison365554
-Node: Variable Typing366374
-Node: Comparison Operators369998
-Ref: table-relational-ops370417
-Node: POSIX String Comparison373912
-Ref: POSIX String Comparison-Footnote-1374986
-Node: Boolean Ops375125
-Ref: Boolean Ops-Footnote-1379607
-Node: Conditional Exp379699
-Node: Function Calls381435
-Node: Precedence385312
-Node: Locales388971
-Node: Expressions Summary390603
-Node: Patterns and Actions393176
-Node: Pattern Overview394296
-Node: Regexp Patterns395973
-Node: Expression Patterns396515
-Node: Ranges400296
-Node: BEGIN/END403404
-Node: Using BEGIN/END404165
-Ref: Using BEGIN/END-Footnote-1406901
-Node: I/O And BEGIN/END407007
-Node: BEGINFILE/ENDFILE409321
-Node: Empty412228
-Node: Using Shell Variables412545
-Node: Action Overview414819
-Node: Statements417144
-Node: If Statement418992
-Node: While Statement420487
-Node: Do Statement422515
-Node: For Statement423663
-Node: Switch Statement426821
-Node: Break Statement429207
-Node: Continue Statement431299
-Node: Next Statement433126
-Node: Nextfile Statement435509
-Node: Exit Statement438161
-Node: Built-in Variables440564
-Node: User-modified441697
-Node: Auto-set449283
-Ref: Auto-set-Footnote-1463936
-Ref: Auto-set-Footnote-2464142
-Node: ARGC and ARGV464198
-Node: Pattern Action Summary468411
-Node: Arrays470841
-Node: Array Basics472170
-Node: Array Intro473014
-Ref: figure-array-elements474989
-Ref: Array Intro-Footnote-1477693
-Node: Reference to Elements477821
-Node: Assigning Elements480285
-Node: Array Example480776
-Node: Scanning an Array482535
-Node: Controlling Scanning485557
-Ref: Controlling Scanning-Footnote-1490956
-Node: Numeric Array Subscripts491272
-Node: Uninitialized Subscripts493456
-Node: Delete495075
-Ref: Delete-Footnote-1497827
-Node: Multidimensional497884
-Node: Multiscanning500979
-Node: Arrays of Arrays502570
-Node: Arrays Summary507337
-Node: Functions509430
-Node: Built-in510468
-Node: Calling Built-in511549
-Node: Numeric Functions513545
-Ref: Numeric Functions-Footnote-1518378
-Ref: Numeric Functions-Footnote-2518735
-Ref: Numeric Functions-Footnote-3518783
-Node: String Functions519055
-Ref: String Functions-Footnote-1542559
-Ref: String Functions-Footnote-2542687
-Ref: String Functions-Footnote-3542935
-Node: Gory Details543022
-Ref: table-sub-escapes544813
-Ref: table-sub-proposed546332
-Ref: table-posix-sub547695
-Ref: table-gensub-escapes549236
-Ref: Gory Details-Footnote-1550059
-Node: I/O Functions550213
-Ref: table-system-return-values556795
-Ref: I/O Functions-Footnote-1558775
-Ref: I/O Functions-Footnote-2558923
-Node: Time Functions559043
-Ref: Time Functions-Footnote-1569548
-Ref: Time Functions-Footnote-2569616
-Ref: Time Functions-Footnote-3569774
-Ref: Time Functions-Footnote-4569885
-Ref: Time Functions-Footnote-5569997
-Ref: Time Functions-Footnote-6570224
-Node: Bitwise Functions570490
-Ref: table-bitwise-ops571084
-Ref: Bitwise Functions-Footnote-1575422
-Node: Type Functions575595
-Node: I18N Functions578256
-Node: User-defined579907
-Node: Definition Syntax580712
-Ref: Definition Syntax-Footnote-1586399
-Node: Function Example586470
-Ref: Function Example-Footnote-1589392
-Node: Function Caveats589414
-Node: Calling A Function589932
-Node: Variable Scope590890
-Node: Pass By Value/Reference593884
-Node: Return Statement597383
-Node: Dynamic Typing600362
-Node: Indirect Calls601292
-Ref: Indirect Calls-Footnote-1611543
-Node: Functions Summary611671
-Node: Library Functions614376
-Ref: Library Functions-Footnote-1617983
-Ref: Library Functions-Footnote-2618126
-Node: Library Names618297
-Ref: Library Names-Footnote-1621757
-Ref: Library Names-Footnote-2621980
-Node: General Functions622066
-Node: Strtonum Function623169
-Node: Assert Function626191
-Node: Round Function629517
-Node: Cliff Random Function631058
-Node: Ordinal Functions632074
-Ref: Ordinal Functions-Footnote-1635137
-Ref: Ordinal Functions-Footnote-2635389
-Node: Join Function635599
-Ref: Join Function-Footnote-1637369
-Node: Getlocaltime Function637569
-Node: Readfile Function641311
-Node: Shell Quoting643283
-Node: Data File Management644684
-Node: Filetrans Function645316
-Node: Rewind Function649412
-Node: File Checking651317
-Ref: File Checking-Footnote-1652651
-Node: Empty Files652852
-Node: Ignoring Assigns654831
-Node: Getopt Function656381
-Ref: Getopt Function-Footnote-1667850
-Node: Passwd Functions668050
-Ref: Passwd Functions-Footnote-1676889
-Node: Group Functions676977
-Ref: Group Functions-Footnote-1684874
-Node: Walking Arrays685081
-Node: Library Functions Summary688089
-Node: Library Exercises689495
-Node: Sample Programs689960
-Node: Running Examples690730
-Node: Clones691458
-Node: Cut Program692682
-Node: Egrep Program702611
-Ref: Egrep Program-Footnote-1710123
-Node: Id Program710233
-Node: Split Program713913
-Ref: Split Program-Footnote-1717372
-Node: Tee Program717501
-Node: Uniq Program720291
-Node: Wc Program727717
-Ref: Wc Program-Footnote-1731972
-Node: Miscellaneous Programs732066
-Node: Dupword Program733279
-Node: Alarm Program735309
-Node: Translate Program740164
-Ref: Translate Program-Footnote-1744729
-Node: Labels Program744999
-Ref: Labels Program-Footnote-1748350
-Node: Word Sorting748434
-Node: History Sorting752506
-Node: Extract Program754341
-Node: Simple Sed761870
-Node: Igawk Program764944
-Ref: Igawk Program-Footnote-1779275
-Ref: Igawk Program-Footnote-2779477
-Ref: Igawk Program-Footnote-3779599
-Node: Anagram Program779714
-Node: Signature Program782776
-Node: Programs Summary784023
-Node: Programs Exercises785237
-Ref: Programs Exercises-Footnote-1789366
-Node: Advanced Features789457
-Node: Nondecimal Data791447
-Node: Array Sorting793038
-Node: Controlling Array Traversal793738
-Ref: Controlling Array Traversal-Footnote-1802105
-Node: Array Sorting Functions802223
-Ref: Array Sorting Functions-Footnote-1807314
-Node: Two-way I/O807510
-Ref: Two-way I/O-Footnote-1814060
-Ref: Two-way I/O-Footnote-2814247
-Node: TCP/IP Networking814329
-Node: Profiling817447
-Ref: Profiling-Footnote-1825940
-Node: Advanced Features Summary826263
-Node: Internationalization828107
-Node: I18N and L10N829587
-Node: Explaining gettext830274
-Ref: Explaining gettext-Footnote-1835297
-Ref: Explaining gettext-Footnote-2835482
-Node: Programmer i18n835647
-Ref: Programmer i18n-Footnote-1840502
-Node: Translator i18n840551
-Node: String Extraction841345
-Ref: String Extraction-Footnote-1842477
-Node: Printf Ordering842563
-Ref: Printf Ordering-Footnote-1845349
-Node: I18N Portability845413
-Ref: I18N Portability-Footnote-1847869
-Node: I18N Example847932
-Ref: I18N Example-Footnote-1850738
-Node: Gawk I18N850811
-Node: I18N Summary851456
-Node: Debugger852797
-Node: Debugging853819
-Node: Debugging Concepts854260
-Node: Debugging Terms856069
-Node: Awk Debugging858644
-Node: Sample Debugging Session859550
-Node: Debugger Invocation860084
-Node: Finding The Bug861470
-Node: List of Debugger Commands867948
-Node: Breakpoint Control869281
-Node: Debugger Execution Control872975
-Node: Viewing And Changing Data876337
-Node: Execution Stack879711
-Node: Debugger Info881348
-Node: Miscellaneous Debugger Commands885419
-Node: Readline Support890507
-Node: Limitations891403
-Ref: Limitations-Footnote-1895634
-Node: Debugging Summary895685
-Node: Arbitrary Precision Arithmetic896964
-Node: Computer Arithmetic898380
-Ref: table-numeric-ranges901971
-Ref: Computer Arithmetic-Footnote-1902693
-Node: Math Definitions902750
-Ref: table-ieee-formats906064
-Ref: Math Definitions-Footnote-1906667
-Node: MPFR features906772
-Node: FP Math Caution908489
-Ref: FP Math Caution-Footnote-1909561
-Node: Inexactness of computations909930
-Node: Inexact representation910890
-Node: Comparing FP Values912250
-Node: Errors accumulate913332
-Node: Getting Accuracy914765
-Node: Try To Round917475
-Node: Setting precision918374
-Ref: table-predefined-precision-strings919071
-Node: Setting the rounding mode920901
-Ref: table-gawk-rounding-modes921275
-Ref: Setting the rounding mode-Footnote-1924683
-Node: Arbitrary Precision Integers924862
-Ref: Arbitrary Precision Integers-Footnote-1929779
-Node: POSIX Floating Point Problems929928
-Ref: POSIX Floating Point Problems-Footnote-1933810
-Node: Floating point summary933848
-Node: Dynamic Extensions936038
-Node: Extension Intro937591
-Node: Plugin License938857
-Node: Extension Mechanism Outline939654
-Ref: figure-load-extension940093
-Ref: figure-register-new-function941658
-Ref: figure-call-new-function942750
-Node: Extension API Description944812
-Node: Extension API Functions Introduction946344
-Node: General Data Types951203
-Ref: General Data Types-Footnote-1957158
-Node: Memory Allocation Functions957457
-Ref: Memory Allocation Functions-Footnote-1960302
-Node: Constructor Functions960401
-Node: Registration Functions962146
-Node: Extension Functions962831
-Node: Exit Callback Functions965454
-Node: Extension Version String966704
-Node: Input Parsers967367
-Node: Output Wrappers977249
-Node: Two-way processors981761
-Node: Printing Messages984026
-Ref: Printing Messages-Footnote-1985197
-Node: Updating ERRNO985350
-Node: Requesting Values986089
-Ref: table-value-types-returned986826
-Node: Accessing Parameters987709
-Node: Symbol Table Access988944
-Node: Symbol table by name989456
-Node: Symbol table by cookie991477
-Ref: Symbol table by cookie-Footnote-1995629
-Node: Cached values995693
-Ref: Cached values-Footnote-1999200
-Node: Array Manipulation999291
-Ref: Array Manipulation-Footnote-11000382
-Node: Array Data Types1000419
-Ref: Array Data Types-Footnote-11003077
-Node: Array Functions1003169
-Node: Flattening Arrays1007027
-Node: Creating Arrays1013935
-Node: Redirection API1018704
-Node: Extension API Variables1021535
-Node: Extension Versioning1022168
-Ref: gawk-api-version1022605
-Node: Extension API Informational Variables1024361
-Node: Extension API Boilerplate1025425
-Node: Finding Extensions1029239
-Node: Extension Example1029798
-Node: Internal File Description1030596
-Node: Internal File Ops1034676
-Ref: Internal File Ops-Footnote-11046438
-Node: Using Internal File Ops1046578
-Ref: Using Internal File Ops-Footnote-11048961
-Node: Extension Samples1049235
-Node: Extension Sample File Functions1050764
-Node: Extension Sample Fnmatch1058413
-Node: Extension Sample Fork1059900
-Node: Extension Sample Inplace1061118
-Node: Extension Sample Ord1064328
-Node: Extension Sample Readdir1065164
-Ref: table-readdir-file-types1066053
-Node: Extension Sample Revout1066858
-Node: Extension Sample Rev2way1067447
-Node: Extension Sample Read write array1068187
-Node: Extension Sample Readfile1070129
-Node: Extension Sample Time1071224
-Node: Extension Sample API Tests1072572
-Node: gawkextlib1073064
-Node: Extension summary1075511
-Node: Extension Exercises1079213
-Node: Language History1080710
-Node: V7/SVR3.11082366
-Node: SVR41084518
-Node: POSIX1085952
-Node: BTL1087331
-Node: POSIX/GNU1088060
-Node: Feature History1093922
-Node: Common Extensions1108292
-Node: Ranges and Locales1109575
-Ref: Ranges and Locales-Footnote-11114191
-Ref: Ranges and Locales-Footnote-21114218
-Ref: Ranges and Locales-Footnote-31114453
-Node: Contributors1114674
-Node: History summary1120243
-Node: Installation1121623
-Node: Gawk Distribution1122567
-Node: Getting1123051
-Node: Extracting1124012
-Node: Distribution contents1125650
-Node: Unix Installation1131744
-Node: Quick Installation1132426
-Node: Shell Startup Files1134840
-Node: Additional Configuration Options1135918
-Node: Configuration Philosophy1137723
-Node: Non-Unix Installation1140092
-Node: PC Installation1140550
-Node: PC Binary Installation1141870
-Node: PC Compiling1143722
-Ref: PC Compiling-Footnote-11146746
-Node: PC Testing1146855
-Node: PC Using1148035
-Node: Cygwin1152149
-Node: MSYS1152919
-Node: VMS Installation1153420
-Node: VMS Compilation1154211
-Ref: VMS Compilation-Footnote-11155440
-Node: VMS Dynamic Extensions1155498
-Node: VMS Installation Details1157183
-Node: VMS Running1159436
-Node: VMS GNV1163715
-Node: VMS Old Gawk1164450
-Node: Bugs1164921
-Node: Other Versions1169118
-Node: Installation summary1175702
-Node: Notes1176760
-Node: Compatibility Mode1177625
-Node: Additions1178407
-Node: Accessing The Source1179332
-Node: Adding Code1180767
-Node: New Ports1186986
-Node: Derived Files1191474
-Ref: Derived Files-Footnote-11196959
-Ref: Derived Files-Footnote-21196994
-Ref: Derived Files-Footnote-31197592
-Node: Future Extensions1197706
-Node: Implementation Limitations1198364
-Node: Extension Design1199547
-Node: Old Extension Problems1200701
-Ref: Old Extension Problems-Footnote-11202219
-Node: Extension New Mechanism Goals1202276
-Ref: Extension New Mechanism Goals-Footnote-11205640
-Node: Extension Other Design Decisions1205829
-Node: Extension Future Growth1207942
-Node: Old Extension Mechanism1208778
-Node: Notes summary1210541
-Node: Basic Concepts1211723
-Node: Basic High Level1212404
-Ref: figure-general-flow1212686
-Ref: figure-process-flow1213371
-Ref: Basic High Level-Footnote-11216672
-Node: Basic Data Typing1216857
-Node: Glossary1220185
-Node: Copying1252131
-Node: GNU Free Documentation License1289670
-Node: Index1314788
+Node: Exit Status146172
+Node: Include Files146849
+Node: Loading Shared Libraries150444
+Node: Obsolete151872
+Node: Undocumented152564
+Node: Invoking Summary152861
+Node: Regexp154521
+Node: Regexp Usage156040
+Node: Escape Sequences158077
+Node: Regexp Operators164309
+Ref: Regexp Operators-Footnote-1171725
+Ref: Regexp Operators-Footnote-2171872
+Node: Bracket Expressions171970
+Ref: table-char-classes174446
+Node: Leftmost Longest177583
+Node: Computed Regexps178886
+Node: GNU Regexp Operators182313
+Node: Case-sensitivity185992
+Ref: Case-sensitivity-Footnote-1188888
+Ref: Case-sensitivity-Footnote-2189123
+Node: Strong Regexp Constants189231
+Node: Regexp Summary192173
+Node: Reading Files193779
+Node: Records195942
+Node: awk split records196675
+Node: gawk split records201606
+Ref: gawk split records-Footnote-1206146
+Node: Fields206183
+Node: Nonconstant Fields208924
+Ref: Nonconstant Fields-Footnote-1211160
+Node: Changing Fields211364
+Node: Field Separators217292
+Node: Default Field Splitting219990
+Node: Regexp Field Splitting221108
+Node: Single Character Fields224461
+Node: Command Line Field Separator225521
+Node: Full Line Fields228739
+Ref: Full Line Fields-Footnote-1230261
+Ref: Full Line Fields-Footnote-2230307
+Node: Field Splitting Summary230408
+Node: Constant Size232482
+Node: Splitting By Content237060
+Ref: Splitting By Content-Footnote-1241031
+Node: Multiple Line241194
+Ref: Multiple Line-Footnote-1247076
+Node: Getline247255
+Node: Plain Getline249721
+Node: Getline/Variable252360
+Node: Getline/File253509
+Node: Getline/Variable/File254895
+Ref: Getline/Variable/File-Footnote-1256498
+Node: Getline/Pipe256586
+Node: Getline/Variable/Pipe259291
+Node: Getline/Coprocess260424
+Node: Getline/Variable/Coprocess261689
+Node: Getline Notes262429
+Node: Getline Summary265224
+Ref: table-getline-variants265646
+Node: Read Timeout266394
+Ref: Read Timeout-Footnote-1270300
+Node: Retrying Input270358
+Node: Command-line directories271557
+Node: Input Summary272463
+Node: Input Exercises275635
+Node: Printing276363
+Node: Print278197
+Node: Print Examples279654
+Node: Output Separators282434
+Node: OFMT284451
+Node: Printf285807
+Node: Basic Printf286592
+Node: Control Letters288166
+Node: Format Modifiers292154
+Node: Printf Examples298169
+Node: Redirection300655
+Node: Special FD307496
+Ref: Special FD-Footnote-1310664
+Node: Special Files310738
+Node: Other Inherited Files311355
+Node: Special Network312356
+Node: Special Caveats313216
+Node: Close Files And Pipes314165
+Ref: Close Files And Pipes-Footnote-1321352
+Ref: Close Files And Pipes-Footnote-2321500
+Node: Nonfatal321651
+Node: Output Summary323976
+Node: Output Exercises325198
+Node: Expressions325877
+Node: Values327065
+Node: Constants327743
+Node: Scalar Constants328434
+Ref: Scalar Constants-Footnote-1329298
+Node: Nondecimal-numbers329548
+Node: Regexp Constants332561
+Node: Using Constant Regexps333087
+Node: Variables336250
+Node: Using Variables336907
+Node: Assignment Options338817
+Node: Conversion340690
+Node: Strings And Numbers341214
+Ref: Strings And Numbers-Footnote-1344277
+Node: Locale influences conversions344386
+Ref: table-locale-affects347144
+Node: All Operators347762
+Node: Arithmetic Ops348391
+Node: Concatenation350897
+Ref: Concatenation-Footnote-1353744
+Node: Assignment Ops353851
+Ref: table-assign-ops358842
+Node: Increment Ops360155
+Node: Truth Values and Conditions363615
+Node: Truth Values364689
+Node: Typing and Comparison365737
+Node: Variable Typing366557
+Node: Comparison Operators370181
+Ref: table-relational-ops370600
+Node: POSIX String Comparison374095
+Ref: POSIX String Comparison-Footnote-1375169
+Node: Boolean Ops375308
+Ref: Boolean Ops-Footnote-1379790
+Node: Conditional Exp379882
+Node: Function Calls381618
+Node: Precedence385495
+Node: Locales389154
+Node: Expressions Summary390786
+Node: Patterns and Actions393359
+Node: Pattern Overview394479
+Node: Regexp Patterns396156
+Node: Expression Patterns396698
+Node: Ranges400479
+Node: BEGIN/END403587
+Node: Using BEGIN/END404348
+Ref: Using BEGIN/END-Footnote-1407084
+Node: I/O And BEGIN/END407190
+Node: BEGINFILE/ENDFILE409504
+Node: Empty412411
+Node: Using Shell Variables412728
+Node: Action Overview415002
+Node: Statements417327
+Node: If Statement419175
+Node: While Statement420670
+Node: Do Statement422698
+Node: For Statement423846
+Node: Switch Statement427004
+Node: Break Statement429390
+Node: Continue Statement431482
+Node: Next Statement433309
+Node: Nextfile Statement435692
+Node: Exit Statement438344
+Node: Built-in Variables440747
+Node: User-modified441880
+Node: Auto-set449466
+Ref: Auto-set-Footnote-1464119
+Ref: Auto-set-Footnote-2464325
+Node: ARGC and ARGV464381
+Node: Pattern Action Summary468594
+Node: Arrays471024
+Node: Array Basics472353
+Node: Array Intro473197
+Ref: figure-array-elements475172
+Ref: Array Intro-Footnote-1477876
+Node: Reference to Elements478004
+Node: Assigning Elements480468
+Node: Array Example480959
+Node: Scanning an Array482718
+Node: Controlling Scanning485740
+Ref: Controlling Scanning-Footnote-1491139
+Node: Numeric Array Subscripts491455
+Node: Uninitialized Subscripts493639
+Node: Delete495258
+Ref: Delete-Footnote-1498010
+Node: Multidimensional498067
+Node: Multiscanning501162
+Node: Arrays of Arrays502753
+Node: Arrays Summary507520
+Node: Functions509613
+Node: Built-in510651
+Node: Calling Built-in511732
+Node: Numeric Functions513728
+Ref: Numeric Functions-Footnote-1518561
+Ref: Numeric Functions-Footnote-2518918
+Ref: Numeric Functions-Footnote-3518966
+Node: String Functions519238
+Ref: String Functions-Footnote-1542742
+Ref: String Functions-Footnote-2542870
+Ref: String Functions-Footnote-3543118
+Node: Gory Details543205
+Ref: table-sub-escapes544996
+Ref: table-sub-proposed546515
+Ref: table-posix-sub547878
+Ref: table-gensub-escapes549419
+Ref: Gory Details-Footnote-1550242
+Node: I/O Functions550396
+Ref: table-system-return-values556978
+Ref: I/O Functions-Footnote-1558958
+Ref: I/O Functions-Footnote-2559106
+Node: Time Functions559226
+Ref: Time Functions-Footnote-1569731
+Ref: Time Functions-Footnote-2569799
+Ref: Time Functions-Footnote-3569957
+Ref: Time Functions-Footnote-4570068
+Ref: Time Functions-Footnote-5570180
+Ref: Time Functions-Footnote-6570407
+Node: Bitwise Functions570673
+Ref: table-bitwise-ops571267
+Ref: Bitwise Functions-Footnote-1575605
+Node: Type Functions575778
+Node: I18N Functions578439
+Node: User-defined580090
+Node: Definition Syntax580895
+Ref: Definition Syntax-Footnote-1586582
+Node: Function Example586653
+Ref: Function Example-Footnote-1589575
+Node: Function Caveats589597
+Node: Calling A Function590115
+Node: Variable Scope591073
+Node: Pass By Value/Reference594067
+Node: Return Statement597566
+Node: Dynamic Typing600545
+Node: Indirect Calls601475
+Ref: Indirect Calls-Footnote-1611726
+Node: Functions Summary611854
+Node: Library Functions614559
+Ref: Library Functions-Footnote-1618166
+Ref: Library Functions-Footnote-2618309
+Node: Library Names618480
+Ref: Library Names-Footnote-1621940
+Ref: Library Names-Footnote-2622163
+Node: General Functions622249
+Node: Strtonum Function623352
+Node: Assert Function626374
+Node: Round Function629700
+Node: Cliff Random Function631241
+Node: Ordinal Functions632257
+Ref: Ordinal Functions-Footnote-1635320
+Ref: Ordinal Functions-Footnote-2635572
+Node: Join Function635782
+Ref: Join Function-Footnote-1637552
+Node: Getlocaltime Function637752
+Node: Readfile Function641494
+Node: Shell Quoting643466
+Node: Data File Management644867
+Node: Filetrans Function645499
+Node: Rewind Function649595
+Node: File Checking651500
+Ref: File Checking-Footnote-1652834
+Node: Empty Files653035
+Node: Ignoring Assigns655014
+Node: Getopt Function656564
+Ref: Getopt Function-Footnote-1668033
+Node: Passwd Functions668233
+Ref: Passwd Functions-Footnote-1677072
+Node: Group Functions677160
+Ref: Group Functions-Footnote-1685057
+Node: Walking Arrays685264
+Node: Library Functions Summary688272
+Node: Library Exercises689678
+Node: Sample Programs690143
+Node: Running Examples690913
+Node: Clones691641
+Node: Cut Program692865
+Node: Egrep Program702794
+Ref: Egrep Program-Footnote-1710306
+Node: Id Program710416
+Node: Split Program714096
+Ref: Split Program-Footnote-1717555
+Node: Tee Program717684
+Node: Uniq Program720474
+Node: Wc Program727900
+Ref: Wc Program-Footnote-1732155
+Node: Miscellaneous Programs732249
+Node: Dupword Program733462
+Node: Alarm Program735492
+Node: Translate Program740347
+Ref: Translate Program-Footnote-1744912
+Node: Labels Program745182
+Ref: Labels Program-Footnote-1748533
+Node: Word Sorting748617
+Node: History Sorting752689
+Node: Extract Program754524
+Node: Simple Sed762053
+Node: Igawk Program765127
+Ref: Igawk Program-Footnote-1779458
+Ref: Igawk Program-Footnote-2779660
+Ref: Igawk Program-Footnote-3779782
+Node: Anagram Program779897
+Node: Signature Program782959
+Node: Programs Summary784206
+Node: Programs Exercises785420
+Ref: Programs Exercises-Footnote-1789549
+Node: Advanced Features789640
+Node: Nondecimal Data791630
+Node: Array Sorting793221
+Node: Controlling Array Traversal793921
+Ref: Controlling Array Traversal-Footnote-1802288
+Node: Array Sorting Functions802406
+Ref: Array Sorting Functions-Footnote-1807497
+Node: Two-way I/O807693
+Ref: Two-way I/O-Footnote-1814243
+Ref: Two-way I/O-Footnote-2814430
+Node: TCP/IP Networking814512
+Node: Profiling817630
+Ref: Profiling-Footnote-1826123
+Node: Advanced Features Summary826446
+Node: Internationalization828290
+Node: I18N and L10N829770
+Node: Explaining gettext830457
+Ref: Explaining gettext-Footnote-1836349
+Ref: Explaining gettext-Footnote-2836534
+Node: Programmer i18n836699
+Ref: Programmer i18n-Footnote-1841554
+Node: Translator i18n841603
+Node: String Extraction842397
+Ref: String Extraction-Footnote-1843529
+Node: Printf Ordering843615
+Ref: Printf Ordering-Footnote-1846401
+Node: I18N Portability846465
+Ref: I18N Portability-Footnote-1848921
+Node: I18N Example848984
+Ref: I18N Example-Footnote-1851790
+Node: Gawk I18N851863
+Node: I18N Summary852508
+Node: Debugger853849
+Node: Debugging854871
+Node: Debugging Concepts855312
+Node: Debugging Terms857121
+Node: Awk Debugging859696
+Node: Sample Debugging Session860602
+Node: Debugger Invocation861136
+Node: Finding The Bug862522
+Node: List of Debugger Commands869000
+Node: Breakpoint Control870333
+Node: Debugger Execution Control874027
+Node: Viewing And Changing Data877389
+Node: Execution Stack880763
+Node: Debugger Info882400
+Node: Miscellaneous Debugger Commands886471
+Node: Readline Support891559
+Node: Limitations892455
+Ref: Limitations-Footnote-1896686
+Node: Debugging Summary896737
+Node: Arbitrary Precision Arithmetic898016
+Node: Computer Arithmetic899432
+Ref: table-numeric-ranges903023
+Ref: Computer Arithmetic-Footnote-1903745
+Node: Math Definitions903802
+Ref: table-ieee-formats907116
+Ref: Math Definitions-Footnote-1907719
+Node: MPFR features907824
+Node: FP Math Caution909541
+Ref: FP Math Caution-Footnote-1910613
+Node: Inexactness of computations910982
+Node: Inexact representation911942
+Node: Comparing FP Values913302
+Node: Errors accumulate914384
+Node: Getting Accuracy915817
+Node: Try To Round918527
+Node: Setting precision919426
+Ref: table-predefined-precision-strings920123
+Node: Setting the rounding mode921953
+Ref: table-gawk-rounding-modes922327
+Ref: Setting the rounding mode-Footnote-1925735
+Node: Arbitrary Precision Integers925914
+Ref: Arbitrary Precision Integers-Footnote-1930831
+Node: POSIX Floating Point Problems930980
+Ref: POSIX Floating Point Problems-Footnote-1934862
+Node: Floating point summary934900
+Node: Dynamic Extensions937090
+Node: Extension Intro938643
+Node: Plugin License939909
+Node: Extension Mechanism Outline940706
+Ref: figure-load-extension941145
+Ref: figure-register-new-function942710
+Ref: figure-call-new-function943802
+Node: Extension API Description945864
+Node: Extension API Functions Introduction947396
+Node: General Data Types952255
+Ref: General Data Types-Footnote-1958210
+Node: Memory Allocation Functions958509
+Ref: Memory Allocation Functions-Footnote-1961354
+Node: Constructor Functions961453
+Node: Registration Functions963198
+Node: Extension Functions963883
+Node: Exit Callback Functions966506
+Node: Extension Version String967756
+Node: Input Parsers968419
+Node: Output Wrappers978301
+Node: Two-way processors982813
+Node: Printing Messages985078
+Ref: Printing Messages-Footnote-1986249
+Node: Updating ERRNO986402
+Node: Requesting Values987141
+Ref: table-value-types-returned987878
+Node: Accessing Parameters988761
+Node: Symbol Table Access989996
+Node: Symbol table by name990508
+Node: Symbol table by cookie992529
+Ref: Symbol table by cookie-Footnote-1996681
+Node: Cached values996745
+Ref: Cached values-Footnote-11000252
+Node: Array Manipulation1000343
+Ref: Array Manipulation-Footnote-11001434
+Node: Array Data Types1001471
+Ref: Array Data Types-Footnote-11004129
+Node: Array Functions1004221
+Node: Flattening Arrays1008079
+Node: Creating Arrays1014987
+Node: Redirection API1019756
+Node: Extension API Variables1022587
+Node: Extension Versioning1023220
+Ref: gawk-api-version1023657
+Node: Extension API Informational Variables1025413
+Node: Extension API Boilerplate1026477
+Node: Finding Extensions1030291
+Node: Extension Example1030850
+Node: Internal File Description1031648
+Node: Internal File Ops1035728
+Ref: Internal File Ops-Footnote-11047490
+Node: Using Internal File Ops1047630
+Ref: Using Internal File Ops-Footnote-11050013
+Node: Extension Samples1050287
+Node: Extension Sample File Functions1051816
+Node: Extension Sample Fnmatch1059465
+Node: Extension Sample Fork1060952
+Node: Extension Sample Inplace1062170
+Node: Extension Sample Ord1065380
+Node: Extension Sample Readdir1066216
+Ref: table-readdir-file-types1067105
+Node: Extension Sample Revout1067910
+Node: Extension Sample Rev2way1068499
+Node: Extension Sample Read write array1069239
+Node: Extension Sample Readfile1071181
+Node: Extension Sample Time1072276
+Node: Extension Sample API Tests1073624
+Node: gawkextlib1074116
+Node: Extension summary1076563
+Node: Extension Exercises1080265
+Node: Language History1081762
+Node: V7/SVR3.11083418
+Node: SVR41085570
+Node: POSIX1087004
+Node: BTL1088383
+Node: POSIX/GNU1089112
+Node: Feature History1094974
+Node: Common Extensions1109344
+Node: Ranges and Locales1110627
+Ref: Ranges and Locales-Footnote-11115243
+Ref: Ranges and Locales-Footnote-21115270
+Ref: Ranges and Locales-Footnote-31115505
+Node: Contributors1115726
+Node: History summary1121295
+Node: Installation1122675
+Node: Gawk Distribution1123619
+Node: Getting1124103
+Node: Extracting1125064
+Node: Distribution contents1126702
+Node: Unix Installation1132796
+Node: Quick Installation1133478
+Node: Shell Startup Files1135892
+Node: Additional Configuration Options1136970
+Node: Configuration Philosophy1138775
+Node: Non-Unix Installation1141144
+Node: PC Installation1141602
+Node: PC Binary Installation1142922
+Node: PC Compiling1144774
+Ref: PC Compiling-Footnote-11147798
+Node: PC Testing1147907
+Node: PC Using1149087
+Node: Cygwin1153201
+Node: MSYS1153971
+Node: VMS Installation1154472
+Node: VMS Compilation1155263
+Ref: VMS Compilation-Footnote-11156492
+Node: VMS Dynamic Extensions1156550
+Node: VMS Installation Details1158235
+Node: VMS Running1160488
+Node: VMS GNV1164767
+Node: VMS Old Gawk1165502
+Node: Bugs1165973
+Node: Other Versions1170170
+Node: Installation summary1176754
+Node: Notes1177812
+Node: Compatibility Mode1178677
+Node: Additions1179459
+Node: Accessing The Source1180384
+Node: Adding Code1181819
+Node: New Ports1188038
+Node: Derived Files1192526
+Ref: Derived Files-Footnote-11198011
+Ref: Derived Files-Footnote-21198046
+Ref: Derived Files-Footnote-31198644
+Node: Future Extensions1198758
+Node: Implementation Limitations1199416
+Node: Extension Design1200599
+Node: Old Extension Problems1201753
+Ref: Old Extension Problems-Footnote-11203271
+Node: Extension New Mechanism Goals1203328
+Ref: Extension New Mechanism Goals-Footnote-11206692
+Node: Extension Other Design Decisions1206881
+Node: Extension Future Growth1208994
+Node: Old Extension Mechanism1209830
+Node: Notes summary1211593
+Node: Basic Concepts1212775
+Node: Basic High Level1213456
+Ref: figure-general-flow1213738
+Ref: figure-process-flow1214423
+Ref: Basic High Level-Footnote-11217724
+Node: Basic Data Typing1217909
+Node: Glossary1221237
+Node: Copying1253183
+Node: GNU Free Documentation License1290722
+Node: Index1315840

End Tag Table
diff --git a/doc/gawk.texi b/doc/gawk.texi
index 64d72b7a..78e54cb6 100644
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -4587,6 +4587,11 @@ are generated. Its purpose is to help isolate the source of a
message, as there are multiple places that produce the
same warning or error message.
+@item GAWK_LOCALE_DIR
+Specifies the location of compiled message object files
+for @command{gawk} itself. This is passed to the @code{bindtextdomain()}
+function when @command{gawk} starts up.
+
@item GAWK_NO_DFA
If this variable exists, @command{gawk} does not use the DFA regexp matcher
for ``does it match'' kinds of tests. This can cause @command{gawk}
@@ -28685,6 +28690,26 @@ before or after the day in a date, local month abbreviations, and so on.
All of the above. (Not too useful in the context of @command{gettext}.)
@end table
+@quotation NOTE
+@cindex @env{LANGUAGE} environment variable
+As described in @ref{Locales}, environment variables with the same
+name as the locale categories (@env{LC_CTYPE}, @env{LC_ALL}, etc.)
+influence @command{gawk}'s behavior (and that of other utilities).
+
+Normally, these variables also affect how the @code{gettext} library
+finds translations. However, the @env{LANGUAGE} environment variable
+overrides the @env{LC_@var{xxx}} variables. Many GNU/Linux systems
+may define this variable without your knowledge, causing @command{gawk}
+to not find the correct translations. If this happens to you,
+look to see if @env{LANGUAGE} is defined, and if so, use the shell's
+@command{unset} command to remove it.
+@end quotation
+
+For testing translations of @command{gawk} itself, you can set
+the @env{GAWK_LOCALE_DIR} environment variable. See the documentation
+for the C @code{bindtextdomain()} function and also see
+@ref{Other Environment Variables}.
+
@node Programmer i18n
@section Internationalizing @command{awk} Programs
@cindex @command{awk} programs, internationalizing
diff --git a/doc/gawktexi.in b/doc/gawktexi.in
index b0ae229b..34d7fc20 100644
--- a/doc/gawktexi.in
+++ b/doc/gawktexi.in
@@ -27792,7 +27792,7 @@ finds translations. However, the @env{LANGUAGE} environment variable
overrides the @env{LC_@var{xxx}} variables. Many GNU/Linux systems
may define this variable without your knowledge, causing @command{gawk}
to not find the correct translations. If this happens to you,
-look to see if @env{LANGAUGE} is defined, and if so, use the shell's
+look to see if @env{LANGUAGE} is defined, and if so, use the shell's
@command{unset} command to remove it.
@end quotation
diff --git a/eval.c b/eval.c
index 5b4418b8..e5c0861a 100644
--- a/eval.c
+++ b/eval.c
@@ -930,7 +930,10 @@ set_LINT()
int old_lint = do_lint;
NODE *n = fixtype(LINT_node->var_value);
- lintfunc = r_warning; /* reset to default */
+ /* start with clean defaults */
+ lintfunc = r_warning;
+ do_flags &= ~(DO_LINT_ALL|DO_LINT_INVALID);
+
if ((n->flags & STRING) != 0) {
const char *lintval;
size_t lintlen;
@@ -938,20 +941,18 @@ set_LINT()
lintval = n->stptr;
lintlen = n->stlen;
if (lintlen > 0) {
- do_flags |= DO_LINT_ALL;
- if (lintlen == 5 && strncmp(lintval, "fatal", 5) == 0)
- lintfunc = r_fatal;
- else if (lintlen == 7 && strncmp(lintval, "invalid", 7) == 0) {
- do_flags &= ~DO_LINT_ALL;
+ if (lintlen == 7 && strncmp(lintval, "invalid", 7) == 0)
do_flags |= DO_LINT_INVALID;
+ else {
+ do_flags |= DO_LINT_ALL;
+ if (lintlen == 5 && strncmp(lintval, "fatal", 5) == 0)
+ lintfunc = r_fatal;
}
- } else {
- do_flags &= ~(DO_LINT_ALL|DO_LINT_INVALID);
}
- } else if (! iszero(n))
- do_flags |= DO_LINT_ALL;
- else
- do_flags &= ~(DO_LINT_ALL|DO_LINT_INVALID);
+ } else {
+ if (! iszero(n))
+ do_flags |= DO_LINT_ALL;
+ }
/* explicitly use warning() here, in case lintfunc == r_fatal */
if (old_lint != do_lint && old_lint && ! do_lint)