gawk-diffs
[Top][All Lists]
Advanced

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

[SCM] gawk branch, gawk-5.1-stable, updated. gawk-4.1.0-4186-gb051339


From: Arnold Robbins
Subject: [SCM] gawk branch, gawk-5.1-stable, updated. gawk-4.1.0-4186-gb051339
Date: Sat, 26 Dec 2020 13:48:21 -0500 (EST)

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.1-stable has been updated
       via  b051339682f46be6d3cde3d744409e7b4e077167 (commit)
       via  f7a69176569a76daab7b772157a76ddb8f85e046 (commit)
       via  daaaab1ae680cbaf6575741c314a19ae9d57ef8f (commit)
      from  e1be14cd37e0c6c58284e18c859e334d1b5fa97f (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 -----------------------------------------------------------------
http://git.sv.gnu.org/cgit/gawk.git/commit/?id=b051339682f46be6d3cde3d744409e7b4e077167

commit b051339682f46be6d3cde3d744409e7b4e077167
Author: Arnold D. Robbins <arnold@skeeve.com>
Date:   Sat Dec 26 20:48:01 2020 +0200

    New test - fpat9.

diff --git a/pc/ChangeLog b/pc/ChangeLog
index 2c0b8b3..c954002 100644
--- a/pc/ChangeLog
+++ b/pc/ChangeLog
@@ -1,3 +1,7 @@
+2020-12-26         Arnold D. Robbins     <arnold@skeeve.com>
+
+       * Makefile.tst: Rebuilt.
+
 2020-12-20         Arnold D. Robbins     <arnold@skeeve.com>
 
        * Makefile.tst: Rebuilt.
diff --git a/pc/Makefile.tst b/pc/Makefile.tst
index 0d5cef1..890c2ff 100644
--- a/pc/Makefile.tst
+++ b/pc/Makefile.tst
@@ -197,7 +197,7 @@ GAWK_EXT_TESTS = \
        dbugeval dbugeval2 dbugeval3 dbugtypedre1 dbugtypedre2 delsub \
        devfd devfd1 devfd2 dfacheck1 dumpvars \
        errno exit fieldwdth forcenum \
-       fpat1 fpat2 fpat3 fpat4 fpat5 fpat6 fpat7 fpat8 fpatnull \
+       fpat1 fpat2 fpat3 fpat4 fpat5 fpat6 fpat7 fpat8 fpat9 fpatnull \
        fsfwfs funlen functab1 functab2 functab3 \
        fwtest fwtest2 fwtest3 fwtest4 fwtest5 fwtest6 fwtest7 fwtest8 \
        genpot gensub gensub2 gensub3 getlndir gnuops2 gnuops3 gnureops gsubind 
\
@@ -2707,6 +2707,11 @@ fpat8:
        @AWKPATH="$(srcdir)" $(AWK) -f $@.awk  < "$(srcdir)"/$@.in >_$@ 2>&1 || 
echo EXIT CODE: $$? >>_$@
        @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
 
+fpat9:
+       @echo $@
+       @AWKPATH="$(srcdir)" $(AWK) -f $@.awk  < "$(srcdir)"/$@.in >_$@ 2>&1 || 
echo EXIT CODE: $$? >>_$@
+       @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
 fpatnull:
        @echo $@
        @AWKPATH="$(srcdir)" $(AWK) -f $@.awk  < "$(srcdir)"/$@.in >_$@ 2>&1 || 
echo EXIT CODE: $$? >>_$@
diff --git a/test/Makefile.am b/test/Makefile.am
index 097dc26..2b1f141 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -376,6 +376,9 @@ EXTRA_DIST = \
        fpat8.awk \
        fpat8.in \
        fpat8.ok \
+       fpat9.awk \
+       fpat9.in \
+       fpat9.ok \
        fpatnull.awk \
        fpatnull.in \
        fpatnull.ok \
@@ -1424,7 +1427,7 @@ GAWK_EXT_TESTS = \
        dbugeval dbugeval2 dbugeval3 dbugtypedre1 dbugtypedre2 delsub \
        devfd devfd1 devfd2 dfacheck1 dumpvars \
        errno exit fieldwdth forcenum \
-       fpat1 fpat2 fpat3 fpat4 fpat5 fpat6 fpat7 fpat8 fpatnull \
+       fpat1 fpat2 fpat3 fpat4 fpat5 fpat6 fpat7 fpat8 fpat9 fpatnull \
        fsfwfs funlen functab1 functab2 functab3 \
        fwtest fwtest2 fwtest3 fwtest4 fwtest5 fwtest6 fwtest7 fwtest8 \
        genpot gensub gensub2 gensub3 getlndir gnuops2 gnuops3 gnureops gsubind 
\
diff --git a/test/Makefile.in b/test/Makefile.in
index 871e5a4..b96b7d0 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -639,6 +639,9 @@ EXTRA_DIST = \
        fpat8.awk \
        fpat8.in \
        fpat8.ok \
+       fpat9.awk \
+       fpat9.in \
+       fpat9.ok \
        fpatnull.awk \
        fpatnull.in \
        fpatnull.ok \
@@ -1687,7 +1690,7 @@ GAWK_EXT_TESTS = \
        dbugeval dbugeval2 dbugeval3 dbugtypedre1 dbugtypedre2 delsub \
        devfd devfd1 devfd2 dfacheck1 dumpvars \
        errno exit fieldwdth forcenum \
-       fpat1 fpat2 fpat3 fpat4 fpat5 fpat6 fpat7 fpat8 fpatnull \
+       fpat1 fpat2 fpat3 fpat4 fpat5 fpat6 fpat7 fpat8 fpat9 fpatnull \
        fsfwfs funlen functab1 functab2 functab3 \
        fwtest fwtest2 fwtest3 fwtest4 fwtest5 fwtest6 fwtest7 fwtest8 \
        genpot gensub gensub2 gensub3 getlndir gnuops2 gnuops3 gnureops gsubind 
\
@@ -4366,6 +4369,11 @@ fpat8:
        @AWKPATH="$(srcdir)" $(AWK) -f $@.awk  < "$(srcdir)"/$@.in >_$@ 2>&1 || 
echo EXIT CODE: $$? >>_$@
        @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
 
+fpat9:
+       @echo $@
+       @AWKPATH="$(srcdir)" $(AWK) -f $@.awk  < "$(srcdir)"/$@.in >_$@ 2>&1 || 
echo EXIT CODE: $$? >>_$@
+       @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
 fpatnull:
        @echo $@
        @AWKPATH="$(srcdir)" $(AWK) -f $@.awk  < "$(srcdir)"/$@.in >_$@ 2>&1 || 
echo EXIT CODE: $$? >>_$@
diff --git a/test/Maketests b/test/Maketests
index 90599c4..363a275 100644
--- a/test/Maketests
+++ b/test/Maketests
@@ -1451,6 +1451,11 @@ fpat8:
        @AWKPATH="$(srcdir)" $(AWK) -f $@.awk  < "$(srcdir)"/$@.in >_$@ 2>&1 || 
echo EXIT CODE: $$? >>_$@
        @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
 
+fpat9:
+       @echo $@
+       @AWKPATH="$(srcdir)" $(AWK) -f $@.awk  < "$(srcdir)"/$@.in >_$@ 2>&1 || 
echo EXIT CODE: $$? >>_$@
+       @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
 fpatnull:
        @echo $@
        @AWKPATH="$(srcdir)" $(AWK) -f $@.awk  < "$(srcdir)"/$@.in >_$@ 2>&1 || 
echo EXIT CODE: $$? >>_$@
diff --git a/test/fpat9.awk b/test/fpat9.awk
new file mode 100644
index 0000000..06142b8
--- /dev/null
+++ b/test/fpat9.awk
@@ -0,0 +1,22 @@
+#! /bin/gawk  -f
+
+# Modified version of program from Arthur Schwarz <home@slipbits.com>.
+
+BEGIN {                                         # program constants
+         FPAT         = "([^,]*)|(\"([^\"]|\"\")+\")" # CSV field separator
+         print "FPAT = ", FPAT;
+}
+{
+        print "------------------------------------------------\n"
+        print $0;
+        printf("%3d:   \n", NF);
+        for (i = 1; i <= NF; i++) {
+           if (substr($i, 1, 1) == "\"") {
+              len = length($i)         # BUG FIX, was length($1)
+              $i = substr($i, 2, len - 2);
+            gsub(/""/, "\"", $i)       # embedded "" --> "
+           }
+           printf("      <%d: %s>\n", i, $i);
+        }
+        print " ";
+}
diff --git a/test/fpat9.in b/test/fpat9.in
new file mode 100644
index 0000000..70440d8
--- /dev/null
+++ b/test/fpat9.in
@@ -0,0 +1,7 @@
+"PDQ",,,
+"line 1",,,"http://file.a/A%20Guide%20";
+"line 2",,,"https://www.whitgt.pdf";
+"line 3, and xyz",,,"http://www.c/main.pdf";
+"line 4 "" and abc",,,http://file.a/A%20Guide%20
+line 5,,,https://www.whitgt.pdf
+line 6,,,http://file.a/A%20Guide%20
diff --git a/test/fpat9.ok b/test/fpat9.ok
new file mode 100644
index 0000000..e1f705e
--- /dev/null
+++ b/test/fpat9.ok
@@ -0,0 +1,64 @@
+FPAT =  ([^,]*)|("([^"]|"")+")
+------------------------------------------------
+
+"PDQ",,,
+  4:   
+      <1: PDQ>
+      <2: >
+      <3: >
+      <4: >
+ 
+------------------------------------------------
+
+"line 1",,,"http://file.a/A%20Guide%20";
+  4:   
+      <1: line 1>
+      <2: >
+      <3: >
+      <4: http://file.a/A%20Guide%20>
+ 
+------------------------------------------------
+
+"line 2",,,"https://www.whitgt.pdf";
+  4:   
+      <1: line 2>
+      <2: >
+      <3: >
+      <4: https://www.whitgt.pdf>
+ 
+------------------------------------------------
+
+"line 3, and xyz",,,"http://www.c/main.pdf";
+  4:   
+      <1: line 3, and xyz>
+      <2: >
+      <3: >
+      <4: http://www.c/main.pdf>
+ 
+------------------------------------------------
+
+"line 4 "" and abc",,,http://file.a/A%20Guide%20
+  4:   
+      <1: line 4 " and abc>
+      <2: >
+      <3: >
+      <4: http://file.a/A%20Guide%20>
+ 
+------------------------------------------------
+
+line 5,,,https://www.whitgt.pdf
+  4:   
+      <1: line 5>
+      <2: >
+      <3: >
+      <4: https://www.whitgt.pdf>
+ 
+------------------------------------------------
+
+line 6,,,http://file.a/A%20Guide%20
+  4:   
+      <1: line 6>
+      <2: >
+      <3: >
+      <4: http://file.a/A%20Guide%20>
+ 

