[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[SCM] gawk branch, gawk-5.2-stable, updated. gawk-4.1.0-5068-gd9ca37ad

From: Arnold Robbins
Subject: [SCM] gawk branch, gawk-5.2-stable, updated. gawk-4.1.0-5068-gd9ca37ad
Date: Mon, 12 Jun 2023 05:58:17 -0400 (EDT)

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "gawk".

The branch, gawk-5.2-stable has been updated
       via  d9ca37ad2b35bec812de75384ccb9ce32ae004fb (commit)
      from  2be92f67bce70d6dc77636cc8a6b7bfb74ba2112 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------

commit d9ca37ad2b35bec812de75384ccb9ce32ae004fb
Author: Arnold D. Robbins <>
Date:   Mon Jun 12 12:57:49 2023 +0300

    Fix issue with \-newline in -F and command line assignments.

diff --git a/ChangeLog b/ChangeLog
index 6c8990cd..f576867c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2023-06-12         Arnold D. Robbins     <>
+       * main.c (cmdline_fs): Add ELIDE_BACK_NL to flags in call
+       to make_str_node(). Fixes weirdness with -F. Thanks to
+       Denys Vlasenko <> for the report.
 2023-06-04         Arnold D. Robbins     <>
        * builtin.c (do_sub): Fix a Day 1 gensub bug, reported by
diff --git a/doc/ChangeLog b/doc/ChangeLog
index 7c817613..7eaa6989 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,3 +1,8 @@
+2023-06-12         Arnold D. Robbins     <>
+       * (Statements/Lines): Document how backslash continuation
+       work for -F and command line assignments.
 2023-06-04         Arnold D. Robbins     <>
        * (String Functions): Improve doc on gensub()
diff --git a/doc/ b/doc/
index 8a79dec6..ef749d22 100644
--- a/doc/
+++ b/doc/
@@ -2345,6 +2345,26 @@ onto the next line.  However, the backslash-newline 
combination is never
 even noticed because it is “hidden” inside the comment.  Thus, the
 ‘BEGIN’ is noted as a syntax error.
+   Backslash continuation comes into play in an additional, unexpected
+situation.  Consider:
+     gawk -F'\
+     a' '...'
+This command line assigns a value to ‘FS’.  But what value?  There are
+several possibilities, and in fact different versions of ‘awk’ do
+different things.  ‘gawk’ treats this as if it were written:
+     BEGIN { FS = "\
+     a"
+     }
+     ...
+In short, the backslash and newline are removed, assigning ‘"a"’ to
+‘FS’.  This same treatment applies to variable assignments made with the
+‘-v’ option (*note Options::) and to regular command-line variable
+assignments (*note Assignment Options::).
    If you’re interested, see
 <> for
 a source code patch that allows lines to be continued when inside
@@ -35928,8 +35948,8 @@ Index
 * : (colon), ?: operator:                Precedence.          (line  91)
 * : (colon), :: namespace separator:     Qualified Names.     (line   6)
 * ; (semicolon), separating statements in actions: Statements/Lines.
-                                                              (line  98)
-* ; (semicolon), separating rules:       Statements/Lines.    (line  98)
+                                                              (line 118)
+* ; (semicolon), separating rules:       Statements/Lines.    (line 118)
 * ; (semicolon), separating statements in actions <1>: Action Overview.
                                                               (line  19)
 * ; (semicolon), separating statements in actions <2>: Statements.
@@ -36763,6 +36783,10 @@ Index
 * d debugger command (alias for delete): Breakpoint Control.  (line  64)
 * dark corner:                           Conventions.         (line  42)
 * dark corner, ARGV variable, value of:  Executable Scripts.  (line  55)
+* dark corner, backslash continuation on command line: Statements/Lines.
+                                                              (line  92)
+* dark corner, command line, backslash continuation on: Statements/Lines.
+                                                              (line  92)
 * dark corner, invoking awk:             Command Line.        (line  16)
 * dark corner, empty programs:           Command Line.        (line  20)
 * dark corner, escape sequences:         Other Arguments.     (line  46)
@@ -38840,8 +38864,8 @@ Index
 * sed utility <2>:                       Glossary.            (line  16)
 * seeding random number generator:       Numeric Functions.   (line  63)
 * semicolon (;), separating statements in actions: Statements/Lines.
-                                                              (line  98)
-* semicolon (;), separating rules:       Statements/Lines.    (line  98)
+                                                              (line 118)
+* semicolon (;), separating rules:       Statements/Lines.    (line 118)
 * semicolon (;), separating statements in actions <1>: Action Overview.
                                                               (line  19)
 * semicolon (;), separating statements in actions <2>: Statements.
@@ -39042,7 +39066,7 @@ Index
 * starting the debugger:                 Debugger Invocation. (line   6)
 * stat() extension function:             Extension Sample File Functions.
                                                               (line  18)
-* statements, multiple:                  Statements/Lines.    (line  98)
+* statements, multiple:                  Statements/Lines.    (line 118)
 * statements, control, in actions:       Statements.          (line   6)
 * statements, compound, control statements and: Statements.   (line  10)
 * step debugger command:                 Debugger Execution Control.
@@ -39435,586 +39459,586 @@ Node: Very Simple103230
 Node: Two Rules109509
 Node: More Complex111463
 Node: Statements/Lines113903
-Ref: Statements/Lines-Footnote-1118783
-Node: Other Features119072
-Node: When120040
-Ref: When-Footnote-1121846
-Node: Intro Summary121911
-Node: Invoking Gawk122867
-Node: Command Line124437
-Node: Options125288
-Ref: Options-Footnote-1144437
-Ref: Options-Footnote-2144672
-Node: Other Arguments144697
-Node: Naming Standard Input148874
-Node: Environment Variables150144
-Node: AWKPATH Variable150718
-Ref: AWKPATH Variable-Footnote-1154308
-Ref: AWKPATH Variable-Footnote-2154342
-Node: AWKLIBPATH Variable154735
-Ref: AWKLIBPATH Variable-Footnote-1156510
-Node: Other Environment Variables156907
-Node: Exit Status161403
-Node: Include Files162118
-Node: Loading Shared Libraries166178
-Node: Obsolete167670
-Node: Undocumented168422
-Node: Invoking Summary168721
-Node: Regexp171748
-Node: Regexp Usage173242
-Node: Escape Sequences175343
-Node: Regexp Operators181874
-Node: Regexp Operator Details182367
-Ref: Regexp Operator Details-Footnote-1190382
-Node: Interval Expressions190541
-Ref: Interval Expressions-Footnote-1192810
-Node: Bracket Expressions192910
-Ref: table-char-classes195470
-Node: Leftmost Longest198992
-Node: Computed Regexps200352
-Node: GNU Regexp Operators203875
-Node: Case-sensitivity207898
-Ref: Case-sensitivity-Footnote-1210855
-Ref: Case-sensitivity-Footnote-2211100
-Node: Regexp Summary211216
-Node: Reading Files212740
-Node: Records215057
-Node: awk split records216168
-Node: gawk split records221058
-Ref: gawk split records-Footnote-1226352
-Node: Fields226389
-Node: Nonconstant Fields229276
-Ref: Nonconstant Fields-Footnote-1231587
-Node: Changing Fields231803
-Node: Field Separators238111
-Node: Default Field Splitting240927
-Node: Regexp Field Splitting242070
-Node: Single Character Fields245899
-Node: Command Line Field Separator246994
-Node: Full Line Fields250381
-Ref: Full Line Fields-Footnote-1251961
-Ref: Full Line Fields-Footnote-2252007
-Node: Field Splitting Summary252115
-Node: Constant Size254284
-Node: Fixed width data255028
-Node: Skipping intervening258547
-Node: Allowing trailing data259349
-Node: Fields with fixed data260414
-Node: Splitting By Content262040
-Ref: Splitting By Content-Footnote-1265979
-Node: More CSV266142
-Node: FS versus FPAT267795
-Node: Testing field creation269004
-Node: Multiple Line270697
-Node: Getline277179
-Node: Plain Getline279765
-Node: Getline/Variable282415
-Node: Getline/File283612
-Node: Getline/Variable/File285060
-Ref: Getline/Variable/File-Footnote-1286705
-Node: Getline/Pipe286801
-Node: Getline/Variable/Pipe289614
-Node: Getline/Coprocess290797
-Node: Getline/Variable/Coprocess292120
-Node: Getline Notes292886
-Node: Getline Summary295847
-Ref: table-getline-variants296291
-Node: Read Timeout297196
-Ref: Read Timeout-Footnote-1301160
-Node: Retrying Input301218
-Node: Command-line directories302485
-Node: Input Summary303423
-Node: Input Exercises306803
-Node: Printing307243
-Node: Print309129
-Node: Print Examples310635
-Node: Output Separators313488
-Node: OFMT315599
-Node: Printf317314
-Node: Basic Printf318119
-Node: Control Letters319755
-Node: Format Modifiers325224
-Node: Printf Examples331510
-Node: Redirection334055
-Node: Special FD341129
-Ref: Special FD-Footnote-1344419
-Node: Special Files344505
-Node: Other Inherited Files345134
-Node: Special Network346199
-Node: Special Caveats347087
-Node: Close Files And Pipes348070
-Ref: Close Files And Pipes-Footnote-1354207
-Node: Close Return Value354363
-Ref: table-close-pipe-return-values355638
-Ref: Close Return Value-Footnote-1356472
-Node: Nonfatal356628
-Node: Output Summary359059
-Node: Output Exercises360345
-Node: Expressions361036
-Node: Values362238
-Node: Constants362916
-Node: Scalar Constants363613
-Ref: Scalar Constants-Footnote-1366188
-Node: Nondecimal-numbers366438
-Node: Regexp Constants369559
-Node: Using Constant Regexps370105
-Node: Standard Regexp Constants370751
-Node: Strong Regexp Constants374051
-Node: Variables377902
-Node: Using Variables378567
-Node: Assignment Options380547
-Node: Conversion383109
-Node: Strings And Numbers383641
-Ref: Strings And Numbers-Footnote-1386860
-Node: Locale influences conversions386969
-Ref: table-locale-affects389819
-Node: All Operators390462
-Node: Arithmetic Ops391103
-Node: Concatenation393933
-Ref: Concatenation-Footnote-1396883
-Node: Assignment Ops397006
-Ref: table-assign-ops402145
-Node: Increment Ops403527
-Node: Truth Values and Conditions407126
-Node: Truth Values408252
-Node: Typing and Comparison409343
-Node: Variable Typing410179
-Ref: Variable Typing-Footnote-1416841
-Ref: Variable Typing-Footnote-2416921
-Node: Comparison Operators417004
-Ref: table-relational-ops417431
-Node: POSIX String Comparison421117
-Ref: POSIX String Comparison-Footnote-1422876
-Ref: POSIX String Comparison-Footnote-2423019
-Node: Boolean Ops423103
-Ref: Boolean Ops-Footnote-1427796
-Node: Conditional Exp427892
-Node: Function Calls429678
-Node: Precedence433628
-Node: Locales437505
-Node: Expressions Summary439187
-Node: Patterns and Actions441850
-Node: Pattern Overview442992
-Node: Regexp Patterns444718
-Node: Expression Patterns445264
-Node: Ranges449173
-Node: BEGIN/END452351
-Node: Using BEGIN/END453164
-Ref: Using BEGIN/END-Footnote-1456074
-Node: I/O And BEGIN/END456184
-Node: Empty462106
-Node: Using Shell Variables462423
-Node: Action Overview464761
-Node: Statements467196
-Node: If Statement469094
-Node: While Statement470663
-Node: Do Statement472751
-Node: For Statement473937
-Node: Switch Statement477294
-Node: Break Statement479845
-Node: Continue Statement482037
-Node: Next Statement483969
-Node: Nextfile Statement486466
-Node: Exit Statement489327
-Node: Built-in Variables491860
-Node: User-modified493039
-Node: Auto-set501250
-Ref: Auto-set-Footnote-1519103
-Ref: Auto-set-Footnote-2519321
-Node: ARGC and ARGV519377
-Node: Pattern Action Summary523816
-Node: Arrays526432
-Node: Array Basics527809
-Node: Array Intro528659
-Ref: figure-array-elements530675
-Ref: Array Intro-Footnote-1533544
-Node: Reference to Elements533676
-Node: Assigning Elements536198
-Node: Array Example536693
-Node: Scanning an Array538662
-Node: Controlling Scanning541759
-Ref: Controlling Scanning-Footnote-1548405
-Node: Numeric Array Subscripts548729
-Node: Uninitialized Subscripts551003
-Node: Delete552682
-Ref: Delete-Footnote-1555496
-Node: Multidimensional555553
-Node: Multiscanning558758
-Node: Arrays of Arrays560430
-Node: Arrays Summary565330
-Node: Functions567519
-Node: Built-in568579
-Node: Calling Built-in569768
-Node: Boolean Functions571815
-Node: Numeric Functions572385
-Ref: Numeric Functions-Footnote-1576578
-Ref: Numeric Functions-Footnote-2577262
-Ref: Numeric Functions-Footnote-3577314
-Node: String Functions577590
-Ref: String Functions-Footnote-1603665
-Ref: String Functions-Footnote-2603799
-Ref: String Functions-Footnote-3604059
-Node: Gory Details604146
-Ref: table-sub-escapes606053
-Ref: table-sub-proposed607699
-Ref: table-posix-sub609209
-Ref: table-gensub-escapes610897
-Ref: Gory Details-Footnote-1611831
-Node: I/O Functions611985
-Ref: table-system-return-values618672
-Ref: I/O Functions-Footnote-1620843
-Ref: I/O Functions-Footnote-2620991
-Node: Time Functions621111
-Ref: Time Functions-Footnote-1632267
-Ref: Time Functions-Footnote-2632343
-Ref: Time Functions-Footnote-3632505
-Ref: Time Functions-Footnote-4632616
-Ref: Time Functions-Footnote-5632734
-Ref: Time Functions-Footnote-6632969
-Node: Bitwise Functions633251
-Ref: table-bitwise-ops633853
-Ref: Bitwise Functions-Footnote-1640107
-Ref: Bitwise Functions-Footnote-2640286
-Node: Type Functions640483
-Node: I18N Functions644076
-Node: User-defined645819
-Node: Definition Syntax646639
-Ref: Definition Syntax-Footnote-1652467
-Node: Function Example652544
-Ref: Function Example-Footnote-1655523
-Node: Function Calling655545
-Node: Calling A Function656139
-Node: Variable Scope657109
-Node: Pass By Value/Reference660163
-Node: Function Caveats662895
-Ref: Function Caveats-Footnote-1664990
-Node: Return Statement665114
-Node: Dynamic Typing668169
-Node: Indirect Calls670570
-Node: Functions Summary681729
-Node: Library Functions684506
-Ref: Library Functions-Footnote-1688054
-Ref: Library Functions-Footnote-2688197
-Node: Library Names688372
-Ref: Library Names-Footnote-1692166
-Ref: Library Names-Footnote-2692393
-Node: General Functions692489
-Node: Strtonum Function693683
-Node: Assert Function696765
-Node: Round Function700217
-Node: Cliff Random Function701795
-Node: Ordinal Functions702828
-Ref: Ordinal Functions-Footnote-1705937
-Ref: Ordinal Functions-Footnote-2706189
-Node: Join Function706403
-Ref: Join Function-Footnote-1708206
-Node: Getlocaltime Function708410
-Node: Readfile Function712184
-Node: Shell Quoting714213
-Node: Isnumeric Function715669
-Node: Data File Management717081
-Node: Filetrans Function717713
-Node: Rewind Function722007
-Node: File Checking723986
-Ref: File Checking-Footnote-1725358
-Node: Empty Files725565
-Node: Ignoring Assigns727632
-Node: Getopt Function729206
-Ref: Getopt Function-Footnote-1745040
-Node: Passwd Functions745252
-Ref: Passwd Functions-Footnote-1754434
-Node: Group Functions754522
-Ref: Group Functions-Footnote-1762660
-Node: Walking Arrays762873
-Node: Library Functions Summary765921
-Node: Library Exercises767345
-Node: Sample Programs767832
-Node: Running Examples768614
-Node: Clones769366
-Node: Cut Program770638
-Node: Egrep Program781079
-Node: Id Program790396
-Node: Split Program800510
-Ref: Split Program-Footnote-1810745
-Node: Tee Program810932
-Node: Uniq Program813841
-Node: Wc Program821706
-Node: Bytes vs. Characters822101
-Node: Using extensions823703
-Node: wc program824483
-Node: Miscellaneous Programs829489
-Node: Dupword Program830718
-Node: Alarm Program832781
-Node: Translate Program837694
-Ref: Translate Program-Footnote-1842435
-Node: Labels Program842713
-Ref: Labels Program-Footnote-1846154
-Node: Word Sorting846246
-Node: History Sorting850440
-Node: Extract Program852715
-Node: Simple Sed860984
-Node: Igawk Program864200
-Ref: Igawk Program-Footnote-1879447
-Ref: Igawk Program-Footnote-2879653
-Ref: Igawk Program-Footnote-3879783
-Node: Anagram Program879910
-Node: Signature Program883006
-Node: Programs Summary884258
-Node: Programs Exercises885516
-Ref: Programs Exercises-Footnote-1889832
-Node: Advanced Features889918
-Node: Nondecimal Data892412
-Node: Boolean Typed Values894042
-Node: Array Sorting896017
-Node: Controlling Array Traversal896746
-Ref: Controlling Array Traversal-Footnote-1905253
-Node: Array Sorting Functions905375
-Ref: Array Sorting Functions-Footnote-1911494
-Node: Two-way I/O911702
-Ref: Two-way I/O-Footnote-1919697
-Ref: Two-way I/O-Footnote-2919888
-Node: TCP/IP Networking919970
-Node: Profiling923150
-Node: Persistent Memory932860
-Ref: Persistent Memory-Footnote-1942470
-Node: Extension Philosophy942601
-Node: Advanced Features Summary944136
-Node: Internationalization946406
-Node: I18N and L10N948112
-Node: Explaining gettext948807
-Ref: Explaining gettext-Footnote-1954960
-Ref: Explaining gettext-Footnote-2955155
-Node: Programmer i18n955320
-Ref: Programmer i18n-Footnote-1960433
-Node: Translator i18n960482
-Node: String Extraction961318
-Ref: String Extraction-Footnote-1962496
-Node: Printf Ordering962594
-Ref: Printf Ordering-Footnote-1965456
-Node: I18N Portability965524
-Ref: I18N Portability-Footnote-1968098
-Node: I18N Example968169
-Ref: I18N Example-Footnote-1971569
-Ref: I18N Example-Footnote-2971645
-Node: Gawk I18N971762
-Node: I18N Summary972418
-Node: Debugger973819
-Node: Debugging974843
-Node: Debugging Concepts975292
-Node: Debugging Terms977118
-Node: Awk Debugging979731
-Ref: Awk Debugging-Footnote-1980708
-Node: Sample Debugging Session980848
-Node: Debugger Invocation981400
-Node: Finding The Bug983029
-Node: List of Debugger Commands989715
-Node: Breakpoint Control991092
-Node: Debugger Execution Control994924
-Node: Viewing And Changing Data998404
-Node: Execution Stack1002142
-Node: Debugger Info1003823
-Node: Miscellaneous Debugger Commands1008122
-Node: Readline Support1013375
-Node: Limitations1014321
-Node: Debugging Summary1016965
-Node: Namespaces1018264
-Node: Global Namespace1019391
-Node: Qualified Names1020836
-Node: Default Namespace1021871
-Node: Changing The Namespace1022646
-Node: Naming Rules1024340
-Node: Internal Name Management1026255
-Node: Namespace Example1027325
-Node: Namespace And Features1029908
-Node: Namespace Summary1031365
-Node: Arbitrary Precision Arithmetic1032878
-Node: Computer Arithmetic1034397
-Ref: table-numeric-ranges1038214
-Ref: table-floating-point-ranges1038712
-Ref: Computer Arithmetic-Footnote-11039371
-Node: Math Definitions1039430
-Ref: table-ieee-formats1042475
-Node: MPFR features1043049
-Node: MPFR On Parole1043502
-Ref: MPFR On Parole-Footnote-11044346
-Node: MPFR Intro1044505
-Node: FP Math Caution1046195
-Ref: FP Math Caution-Footnote-11047269
-Node: Inexactness of computations1047646
-Node: Inexact representation1048677
-Node: Comparing FP Values1050060
-Node: Errors accumulate1051318
-Node: Strange values1052785
-Ref: Strange values-Footnote-11055451
-Node: Getting Accuracy1055556
-Node: Try To Round1058293
-Node: Setting precision1059200
-Ref: table-predefined-precision-strings1059905
-Node: Setting the rounding mode1061790
-Ref: table-gawk-rounding-modes1062172
-Ref: Setting the rounding mode-Footnote-11066230
-Node: Arbitrary Precision Integers1066413
-Ref: Arbitrary Precision Integers-Footnote-11069625
-Node: Checking for MPFR1069781
-Node: POSIX Floating Point Problems1071271
-Ref: POSIX Floating Point Problems-Footnote-11076135
-Node: Floating point summary1076173
-Node: Dynamic Extensions1078437
-Node: Extension Intro1080036
-Node: Plugin License1081344
-Node: Extension Mechanism Outline1082157
-Ref: figure-load-extension1082608
-Ref: figure-register-new-function1084193
-Ref: figure-call-new-function1085303
-Node: Extension API Description1087427
-Node: Extension API Functions Introduction1089156
-Ref: table-api-std-headers1091054
-Node: General Data Types1095518
-Ref: General Data Types-Footnote-11104686
-Node: Memory Allocation Functions1105001
-Ref: Memory Allocation Functions-Footnote-11109726
-Node: Constructor Functions1109825
-Node: API Ownership of MPFR and GMP Values1113730
-Node: Registration Functions1115291
-Node: Extension Functions1115995
-Node: Exit Callback Functions1121571
-Node: Extension Version String1122890
-Node: Input Parsers1123585
-Node: Output Wrappers1138229
-Node: Two-way processors1143077
-Node: Printing Messages1145438
-Ref: Printing Messages-Footnote-11146652
-Node: Updating ERRNO1146807
-Node: Requesting Values1147606
-Ref: table-value-types-returned1148359
-Node: Accessing Parameters1149468
-Node: Symbol Table Access1150752
-Node: Symbol table by name1151268
-Ref: Symbol table by name-Footnote-11154479
-Node: Symbol table by cookie1154611
-Ref: Symbol table by cookie-Footnote-11158892
-Node: Cached values1158956
-Ref: Cached values-Footnote-11162600
-Node: Array Manipulation1162757
-Ref: Array Manipulation-Footnote-11163860
-Node: Array Data Types1163897
-Ref: Array Data Types-Footnote-11166719
-Node: Array Functions1166819
-Node: Flattening Arrays1171848
-Node: Creating Arrays1178900
-Node: Redirection API1183750
-Node: Extension API Variables1186771
-Node: Extension Versioning1187496
-Ref: gawk-api-version1187933
-Node: Extension GMP/MPFR Versioning1189721
-Node: Extension API Informational Variables1191427
-Node: Extension API Boilerplate1192588
-Node: Changes from API V11196724
-Node: Finding Extensions1198358
-Node: Extension Example1198933
-Node: Internal File Description1199757
-Node: Internal File Ops1204081
-Ref: Internal File Ops-Footnote-11215639
-Node: Using Internal File Ops1215787
-Ref: Using Internal File Ops-Footnote-11218218
-Node: Extension Samples1218496
-Node: Extension Sample File Functions1220065
-Node: Extension Sample Fnmatch1228203
-Node: Extension Sample Fork1229798
-Node: Extension Sample Inplace1231074
-Node: Extension Sample Ord1234746
-Node: Extension Sample Readdir1235622
-Ref: table-readdir-file-types1236411
-Node: Extension Sample Revout1237772
-Node: Extension Sample Rev2way1238369
-Node: Extension Sample Read write array1239121
-Node: Extension Sample Readfile1242395
-Node: Extension Sample Time1243526
-Node: Extension Sample API Tests1245816
-Node: gawkextlib1246324
-Node: Extension summary1249360
-Node: Extension Exercises1253218
-Node: Language History1254496
-Node: V7/SVR3.11256210
-Node: SVR41258560
-Node: POSIX1260092
-Node: BTL1261517
-Node: POSIX/GNU1262286
-Node: Feature History1268817
-Node: Common Extensions1287935
-Node: Ranges and Locales1289304
-Ref: Ranges and Locales-Footnote-11294105
-Ref: Ranges and Locales-Footnote-21294132
-Ref: Ranges and Locales-Footnote-31294371
-Node: Contributors1294594
-Node: History summary1300799
-Node: Installation1302245
-Node: Gawk Distribution1303209
-Node: Getting1303701
-Node: Extracting1304700
-Node: Distribution contents1306412
-Node: Unix Installation1314492
-Node: Quick Installation1315314
-Node: Compiling with MPFR1317860
-Node: Shell Startup Files1318566
-Node: Additional Configuration Options1319723
-Node: Configuration Philosophy1322110
-Node: Compiling from Git1324612
-Node: Building the Documentation1325171
-Node: Non-Unix Installation1326583
-Node: PC Installation1327059
-Node: PC Binary Installation1327932
-Node: PC Compiling1328837
-Node: PC Using1330015
-Node: Cygwin1333743
-Node: MSYS1334999
-Node: OpenVMS Installation1335631
-Node: OpenVMS Compilation1336312
-Ref: OpenVMS Compilation-Footnote-11337795
-Node: OpenVMS Dynamic Extensions1337857
-Node: OpenVMS Installation Details1339493
-Node: OpenVMS Running1341928
-Node: OpenVMS GNV1346065
-Node: Bugs1346820
-Node: Bug definition1347744
-Node: Bug address1351395
-Node: Usenet1354986
-Node: Performance bugs1356217
-Node: Asking for help1359235
-Node: Maintainers1361226
-Node: Other Versions1362253
-Node: Installation summary1371596
-Node: Notes1372980
-Node: Compatibility Mode1373790
-Node: Additions1374612
-Node: Accessing The Source1375557
-Node: Adding Code1377092
-Node: New Ports1384228
-Node: Derived Files1388738
-Ref: Derived Files-Footnote-11394585
-Ref: Derived Files-Footnote-21394620
-Ref: Derived Files-Footnote-31395237
-Node: Future Extensions1395351
-Node: Implementation Limitations1396023
-Node: Extension Design1397265
-Node: Old Extension Problems1398429
-Ref: Old Extension Problems-Footnote-11400005
-Node: Extension New Mechanism Goals1400066
-Ref: Extension New Mechanism Goals-Footnote-11403562
-Node: Extension Other Design Decisions1403763
-Node: Extension Future Growth1405962
-Node: Notes summary1406586
-Node: Basic Concepts1407799
-Node: Basic High Level1408484
-Ref: figure-general-flow1408766
-Ref: figure-process-flow1409473
-Ref: Basic High Level-Footnote-11412874
-Node: Basic Data Typing1413063
-Node: Glossary1416481
-Node: Copying1449603
-Node: GNU Free Documentation License1487364
-Node: Index1512687
+Ref: Statements/Lines-Footnote-1119427
+Node: Other Features119716
+Node: When120684
+Ref: When-Footnote-1122490
+Node: Intro Summary122555
+Node: Invoking Gawk123511
+Node: Command Line125081
+Node: Options125932
+Ref: Options-Footnote-1145081
+Ref: Options-Footnote-2145316
+Node: Other Arguments145341
+Node: Naming Standard Input149518
+Node: Environment Variables150788
+Node: AWKPATH Variable151362
+Ref: AWKPATH Variable-Footnote-1154952
+Ref: AWKPATH Variable-Footnote-2154986
+Node: AWKLIBPATH Variable155379
+Ref: AWKLIBPATH Variable-Footnote-1157154
+Node: Other Environment Variables157551
+Node: Exit Status162047
+Node: Include Files162762
+Node: Loading Shared Libraries166822
+Node: Obsolete168314
+Node: Undocumented169066
+Node: Invoking Summary169365
+Node: Regexp172392
+Node: Regexp Usage173886
+Node: Escape Sequences175987
+Node: Regexp Operators182518
+Node: Regexp Operator Details183011
+Ref: Regexp Operator Details-Footnote-1191026
+Node: Interval Expressions191185
+Ref: Interval Expressions-Footnote-1193454
+Node: Bracket Expressions193554
+Ref: table-char-classes196114
+Node: Leftmost Longest199636
+Node: Computed Regexps200996
+Node: GNU Regexp Operators204519
+Node: Case-sensitivity208542
+Ref: Case-sensitivity-Footnote-1211499
+Ref: Case-sensitivity-Footnote-2211744
+Node: Regexp Summary211860
+Node: Reading Files213384
+Node: Records215701
+Node: awk split records216812
+Node: gawk split records221702
+Ref: gawk split records-Footnote-1226996
+Node: Fields227033
+Node: Nonconstant Fields229920
+Ref: Nonconstant Fields-Footnote-1232231
+Node: Changing Fields232447
+Node: Field Separators238755
+Node: Default Field Splitting241571
+Node: Regexp Field Splitting242714
+Node: Single Character Fields246543
+Node: Command Line Field Separator247638
+Node: Full Line Fields251025
+Ref: Full Line Fields-Footnote-1252605
+Ref: Full Line Fields-Footnote-2252651
+Node: Field Splitting Summary252759
+Node: Constant Size254928
+Node: Fixed width data255672
+Node: Skipping intervening259191
+Node: Allowing trailing data259993
+Node: Fields with fixed data261058
+Node: Splitting By Content262684
+Ref: Splitting By Content-Footnote-1266623
+Node: More CSV266786
+Node: FS versus FPAT268439
+Node: Testing field creation269648
+Node: Multiple Line271341
+Node: Getline277823
+Node: Plain Getline280409
+Node: Getline/Variable283059
+Node: Getline/File284256
+Node: Getline/Variable/File285704
+Ref: Getline/Variable/File-Footnote-1287349
+Node: Getline/Pipe287445
+Node: Getline/Variable/Pipe290258
+Node: Getline/Coprocess291441
+Node: Getline/Variable/Coprocess292764
+Node: Getline Notes293530
+Node: Getline Summary296491
+Ref: table-getline-variants296935
+Node: Read Timeout297840
+Ref: Read Timeout-Footnote-1301804
+Node: Retrying Input301862
+Node: Command-line directories303129
+Node: Input Summary304067
+Node: Input Exercises307447
+Node: Printing307887
+Node: Print309773
+Node: Print Examples311279
+Node: Output Separators314132
+Node: OFMT316243
+Node: Printf317958
+Node: Basic Printf318763
+Node: Control Letters320399
+Node: Format Modifiers325868
+Node: Printf Examples332154
+Node: Redirection334699
+Node: Special FD341773
+Ref: Special FD-Footnote-1345063
+Node: Special Files345149
+Node: Other Inherited Files345778
+Node: Special Network346843
+Node: Special Caveats347731
+Node: Close Files And Pipes348714
+Ref: Close Files And Pipes-Footnote-1354851
+Node: Close Return Value355007
+Ref: table-close-pipe-return-values356282
+Ref: Close Return Value-Footnote-1357116
+Node: Nonfatal357272
+Node: Output Summary359703
+Node: Output Exercises360989
+Node: Expressions361680
+Node: Values362882
+Node: Constants363560
+Node: Scalar Constants364257
+Ref: Scalar Constants-Footnote-1366832
+Node: Nondecimal-numbers367082
+Node: Regexp Constants370203
+Node: Using Constant Regexps370749
+Node: Standard Regexp Constants371395
+Node: Strong Regexp Constants374695
+Node: Variables378546
+Node: Using Variables379211
+Node: Assignment Options381191
+Node: Conversion383753
+Node: Strings And Numbers384285
+Ref: Strings And Numbers-Footnote-1387504
+Node: Locale influences conversions387613
+Ref: table-locale-affects390463
+Node: All Operators391106
+Node: Arithmetic Ops391747
+Node: Concatenation394577
+Ref: Concatenation-Footnote-1397527
+Node: Assignment Ops397650
+Ref: table-assign-ops402789
+Node: Increment Ops404171
+Node: Truth Values and Conditions407770
+Node: Truth Values408896
+Node: Typing and Comparison409987
+Node: Variable Typing410823
+Ref: Variable Typing-Footnote-1417485
+Ref: Variable Typing-Footnote-2417565
+Node: Comparison Operators417648
+Ref: table-relational-ops418075
+Node: POSIX String Comparison421761
+Ref: POSIX String Comparison-Footnote-1423520
+Ref: POSIX String Comparison-Footnote-2423663
+Node: Boolean Ops423747
+Ref: Boolean Ops-Footnote-1428440
+Node: Conditional Exp428536
+Node: Function Calls430322
+Node: Precedence434272
+Node: Locales438149
+Node: Expressions Summary439831
+Node: Patterns and Actions442494
+Node: Pattern Overview443636
+Node: Regexp Patterns445362
+Node: Expression Patterns445908
+Node: Ranges449817
+Node: BEGIN/END452995
+Node: Using BEGIN/END453808
+Ref: Using BEGIN/END-Footnote-1456718
+Node: I/O And BEGIN/END456828
+Node: Empty462750
+Node: Using Shell Variables463067
+Node: Action Overview465405
+Node: Statements467840
+Node: If Statement469738
+Node: While Statement471307
+Node: Do Statement473395
+Node: For Statement474581
+Node: Switch Statement477938
+Node: Break Statement480489
+Node: Continue Statement482681
+Node: Next Statement484613
+Node: Nextfile Statement487110
+Node: Exit Statement489971
+Node: Built-in Variables492504
+Node: User-modified493683
+Node: Auto-set501894
+Ref: Auto-set-Footnote-1519747
+Ref: Auto-set-Footnote-2519965
+Node: ARGC and ARGV520021
+Node: Pattern Action Summary524460
+Node: Arrays527076
+Node: Array Basics528453
+Node: Array Intro529303
+Ref: figure-array-elements531319
+Ref: Array Intro-Footnote-1534188
+Node: Reference to Elements534320
+Node: Assigning Elements536842
+Node: Array Example537337
+Node: Scanning an Array539306
+Node: Controlling Scanning542403
+Ref: Controlling Scanning-Footnote-1549049
+Node: Numeric Array Subscripts549373
+Node: Uninitialized Subscripts551647
+Node: Delete553326
+Ref: Delete-Footnote-1556140
+Node: Multidimensional556197
+Node: Multiscanning559402
+Node: Arrays of Arrays561074
+Node: Arrays Summary565974
+Node: Functions568163
+Node: Built-in569223
+Node: Calling Built-in570412
+Node: Boolean Functions572459
+Node: Numeric Functions573029
+Ref: Numeric Functions-Footnote-1577222
+Ref: Numeric Functions-Footnote-2577906
+Ref: Numeric Functions-Footnote-3577958
+Node: String Functions578234
+Ref: String Functions-Footnote-1604309
+Ref: String Functions-Footnote-2604443
+Ref: String Functions-Footnote-3604703
+Node: Gory Details604790
+Ref: table-sub-escapes606697
+Ref: table-sub-proposed608343
+Ref: table-posix-sub609853
+Ref: table-gensub-escapes611541
+Ref: Gory Details-Footnote-1612475
+Node: I/O Functions612629
+Ref: table-system-return-values619316
+Ref: I/O Functions-Footnote-1621487
+Ref: I/O Functions-Footnote-2621635
+Node: Time Functions621755
+Ref: Time Functions-Footnote-1632911
+Ref: Time Functions-Footnote-2632987
+Ref: Time Functions-Footnote-3633149
+Ref: Time Functions-Footnote-4633260
+Ref: Time Functions-Footnote-5633378
+Ref: Time Functions-Footnote-6633613
+Node: Bitwise Functions633895
+Ref: table-bitwise-ops634497
+Ref: Bitwise Functions-Footnote-1640751
+Ref: Bitwise Functions-Footnote-2640930
+Node: Type Functions641127
+Node: I18N Functions644720
+Node: User-defined646463
+Node: Definition Syntax647283
+Ref: Definition Syntax-Footnote-1653111
+Node: Function Example653188
+Ref: Function Example-Footnote-1656167
+Node: Function Calling656189
+Node: Calling A Function656783
+Node: Variable Scope657753
+Node: Pass By Value/Reference660807
+Node: Function Caveats663539
+Ref: Function Caveats-Footnote-1665634
+Node: Return Statement665758
+Node: Dynamic Typing668813
+Node: Indirect Calls671214
+Node: Functions Summary682373
+Node: Library Functions685150
+Ref: Library Functions-Footnote-1688698
+Ref: Library Functions-Footnote-2688841
+Node: Library Names689016
+Ref: Library Names-Footnote-1692810
+Ref: Library Names-Footnote-2693037
+Node: General Functions693133
+Node: Strtonum Function694327
+Node: Assert Function697409
+Node: Round Function700861
+Node: Cliff Random Function702439
+Node: Ordinal Functions703472
+Ref: Ordinal Functions-Footnote-1706581
+Ref: Ordinal Functions-Footnote-2706833
+Node: Join Function707047
+Ref: Join Function-Footnote-1708850
+Node: Getlocaltime Function709054
+Node: Readfile Function712828
+Node: Shell Quoting714857
+Node: Isnumeric Function716313
+Node: Data File Management717725
+Node: Filetrans Function718357
+Node: Rewind Function722651
+Node: File Checking724630
+Ref: File Checking-Footnote-1726002
+Node: Empty Files726209
+Node: Ignoring Assigns728276
+Node: Getopt Function729850
+Ref: Getopt Function-Footnote-1745684
+Node: Passwd Functions745896
+Ref: Passwd Functions-Footnote-1755078
+Node: Group Functions755166
+Ref: Group Functions-Footnote-1763304
+Node: Walking Arrays763517
+Node: Library Functions Summary766565
+Node: Library Exercises767989
+Node: Sample Programs768476
+Node: Running Examples769258
+Node: Clones770010
+Node: Cut Program771282
+Node: Egrep Program781723
+Node: Id Program791040
+Node: Split Program801154
+Ref: Split Program-Footnote-1811389
+Node: Tee Program811576
+Node: Uniq Program814485
+Node: Wc Program822350
+Node: Bytes vs. Characters822745
+Node: Using extensions824347
+Node: wc program825127
+Node: Miscellaneous Programs830133
+Node: Dupword Program831362
+Node: Alarm Program833425
+Node: Translate Program838338
+Ref: Translate Program-Footnote-1843079
+Node: Labels Program843357
+Ref: Labels Program-Footnote-1846798
+Node: Word Sorting846890
+Node: History Sorting851084
+Node: Extract Program853359
+Node: Simple Sed861628
+Node: Igawk Program864844
+Ref: Igawk Program-Footnote-1880091
+Ref: Igawk Program-Footnote-2880297
+Ref: Igawk Program-Footnote-3880427
+Node: Anagram Program880554
+Node: Signature Program883650
+Node: Programs Summary884902
+Node: Programs Exercises886160
+Ref: Programs Exercises-Footnote-1890476
+Node: Advanced Features890562
+Node: Nondecimal Data893056
+Node: Boolean Typed Values894686
+Node: Array Sorting896661
+Node: Controlling Array Traversal897390
+Ref: Controlling Array Traversal-Footnote-1905897
+Node: Array Sorting Functions906019
+Ref: Array Sorting Functions-Footnote-1912138
+Node: Two-way I/O912346
+Ref: Two-way I/O-Footnote-1920341
+Ref: Two-way I/O-Footnote-2920532
+Node: TCP/IP Networking920614
+Node: Profiling923794
+Node: Persistent Memory933504
+Ref: Persistent Memory-Footnote-1943114
+Node: Extension Philosophy943245
+Node: Advanced Features Summary944780
+Node: Internationalization947050
+Node: I18N and L10N948756
+Node: Explaining gettext949451
+Ref: Explaining gettext-Footnote-1955604
+Ref: Explaining gettext-Footnote-2955799
+Node: Programmer i18n955964
+Ref: Programmer i18n-Footnote-1961077
+Node: Translator i18n961126
+Node: String Extraction961962
+Ref: String Extraction-Footnote-1963140
+Node: Printf Ordering963238
+Ref: Printf Ordering-Footnote-1966100
+Node: I18N Portability966168
+Ref: I18N Portability-Footnote-1968742
+Node: I18N Example968813
+Ref: I18N Example-Footnote-1972213
+Ref: I18N Example-Footnote-2972289
+Node: Gawk I18N972406
+Node: I18N Summary973062
+Node: Debugger974463
+Node: Debugging975487
+Node: Debugging Concepts975936
+Node: Debugging Terms977762
+Node: Awk Debugging980375
+Ref: Awk Debugging-Footnote-1981352
+Node: Sample Debugging Session981492
+Node: Debugger Invocation982044
+Node: Finding The Bug983673
+Node: List of Debugger Commands990359
+Node: Breakpoint Control991736
+Node: Debugger Execution Control995568
+Node: Viewing And Changing Data999048
+Node: Execution Stack1002786
+Node: Debugger Info1004467
+Node: Miscellaneous Debugger Commands1008766
+Node: Readline Support1014019
+Node: Limitations1014965
+Node: Debugging Summary1017609
+Node: Namespaces1018908
+Node: Global Namespace1020035
+Node: Qualified Names1021480
+Node: Default Namespace1022515
+Node: Changing The Namespace1023290
+Node: Naming Rules1024984
+Node: Internal Name Management1026899
+Node: Namespace Example1027969
+Node: Namespace And Features1030552
+Node: Namespace Summary1032009
+Node: Arbitrary Precision Arithmetic1033522
+Node: Computer Arithmetic1035041
+Ref: table-numeric-ranges1038858
+Ref: table-floating-point-ranges1039356
+Ref: Computer Arithmetic-Footnote-11040015
+Node: Math Definitions1040074
+Ref: table-ieee-formats1043119
+Node: MPFR features1043693
+Node: MPFR On Parole1044146
+Ref: MPFR On Parole-Footnote-11044990
+Node: MPFR Intro1045149
+Node: FP Math Caution1046839
+Ref: FP Math Caution-Footnote-11047913
+Node: Inexactness of computations1048290
+Node: Inexact representation1049321
+Node: Comparing FP Values1050704
+Node: Errors accumulate1051962
+Node: Strange values1053429
+Ref: Strange values-Footnote-11056095
+Node: Getting Accuracy1056200
+Node: Try To Round1058937
+Node: Setting precision1059844
+Ref: table-predefined-precision-strings1060549
+Node: Setting the rounding mode1062434
+Ref: table-gawk-rounding-modes1062816
+Ref: Setting the rounding mode-Footnote-11066874
+Node: Arbitrary Precision Integers1067057
+Ref: Arbitrary Precision Integers-Footnote-11070269
+Node: Checking for MPFR1070425
+Node: POSIX Floating Point Problems1071915
+Ref: POSIX Floating Point Problems-Footnote-11076779
+Node: Floating point summary1076817
+Node: Dynamic Extensions1079081
+Node: Extension Intro1080680
+Node: Plugin License1081988
+Node: Extension Mechanism Outline1082801
+Ref: figure-load-extension1083252
+Ref: figure-register-new-function1084837
+Ref: figure-call-new-function1085947
+Node: Extension API Description1088071
+Node: Extension API Functions Introduction1089800
+Ref: table-api-std-headers1091698
+Node: General Data Types1096162
+Ref: General Data Types-Footnote-11105330
+Node: Memory Allocation Functions1105645
+Ref: Memory Allocation Functions-Footnote-11110370
+Node: Constructor Functions1110469
+Node: API Ownership of MPFR and GMP Values1114374
+Node: Registration Functions1115935
+Node: Extension Functions1116639
+Node: Exit Callback Functions1122215
+Node: Extension Version String1123534
+Node: Input Parsers1124229
+Node: Output Wrappers1138873
+Node: Two-way processors1143721
+Node: Printing Messages1146082
+Ref: Printing Messages-Footnote-11147296
+Node: Updating ERRNO1147451
+Node: Requesting Values1148250
+Ref: table-value-types-returned1149003
+Node: Accessing Parameters1150112
+Node: Symbol Table Access1151396
+Node: Symbol table by name1151912
+Ref: Symbol table by name-Footnote-11155123
+Node: Symbol table by cookie1155255
+Ref: Symbol table by cookie-Footnote-11159536
+Node: Cached values1159600
+Ref: Cached values-Footnote-11163244
+Node: Array Manipulation1163401
+Ref: Array Manipulation-Footnote-11164504
+Node: Array Data Types1164541
+Ref: Array Data Types-Footnote-11167363
+Node: Array Functions1167463
+Node: Flattening Arrays1172492
+Node: Creating Arrays1179544
+Node: Redirection API1184394
+Node: Extension API Variables1187415
+Node: Extension Versioning1188140
+Ref: gawk-api-version1188577
+Node: Extension GMP/MPFR Versioning1190365
+Node: Extension API Informational Variables1192071
+Node: Extension API Boilerplate1193232
+Node: Changes from API V11197368
+Node: Finding Extensions1199002
+Node: Extension Example1199577
+Node: Internal File Description1200401
+Node: Internal File Ops1204725
+Ref: Internal File Ops-Footnote-11216283
+Node: Using Internal File Ops1216431
+Ref: Using Internal File Ops-Footnote-11218862
+Node: Extension Samples1219140
+Node: Extension Sample File Functions1220709
+Node: Extension Sample Fnmatch1228847
+Node: Extension Sample Fork1230442
+Node: Extension Sample Inplace1231718
+Node: Extension Sample Ord1235390
+Node: Extension Sample Readdir1236266
+Ref: table-readdir-file-types1237055
+Node: Extension Sample Revout1238416
+Node: Extension Sample Rev2way1239013
+Node: Extension Sample Read write array1239765
+Node: Extension Sample Readfile1243039
+Node: Extension Sample Time1244170
+Node: Extension Sample API Tests1246460
+Node: gawkextlib1246968
+Node: Extension summary1250004
+Node: Extension Exercises1253862
+Node: Language History1255140
+Node: V7/SVR3.11256854
+Node: SVR41259204
+Node: POSIX1260736
+Node: BTL1262161
+Node: POSIX/GNU1262930
+Node: Feature History1269461
+Node: Common Extensions1288579
+Node: Ranges and Locales1289948
+Ref: Ranges and Locales-Footnote-11294749
+Ref: Ranges and Locales-Footnote-21294776
+Ref: Ranges and Locales-Footnote-31295015
+Node: Contributors1295238
+Node: History summary1301443
+Node: Installation1302889
+Node: Gawk Distribution1303853
+Node: Getting1304345
+Node: Extracting1305344
+Node: Distribution contents1307056
+Node: Unix Installation1315136
+Node: Quick Installation1315958
+Node: Compiling with MPFR1318504
+Node: Shell Startup Files1319210
+Node: Additional Configuration Options1320367
+Node: Configuration Philosophy1322754
+Node: Compiling from Git1325256
+Node: Building the Documentation1325815
+Node: Non-Unix Installation1327227
+Node: PC Installation1327703
+Node: PC Binary Installation1328576
+Node: PC Compiling1329481
+Node: PC Using1330659
+Node: Cygwin1334387
+Node: MSYS1335643
+Node: OpenVMS Installation1336275
+Node: OpenVMS Compilation1336956
+Ref: OpenVMS Compilation-Footnote-11338439
+Node: OpenVMS Dynamic Extensions1338501
+Node: OpenVMS Installation Details1340137
+Node: OpenVMS Running1342572
+Node: OpenVMS GNV1346709
+Node: Bugs1347464
+Node: Bug definition1348388
+Node: Bug address1352039
+Node: Usenet1355630
+Node: Performance bugs1356861
+Node: Asking for help1359879
+Node: Maintainers1361870
+Node: Other Versions1362897
+Node: Installation summary1372240
+Node: Notes1373624
+Node: Compatibility Mode1374434
+Node: Additions1375256
+Node: Accessing The Source1376201
+Node: Adding Code1377736
+Node: New Ports1384872
+Node: Derived Files1389382
+Ref: Derived Files-Footnote-11395229
+Ref: Derived Files-Footnote-21395264
+Ref: Derived Files-Footnote-31395881
+Node: Future Extensions1395995
+Node: Implementation Limitations1396667
+Node: Extension Design1397909
+Node: Old Extension Problems1399073
+Ref: Old Extension Problems-Footnote-11400649
+Node: Extension New Mechanism Goals1400710
+Ref: Extension New Mechanism Goals-Footnote-11404206
+Node: Extension Other Design Decisions1404407
+Node: Extension Future Growth1406606
+Node: Notes summary1407230
+Node: Basic Concepts1408443
+Node: Basic High Level1409128
+Ref: figure-general-flow1409410
+Ref: figure-process-flow1410117
+Ref: Basic High Level-Footnote-11413518
+Node: Basic Data Typing1413707
+Node: Glossary1417125
+Node: Copying1450247
+Node: GNU Free Documentation License1488008
+Node: Index1513331
 End Tag Table
diff --git a/doc/gawk.texi b/doc/gawk.texi
index 5d017e11..32daddc3 100644
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -3669,6 +3669,35 @@ next line. However, the backslash-newline combination is 
never even
 noticed because it is ``hidden'' inside the comment. Thus, the
 @code{BEGIN} is noted as a syntax error.
+@cindex dark corner @subentry backslash continuation on command line
+@cindex dark corner @subentry command line, backslash continuation on
+Backslash continuation comes into play in an additional, unexpected situation.
+gawk -F'\
+a' '@dots{}'
+@end example
+This command line assigns a value to @code{FS}. But what value?
+There are several possibilities, and in fact different versions of
+@command{awk} do different things.  @command{gawk} treats this as
+if it were written:
+BEGIN @{ FS = "\
+@end example
+In short, the backslash and newline are removed, assigning @code{"a"}
+to @code{FS}.  This same treatment applies to variable assignments
+made with the @option{-v} option (@pxref{Options})
+and to regular command-line variable assignments (@pxref{Assignment Options}).
 If you're interested, see
 for a source code patch that allows lines to be continued when inside
diff --git a/doc/ b/doc/
index 79b7373e..be06acc3 100644
--- a/doc/
+++ b/doc/
@@ -3579,6 +3579,35 @@ next line. However, the backslash-newline combination is 
never even
 noticed because it is ``hidden'' inside the comment. Thus, the
 @code{BEGIN} is noted as a syntax error.
+@cindex dark corner @subentry backslash continuation on command line
+@cindex dark corner @subentry command line, backslash continuation on
+Backslash continuation comes into play in an additional, unexpected situation.
+gawk -F'\
+a' '@dots{}'
+@end example
+This command line assigns a value to @code{FS}. But what value?
+There are several possibilities, and in fact different versions of
+@command{awk} do different things.  @command{gawk} treats this as
+if it were written:
+BEGIN @{ FS = "\
+@end example
+In short, the backslash and newline are removed, assigning @code{"a"}
+to @code{FS}.  This same treatment applies to variable assignments
+made with the @option{-v} option (@pxref{Options})
+and to regular command-line variable assignments (@pxref{Assignment Options}).
 If you're interested, see
 for a source code patch that allows lines to be continued when inside
diff --git a/main.c b/main.c
index c48feafa..e660da17 100644
--- a/main.c
+++ b/main.c
@@ -791,7 +791,7 @@ cmdline_fs(char *str)
                        str[0] = '\t';
-       *tmp = make_str_node(str, strlen(str), SCAN); /* do process escapes */
+       *tmp = make_str_node(str, strlen(str), SCAN | ELIDE_BACK_NL); /* do 
process escapes */
diff --git a/pc/ChangeLog b/pc/ChangeLog
index 0f3d17fe..5ac40026 100644
--- a/pc/ChangeLog
+++ b/pc/ChangeLog
@@ -1,3 +1,7 @@
+2023-06-12         Arnold D. Robbins     <>
+       * Makefile.tst: Regenerated.
 2023-06-04         Arnold D. Robbins     <>
        * Makefile.tst: Regenerated.
diff --git a/pc/Makefile.tst b/pc/Makefile.tst
index 781f6e55..23380115 100644
--- a/pc/Makefile.tst
+++ b/pc/Makefile.tst
@@ -149,6 +149,7 @@ BASIC_TESTS = \
        arysubnm aryunasgn asgext assignnumfield assignnumfield2 awkpath \
        back89 backgsub badassign1 badbuild callparam childin clobber \
        closebad close_status clsflnam compare compare2 concat1 concat2 \
+       cmdlinefsbacknl \
        concat3 concat4 concat5 convfmt datanonl defref delargv delarpm2 \
        delarprm delfunc dfacheck2 dfamb1 dfastress divzero divzero2 \
        dynlj eofsplit \
@@ -1516,6 +1517,11 @@ concat2:
        @-AWKPATH="$(srcdir)" $(AWK) -f $@.awk  >_$@ 2>&1 || echo EXIT CODE: 
$$? >>_$@
        @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+       @echo $@
+       @-$(LOCALES) AWK="$(AWKPROG)" "$(srcdir)"/$  > _$@ 2>&1 || echo 
EXIT CODE: $$? >>_$@
+       @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
        @echo $@
        @-AWKPATH="$(srcdir)" $(AWK) -f $@.awk  >_$@ 2>&1 || echo EXIT CODE: 
$$? >>_$@
diff --git a/test/ChangeLog b/test/ChangeLog
index 45f95485..9a5b0236 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -1,3 +1,8 @@
+2023-06-12         Arnold D. Robbins     <>
+       * (EXTRA_DIST): New test, cmdlinefsbacknl.
+       *, cmdlinefsbacknl.ok: New files.
 2023-06-04         Arnold D. Robbins     <>
        * (EXTRA_DIST): New test, gensub4.
diff --git a/test/ b/test/
index e0b93c16..154c0acb 100644
--- a/test/
+++ b/test/
@@ -200,6 +200,8 @@ EXTRA_DIST = \
        clsflnam.awk \ \
        clsflnam.ok \
+ \
+       cmdlinefsbacknl.ok \
        colonwarn.awk \ \
        colonwarn.ok \
@@ -1467,6 +1469,7 @@ BASIC_TESTS = \
        arysubnm aryunasgn asgext assignnumfield assignnumfield2 awkpath \
        back89 backgsub badassign1 badbuild callparam childin clobber \
        closebad close_status clsflnam compare compare2 concat1 concat2 \
+       cmdlinefsbacknl \
        concat3 concat4 concat5 convfmt datanonl defref delargv delarpm2 \
        delarprm delfunc dfacheck2 dfamb1 dfastress divzero divzero2 \
        dynlj eofsplit \
diff --git a/test/ b/test/
index 1d0c56b0..751979d9 100644
--- a/test/
+++ b/test/
@@ -468,6 +468,8 @@ EXTRA_DIST = \
        clsflnam.awk \ \
        clsflnam.ok \
+ \
+       cmdlinefsbacknl.ok \
        colonwarn.awk \ \
        colonwarn.ok \
@@ -1735,6 +1737,7 @@ BASIC_TESTS = \
        arysubnm aryunasgn asgext assignnumfield assignnumfield2 awkpath \
        back89 backgsub badassign1 badbuild callparam childin clobber \
        closebad close_status clsflnam compare compare2 concat1 concat2 \
+       cmdlinefsbacknl \
        concat3 concat4 concat5 convfmt datanonl defref delargv delarpm2 \
        delarprm delfunc dfacheck2 dfamb1 dfastress divzero divzero2 \
        dynlj eofsplit \
@@ -3291,6 +3294,11 @@ concat2:
        @-AWKPATH="$(srcdir)" $(AWK) -f $@.awk  >_$@ 2>&1 || echo EXIT CODE: 
$$? >>_$@
        @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+       @echo $@
+       @-$(LOCALES) AWK="$(AWKPROG)" "$(srcdir)"/$  > _$@ 2>&1 || echo 
EXIT CODE: $$? >>_$@
+       @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
        @echo $@
        @-AWKPATH="$(srcdir)" $(AWK) -f $@.awk  >_$@ 2>&1 || echo EXIT CODE: 
$$? >>_$@
diff --git a/test/Maketests b/test/Maketests
index 6bb3e9be..2b7c7130 100644
--- a/test/Maketests
+++ b/test/Maketests
@@ -210,6 +210,11 @@ concat2:
        @-AWKPATH="$(srcdir)" $(AWK) -f $@.awk  >_$@ 2>&1 || echo EXIT CODE: 
$$? >>_$@
        @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+       @echo $@
+       @-$(LOCALES) AWK="$(AWKPROG)" "$(srcdir)"/$  > _$@ 2>&1 || echo 
EXIT CODE: $$? >>_$@
+       @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
        @echo $@
        @-AWKPATH="$(srcdir)" $(AWK) -f $@.awk  >_$@ 2>&1 || echo EXIT CODE: 
$$? >>_$@
diff --git a/test/cmdlinefsbacknl.ok b/test/cmdlinefsbacknl.ok
new file mode 100644
index 00000000..00682c79
--- /dev/null
+++ b/test/cmdlinefsbacknl.ok
@@ -0,0 +1,3 @@
diff --git a/test/ b/test/
new file mode 100755
index 00000000..35b7c081
--- /dev/null
+++ b/test/
@@ -0,0 +1,12 @@
+#! /bin/sh
+$AWK -F '\
+a' 'BEGIN { printf("FS=<%s>\n", FS) }'
+$AWK -v FS='\
+a' 'BEGIN { printf("FS=<%s>\n", FS) }'
+echo | $AWK '{ printf("FS=<%s>\n", FS) }' FS='\
+a' -


Summary of changes:
 ChangeLog               |    6 +
 doc/ChangeLog           |    5 +
 doc/           | 1194 ++++++++++++++++++++++++-----------------------
 doc/gawk.texi           |   29 ++
 doc/         |   29 ++
 main.c                  |    2 +-
 pc/ChangeLog            |    4 +
 pc/Makefile.tst         |    6 +
 test/ChangeLog          |    5 +
 test/        |    3 +
 test/        |    8 +
 test/Maketests          |    5 +
 test/cmdlinefsbacknl.ok |    3 +
 test/ |   12 +
 14 files changed, 725 insertions(+), 586 deletions(-)
 create mode 100644 test/cmdlinefsbacknl.ok
 create mode 100755 test/


reply via email to

[Prev in Thread] Current Thread [Next in Thread]