summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2014-09-14 19:28:50 +0300
committerArnold D. Robbins <arnold@skeeve.com>2014-09-14 19:28:50 +0300
commit8a1df492afae19d544fa5e5b636ed427b2d1c3f5 (patch)
tree746bcd13d37400d03e039ea92aae7c1a29ac08f8
parent7796fb7a2e70c0252531bd224889baccacae1c9e (diff)
downloadgawk-8a1df492afae19d544fa5e5b636ed427b2d1c3f5.tar.gz
Doc edits.
-rw-r--r--awklib/eg/lib/strtonum.awk8
-rw-r--r--doc/ChangeLog4
-rw-r--r--doc/gawk.info746
-rw-r--r--doc/gawk.texi61
-rw-r--r--doc/gawktexi.in49
5 files changed, 448 insertions, 420 deletions
diff --git a/awklib/eg/lib/strtonum.awk b/awklib/eg/lib/strtonum.awk
index 5e20626b..f82c89c5 100644
--- a/awklib/eg/lib/strtonum.awk
+++ b/awklib/eg/lib/strtonum.awk
@@ -13,8 +13,8 @@ function mystrtonum(str, ret, n, i, k, c)
ret = 0
for (i = 1; i <= n; i++) {
c = substr(str, i, 1)
- # index() returns 0 if c not in string,
- # includes c == "0"
+ # index() returns 0 if c not in string,
+ # includes c == "0"
k = index("1234567", c)
ret = ret * 8 + k
@@ -27,8 +27,8 @@ function mystrtonum(str, ret, n, i, k, c)
for (i = 1; i <= n; i++) {
c = substr(str, i, 1)
c = tolower(c)
- # index() returns 0 if c not in string,
- # includes c == "0"
+ # index() returns 0 if c not in string,
+ # includes c == "0"
k = index("123456789abcdef", c)
ret = ret * 16 + k
diff --git a/doc/ChangeLog b/doc/ChangeLog
index d1a41bae..1a1b54f7 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,3 +1,7 @@
+2014-09-14 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawktexi.in: More edits during review, minor addition.
+
2014-09-08 Arnold D. Robbins <arnold@skeeve.com>
* gawktexi.in: Remove text that won't get used.
diff --git a/doc/gawk.info b/doc/gawk.info
index 1ae776a6..bd9ddbab 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -9827,9 +9827,8 @@ complicating the rest of the program, write a "weed out" rule near the
beginning, in the following manner:
NF != 4 {
- err = sprintf("%s:%d: skipped: NF != 4\n", FILENAME, FNR)
- print err > "/dev/stderr"
- next
+ printf("%s:%d: skipped: NF != 4\n", FILENAME, FNR) > "/dev/stderr"
+ next
}
Because of the `next' statement, the program's subsequent rules won't
@@ -14413,8 +14412,8 @@ versions of `awk':
ret = 0
for (i = 1; i <= n; i++) {
c = substr(str, i, 1)
- # index() returns 0 if c not in string,
- # includes c == "0"
+ # index() returns 0 if c not in string,
+ # includes c == "0"
k = index("1234567", c)
ret = ret * 8 + k
@@ -14427,8 +14426,8 @@ versions of `awk':
for (i = 1; i <= n; i++) {
c = substr(str, i, 1)
c = tolower(c)
- # index() returns 0 if c not in string,
- # includes c == "0"
+ # index() returns 0 if c not in string,
+ # includes c == "0"
k = index("123456789abcdef", c)
ret = ret * 16 + k
@@ -28499,8 +28498,8 @@ the derived files, because that keeps the repository less cluttered,
and it is easier to see the substantive changes when comparing versions
and trying to understand what changed between commits.
- However, there are two reasons why the `gawk' maintainer likes to
-have everything in the repository.
+ However, there are several reasons why the `gawk' maintainer likes
+to have everything in the repository.
First, because it is then easy to reproduce any given version
completely, without relying upon the availability of (older, likely
@@ -28553,6 +28552,13 @@ maintainer is no different than Jane User who wants to try to build
Thus, the maintainer thinks that it's not just important, but
critical, that for any given branch, the above incantation _just works_.
+ A third reason to have all the files is that without them, using `git
+bisect' to try to find the commit that introduced a bug is exceedingly
+difficult. The maintainer tried to do that on another project that
+requires running bootstrapping scripts just to create `configure' and
+so on; it was really painful. When the repository is self-contained,
+using `git bisect' in it is very easy.
+
What are some of the consequences and/or actions to take?
1. We don't mind that there are differing files in the different
@@ -31517,7 +31523,7 @@ Index
* BEGIN pattern, getline and: Getline Notes. (line 19)
* BEGIN pattern, headings, adding: Print Examples. (line 43)
* BEGIN pattern, next/nextfile statements and <1>: Next Statement.
- (line 45)
+ (line 44)
* BEGIN pattern, next/nextfile statements and: I/O And BEGIN/END.
(line 36)
* BEGIN pattern, OFS/ORS variables, assigning values to: Output Separators.
@@ -32142,7 +32148,7 @@ Index
* END pattern, Boolean patterns and: Expression Patterns. (line 70)
* END pattern, exit statement and: Exit Statement. (line 12)
* END pattern, next/nextfile statements and <1>: Next Statement.
- (line 45)
+ (line 44)
* END pattern, next/nextfile statements and: I/O And BEGIN/END.
(line 36)
* END pattern, operators and: Using BEGIN/END. (line 17)
@@ -32475,7 +32481,7 @@ Index
* functions, user-defined, next/nextfile statements and <1>: Nextfile Statement.
(line 47)
* functions, user-defined, next/nextfile statements and: Next Statement.
- (line 45)
+ (line 44)
* G-d: Acknowledgments. (line 92)
* Garfinkle, Scott: Contributors. (line 34)
* gawk program, dynamic profiling: Profiling. (line 179)
@@ -32997,7 +33003,7 @@ Index
* next statement, BEGIN/END patterns and: I/O And BEGIN/END. (line 36)
* next statement, BEGINFILE/ENDFILE patterns and: BEGINFILE/ENDFILE.
(line 49)
-* next statement, user-defined functions and: Next Statement. (line 45)
+* next statement, user-defined functions and: Next Statement. (line 44)
* nextfile statement: Nextfile Statement. (line 6)
* nextfile statement, BEGIN/END patterns and: I/O And BEGIN/END.
(line 36)
@@ -33239,7 +33245,7 @@ Index
* POSIX awk, functions and, length(): String Functions. (line 176)
* POSIX awk, GNU long options and: Options. (line 15)
* POSIX awk, interval expressions in: Regexp Operators. (line 135)
-* POSIX awk, next/nextfile statements and: Next Statement. (line 45)
+* POSIX awk, next/nextfile statements and: Next Statement. (line 44)
* POSIX awk, numeric strings and: Variable Typing. (line 6)
* POSIX awk, OFMT variable and <1>: Strings And Numbers. (line 57)
* POSIX awk, OFMT variable and: OFMT. (line 27)
@@ -34228,361 +34234,361 @@ Node: Switch Statement412792
Node: Break Statement415180
Node: Continue Statement417221
Node: Next Statement419046
-Node: Nextfile Statement421436
-Node: Exit Statement424093
-Node: Built-in Variables426497
-Node: User-modified427624
-Ref: User-modified-Footnote-1435313
-Node: Auto-set435375
-Ref: Auto-set-Footnote-1448057
-Ref: Auto-set-Footnote-2448262
-Node: ARGC and ARGV448318
-Node: Pattern Action Summary452222
-Node: Arrays454445
-Node: Array Basics455994
-Node: Array Intro456820
-Ref: figure-array-elements458793
-Ref: Array Intro-Footnote-1461317
-Node: Reference to Elements461445
-Node: Assigning Elements463895
-Node: Array Example464386
-Node: Scanning an Array466118
-Node: Controlling Scanning469119
-Ref: Controlling Scanning-Footnote-1474292
-Node: Delete474608
-Ref: Delete-Footnote-1477359
-Node: Numeric Array Subscripts477416
-Node: Uninitialized Subscripts479599
-Node: Multidimensional481226
-Node: Multiscanning484339
-Node: Arrays of Arrays485928
-Node: Arrays Summary490591
-Node: Functions492696
-Node: Built-in493569
-Node: Calling Built-in494647
-Node: Numeric Functions496635
-Ref: Numeric Functions-Footnote-1500669
-Ref: Numeric Functions-Footnote-2501026
-Ref: Numeric Functions-Footnote-3501074
-Node: String Functions501343
-Ref: String Functions-Footnote-1524340
-Ref: String Functions-Footnote-2524469
-Ref: String Functions-Footnote-3524717
-Node: Gory Details524804
-Ref: table-sub-escapes526577
-Ref: table-sub-proposed528097
-Ref: table-posix-sub529461
-Ref: table-gensub-escapes531001
-Ref: Gory Details-Footnote-1532177
-Node: I/O Functions532328
-Ref: I/O Functions-Footnote-1539438
-Node: Time Functions539585
-Ref: Time Functions-Footnote-1550049
-Ref: Time Functions-Footnote-2550117
-Ref: Time Functions-Footnote-3550275
-Ref: Time Functions-Footnote-4550386
-Ref: Time Functions-Footnote-5550498
-Ref: Time Functions-Footnote-6550725
-Node: Bitwise Functions550991
-Ref: table-bitwise-ops551553
-Ref: Bitwise Functions-Footnote-1555798
-Node: Type Functions555982
-Node: I18N Functions557124
-Node: User-defined558769
-Node: Definition Syntax559573
-Ref: Definition Syntax-Footnote-1564886
-Node: Function Example564955
-Ref: Function Example-Footnote-1567595
-Node: Function Caveats567617
-Node: Calling A Function568135
-Node: Variable Scope569090
-Node: Pass By Value/Reference572078
-Node: Return Statement575588
-Node: Dynamic Typing578572
-Node: Indirect Calls579501
-Ref: Indirect Calls-Footnote-1589217
-Node: Functions Summary589345
-Node: Library Functions591995
-Ref: Library Functions-Footnote-1595613
-Ref: Library Functions-Footnote-2595756
-Node: Library Names595927
-Ref: Library Names-Footnote-1599400
-Ref: Library Names-Footnote-2599620
-Node: General Functions599706
-Node: Strtonum Function600734
-Node: Assert Function603608
-Node: Round Function606934
-Node: Cliff Random Function608475
-Node: Ordinal Functions609491
-Ref: Ordinal Functions-Footnote-1612556
-Ref: Ordinal Functions-Footnote-2612808
-Node: Join Function613019
-Ref: Join Function-Footnote-1614790
-Node: Getlocaltime Function614990
-Node: Readfile Function618726
-Node: Data File Management620565
-Node: Filetrans Function621197
-Node: Rewind Function625266
-Node: File Checking626824
-Ref: File Checking-Footnote-1627956
-Node: Empty Files628157
-Node: Ignoring Assigns630136
-Node: Getopt Function631690
-Ref: Getopt Function-Footnote-1642954
-Node: Passwd Functions643157
-Ref: Passwd Functions-Footnote-1652136
-Node: Group Functions652224
-Ref: Group Functions-Footnote-1660155
-Node: Walking Arrays660368
-Node: Library Functions Summary661971
-Node: Library Exercises663359
-Node: Sample Programs664639
-Node: Running Examples665409
-Node: Clones666137
-Node: Cut Program667361
-Node: Egrep Program677219
-Ref: Egrep Program-Footnote-1684806
-Node: Id Program684916
-Node: Split Program688570
-Ref: Split Program-Footnote-1692108
-Node: Tee Program692236
-Node: Uniq Program695023
-Node: Wc Program702446
-Ref: Wc Program-Footnote-1706711
-Node: Miscellaneous Programs706803
-Node: Dupword Program708016
-Node: Alarm Program710047
-Node: Translate Program714851
-Ref: Translate Program-Footnote-1719424
-Ref: Translate Program-Footnote-2719694
-Node: Labels Program719833
-Ref: Labels Program-Footnote-1723194
-Node: Word Sorting723278
-Node: History Sorting727321
-Node: Extract Program729157
-Node: Simple Sed736693
-Node: Igawk Program739755
-Ref: Igawk Program-Footnote-1754059
-Ref: Igawk Program-Footnote-2754260
-Node: Anagram Program754398
-Node: Signature Program757466
-Node: Programs Summary758713
-Node: Programs Exercises759928
-Ref: Programs Exercises-Footnote-1764059
-Node: Advanced Features764150
-Node: Nondecimal Data766098
-Node: Array Sorting767675
-Node: Controlling Array Traversal768372
-Node: Array Sorting Functions776652
-Ref: Array Sorting Functions-Footnote-1780559
-Node: Two-way I/O780753
-Ref: Two-way I/O-Footnote-1785697
-Ref: Two-way I/O-Footnote-2785876
-Node: TCP/IP Networking785958
-Node: Profiling788803
-Node: Advanced Features Summary796345
-Node: Internationalization798209
-Node: I18N and L10N799689
-Node: Explaining gettext800375
-Ref: Explaining gettext-Footnote-1805401
-Ref: Explaining gettext-Footnote-2805585
-Node: Programmer i18n805750
-Ref: Programmer i18n-Footnote-1810544
-Node: Translator i18n810593
-Node: String Extraction811387
-Ref: String Extraction-Footnote-1812520
-Node: Printf Ordering812606
-Ref: Printf Ordering-Footnote-1815388
-Node: I18N Portability815452
-Ref: I18N Portability-Footnote-1817901
-Node: I18N Example817964
-Ref: I18N Example-Footnote-1820670
-Node: Gawk I18N820742
-Node: I18N Summary821380
-Node: Debugger822719
-Node: Debugging823741
-Node: Debugging Concepts824182
-Node: Debugging Terms826038
-Node: Awk Debugging828635
-Node: Sample Debugging Session829527
-Node: Debugger Invocation830047
-Node: Finding The Bug831383
-Node: List of Debugger Commands837862
-Node: Breakpoint Control839194
-Node: Debugger Execution Control842858
-Node: Viewing And Changing Data846218
-Node: Execution Stack849576
-Node: Debugger Info851089
-Node: Miscellaneous Debugger Commands855083
-Node: Readline Support860267
-Node: Limitations861159
-Node: Debugging Summary863432
-Node: Arbitrary Precision Arithmetic864600
-Node: Computer Arithmetic866087
-Ref: Computer Arithmetic-Footnote-1870474
-Node: Math Definitions870531
-Ref: table-ieee-formats873820
-Ref: Math Definitions-Footnote-1874360
-Node: MPFR features874463
-Node: FP Math Caution876080
-Ref: FP Math Caution-Footnote-1877130
-Node: Inexactness of computations877499
-Node: Inexact representation878447
-Node: Comparing FP Values879802
-Node: Errors accumulate880766
-Node: Getting Accuracy882199
-Node: Try To Round884858
-Node: Setting precision885757
-Ref: table-predefined-precision-strings886439
-Node: Setting the rounding mode888232
-Ref: table-gawk-rounding-modes888596
-Ref: Setting the rounding mode-Footnote-1892050
-Node: Arbitrary Precision Integers892229
-Ref: Arbitrary Precision Integers-Footnote-1895210
-Node: POSIX Floating Point Problems895359
-Ref: POSIX Floating Point Problems-Footnote-1899235
-Node: Floating point summary899273
-Node: Dynamic Extensions901477
-Node: Extension Intro903029
-Node: Plugin License904294
-Node: Extension Mechanism Outline904979
-Ref: figure-load-extension905403
-Ref: figure-load-new-function906888
-Ref: figure-call-new-function907890
-Node: Extension API Description909874
-Node: Extension API Functions Introduction911324
-Node: General Data Types916191
-Ref: General Data Types-Footnote-1921884
-Node: Requesting Values922183
-Ref: table-value-types-returned922920
-Node: Memory Allocation Functions923878
-Ref: Memory Allocation Functions-Footnote-1926625
-Node: Constructor Functions926721
-Node: Registration Functions928479
-Node: Extension Functions929164
-Node: Exit Callback Functions931466
-Node: Extension Version String932714
-Node: Input Parsers933364
-Node: Output Wrappers943178
-Node: Two-way processors947694
-Node: Printing Messages949898
-Ref: Printing Messages-Footnote-1950975
-Node: Updating `ERRNO'951127
-Node: Accessing Parameters951866
-Node: Symbol Table Access953096
-Node: Symbol table by name953610
-Node: Symbol table by cookie955586
-Ref: Symbol table by cookie-Footnote-1959719
-Node: Cached values959782
-Ref: Cached values-Footnote-1963286
-Node: Array Manipulation963377
-Ref: Array Manipulation-Footnote-1964475
-Node: Array Data Types964514
-Ref: Array Data Types-Footnote-1967217
-Node: Array Functions967309
-Node: Flattening Arrays971183
-Node: Creating Arrays978035
-Node: Extension API Variables982766
-Node: Extension Versioning983402
-Node: Extension API Informational Variables985303
-Node: Extension API Boilerplate986389
-Node: Finding Extensions990193
-Node: Extension Example990753
-Node: Internal File Description991483
-Node: Internal File Ops995574
-Ref: Internal File Ops-Footnote-11007006
-Node: Using Internal File Ops1007146
-Ref: Using Internal File Ops-Footnote-11009493
-Node: Extension Samples1009761
-Node: Extension Sample File Functions1011285
-Node: Extension Sample Fnmatch1018853
-Node: Extension Sample Fork1020335
-Node: Extension Sample Inplace1021548
-Node: Extension Sample Ord1023223
-Node: Extension Sample Readdir1024059
-Ref: table-readdir-file-types1024915
-Node: Extension Sample Revout1025714
-Node: Extension Sample Rev2way1026305
-Node: Extension Sample Read write array1027046
-Node: Extension Sample Readfile1028925
-Node: Extension Sample API Tests1030025
-Node: Extension Sample Time1030550
-Node: gawkextlib1031865
-Node: Extension summary1034678
-Node: Extension Exercises1038371
-Node: Language History1039093
-Node: V7/SVR3.11040736
-Node: SVR41043056
-Node: POSIX1044498
-Node: BTL1045884
-Node: POSIX/GNU1046618
-Node: Feature History1052334
-Node: Common Extensions1065425
-Node: Ranges and Locales1066737
-Ref: Ranges and Locales-Footnote-11071354
-Ref: Ranges and Locales-Footnote-21071381
-Ref: Ranges and Locales-Footnote-31071615
-Node: Contributors1071836
-Node: History summary1077261
-Node: Installation1078630
-Node: Gawk Distribution1079581
-Node: Getting1080065
-Node: Extracting1080889
-Node: Distribution contents1082531
-Node: Unix Installation1088248
-Node: Quick Installation1088865
-Node: Additional Configuration Options1091307
-Node: Configuration Philosophy1093045
-Node: Non-Unix Installation1095396
-Node: PC Installation1095854
-Node: PC Binary Installation1097165
-Node: PC Compiling1099013
-Ref: PC Compiling-Footnote-11102012
-Node: PC Testing1102117
-Node: PC Using1103293
-Node: Cygwin1107445
-Node: MSYS1108254
-Node: VMS Installation1108768
-Node: VMS Compilation1109564
-Ref: VMS Compilation-Footnote-11110786
-Node: VMS Dynamic Extensions1110844
-Node: VMS Installation Details1112217
-Node: VMS Running1114469
-Node: VMS GNV1117303
-Node: VMS Old Gawk1118026
-Node: Bugs1118496
-Node: Other Versions1122500
-Node: Installation summary1128727
-Node: Notes1129783
-Node: Compatibility Mode1130648
-Node: Additions1131430
-Node: Accessing The Source1132355
-Node: Adding Code1133791
-Node: New Ports1139969
-Node: Derived Files1144450
-Ref: Derived Files-Footnote-11149531
-Ref: Derived Files-Footnote-21149565
-Ref: Derived Files-Footnote-31150161
-Node: Future Extensions1150275
-Node: Implementation Limitations1150881
-Node: Extension Design1152129
-Node: Old Extension Problems1153283
-Ref: Old Extension Problems-Footnote-11154800
-Node: Extension New Mechanism Goals1154857
-Ref: Extension New Mechanism Goals-Footnote-11158217
-Node: Extension Other Design Decisions1158406
-Node: Extension Future Growth1160512
-Node: Old Extension Mechanism1161348
-Node: Notes summary1163110
-Node: Basic Concepts1164296
-Node: Basic High Level1164977
-Ref: figure-general-flow1165249
-Ref: figure-process-flow1165848
-Ref: Basic High Level-Footnote-11169077
-Node: Basic Data Typing1169262
-Node: Glossary1172590
-Node: Copying1197742
-Node: GNU Free Documentation License1235298
-Node: Index1260434
+Node: Nextfile Statement421416
+Node: Exit Statement424073
+Node: Built-in Variables426477
+Node: User-modified427604
+Ref: User-modified-Footnote-1435293
+Node: Auto-set435355
+Ref: Auto-set-Footnote-1448037
+Ref: Auto-set-Footnote-2448242
+Node: ARGC and ARGV448298
+Node: Pattern Action Summary452202
+Node: Arrays454425
+Node: Array Basics455974
+Node: Array Intro456800
+Ref: figure-array-elements458773
+Ref: Array Intro-Footnote-1461297
+Node: Reference to Elements461425
+Node: Assigning Elements463875
+Node: Array Example464366
+Node: Scanning an Array466098
+Node: Controlling Scanning469099
+Ref: Controlling Scanning-Footnote-1474272
+Node: Delete474588
+Ref: Delete-Footnote-1477339
+Node: Numeric Array Subscripts477396
+Node: Uninitialized Subscripts479579
+Node: Multidimensional481206
+Node: Multiscanning484319
+Node: Arrays of Arrays485908
+Node: Arrays Summary490571
+Node: Functions492676
+Node: Built-in493549
+Node: Calling Built-in494627
+Node: Numeric Functions496615
+Ref: Numeric Functions-Footnote-1500649
+Ref: Numeric Functions-Footnote-2501006
+Ref: Numeric Functions-Footnote-3501054
+Node: String Functions501323
+Ref: String Functions-Footnote-1524320
+Ref: String Functions-Footnote-2524449
+Ref: String Functions-Footnote-3524697
+Node: Gory Details524784
+Ref: table-sub-escapes526557
+Ref: table-sub-proposed528077
+Ref: table-posix-sub529441
+Ref: table-gensub-escapes530981
+Ref: Gory Details-Footnote-1532157
+Node: I/O Functions532308
+Ref: I/O Functions-Footnote-1539418
+Node: Time Functions539565
+Ref: Time Functions-Footnote-1550029
+Ref: Time Functions-Footnote-2550097
+Ref: Time Functions-Footnote-3550255
+Ref: Time Functions-Footnote-4550366
+Ref: Time Functions-Footnote-5550478
+Ref: Time Functions-Footnote-6550705
+Node: Bitwise Functions550971
+Ref: table-bitwise-ops551533
+Ref: Bitwise Functions-Footnote-1555778
+Node: Type Functions555962
+Node: I18N Functions557104
+Node: User-defined558749
+Node: Definition Syntax559553
+Ref: Definition Syntax-Footnote-1564866
+Node: Function Example564935
+Ref: Function Example-Footnote-1567575
+Node: Function Caveats567597
+Node: Calling A Function568115
+Node: Variable Scope569070
+Node: Pass By Value/Reference572058
+Node: Return Statement575568
+Node: Dynamic Typing578552
+Node: Indirect Calls579481
+Ref: Indirect Calls-Footnote-1589197
+Node: Functions Summary589325
+Node: Library Functions591975
+Ref: Library Functions-Footnote-1595593
+Ref: Library Functions-Footnote-2595736
+Node: Library Names595907
+Ref: Library Names-Footnote-1599380
+Ref: Library Names-Footnote-2599600
+Node: General Functions599686
+Node: Strtonum Function600714
+Node: Assert Function603616
+Node: Round Function606942
+Node: Cliff Random Function608483
+Node: Ordinal Functions609499
+Ref: Ordinal Functions-Footnote-1612564
+Ref: Ordinal Functions-Footnote-2612816
+Node: Join Function613027
+Ref: Join Function-Footnote-1614798
+Node: Getlocaltime Function614998
+Node: Readfile Function618734
+Node: Data File Management620573
+Node: Filetrans Function621205
+Node: Rewind Function625274
+Node: File Checking626832
+Ref: File Checking-Footnote-1627964
+Node: Empty Files628165
+Node: Ignoring Assigns630144
+Node: Getopt Function631698
+Ref: Getopt Function-Footnote-1642962
+Node: Passwd Functions643165
+Ref: Passwd Functions-Footnote-1652144
+Node: Group Functions652232
+Ref: Group Functions-Footnote-1660163
+Node: Walking Arrays660376
+Node: Library Functions Summary661979
+Node: Library Exercises663367
+Node: Sample Programs664647
+Node: Running Examples665417
+Node: Clones666145
+Node: Cut Program667369
+Node: Egrep Program677227
+Ref: Egrep Program-Footnote-1684814
+Node: Id Program684924
+Node: Split Program688578
+Ref: Split Program-Footnote-1692116
+Node: Tee Program692244
+Node: Uniq Program695031
+Node: Wc Program702454
+Ref: Wc Program-Footnote-1706719
+Node: Miscellaneous Programs706811
+Node: Dupword Program708024
+Node: Alarm Program710055
+Node: Translate Program714859
+Ref: Translate Program-Footnote-1719432
+Ref: Translate Program-Footnote-2719702
+Node: Labels Program719841
+Ref: Labels Program-Footnote-1723202
+Node: Word Sorting723286
+Node: History Sorting727329
+Node: Extract Program729165
+Node: Simple Sed736701
+Node: Igawk Program739763
+Ref: Igawk Program-Footnote-1754067
+Ref: Igawk Program-Footnote-2754268
+Node: Anagram Program754406
+Node: Signature Program757474
+Node: Programs Summary758721
+Node: Programs Exercises759936
+Ref: Programs Exercises-Footnote-1764067
+Node: Advanced Features764158
+Node: Nondecimal Data766106
+Node: Array Sorting767683
+Node: Controlling Array Traversal768380
+Node: Array Sorting Functions776660
+Ref: Array Sorting Functions-Footnote-1780567
+Node: Two-way I/O780761
+Ref: Two-way I/O-Footnote-1785705
+Ref: Two-way I/O-Footnote-2785884
+Node: TCP/IP Networking785966
+Node: Profiling788811
+Node: Advanced Features Summary796353
+Node: Internationalization798217
+Node: I18N and L10N799697
+Node: Explaining gettext800383
+Ref: Explaining gettext-Footnote-1805409
+Ref: Explaining gettext-Footnote-2805593
+Node: Programmer i18n805758
+Ref: Programmer i18n-Footnote-1810552
+Node: Translator i18n810601
+Node: String Extraction811395
+Ref: String Extraction-Footnote-1812528
+Node: Printf Ordering812614
+Ref: Printf Ordering-Footnote-1815396
+Node: I18N Portability815460
+Ref: I18N Portability-Footnote-1817909
+Node: I18N Example817972
+Ref: I18N Example-Footnote-1820678
+Node: Gawk I18N820750
+Node: I18N Summary821388
+Node: Debugger822727
+Node: Debugging823749
+Node: Debugging Concepts824190
+Node: Debugging Terms826046
+Node: Awk Debugging828643
+Node: Sample Debugging Session829535
+Node: Debugger Invocation830055
+Node: Finding The Bug831391
+Node: List of Debugger Commands837870
+Node: Breakpoint Control839202
+Node: Debugger Execution Control842866
+Node: Viewing And Changing Data846226
+Node: Execution Stack849584
+Node: Debugger Info851097
+Node: Miscellaneous Debugger Commands855091
+Node: Readline Support860275
+Node: Limitations861167
+Node: Debugging Summary863440
+Node: Arbitrary Precision Arithmetic864608
+Node: Computer Arithmetic866095
+Ref: Computer Arithmetic-Footnote-1870482
+Node: Math Definitions870539
+Ref: table-ieee-formats873828
+Ref: Math Definitions-Footnote-1874368
+Node: MPFR features874471
+Node: FP Math Caution876088
+Ref: FP Math Caution-Footnote-1877138
+Node: Inexactness of computations877507
+Node: Inexact representation878455
+Node: Comparing FP Values879810
+Node: Errors accumulate880774
+Node: Getting Accuracy882207
+Node: Try To Round884866
+Node: Setting precision885765
+Ref: table-predefined-precision-strings886447
+Node: Setting the rounding mode888240
+Ref: table-gawk-rounding-modes888604
+Ref: Setting the rounding mode-Footnote-1892058
+Node: Arbitrary Precision Integers892237
+Ref: Arbitrary Precision Integers-Footnote-1895218
+Node: POSIX Floating Point Problems895367
+Ref: POSIX Floating Point Problems-Footnote-1899243
+Node: Floating point summary899281
+Node: Dynamic Extensions901485
+Node: Extension Intro903037
+Node: Plugin License904302
+Node: Extension Mechanism Outline904987
+Ref: figure-load-extension905411
+Ref: figure-load-new-function906896
+Ref: figure-call-new-function907898
+Node: Extension API Description909882
+Node: Extension API Functions Introduction911332
+Node: General Data Types916199
+Ref: General Data Types-Footnote-1921892
+Node: Requesting Values922191
+Ref: table-value-types-returned922928
+Node: Memory Allocation Functions923886
+Ref: Memory Allocation Functions-Footnote-1926633
+Node: Constructor Functions926729
+Node: Registration Functions928487
+Node: Extension Functions929172
+Node: Exit Callback Functions931474
+Node: Extension Version String932722
+Node: Input Parsers933372
+Node: Output Wrappers943186
+Node: Two-way processors947702
+Node: Printing Messages949906
+Ref: Printing Messages-Footnote-1950983
+Node: Updating `ERRNO'951135
+Node: Accessing Parameters951874
+Node: Symbol Table Access953104
+Node: Symbol table by name953618
+Node: Symbol table by cookie955594
+Ref: Symbol table by cookie-Footnote-1959727
+Node: Cached values959790
+Ref: Cached values-Footnote-1963294
+Node: Array Manipulation963385
+Ref: Array Manipulation-Footnote-1964483
+Node: Array Data Types964522
+Ref: Array Data Types-Footnote-1967225
+Node: Array Functions967317
+Node: Flattening Arrays971191
+Node: Creating Arrays978043
+Node: Extension API Variables982774
+Node: Extension Versioning983410
+Node: Extension API Informational Variables985311
+Node: Extension API Boilerplate986397
+Node: Finding Extensions990201
+Node: Extension Example990761
+Node: Internal File Description991491
+Node: Internal File Ops995582
+Ref: Internal File Ops-Footnote-11007014
+Node: Using Internal File Ops1007154
+Ref: Using Internal File Ops-Footnote-11009501
+Node: Extension Samples1009769
+Node: Extension Sample File Functions1011293
+Node: Extension Sample Fnmatch1018861
+Node: Extension Sample Fork1020343
+Node: Extension Sample Inplace1021556
+Node: Extension Sample Ord1023231
+Node: Extension Sample Readdir1024067
+Ref: table-readdir-file-types1024923
+Node: Extension Sample Revout1025722
+Node: Extension Sample Rev2way1026313
+Node: Extension Sample Read write array1027054
+Node: Extension Sample Readfile1028933
+Node: Extension Sample API Tests1030033
+Node: Extension Sample Time1030558
+Node: gawkextlib1031873
+Node: Extension summary1034686
+Node: Extension Exercises1038379
+Node: Language History1039101
+Node: V7/SVR3.11040744
+Node: SVR41043064
+Node: POSIX1044506
+Node: BTL1045892
+Node: POSIX/GNU1046626
+Node: Feature History1052342
+Node: Common Extensions1065433
+Node: Ranges and Locales1066745
+Ref: Ranges and Locales-Footnote-11071362
+Ref: Ranges and Locales-Footnote-21071389
+Ref: Ranges and Locales-Footnote-31071623
+Node: Contributors1071844
+Node: History summary1077269
+Node: Installation1078638
+Node: Gawk Distribution1079589
+Node: Getting1080073
+Node: Extracting1080897
+Node: Distribution contents1082539
+Node: Unix Installation1088256
+Node: Quick Installation1088873
+Node: Additional Configuration Options1091315
+Node: Configuration Philosophy1093053
+Node: Non-Unix Installation1095404
+Node: PC Installation1095862
+Node: PC Binary Installation1097173
+Node: PC Compiling1099021
+Ref: PC Compiling-Footnote-11102020
+Node: PC Testing1102125
+Node: PC Using1103301
+Node: Cygwin1107453
+Node: MSYS1108262
+Node: VMS Installation1108776
+Node: VMS Compilation1109572
+Ref: VMS Compilation-Footnote-11110794
+Node: VMS Dynamic Extensions1110852
+Node: VMS Installation Details1112225
+Node: VMS Running1114477
+Node: VMS GNV1117311
+Node: VMS Old Gawk1118034
+Node: Bugs1118504
+Node: Other Versions1122508
+Node: Installation summary1128735
+Node: Notes1129791
+Node: Compatibility Mode1130656
+Node: Additions1131438
+Node: Accessing The Source1132363
+Node: Adding Code1133799
+Node: New Ports1139977
+Node: Derived Files1144458
+Ref: Derived Files-Footnote-11149933
+Ref: Derived Files-Footnote-21149967
+Ref: Derived Files-Footnote-31150563
+Node: Future Extensions1150677
+Node: Implementation Limitations1151283
+Node: Extension Design1152531
+Node: Old Extension Problems1153685
+Ref: Old Extension Problems-Footnote-11155202
+Node: Extension New Mechanism Goals1155259
+Ref: Extension New Mechanism Goals-Footnote-11158619
+Node: Extension Other Design Decisions1158808
+Node: Extension Future Growth1160914
+Node: Old Extension Mechanism1161750
+Node: Notes summary1163512
+Node: Basic Concepts1164698
+Node: Basic High Level1165379
+Ref: figure-general-flow1165651
+Ref: figure-process-flow1166250
+Ref: Basic High Level-Footnote-11169479
+Node: Basic Data Typing1169664
+Node: Glossary1172992
+Node: Copying1198144
+Node: GNU Free Documentation License1235700
+Node: Index1260836

End Tag Table
diff --git a/doc/gawk.texi b/doc/gawk.texi
index 177d8c89..4d54b53b 100644
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -37,11 +37,13 @@
@ifnotdocbook
@set BULLET @bullet{}
@set MINUS @minus{}
+@set NUL @sc{nul}
@end ifnotdocbook
@ifdocbook
@set BULLET
@set MINUS
+@set NUL NUL
@end ifdocbook
@set xref-automatic-section-title
@@ -5283,10 +5285,10 @@ with @samp{A}.
@cindex POSIX @command{awk}, period (@code{.})@comma{} using
In strict POSIX mode (@pxref{Options}),
-@samp{.} does not match the @sc{nul}
+@samp{.} does not match the @value{NUL}
character, which is a character with all bits equal to zero.
-Otherwise, @sc{nul} is just another character. Other versions of @command{awk}
-may not be able to match the @sc{nul} character.
+Otherwise, @value{NUL} is just another character. Other versions of @command{awk}
+may not be able to match the @value{NUL} character.
@cindex @code{[]} (square brackets), regexp operator
@cindex square brackets (@code{[]}), regexp operator
@@ -6435,7 +6437,7 @@ a value that you know doesn't occur in the input file. This is hard
to do in a general way, such that a program always works for arbitrary
input files.
-You might think that for text files, the @sc{nul} character, which
+You might think that for text files, the @value{NUL} character, which
consists of a character with all bits equal to zero, is a good
value to use for @code{RS} in this case:
@@ -6444,23 +6446,23 @@ BEGIN @{ RS = "\0" @} # whole file becomes one record?
@end example
@cindex differences in @command{awk} and @command{gawk}, strings, storing
-@command{gawk} in fact accepts this, and uses the @sc{nul}
+@command{gawk} in fact accepts this, and uses the @value{NUL}
character for the record separator.
This works for certain special files, such as @file{/proc/environ} on
-GNU/Linux systems, where the @sc{nul} character is in fact the record separator.
+GNU/Linux systems, where the @value{NUL} character is in fact the record separator.
However, this usage is @emph{not} portable
to most other @command{awk} implementations.
@cindex dark corner, strings, storing
Almost all other @command{awk} implementations@footnote{At least that we know
about.} store strings internally as C-style strings. C strings use the
-@sc{nul} character as the string terminator. In effect, this means that
+@value{NUL} character as the string terminator. In effect, this means that
@samp{RS = "\0"} is the same as @samp{RS = ""}.
@value{DARKCORNER}
-It happens that recent versions of @command{mawk} can use the @sc{nul}
+It happens that recent versions of @command{mawk} can use the @value{NUL}
character as a record separator. However, this is a special case:
-@command{mawk} does not allow embedded @sc{nul} characters in strings.
+@command{mawk} does not allow embedded @value{NUL} characters in strings.
@cindex records, treating files as
@cindex treating files, as single records
@@ -6485,7 +6487,7 @@ a value that you know doesn't occur in the input file. This is hard
to do in a general way, such that a program always works for arbitrary
input files.
-You might think that for text files, the @sc{nul} character, which
+You might think that for text files, the @value{NUL} character, which
consists of a character with all bits equal to zero, is a good
value to use for @code{RS} in this case:
@@ -6494,23 +6496,23 @@ BEGIN @{ RS = "\0" @} # whole file becomes one record?
@end example
@cindex differences in @command{awk} and @command{gawk}, strings, storing
-@command{gawk} in fact accepts this, and uses the @sc{nul}
+@command{gawk} in fact accepts this, and uses the @value{NUL}
character for the record separator.
This works for certain special files, such as @file{/proc/environ} on
-GNU/Linux systems, where the @sc{nul} character is in fact the record separator.
+GNU/Linux systems, where the @value{NUL} character is in fact the record separator.
However, this usage is @emph{not} portable
to most other @command{awk} implementations.
@cindex dark corner, strings, storing
Almost all other @command{awk} implementations@footnote{At least that we know
about.} store strings internally as C-style strings. C strings use the
-@sc{nul} character as the string terminator. In effect, this means that
+@value{NUL} character as the string terminator. In effect, this means that
@samp{RS = "\0"} is the same as @samp{RS = ""}.
@value{DARKCORNER}
-It happens that recent versions of @command{mawk} can use the @sc{nul}
+It happens that recent versions of @command{mawk} can use the @value{NUL}
character as a record separator. However, this is a special case:
-@command{mawk} does not allow embedded @sc{nul} characters in strings.
+@command{mawk} does not allow embedded @value{NUL} characters in strings.
@cindex records, treating files as
@cindex treating files, as single records
@@ -10431,7 +10433,7 @@ double-quotation marks. For example:
@cindex strings, length limitations
represents the string whose contents are @samp{parrot}. Strings in
@command{gawk} can be of any length, and they can contain any of the possible
-eight-bit ASCII characters including ASCII @sc{nul} (character code zero).
+eight-bit ASCII characters including ASCII @value{NUL} (character code zero).
Other @command{awk}
implementations may have difficulty with some character codes.
@@ -14134,9 +14136,8 @@ the beginning, in the following manner:
@example
NF != 4 @{
- err = sprintf("%s:%d: skipped: NF != 4\n", FILENAME, FNR)
- print err > "/dev/stderr"
- next
+ printf("%s:%d: skipped: NF != 4\n", FILENAME, FNR) > "/dev/stderr"
+ next
@}
@end example
@@ -20513,8 +20514,8 @@ function mystrtonum(str, ret, n, i, k, c)
ret = 0
for (i = 1; i <= n; i++) @{
c = substr(str, i, 1)
- # index() returns 0 if c not in string,
- # includes c == "0"
+ # index() returns 0 if c not in string,
+ # includes c == "0"
k = index("1234567", c)
ret = ret * 8 + k
@@ -20527,8 +20528,8 @@ function mystrtonum(str, ret, n, i, k, c)
for (i = 1; i <= n; i++) @{
c = substr(str, i, 1)
c = tolower(c)
- # index() returns 0 if c not in string,
- # includes c == "0"
+ # index() returns 0 if c not in string,
+ # includes c == "0"
k = index("123456789abcdef", c)
ret = ret * 16 + k
@@ -31242,7 +31243,7 @@ and is managed by @command{gawk} from then on.
The API defines several simple @code{struct}s that map values as seen
from @command{awk}. A value can be a @code{double}, a string, or an
array (as in multidimensional arrays, or when creating a new array).
-String values maintain both pointer and length since embedded @sc{nul}
+String values maintain both pointer and length since embedded @value{NUL}
characters are allowed.
@quotation NOTE
@@ -31374,7 +31375,7 @@ Scalar values in @command{awk} are either numbers or strings. The
indicates what is in the @code{union}.
Representing numbers is easy---the API uses a C @code{double}. Strings
-require more work. Since @command{gawk} allows embedded @sc{nul} bytes
+require more work. Since @command{gawk} allows embedded @value{NUL} bytes
in string values, a string must be represented as a pair containing a
data-pointer and length. This is the @code{awk_string_t} type.
@@ -38614,7 +38615,7 @@ the derived files, because that keeps the repository less cluttered,
and it is easier to see the substantive changes when comparing versions
and trying to understand what changed between commits.
-However, there are two reasons why the @command{gawk} maintainer
+However, there are several reasons why the @command{gawk} maintainer
likes to have everything in the repository.
First, because it is then easy to reproduce any given version completely,
@@ -38683,6 +38684,14 @@ the maintainer is no different than Jane User who wants to try to build
Thus, the maintainer thinks that it's not just important, but critical,
that for any given branch, the above incantation @emph{just works}.
+@c Added 9/2014:
+A third reason to have all the files is that without them, using @samp{git
+bisect} to try to find the commit that introduced a bug is exceedingly
+difficult. The maintainer tried to do that on another project that
+requires running bootstrapping scripts just to create @command{configure}
+and so on; it was really painful. When the repository is self-contained,
+using @command{git bisect} in it is very easy.
+
@c So - that's my reasoning and philosophy.
What are some of the consequences and/or actions to take?
diff --git a/doc/gawktexi.in b/doc/gawktexi.in
index 2af398c0..e0a15f04 100644
--- a/doc/gawktexi.in
+++ b/doc/gawktexi.in
@@ -32,11 +32,13 @@
@ifnotdocbook
@set BULLET @bullet{}
@set MINUS @minus{}
+@set NUL @sc{nul}
@end ifnotdocbook
@ifdocbook
@set BULLET
@set MINUS
+@set NUL NUL
@end ifdocbook
@set xref-automatic-section-title
@@ -5111,10 +5113,10 @@ with @samp{A}.
@cindex POSIX @command{awk}, period (@code{.})@comma{} using
In strict POSIX mode (@pxref{Options}),
-@samp{.} does not match the @sc{nul}
+@samp{.} does not match the @value{NUL}
character, which is a character with all bits equal to zero.
-Otherwise, @sc{nul} is just another character. Other versions of @command{awk}
-may not be able to match the @sc{nul} character.
+Otherwise, @value{NUL} is just another character. Other versions of @command{awk}
+may not be able to match the @value{NUL} character.
@cindex @code{[]} (square brackets), regexp operator
@cindex square brackets (@code{[]}), regexp operator
@@ -6214,7 +6216,7 @@ a value that you know doesn't occur in the input file. This is hard
to do in a general way, such that a program always works for arbitrary
input files.
-You might think that for text files, the @sc{nul} character, which
+You might think that for text files, the @value{NUL} character, which
consists of a character with all bits equal to zero, is a good
value to use for @code{RS} in this case:
@@ -6223,23 +6225,23 @@ BEGIN @{ RS = "\0" @} # whole file becomes one record?
@end example
@cindex differences in @command{awk} and @command{gawk}, strings, storing
-@command{gawk} in fact accepts this, and uses the @sc{nul}
+@command{gawk} in fact accepts this, and uses the @value{NUL}
character for the record separator.
This works for certain special files, such as @file{/proc/environ} on
-GNU/Linux systems, where the @sc{nul} character is in fact the record separator.
+GNU/Linux systems, where the @value{NUL} character is in fact the record separator.
However, this usage is @emph{not} portable
to most other @command{awk} implementations.
@cindex dark corner, strings, storing
Almost all other @command{awk} implementations@footnote{At least that we know
about.} store strings internally as C-style strings. C strings use the
-@sc{nul} character as the string terminator. In effect, this means that
+@value{NUL} character as the string terminator. In effect, this means that
@samp{RS = "\0"} is the same as @samp{RS = ""}.
@value{DARKCORNER}
-It happens that recent versions of @command{mawk} can use the @sc{nul}
+It happens that recent versions of @command{mawk} can use the @value{NUL}
character as a record separator. However, this is a special case:
-@command{mawk} does not allow embedded @sc{nul} characters in strings.
+@command{mawk} does not allow embedded @value{NUL} characters in strings.
@cindex records, treating files as
@cindex treating files, as single records
@@ -9933,7 +9935,7 @@ double-quotation marks. For example:
@cindex strings, length limitations
represents the string whose contents are @samp{parrot}. Strings in
@command{gawk} can be of any length, and they can contain any of the possible
-eight-bit ASCII characters including ASCII @sc{nul} (character code zero).
+eight-bit ASCII characters including ASCII @value{NUL} (character code zero).
Other @command{awk}
implementations may have difficulty with some character codes.
@@ -13468,9 +13470,8 @@ the beginning, in the following manner:
@example
NF != 4 @{
- err = sprintf("%s:%d: skipped: NF != 4\n", FILENAME, FNR)
- print err > "/dev/stderr"
- next
+ printf("%s:%d: skipped: NF != 4\n", FILENAME, FNR) > "/dev/stderr"
+ next
@}
@end example
@@ -19640,8 +19641,8 @@ function mystrtonum(str, ret, n, i, k, c)
ret = 0
for (i = 1; i <= n; i++) @{
c = substr(str, i, 1)
- # index() returns 0 if c not in string,
- # includes c == "0"
+ # index() returns 0 if c not in string,
+ # includes c == "0"
k = index("1234567", c)
ret = ret * 8 + k
@@ -19654,8 +19655,8 @@ function mystrtonum(str, ret, n, i, k, c)
for (i = 1; i <= n; i++) @{
c = substr(str, i, 1)
c = tolower(c)
- # index() returns 0 if c not in string,
- # includes c == "0"
+ # index() returns 0 if c not in string,
+ # includes c == "0"
k = index("123456789abcdef", c)
ret = ret * 16 + k
@@ -30340,7 +30341,7 @@ and is managed by @command{gawk} from then on.
The API defines several simple @code{struct}s that map values as seen
from @command{awk}. A value can be a @code{double}, a string, or an
array (as in multidimensional arrays, or when creating a new array).
-String values maintain both pointer and length since embedded @sc{nul}
+String values maintain both pointer and length since embedded @value{NUL}
characters are allowed.
@quotation NOTE
@@ -30472,7 +30473,7 @@ Scalar values in @command{awk} are either numbers or strings. The
indicates what is in the @code{union}.
Representing numbers is easy---the API uses a C @code{double}. Strings
-require more work. Since @command{gawk} allows embedded @sc{nul} bytes
+require more work. Since @command{gawk} allows embedded @value{NUL} bytes
in string values, a string must be represented as a pair containing a
data-pointer and length. This is the @code{awk_string_t} type.
@@ -37712,7 +37713,7 @@ the derived files, because that keeps the repository less cluttered,
and it is easier to see the substantive changes when comparing versions
and trying to understand what changed between commits.
-However, there are two reasons why the @command{gawk} maintainer
+However, there are several reasons why the @command{gawk} maintainer
likes to have everything in the repository.
First, because it is then easy to reproduce any given version completely,
@@ -37781,6 +37782,14 @@ the maintainer is no different than Jane User who wants to try to build
Thus, the maintainer thinks that it's not just important, but critical,
that for any given branch, the above incantation @emph{just works}.
+@c Added 9/2014:
+A third reason to have all the files is that without them, using @samp{git
+bisect} to try to find the commit that introduced a bug is exceedingly
+difficult. The maintainer tried to do that on another project that
+requires running bootstrapping scripts just to create @command{configure}
+and so on; it was really painful. When the repository is self-contained,
+using @command{git bisect} in it is very easy.
+
@c So - that's my reasoning and philosophy.
What are some of the consequences and/or actions to take?