http://git.sv.gnu.org/cgit/gawk.git/commit/?id=f7a69176569a76daab7b772157a76ddb8f85e046

commit f7a69176569a76daab7b772157a76ddb8f85e046
Author: Arnold D. Robbins <arnold@skeeve.com>
Date:   Sat Dec 26 20:47:32 2020 +0200

    Doc updates.

diff --git a/doc/ChangeLog b/doc/ChangeLog
index 39d32ce..b895545 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,3 +1,8 @@
+2020-12-26         Arnold D. Robbins     <arnold@skeeve.com>
+
+       * gawktexi.in (More CSV): Add indexing and reference to
+       Manuel Collado's CSVMODE library.
+
 2020-12-07         Arnold D. Robbins     <arnold@skeeve.com>
 
        * gawktexi.in (awk split records): Remove the bit about POSIX
diff --git a/doc/gawk.info b/doc/gawk.info
index 7a01d25..84aaf43 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -5662,6 +5662,11 @@ And here is his test program:
      -| <p,,s>
      -| NF = 3 <p><><s>
 
+   In general, using 'FPAT' to do your own CSV parsing is like having a
+bed with a blanket that's not quite big enough.  There's always a corner
+that isn't covered.  We recommend, instead, that you use Manuel
+Collado's 'CSVMODE' library for 'gawk' (http://mcollado.z15.es/xgawk/).
+
 
 File: gawk.info,  Node: Testing field creation,  Next: Multiple Line,  Prev: 
Splitting By Content,  Up: Reading Files
 
@@ -35339,6 +35344,7 @@ Index
 * Close, Diane <1>:                      Contributors.        (line  21)
 * Collado, Manuel:                       Acknowledgments.     (line  60)
 * Collado, Manuel <1>:                   More CSV.            (line   6)
+* Collado, Manuel <2>:                   More CSV.            (line  52)
 * collating elements:                    Bracket Expressions. (line  90)
 * collating symbols:                     Bracket Expressions. (line  97)
 * Colombo, Antonio:                      Acknowledgments.     (line  60)
@@ -35348,6 +35354,10 @@ Index
 * columns, aligning:                     Print Examples.      (line  69)
 * columns, cutting:                      Cut Program.         (line   6)
 * comma (,), in range patterns:          Ranges.              (line   6)
+* Comma separated values (CSV) data, parsing with FPAT: Splitting By Content.
+                                                              (line  19)
+* Comma separated values (CSV) data, parsing with FPAT library: More CSV.
+                                                              (line  52)
 * command completion, in debugger:       Readline Support.    (line   6)
 * command line, formats:                 Running gawk.        (line  12)
 * command line, option -f:               Long.                (line  12)
@@ -35463,6 +35473,11 @@ Index
 * csh utility:                           Statements/Lines.    (line  45)
 * csh utility, POSIXLY_CORRECT environment variable: Options. (line 406)
 * csh utility, |& operator, comparison with: Two-way I/O.     (line  27)
+* CSV (comma separated values) data, parsing with FPAT: Splitting By Content.
+                                                              (line  19)
+* CSV (comma separated values) data, parsing with CSVMODE library: More CSV.
+                                                              (line  52)
+* CSVMODE library for gawk:              More CSV.            (line  52)
 * ctime() user-defined function:         Function Example.    (line  74)
 * Curreli, Marco:                        Contributors.        (line 147)
 * currency symbols, localization:        Explaining gettext.  (line 104)
@@ -38071,503 +38086,503 @@ Node: Fields with fixed data246170
 Node: Splitting By Content247688
 Ref: Splitting By Content-Footnote-1251471
 Node: More CSV251634
-Node: Testing field creation252944
-Node: Multiple Line254569
-Node: Getline260846
-Node: Plain Getline263315
-Node: Getline/Variable265888
-Node: Getline/File267039
-Node: Getline/Variable/File268427
-Ref: Getline/Variable/File-Footnote-1270032
-Node: Getline/Pipe270120
-Node: Getline/Variable/Pipe272824
-Node: Getline/Coprocess273959
-Node: Getline/Variable/Coprocess275226
-Node: Getline Notes275968
-Node: Getline Summary278765
-Ref: table-getline-variants279189
-Node: Read Timeout279937
-Ref: Read Timeout-Footnote-1283843
-Node: Retrying Input283901
-Node: Command-line directories285100
-Node: Input Summary286006
-Node: Input Exercises289178
-Node: Printing289612
-Node: Print291446
-Node: Print Examples292903
-Node: Output Separators295683
-Node: OFMT297700
-Node: Printf299056
-Node: Basic Printf299841
-Node: Control Letters301415
-Node: Format Modifiers306579
-Node: Printf Examples312594
-Node: Redirection315080
-Node: Special FD321921
-Ref: Special FD-Footnote-1325089
-Node: Special Files325163
-Node: Other Inherited Files325780
-Node: Special Network326781
-Node: Special Caveats327641
-Node: Close Files And Pipes328590
-Ref: table-close-pipe-return-values335497
-Ref: Close Files And Pipes-Footnote-1336310
-Ref: Close Files And Pipes-Footnote-2336458
-Node: Nonfatal336610
-Node: Output Summary338948
-Node: Output Exercises340170
-Node: Expressions340849
-Node: Values342037
-Node: Constants342715
-Node: Scalar Constants343406
-Ref: Scalar Constants-Footnote-1345916
-Node: Nondecimal-numbers346166
-Node: Regexp Constants349167
-Node: Using Constant Regexps349693
-Node: Standard Regexp Constants350315
-Node: Strong Regexp Constants353503
-Node: Variables356515
-Node: Using Variables357172
-Node: Assignment Options359082
-Node: Conversion361553
-Node: Strings And Numbers362077
-Ref: Strings And Numbers-Footnote-1365140
-Node: Locale influences conversions365249
-Ref: table-locale-affects368007
-Node: All Operators368625
-Node: Arithmetic Ops369254
-Node: Concatenation371970
-Ref: Concatenation-Footnote-1374817
-Node: Assignment Ops374924
-Ref: table-assign-ops379915
-Node: Increment Ops381228
-Node: Truth Values and Conditions384688
-Node: Truth Values385762
-Node: Typing and Comparison386810
-Node: Variable Typing387630
-Ref: Variable Typing-Footnote-1394093
-Ref: Variable Typing-Footnote-2394165
-Node: Comparison Operators394242
-Ref: table-relational-ops394661
-Node: POSIX String Comparison398156
-Ref: POSIX String Comparison-Footnote-1399851
-Ref: POSIX String Comparison-Footnote-2399990
-Node: Boolean Ops400074
-Ref: Boolean Ops-Footnote-1404556
-Node: Conditional Exp404648
-Node: Function Calls406384
-Node: Precedence410261
-Node: Locales413920
-Node: Expressions Summary415552
-Node: Patterns and Actions418125
-Node: Pattern Overview419245
-Node: Regexp Patterns420922
-Node: Expression Patterns421464
-Node: Ranges425245
-Node: BEGIN/END428353
-Node: Using BEGIN/END429114
-Ref: Using BEGIN/END-Footnote-1431868
-Node: I/O And BEGIN/END431974
-Node: BEGINFILE/ENDFILE434287
-Node: Empty437518
-Node: Using Shell Variables437835
-Node: Action Overview440109
-Node: Statements442434
-Node: If Statement444282
-Node: While Statement445777
-Node: Do Statement447805
-Node: For Statement448953
-Node: Switch Statement452124
-Node: Break Statement454565
-Node: Continue Statement456657
-Node: Next Statement458484
-Node: Nextfile Statement460867
-Node: Exit Statement463556
-Node: Built-in Variables465959
-Node: User-modified467092
-Node: Auto-set474859
-Ref: Auto-set-Footnote-1491666
-Ref: Auto-set-Footnote-2491872
-Node: ARGC and ARGV491928
-Node: Pattern Action Summary496141
-Node: Arrays498571
-Node: Array Basics499900
-Node: Array Intro500744
-Ref: figure-array-elements502719
-Ref: Array Intro-Footnote-1505423
-Node: Reference to Elements505551
-Node: Assigning Elements508015
-Node: Array Example508506
-Node: Scanning an Array510265
-Node: Controlling Scanning513287
-Ref: Controlling Scanning-Footnote-1519743
-Node: Numeric Array Subscripts520059
-Node: Uninitialized Subscripts522243
-Node: Delete523862
-Ref: Delete-Footnote-1526614
-Node: Multidimensional526671
-Node: Multiscanning529766
-Node: Arrays of Arrays531357
-Node: Arrays Summary536125
-Node: Functions538218
-Node: Built-in539256
-Node: Calling Built-in540337
-Node: Numeric Functions542333
-Ref: Numeric Functions-Footnote-1546361
-Ref: Numeric Functions-Footnote-2547009
-Ref: Numeric Functions-Footnote-3547057
-Node: String Functions547329
-Ref: String Functions-Footnote-1571470
-Ref: String Functions-Footnote-2571598
-Ref: String Functions-Footnote-3571846
-Node: Gory Details571933
-Ref: table-sub-escapes573724
-Ref: table-sub-proposed575243
-Ref: table-posix-sub576606
-Ref: table-gensub-escapes578147
-Ref: Gory Details-Footnote-1578970
-Node: I/O Functions579124
-Ref: table-system-return-values585578
-Ref: I/O Functions-Footnote-1587658
-Ref: I/O Functions-Footnote-2587806
-Node: Time Functions587926
-Ref: Time Functions-Footnote-1598597
-Ref: Time Functions-Footnote-2598665
-Ref: Time Functions-Footnote-3598823
-Ref: Time Functions-Footnote-4598934
-Ref: Time Functions-Footnote-5599046
-Ref: Time Functions-Footnote-6599273
-Node: Bitwise Functions599539
-Ref: table-bitwise-ops600133
-Ref: Bitwise Functions-Footnote-1606196
-Ref: Bitwise Functions-Footnote-2606369
-Node: Type Functions606560
-Node: I18N Functions609423
-Node: User-defined611074
-Node: Definition Syntax611886
-Ref: Definition Syntax-Footnote-1617580
-Node: Function Example617651
-Ref: Function Example-Footnote-1620573
-Node: Function Calling620595
-Node: Calling A Function621183
-Node: Variable Scope622141
-Node: Pass By Value/Reference625135
-Node: Function Caveats627779
-Ref: Function Caveats-Footnote-1629826
-Node: Return Statement629946
-Node: Dynamic Typing632925
-Node: Indirect Calls633855
-Ref: Indirect Calls-Footnote-1644107
-Node: Functions Summary644235
-Node: Library Functions646940
-Ref: Library Functions-Footnote-1650547
-Ref: Library Functions-Footnote-2650690
-Node: Library Names650861
-Ref: Library Names-Footnote-1654528
-Ref: Library Names-Footnote-2654751
-Node: General Functions654837
-Node: Strtonum Function655940
-Node: Assert Function658962
-Node: Round Function662288
-Node: Cliff Random Function663828
-Node: Ordinal Functions664844
-Ref: Ordinal Functions-Footnote-1667907
-Ref: Ordinal Functions-Footnote-2668159
-Node: Join Function668369
-Ref: Join Function-Footnote-1670139
-Node: Getlocaltime Function670339
-Node: Readfile Function674081
-Node: Shell Quoting676058
-Node: Data File Management677459
-Node: Filetrans Function678091
-Node: Rewind Function682187
-Node: File Checking684096
-Ref: File Checking-Footnote-1685430
-Node: Empty Files685631
-Node: Ignoring Assigns687610
-Node: Getopt Function689160
-Ref: Getopt Function-Footnote-1704371
-Node: Passwd Functions704571
-Ref: Passwd Functions-Footnote-1713410
-Node: Group Functions713498
-Ref: Group Functions-Footnote-1721396
-Node: Walking Arrays721603
-Node: Library Functions Summary724611
-Node: Library Exercises726017
-Node: Sample Programs726482
-Node: Running Examples727252
-Node: Clones727980
-Node: Cut Program729204
-Node: Egrep Program739344
-Node: Id Program748355
-Node: Split Program758302
-Ref: Split Program-Footnote-1768192
-Node: Tee Program768365
-Node: Uniq Program771155
-Node: Wc Program778743
-Node: Bytes vs. Characters779140
-Node: Using extensions780688
-Node: wc program781442
-Node: Miscellaneous Programs786307
-Node: Dupword Program787520
-Node: Alarm Program789550
-Node: Translate Program794405
-Ref: Translate Program-Footnote-1798970
-Node: Labels Program799240
-Ref: Labels Program-Footnote-1802591
-Node: Word Sorting802675
-Node: History Sorting806747
-Node: Extract Program808972
-Node: Simple Sed817026
-Node: Igawk Program820100
-Ref: Igawk Program-Footnote-1834431
-Ref: Igawk Program-Footnote-2834633
-Ref: Igawk Program-Footnote-3834755
-Node: Anagram Program834870
-Node: Signature Program837932
-Node: Programs Summary839179
-Node: Programs Exercises840393
-Ref: Programs Exercises-Footnote-1844523
-Node: Advanced Features844609
-Node: Nondecimal Data846676
-Node: Array Sorting848267
-Node: Controlling Array Traversal848967
-Ref: Controlling Array Traversal-Footnote-1857335
-Node: Array Sorting Functions857453
-Ref: Array Sorting Functions-Footnote-1862544
-Node: Two-way I/O862740
-Ref: Two-way I/O-Footnote-1870461
-Ref: Two-way I/O-Footnote-2870648
-Node: TCP/IP Networking870730
-Node: Profiling873848
-Node: Extension Philosophy883157
-Node: Advanced Features Summary884608
-Node: Internationalization886607
-Node: I18N and L10N888087
-Node: Explaining gettext888774
-Ref: Explaining gettext-Footnote-1894666
-Ref: Explaining gettext-Footnote-2894851
-Node: Programmer i18n895016
-Ref: Programmer i18n-Footnote-1899965
-Node: Translator i18n900014
-Node: String Extraction900808
-Ref: String Extraction-Footnote-1901940
-Node: Printf Ordering902026
-Ref: Printf Ordering-Footnote-1904812
-Node: I18N Portability904876
-Ref: I18N Portability-Footnote-1907332
-Node: I18N Example907395
-Ref: I18N Example-Footnote-1910670
-Ref: I18N Example-Footnote-2910743
-Node: Gawk I18N910852
-Node: I18N Summary911501
-Node: Debugger912842
-Node: Debugging913842
-Node: Debugging Concepts914283
-Node: Debugging Terms916092
-Node: Awk Debugging918667
-Ref: Awk Debugging-Footnote-1919612
-Node: Sample Debugging Session919744
-Node: Debugger Invocation920278
-Node: Finding The Bug921664
-Node: List of Debugger Commands928138
-Node: Breakpoint Control929471
-Node: Debugger Execution Control933165
-Node: Viewing And Changing Data936527
-Node: Execution Stack940068
-Node: Debugger Info941705
-Node: Miscellaneous Debugger Commands945776
-Node: Readline Support950838
-Node: Limitations951734
-Node: Debugging Summary954288
-Node: Namespaces955567
-Node: Global Namespace956678
-Node: Qualified Names958076
-Node: Default Namespace959075
-Node: Changing The Namespace959816
-Node: Naming Rules961430
-Node: Internal Name Management963278
-Node: Namespace Example964320
-Node: Namespace And Features966882
-Node: Namespace Summary968317
-Node: Arbitrary Precision Arithmetic969794
-Node: Computer Arithmetic971281
-Ref: table-numeric-ranges975047
-Ref: table-floating-point-ranges975540
-Ref: Computer Arithmetic-Footnote-1976198
-Node: Math Definitions976255
-Ref: table-ieee-formats979571
-Ref: Math Definitions-Footnote-1980174
-Node: MPFR features980279
-Node: FP Math Caution981997
-Ref: FP Math Caution-Footnote-1983069
-Node: Inexactness of computations983438
-Node: Inexact representation984398
-Node: Comparing FP Values985758
-Node: Errors accumulate986999
-Node: Getting Accuracy988432
-Node: Try To Round991142
-Node: Setting precision992041
-Ref: table-predefined-precision-strings992738
-Node: Setting the rounding mode994568
-Ref: table-gawk-rounding-modes994942
-Ref: Setting the rounding mode-Footnote-1998873
-Node: Arbitrary Precision Integers999052
-Ref: Arbitrary Precision Integers-Footnote-11002227
-Node: Checking for MPFR1002376
-Node: POSIX Floating Point Problems1003850
-Ref: POSIX Floating Point Problems-Footnote-11008135
-Node: Floating point summary1008173
-Node: Dynamic Extensions1010363
-Node: Extension Intro1011916
-Node: Plugin License1013182
-Node: Extension Mechanism Outline1013979
-Ref: figure-load-extension1014418
-Ref: figure-register-new-function1015983
-Ref: figure-call-new-function1017075
-Node: Extension API Description1019137
-Node: Extension API Functions Introduction1020850
-Ref: table-api-std-headers1022686
-Node: General Data Types1026935
-Ref: General Data Types-Footnote-11035565
-Node: Memory Allocation Functions1035864
-Ref: Memory Allocation Functions-Footnote-11040365
-Node: Constructor Functions1040464
-Node: API Ownership of MPFR and GMP Values1043930
-Node: Registration Functions1045243
-Node: Extension Functions1045943
-Node: Exit Callback Functions1051265
-Node: Extension Version String1052515
-Node: Input Parsers1053178
-Node: Output Wrappers1065899
-Node: Two-way processors1070411
-Node: Printing Messages1072676
-Ref: Printing Messages-Footnote-11073847
-Node: Updating ERRNO1074000
-Node: Requesting Values1074739
-Ref: table-value-types-returned1075476
-Node: Accessing Parameters1076412
-Node: Symbol Table Access1077649
-Node: Symbol table by name1078161
-Ref: Symbol table by name-Footnote-11081185
-Node: Symbol table by cookie1081313
-Ref: Symbol table by cookie-Footnote-11085498
-Node: Cached values1085562
-Ref: Cached values-Footnote-11089098
-Node: Array Manipulation1089251
-Ref: Array Manipulation-Footnote-11090342
-Node: Array Data Types1090379
-Ref: Array Data Types-Footnote-11093037
-Node: Array Functions1093129
-Node: Flattening Arrays1097627
-Node: Creating Arrays1104603
-Node: Redirection API1109370
-Node: Extension API Variables1112203
-Node: Extension Versioning1112914
-Ref: gawk-api-version1113343
-Node: Extension GMP/MPFR Versioning1115074
-Node: Extension API Informational Variables1116702
-Node: Extension API Boilerplate1117775
-Node: Changes from API V11121749
-Node: Finding Extensions1123321
-Node: Extension Example1123880
-Node: Internal File Description1124678
-Node: Internal File Ops1128758
-Ref: Internal File Ops-Footnote-11140108
-Node: Using Internal File Ops1140248
-Ref: Using Internal File Ops-Footnote-11142631
-Node: Extension Samples1142905
-Node: Extension Sample File Functions1144434
-Node: Extension Sample Fnmatch1152083
-Node: Extension Sample Fork1153570
-Node: Extension Sample Inplace1154788
-Node: Extension Sample Ord1158414
-Node: Extension Sample Readdir1159250
-Ref: table-readdir-file-types1160139
-Node: Extension Sample Revout1161206
-Node: Extension Sample Rev2way1161795
-Node: Extension Sample Read write array1162535
-Node: Extension Sample Readfile1164477
-Node: Extension Sample Time1165572
-Node: Extension Sample API Tests1167324
-Node: gawkextlib1167816
-Node: Extension summary1170734
-Node: Extension Exercises1174436
-Node: Language History1175678
-Node: V7/SVR3.11177334
-Node: SVR41179486
-Node: POSIX1180920
-Node: BTL1182301
-Node: POSIX/GNU1183030
-Node: Feature History1188808
-Node: Common Extensions1205127
-Node: Ranges and Locales1206410
-Ref: Ranges and Locales-Footnote-11211026
-Ref: Ranges and Locales-Footnote-21211053
-Ref: Ranges and Locales-Footnote-31211288
-Node: Contributors1211511
-Node: History summary1217508
-Node: Installation1218888
-Node: Gawk Distribution1219832
-Node: Getting1220316
-Node: Extracting1221279
-Node: Distribution contents1222917
-Node: Unix Installation1229397
-Node: Quick Installation1230079
-Node: Shell Startup Files1232493
-Node: Additional Configuration Options1233582
-Node: Configuration Philosophy1235897
-Node: Non-Unix Installation1238266
-Node: PC Installation1238726
-Node: PC Binary Installation1239564
-Node: PC Compiling1239999
-Node: PC Using1241116
-Node: Cygwin1244669
-Node: MSYS1245893
-Node: VMS Installation1246495
-Node: VMS Compilation1247286
-Ref: VMS Compilation-Footnote-11248515
-Node: VMS Dynamic Extensions1248573
-Node: VMS Installation Details1250258
-Node: VMS Running1252511
-Node: VMS GNV1256790
-Node: VMS Old Gawk1257525
-Node: Bugs1257996
-Node: Bug address1258659
-Node: Usenet1261641
-Node: Maintainers1262645
-Node: Other Versions1263830
-Node: Installation summary1270918
-Node: Notes1272127
-Node: Compatibility Mode1272921
-Node: Additions1273703
-Node: Accessing The Source1274628
-Node: Adding Code1276065
-Node: New Ports1282284
-Node: Derived Files1286659
-Ref: Derived Files-Footnote-11292319
-Ref: Derived Files-Footnote-21292354
-Ref: Derived Files-Footnote-31292952
-Node: Future Extensions1293066
-Node: Implementation Limitations1293724
-Node: Extension Design1294934
-Node: Old Extension Problems1296078
-Ref: Old Extension Problems-Footnote-11297596
-Node: Extension New Mechanism Goals1297653
-Ref: Extension New Mechanism Goals-Footnote-11301017
-Node: Extension Other Design Decisions1301206
-Node: Extension Future Growth1303319
-Node: Notes summary1303925
-Node: Basic Concepts1305083
-Node: Basic High Level1305764
-Ref: figure-general-flow1306046
-Ref: figure-process-flow1306731
-Ref: Basic High Level-Footnote-11310032
-Node: Basic Data Typing1310217
-Node: Glossary1313545
-Node: Copying1345430
-Node: GNU Free Documentation License1382973
-Node: Index1408093
+Node: Testing field creation253226
+Node: Multiple Line254851
+Node: Getline261128
+Node: Plain Getline263597
+Node: Getline/Variable266170
+Node: Getline/File267321
+Node: Getline/Variable/File268709
+Ref: Getline/Variable/File-Footnote-1270314
+Node: Getline/Pipe270402
+Node: Getline/Variable/Pipe273106
+Node: Getline/Coprocess274241
+Node: Getline/Variable/Coprocess275508
+Node: Getline Notes276250
+Node: Getline Summary279047
+Ref: table-getline-variants279471
+Node: Read Timeout280219
+Ref: Read Timeout-Footnote-1284125
+Node: Retrying Input284183
+Node: Command-line directories285382
+Node: Input Summary286288
+Node: Input Exercises289460
+Node: Printing289894
+Node: Print291728
+Node: Print Examples293185
+Node: Output Separators295965
+Node: OFMT297982
+Node: Printf299338
+Node: Basic Printf300123
+Node: Control Letters301697
+Node: Format Modifiers306861
+Node: Printf Examples312876
+Node: Redirection315362
+Node: Special FD322203
+Ref: Special FD-Footnote-1325371
+Node: Special Files325445
+Node: Other Inherited Files326062
+Node: Special Network327063
+Node: Special Caveats327923
+Node: Close Files And Pipes328872
+Ref: table-close-pipe-return-values335779
+Ref: Close Files And Pipes-Footnote-1336592
+Ref: Close Files And Pipes-Footnote-2336740
+Node: Nonfatal336892
+Node: Output Summary339230
+Node: Output Exercises340452
+Node: Expressions341131
+Node: Values342319
+Node: Constants342997
+Node: Scalar Constants343688
+Ref: Scalar Constants-Footnote-1346198
+Node: Nondecimal-numbers346448
+Node: Regexp Constants349449
+Node: Using Constant Regexps349975
+Node: Standard Regexp Constants350597
+Node: Strong Regexp Constants353785
+Node: Variables356797
+Node: Using Variables357454
+Node: Assignment Options359364
+Node: Conversion361835
+Node: Strings And Numbers362359
+Ref: Strings And Numbers-Footnote-1365422
+Node: Locale influences conversions365531
+Ref: table-locale-affects368289
+Node: All Operators368907
+Node: Arithmetic Ops369536
+Node: Concatenation372252
+Ref: Concatenation-Footnote-1375099
+Node: Assignment Ops375206
+Ref: table-assign-ops380197
+Node: Increment Ops381510
+Node: Truth Values and Conditions384970
+Node: Truth Values386044
+Node: Typing and Comparison387092
+Node: Variable Typing387912
+Ref: Variable Typing-Footnote-1394375
+Ref: Variable Typing-Footnote-2394447
+Node: Comparison Operators394524
+Ref: table-relational-ops394943
+Node: POSIX String Comparison398438
+Ref: POSIX String Comparison-Footnote-1400133
+Ref: POSIX String Comparison-Footnote-2400272
+Node: Boolean Ops400356
+Ref: Boolean Ops-Footnote-1404838
+Node: Conditional Exp404930
+Node: Function Calls406666
+Node: Precedence410543
+Node: Locales414202
+Node: Expressions Summary415834
+Node: Patterns and Actions418407
+Node: Pattern Overview419527
+Node: Regexp Patterns421204
+Node: Expression Patterns421746
+Node: Ranges425527
+Node: BEGIN/END428635
+Node: Using BEGIN/END429396
+Ref: Using BEGIN/END-Footnote-1432150
+Node: I/O And BEGIN/END432256
+Node: BEGINFILE/ENDFILE434569
+Node: Empty437800
+Node: Using Shell Variables438117
+Node: Action Overview440391
+Node: Statements442716
+Node: If Statement444564
+Node: While Statement446059
+Node: Do Statement448087
+Node: For Statement449235
+Node: Switch Statement452406
+Node: Break Statement454847
+Node: Continue Statement456939
+Node: Next Statement458766
+Node: Nextfile Statement461149
+Node: Exit Statement463838
+Node: Built-in Variables466241
+Node: User-modified467374
+Node: Auto-set475141
+Ref: Auto-set-Footnote-1491948
+Ref: Auto-set-Footnote-2492154
+Node: ARGC and ARGV492210
+Node: Pattern Action Summary496423
+Node: Arrays498853
+Node: Array Basics500182
+Node: Array Intro501026
+Ref: figure-array-elements503001
+Ref: Array Intro-Footnote-1505705
+Node: Reference to Elements505833
+Node: Assigning Elements508297
+Node: Array Example508788
+Node: Scanning an Array510547
+Node: Controlling Scanning513569
+Ref: Controlling Scanning-Footnote-1520025
+Node: Numeric Array Subscripts520341
+Node: Uninitialized Subscripts522525
+Node: Delete524144
+Ref: Delete-Footnote-1526896
+Node: Multidimensional526953
+Node: Multiscanning530048
+Node: Arrays of Arrays531639
+Node: Arrays Summary536407
+Node: Functions538500
+Node: Built-in539538
+Node: Calling Built-in540619
+Node: Numeric Functions542615
+Ref: Numeric Functions-Footnote-1546643
+Ref: Numeric Functions-Footnote-2547291
+Ref: Numeric Functions-Footnote-3547339
+Node: String Functions547611
+Ref: String Functions-Footnote-1571752
+Ref: String Functions-Footnote-2571880
+Ref: String Functions-Footnote-3572128
+Node: Gory Details572215
+Ref: table-sub-escapes574006
+Ref: table-sub-proposed575525
+Ref: table-posix-sub576888
+Ref: table-gensub-escapes578429
+Ref: Gory Details-Footnote-1579252
+Node: I/O Functions579406
+Ref: table-system-return-values585860
+Ref: I/O Functions-Footnote-1587940
+Ref: I/O Functions-Footnote-2588088
+Node: Time Functions588208
+Ref: Time Functions-Footnote-1598879
+Ref: Time Functions-Footnote-2598947
+Ref: Time Functions-Footnote-3599105
+Ref: Time Functions-Footnote-4599216
+Ref: Time Functions-Footnote-5599328
+Ref: Time Functions-Footnote-6599555
+Node: Bitwise Functions599821
+Ref: table-bitwise-ops600415
+Ref: Bitwise Functions-Footnote-1606478
+Ref: Bitwise Functions-Footnote-2606651
+Node: Type Functions606842
+Node: I18N Functions609705
+Node: User-defined611356
+Node: Definition Syntax612168
+Ref: Definition Syntax-Footnote-1617862
+Node: Function Example617933
+Ref: Function Example-Footnote-1620855
+Node: Function Calling620877
+Node: Calling A Function621465
+Node: Variable Scope622423
+Node: Pass By Value/Reference625417
+Node: Function Caveats628061
+Ref: Function Caveats-Footnote-1630108
+Node: Return Statement630228
+Node: Dynamic Typing633207
+Node: Indirect Calls634137
+Ref: Indirect Calls-Footnote-1644389
+Node: Functions Summary644517
+Node: Library Functions647222
+Ref: Library Functions-Footnote-1650829
+Ref: Library Functions-Footnote-2650972
+Node: Library Names651143
+Ref: Library Names-Footnote-1654810
+Ref: Library Names-Footnote-2655033
+Node: General Functions655119
+Node: Strtonum Function656222
+Node: Assert Function659244
+Node: Round Function662570
+Node: Cliff Random Function664110
+Node: Ordinal Functions665126
+Ref: Ordinal Functions-Footnote-1668189
+Ref: Ordinal Functions-Footnote-2668441
+Node: Join Function668651
+Ref: Join Function-Footnote-1670421
+Node: Getlocaltime Function670621
+Node: Readfile Function674363
+Node: Shell Quoting676340
+Node: Data File Management677741
+Node: Filetrans Function678373
+Node: Rewind Function682469
+Node: File Checking684378
+Ref: File Checking-Footnote-1685712
+Node: Empty Files685913
+Node: Ignoring Assigns687892
+Node: Getopt Function689442
+Ref: Getopt Function-Footnote-1704653
+Node: Passwd Functions704853
+Ref: Passwd Functions-Footnote-1713692
+Node: Group Functions713780
+Ref: Group Functions-Footnote-1721678
+Node: Walking Arrays721885
+Node: Library Functions Summary724893
+Node: Library Exercises726299
+Node: Sample Programs726764
+Node: Running Examples727534
+Node: Clones728262
+Node: Cut Program729486
+Node: Egrep Program739626
+Node: Id Program748637
+Node: Split Program758584
+Ref: Split Program-Footnote-1768474
+Node: Tee Program768647
+Node: Uniq Program771437
+Node: Wc Program779025
+Node: Bytes vs. Characters779422
+Node: Using extensions780970
+Node: wc program781724
+Node: Miscellaneous Programs786589
+Node: Dupword Program787802
+Node: Alarm Program789832
+Node: Translate Program794687
+Ref: Translate Program-Footnote-1799252
+Node: Labels Program799522
+Ref: Labels Program-Footnote-1802873
+Node: Word Sorting802957
+Node: History Sorting807029
+Node: Extract Program809254
+Node: Simple Sed817308
+Node: Igawk Program820382
+Ref: Igawk Program-Footnote-1834713
+Ref: Igawk Program-Footnote-2834915
+Ref: Igawk Program-Footnote-3835037
+Node: Anagram Program835152
+Node: Signature Program838214
+Node: Programs Summary839461
+Node: Programs Exercises840675
+Ref: Programs Exercises-Footnote-1844805
+Node: Advanced Features844891
+Node: Nondecimal Data846958
+Node: Array Sorting848549
+Node: Controlling Array Traversal849249
+Ref: Controlling Array Traversal-Footnote-1857617
+Node: Array Sorting Functions857735
+Ref: Array Sorting Functions-Footnote-1862826
+Node: Two-way I/O863022
+Ref: Two-way I/O-Footnote-1870743
+Ref: Two-way I/O-Footnote-2870930
+Node: TCP/IP Networking871012
+Node: Profiling874130
+Node: Extension Philosophy883439
+Node: Advanced Features Summary884890
+Node: Internationalization886889
+Node: I18N and L10N888369
+Node: Explaining gettext889056
+Ref: Explaining gettext-Footnote-1894948
+Ref: Explaining gettext-Footnote-2895133
+Node: Programmer i18n895298
+Ref: Programmer i18n-Footnote-1900247
+Node: Translator i18n900296
+Node: String Extraction901090
+Ref: String Extraction-Footnote-1902222
+Node: Printf Ordering902308
+Ref: Printf Ordering-Footnote-1905094
+Node: I18N Portability905158
+Ref: I18N Portability-Footnote-1907614
+Node: I18N Example907677
+Ref: I18N Example-Footnote-1910952
+Ref: I18N Example-Footnote-2911025
+Node: Gawk I18N911134
+Node: I18N Summary911783
+Node: Debugger913124
+Node: Debugging914124
+Node: Debugging Concepts914565
+Node: Debugging Terms916374
+Node: Awk Debugging918949
+Ref: Awk Debugging-Footnote-1919894
+Node: Sample Debugging Session920026
+Node: Debugger Invocation920560
+Node: Finding The Bug921946
+Node: List of Debugger Commands928420
+Node: Breakpoint Control929753
+Node: Debugger Execution Control933447
+Node: Viewing And Changing Data936809
+Node: Execution Stack940350
+Node: Debugger Info941987
+Node: Miscellaneous Debugger Commands946058
+Node: Readline Support951120
+Node: Limitations952016
+Node: Debugging Summary954570
+Node: Namespaces955849
+Node: Global Namespace956960
+Node: Qualified Names958358
+Node: Default Namespace959357
+Node: Changing The Namespace960098
+Node: Naming Rules961712
+Node: Internal Name Management963560
+Node: Namespace Example964602
+Node: Namespace And Features967164
+Node: Namespace Summary968599
+Node: Arbitrary Precision Arithmetic970076
+Node: Computer Arithmetic971563
+Ref: table-numeric-ranges975329
+Ref: table-floating-point-ranges975822
+Ref: Computer Arithmetic-Footnote-1976480
+Node: Math Definitions976537
+Ref: table-ieee-formats979853
+Ref: Math Definitions-Footnote-1980456
+Node: MPFR features980561
+Node: FP Math Caution982279
+Ref: FP Math Caution-Footnote-1983351
+Node: Inexactness of computations983720
+Node: Inexact representation984680
+Node: Comparing FP Values986040
+Node: Errors accumulate987281
+Node: Getting Accuracy988714
+Node: Try To Round991424
+Node: Setting precision992323
+Ref: table-predefined-precision-strings993020
+Node: Setting the rounding mode994850
+Ref: table-gawk-rounding-modes995224
+Ref: Setting the rounding mode-Footnote-1999155
+Node: Arbitrary Precision Integers999334
+Ref: Arbitrary Precision Integers-Footnote-11002509
+Node: Checking for MPFR1002658
+Node: POSIX Floating Point Problems1004132
+Ref: POSIX Floating Point Problems-Footnote-11008417
+Node: Floating point summary1008455
+Node: Dynamic Extensions1010645
+Node: Extension Intro1012198
+Node: Plugin License1013464
+Node: Extension Mechanism Outline1014261
+Ref: figure-load-extension1014700
+Ref: figure-register-new-function1016265
+Ref: figure-call-new-function1017357
+Node: Extension API Description1019419
+Node: Extension API Functions Introduction1021132
+Ref: table-api-std-headers1022968
+Node: General Data Types1027217
+Ref: General Data Types-Footnote-11035847
+Node: Memory Allocation Functions1036146
+Ref: Memory Allocation Functions-Footnote-11040647
+Node: Constructor Functions1040746
+Node: API Ownership of MPFR and GMP Values1044212
+Node: Registration Functions1045525
+Node: Extension Functions1046225
+Node: Exit Callback Functions1051547
+Node: Extension Version String1052797
+Node: Input Parsers1053460
+Node: Output Wrappers1066181
+Node: Two-way processors1070693
+Node: Printing Messages1072958
+Ref: Printing Messages-Footnote-11074129
+Node: Updating ERRNO1074282
+Node: Requesting Values1075021
+Ref: table-value-types-returned1075758
+Node: Accessing Parameters1076694
+Node: Symbol Table Access1077931
+Node: Symbol table by name1078443
+Ref: Symbol table by name-Footnote-11081467
+Node: Symbol table by cookie1081595
+Ref: Symbol table by cookie-Footnote-11085780
+Node: Cached values1085844
+Ref: Cached values-Footnote-11089380
+Node: Array Manipulation1089533
+Ref: Array Manipulation-Footnote-11090624
+Node: Array Data Types1090661
+Ref: Array Data Types-Footnote-11093319
+Node: Array Functions1093411
+Node: Flattening Arrays1097909
+Node: Creating Arrays1104885
+Node: Redirection API1109652
+Node: Extension API Variables1112485
+Node: Extension Versioning1113196
+Ref: gawk-api-version1113625
+Node: Extension GMP/MPFR Versioning1115356
+Node: Extension API Informational Variables1116984
+Node: Extension API Boilerplate1118057
+Node: Changes from API V11122031
+Node: Finding Extensions1123603
+Node: Extension Example1124162
+Node: Internal File Description1124960
+Node: Internal File Ops1129040
+Ref: Internal File Ops-Footnote-11140390
+Node: Using Internal File Ops1140530
+Ref: Using Internal File Ops-Footnote-11142913
+Node: Extension Samples1143187
+Node: Extension Sample File Functions1144716
+Node: Extension Sample Fnmatch1152365
+Node: Extension Sample Fork1153852
+Node: Extension Sample Inplace1155070
+Node: Extension Sample Ord1158696
+Node: Extension Sample Readdir1159532
+Ref: table-readdir-file-types1160421
+Node: Extension Sample Revout1161488
+Node: Extension Sample Rev2way1162077
+Node: Extension Sample Read write array1162817
+Node: Extension Sample Readfile1164759
+Node: Extension Sample Time1165854
+Node: Extension Sample API Tests1167606
+Node: gawkextlib1168098
+Node: Extension summary1171016
+Node: Extension Exercises1174718
+Node: Language History1175960
+Node: V7/SVR3.11177616
+Node: SVR41179768
+Node: POSIX1181202
+Node: BTL1182583
+Node: POSIX/GNU1183312
+Node: Feature History1189090
+Node: Common Extensions1205409
+Node: Ranges and Locales1206692
+Ref: Ranges and Locales-Footnote-11211308
+Ref: Ranges and Locales-Footnote-21211335
+Ref: Ranges and Locales-Footnote-31211570
+Node: Contributors1211793
+Node: History summary1217790
+Node: Installation1219170
+Node: Gawk Distribution1220114
+Node: Getting1220598
+Node: Extracting1221561
+Node: Distribution contents1223199
+Node: Unix Installation1229679
+Node: Quick Installation1230361
+Node: Shell Startup Files1232775
+Node: Additional Configuration Options1233864
+Node: Configuration Philosophy1236179
+Node: Non-Unix Installation1238548
+Node: PC Installation1239008
+Node: PC Binary Installation1239846
+Node: PC Compiling1240281
+Node: PC Using1241398
+Node: Cygwin1244951
+Node: MSYS1246175
+Node: VMS Installation1246777
+Node: VMS Compilation1247568
+Ref: VMS Compilation-Footnote-11248797
+Node: VMS Dynamic Extensions1248855
+Node: VMS Installation Details1250540
+Node: VMS Running1252793
+Node: VMS GNV1257072
+Node: VMS Old Gawk1257807
+Node: Bugs1258278
+Node: Bug address1258941
+Node: Usenet1261923
+Node: Maintainers1262927
+Node: Other Versions1264112
+Node: Installation summary1271200
+Node: Notes1272409
+Node: Compatibility Mode1273203
+Node: Additions1273985
+Node: Accessing The Source1274910
+Node: Adding Code1276347
+Node: New Ports1282566
+Node: Derived Files1286941
+Ref: Derived Files-Footnote-11292601
+Ref: Derived Files-Footnote-21292636
+Ref: Derived Files-Footnote-31293234
+Node: Future Extensions1293348
+Node: Implementation Limitations1294006
+Node: Extension Design1295216
+Node: Old Extension Problems1296360
+Ref: Old Extension Problems-Footnote-11297878
+Node: Extension New Mechanism Goals1297935
+Ref: Extension New Mechanism Goals-Footnote-11301299
+Node: Extension Other Design Decisions1301488
+Node: Extension Future Growth1303601
+Node: Notes summary1304207
+Node: Basic Concepts1305365
+Node: Basic High Level1306046
+Ref: figure-general-flow1306328
+Ref: figure-process-flow1307013
+Ref: Basic High Level-Footnote-11310314
+Node: Basic Data Typing1310499
+Node: Glossary1313827
+Node: Copying1345712
+Node: GNU Free Documentation License1383255
+Node: Index1408375
 
 End Tag Table
 
diff --git a/doc/gawk.texi b/doc/gawk.texi
index a6f49cb..e4d0205 100644
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -8291,6 +8291,8 @@ words, @code{FS} defines what a field @emph{is not}, 
instead of what a field
 However, there are times when you really want to define the fields by
 what they are, and not by what they are not.
 
+@cindex CSV (comma separated values) data @subentry parsing with @code{FPAT}
+@cindex Comma separated values (CSV) data @subentry parsing with @code{FPAT}
 The most notorious such case
 is so-called @dfn{comma-separated values} (CSV) data. Many spreadsheet 
programs,
 for example, can export their data into text files, where each record is
@@ -8474,6 +8476,15 @@ $ @kbd{gawk -v fpat=2 -f test-csv.awk sample.csv}
 @print{} NF = 3 <p><><s>
 @end example
 
+@cindex Collado, Manuel
+@cindex @code{CSVMODE} library for @command{gawk}
+@cindex CSV (comma separated values) data @subentry parsing with 
@code{CSVMODE} library
+@cindex Comma separated values (CSV) data @subentry parsing with @code{FPAT} 
library
+In general, using @code{FPAT} to do your own CSV parsing is like having
+a bed with a blanket that's not quite big enough. There's always a corner
+that isn't covered. We recommend, instead, that you use Manuel Collado's
+@uref{http://mcollado.z15.es/xgawk/, @code{CSVMODE} library for 
@command{gawk}}.
+
 @node Testing field creation
 @section Checking How @command{gawk} Is Splitting Records
 
diff --git a/doc/gawktexi.in b/doc/gawktexi.in
index 78a28be..d784d38 100644
--- a/doc/gawktexi.in
+++ b/doc/gawktexi.in
@@ -7844,6 +7844,8 @@ words, @code{FS} defines what a field @emph{is not}, 
instead of what a field
 However, there are times when you really want to define the fields by
 what they are, and not by what they are not.
 
+@cindex CSV (comma separated values) data @subentry parsing with @code{FPAT}
+@cindex Comma separated values (CSV) data @subentry parsing with @code{FPAT}
 The most notorious such case
 is so-called @dfn{comma-separated values} (CSV) data. Many spreadsheet 
programs,
 for example, can export their data into text files, where each record is
@@ -8027,6 +8029,15 @@ $ @kbd{gawk -v fpat=2 -f test-csv.awk sample.csv}
 @print{} NF = 3 <p><><s>
 @end example
 
+@cindex Collado, Manuel
+@cindex @code{CSVMODE} library for @command{gawk}
+@cindex CSV (comma separated values) data @subentry parsing with 
@code{CSVMODE} library
+@cindex Comma separated values (CSV) data @subentry parsing with @code{FPAT} 
library
+In general, using @code{FPAT} to do your own CSV parsing is like having
+a bed with a blanket that's not quite big enough. There's always a corner
+that isn't covered. We recommend, instead, that you use Manuel Collado's
+@uref{http://mcollado.z15.es/xgawk/, @code{CSVMODE} library for 
@command{gawk}}.
+
 @node Testing field creation
 @section Checking How @command{gawk} Is Splitting Records
 

http://git.sv.gnu.org/cgit/gawk.git/commit/?id=daaaab1ae680cbaf6575741c314a19ae9d57ef8f

commit daaaab1ae680cbaf6575741c314a19ae9d57ef8f
Author: Arnold D. Robbins <arnold@skeeve.com>
Date:   Sat Dec 26 20:47:13 2020 +0200

    Updates to NEWS.

diff --git a/ChangeLog b/ChangeLog
index 87805af..21b60bb 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2020-12-26         Arnold D. Robbins     <arnold@skeeve.com>
+
+       * NEWS: Updated.
+
 2020-12-20         Arnold D. Robbins     <arnold@skeeve.com>
 
        Second steps fixing +inform, +nancy, for MPFR.
diff --git a/NEWS b/NEWS
index b96cea7..9eae648 100644
--- a/NEWS
+++ b/NEWS
@@ -40,6 +40,8 @@ Changes from 5.1.0 to 5.1.1
 9. Several example programs in the manual have been updated to their
    modern POSIX equivalents.
 
+10. Handling of Infinity and NaN values has been improved.
+
 xx. There have been numerous minor code cleanups and bug fixes. See the
     ChangeLog for details.
 

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog        |    4 +
 NEWS             |    2 +
 doc/ChangeLog    |    5 +
 doc/gawk.info    | 1009 +++++++++++++++++++++++++++---------------------------
 doc/gawk.texi    |   11 +
 doc/gawktexi.in  |   11 +
 pc/ChangeLog     |    4 +
 pc/Makefile.tst  |    7 +-
 test/Makefile.am |    5 +-
 test/Makefile.in |   10 +-
 test/Maketests   |    5 +
 test/fpat9.awk   |   22 ++
 test/fpat9.in    |    7 +
 test/fpat9.ok    |   64 ++++
 14 files changed, 666 insertions(+), 500 deletions(-)
 create mode 100644 test/fpat9.awk
 create mode 100644 test/fpat9.in
 create mode 100644 test/fpat9.ok


hooks/post-receive
-- 
gawk



reply via email to

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