aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2018-11-26 22:02:21 +0200
committerArnold D. Robbins <arnold@skeeve.com>2018-11-26 22:02:21 +0200
commitdc9c45a6258d9ab495bcd6dc97992532d5a2b862 (patch)
tree06081563ac8cbd14d5fcb8d4a98413801f8bcd65
parent1e6c88c44319694bfb2e9c0ca11db01ec670f0ad (diff)
parent4d481023b2ff756dc8c77c66e6a4864f9c072007 (diff)
downloadegawk-dc9c45a6258d9ab495bcd6dc97992532d5a2b862.tar.gz
egawk-dc9c45a6258d9ab495bcd6dc97992532d5a2b862.tar.bz2
egawk-dc9c45a6258d9ab495bcd6dc97992532d5a2b862.zip
Merge branch 'master' into feature/fix-comments
-rwxr-xr-xChangeLog5
-rw-r--r--doc/ChangeLog14
-rw-r--r--doc/gawk.110
-rw-r--r--doc/gawk.info853
-rw-r--r--doc/gawk.texi26
-rw-r--r--doc/gawktexi.in26
-rw-r--r--main.c7
7 files changed, 491 insertions, 450 deletions
diff --git a/ChangeLog b/ChangeLog
index c58ea9d2..e4b9e780 100755
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
2018-11-26 Arnold D. Robbins <arnold@skeeve.com>
+ * main.c (platform_name): Add os390. Treat Cygwin and Mac OS X
+ as POSIX, per discussion with the dev team.
+
+ Unrelated:
+
* profile.c (print_comment): Indent for chained comment.
* awkgram.y (load_library): Return early if just pretty printing.
(yylex): Fix handling of ?: and allow_newline etc.
diff --git a/doc/ChangeLog b/doc/ChangeLog
index 724a982c..3d025732 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,3 +1,17 @@
+2018-11-26 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawktexi.in (Auto-set) : Update values of PROCINFO["platform"].
+ (PC Using): Add to BINMODE discussion to always set it and
+ not worry about checking platforms. Per discussion with the dev team.
+
+2018-11-26 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawktexi.in: Document that split() third arg is like FS, if it's
+ a single character, that character is used, even if it's a
+ regexp metacharacter.
+ * gawk.1: Ditto.
+ Thanks to R <0xef967c36@gmail.com> for the report.
+
2018-11-25 Arnold D. Robbins <arnold@skeeve.com>
* gawktexi.in: Document PROCINFO["platform"].
diff --git a/doc/gawk.1 b/doc/gawk.1
index 17e25768..5caff79b 100644
--- a/doc/gawk.1
+++ b/doc/gawk.1
@@ -13,7 +13,7 @@
. if \w'\(rq' .ds rq "\(rq
. \}
.\}
-.TH GAWK 1 "Apr 08 2018" "Free Software Foundation" "Utility Commands"
+.TH GAWK 1 "Nov 26 2018" "Free Software Foundation" "Utility Commands"
.SH NAME
gawk \- pattern scanning and processing language
.SH SYNOPSIS
@@ -3053,7 +3053,7 @@ is the possibly null separator that appeared after
The value of
.B seps[0]
is the possibly null leading separator.
-\&\fRIf
+If
.I r
is omitted,
.B FPAT
@@ -3093,7 +3093,7 @@ between
.BI a[ i ]
and
.BI a[ i +1]\fR.
-\&\fRIf
+If
.I r
is a single space, then leading whitespace in
.I s
@@ -3106,6 +3106,10 @@ where
is the return value of
.BI split( s ", " a ", " r ", " seps )\fR.
Splitting behaves identically to field splitting, described above.
+In particular, if
+.I r
+is a single-character string, that string acts as the separator,
+even if it happens to be a regular expression metacharacter.
.TP
.BI sprintf( fmt , " expr-list" )
Print
diff --git a/doc/gawk.info b/doc/gawk.info
index 2c7bf82b..cd8b677c 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -11050,20 +11050,19 @@ they are not special:
'"vms"'
OpenVMS or Vax/VMS.
- '"macosx"'
- Mac OS X.
-
- '"cygwin"'
'"djgpp"'
'"mingw"'
- Microsoft Windows, using either Cygwin, DJGPP, or MinGW,
+ Microsoft Windows, using either DJGPP or MinGW,
respectively.
'"os2"'
OS/2.
+ '"os390"'
+ OS/390.
+
'"posix"'
- GNU/Linux and legacy Unix systems.
+ GNU/Linux, Cygwin, Mac OS X, and legacy Unix systems.
'PROCINFO["pgrpid"]'
The process group ID of the current process.
@@ -12978,8 +12977,8 @@ Options::):
into 'SEPS[N]', where N is the return value of 'split()' (i.e., the
number of elements in ARRAY).
- The 'split()' function splits strings into pieces in a manner
- similar to the way input lines are split into fields. For example:
+ The 'split()' function splits strings into pieces in the same way
+ that input lines are split into fields. For example:
split("cul-de-sac", a, "-", seps)
@@ -13003,7 +13002,9 @@ Options::):
separated by runs of whitespace. Also, as with input field
splitting, if FIELDSEP is the null string, each individual
character in the string is split into its own array element.
- (c.e.)
+ (c.e.) Additionally, if FIELDSEP is a single-character string,
+ that string acts as the separator, even if its value is a regular
+ expression metacharacter.
Note, however, that 'RS' has no effect on the way 'split()' works.
Even though 'RS = ""' causes the newline character to also be an
@@ -29370,6 +29371,12 @@ accomplished by using an appropriate '-v BINMODE=N' option on the
command line. 'BINMODE' is set at the time a file or pipe is opened and
cannot be changed midstream.
+ On POSIX-compatible systems, this variable's value has no effect.
+Thus, if you think your program will run on multiple different systems
+and that you may need to use 'BINMODE', you should simply set it (in the
+program or on the command line) unconditionally, and not worry about the
+operating system on which your program is running.
+
The name 'BINMODE' was chosen to match 'mawk' (*note Other
Versions::). 'mawk' and 'gawk' handle 'BINMODE' similarly; however,
'mawk' adds a '-W BINMODE=N' option and an environment variable that can
@@ -33041,7 +33048,7 @@ Index
* * (asterisk), * operator, as regexp operator: Regexp Operators.
(line 89)
* * (asterisk), * operator, null strings, matching: String Functions.
- (line 540)
+ (line 542)
* * (asterisk), ** operator: Arithmetic Ops. (line 81)
* * (asterisk), ** operator <1>: Precedence. (line 48)
* * (asterisk), **= operator: Assignment Ops. (line 129)
@@ -33438,7 +33445,7 @@ Index
* asterisk (*), * operator, as regexp operator: Regexp Operators.
(line 89)
* asterisk (*), * operator, null strings, matching: String Functions.
- (line 540)
+ (line 542)
* asterisk (*), ** operator: Arithmetic Ops. (line 81)
* asterisk (*), ** operator <1>: Precedence. (line 48)
* asterisk (*), **= operator: Assignment Ops. (line 129)
@@ -33661,7 +33668,7 @@ Index
* Brian Kernighan's awk <8>: Continue Statement. (line 44)
* Brian Kernighan's awk <9>: Nextfile Statement. (line 47)
* Brian Kernighan's awk <10>: Delete. (line 51)
-* Brian Kernighan's awk <11>: String Functions. (line 496)
+* Brian Kernighan's awk <11>: String Functions. (line 498)
* Brian Kernighan's awk <12>: Gory Details. (line 19)
* Brian Kernighan's awk <13>: I/O Functions. (line 43)
* Brian Kernighan's awk, extensions: BTL. (line 6)
@@ -33704,7 +33711,7 @@ Index
* case sensitivity, and regexps: User-modified. (line 79)
* case sensitivity, and string comparisons: User-modified. (line 79)
* case sensitivity, array indices and: Array Intro. (line 100)
-* case sensitivity, converting case: String Functions. (line 526)
+* case sensitivity, converting case: String Functions. (line 528)
* case sensitivity, example programs: Library Functions. (line 53)
* case sensitivity, gawk: Case-sensitivity. (line 26)
* case sensitivity, regexps and: Case-sensitivity. (line 6)
@@ -33836,9 +33843,9 @@ Index
* control statements: Statements. (line 6)
* controlling array scanning order: Controlling Scanning.
(line 14)
-* convert string to lower case: String Functions. (line 527)
-* convert string to number: String Functions. (line 394)
-* convert string to upper case: String Functions. (line 533)
+* convert string to lower case: String Functions. (line 529)
+* convert string to number: String Functions. (line 396)
+* convert string to upper case: String Functions. (line 535)
* converting integer array subscripts: Numeric Array Subscripts.
(line 31)
* converting, dates to timestamps: Time Functions. (line 78)
@@ -33898,7 +33905,7 @@ Index
* dark corner, field separators: Full Line Fields. (line 22)
* dark corner, FILENAME variable: Getline Notes. (line 19)
* dark corner, FILENAME variable <1>: Auto-set. (line 108)
-* dark corner, FNR/NR variables: Auto-set. (line 411)
+* dark corner, FNR/NR variables: Auto-set. (line 410)
* dark corner, format-control characters: Control Letters. (line 33)
* dark corner, format-control characters <1>: Control Letters.
(line 108)
@@ -33921,7 +33928,7 @@ Index
(line 149)
* dark corner, regexp constants, as arguments to user-defined functions: Standard Regexp Constants.
(line 43)
-* dark corner, split() function: String Functions. (line 364)
+* dark corner, split() function: String Functions. (line 366)
* dark corner, string continuation: Scalar Constants. (line 53)
* dark corner, strings, storing: gawk split records. (line 82)
* dark corner, value of ARGV[0]: Auto-set. (line 39)
@@ -34134,7 +34141,7 @@ Index
(line 6)
* differences in awk and gawk, RS/RT variables: gawk split records.
(line 58)
-* differences in awk and gawk, RT variable: Auto-set. (line 349)
+* differences in awk and gawk, RT variable: Auto-set. (line 348)
* differences in awk and gawk, single-character fields: Single Character Fields.
(line 6)
* differences in awk and gawk, split() function: String Functions.
@@ -34143,7 +34150,7 @@ Index
* differences in awk and gawk, strings <1>: Scalar Constants. (line 53)
* differences in awk and gawk, strings, storing: gawk split records.
(line 76)
-* differences in awk and gawk, SYMTAB variable: Auto-set. (line 353)
+* differences in awk and gawk, SYMTAB variable: Auto-set. (line 352)
* differences in awk and gawk, TEXTDOMAIN variable: User-modified.
(line 155)
* differences in awk and gawk, trunc-mod operation: Arithmetic Ops.
@@ -34307,7 +34314,7 @@ Index
(line 6)
* extension API version: Extension Versioning.
(line 6)
-* extension API, version number: Auto-set. (line 288)
+* extension API, version number: Auto-set. (line 287)
* extension example: Extension Example. (line 6)
* extension registration: Registration Functions.
(line 6)
@@ -34466,7 +34473,7 @@ Index
(line 12)
* FNR variable: Records. (line 6)
* FNR variable <1>: Auto-set. (line 118)
-* FNR variable, changing: Auto-set. (line 411)
+* FNR variable, changing: Auto-set. (line 410)
* for statement: For Statement. (line 6)
* for statement, looping over arrays: Scanning an Array. (line 20)
* fork() extension function: Extension Sample Fork.
@@ -34480,7 +34487,7 @@ Index
* format time string: Time Functions. (line 50)
* formats, numeric output: OFMT. (line 6)
* formatting output: Printf. (line 6)
-* formatting strings: String Functions. (line 387)
+* formatting strings: String Functions. (line 389)
* forward slash (/) to enclose regular expressions: Regexp. (line 10)
* forward slash (/), / operator: Precedence. (line 54)
* forward slash (/), /= operator: Assignment Ops. (line 129)
@@ -34570,7 +34577,7 @@ Index
* G., Daniel Richard <1>: Maintainers. (line 14)
* Garfinkle, Scott: Contributors. (line 35)
* gawk program, dynamic profiling: Profiling. (line 179)
-* gawk version: Auto-set. (line 263)
+* gawk version: Auto-set. (line 262)
* gawk, ARGIND variable in: Other Arguments. (line 15)
* gawk, awk and: Preface. (line 21)
* gawk, awk and <1>: This Manual. (line 14)
@@ -34646,13 +34653,13 @@ Index
* gawk, regular expressions, precedence: Regexp Operators. (line 161)
* gawk, RT variable in: awk split records. (line 131)
* gawk, RT variable in <1>: Multiple Line. (line 130)
-* gawk, RT variable in <2>: Auto-set. (line 349)
+* gawk, RT variable in <2>: Auto-set. (line 348)
* gawk, See Also awk: Preface. (line 34)
* gawk, source code, obtaining: Getting. (line 6)
* gawk, splitting fields and: Testing field creation.
(line 6)
* gawk, string-translation functions: I18N Functions. (line 6)
-* gawk, SYMTAB array in: Auto-set. (line 353)
+* gawk, SYMTAB array in: Auto-set. (line 352)
* gawk, TEXTDOMAIN variable in: User-modified. (line 155)
* gawk, timestamps: Time Functions. (line 6)
* gawk, uses for: Preface. (line 34)
@@ -34754,7 +34761,7 @@ Index
* gsub: Standard Regexp Constants.
(line 43)
* gsub <1>: String Functions. (line 140)
-* gsub() function, arguments of: String Functions. (line 466)
+* gsub() function, arguments of: String Functions. (line 468)
* gsub() function, escape processing: Gory Details. (line 6)
* Guerrero, Juan Manuel: Acknowledgments. (line 60)
* Guerrero, Juan Manuel <1>: Contributors. (line 150)
@@ -35044,13 +35051,13 @@ Index
* matching, expressions, See comparison expressions: Typing and Comparison.
(line 9)
* matching, leftmost longest: Multiple Line. (line 26)
-* matching, null strings: String Functions. (line 540)
+* matching, null strings: String Functions. (line 542)
* mawk utility: Escape Sequences. (line 121)
* mawk utility <1>: Getline/Pipe. (line 62)
* mawk utility <2>: Concatenation. (line 36)
* mawk utility <3>: Nextfile Statement. (line 47)
* mawk utility <4>: Other Versions. (line 39)
-* maximum precision supported by MPFR library: Auto-set. (line 277)
+* maximum precision supported by MPFR library: Auto-set. (line 276)
* McIlroy, Doug: Glossary. (line 255)
* McPhee, Patrick: Contributors. (line 103)
* message object files: Explaining gettext. (line 42)
@@ -35063,7 +35070,7 @@ Index
* messages from extensions: Printing Messages. (line 6)
* metacharacters in regular expressions: Regexp Operators. (line 6)
* metacharacters, escape sequences for: Escape Sequences. (line 140)
-* minimum precision required by MPFR library: Auto-set. (line 280)
+* minimum precision required by MPFR library: Auto-set. (line 279)
* mktime: Time Functions. (line 25)
* modifiers, in format specifiers: Format Modifiers. (line 6)
* monetary information, localization: Explaining gettext. (line 104)
@@ -35122,7 +35129,7 @@ Index
* not Boolean-logic operator: Boolean Ops. (line 6)
* NR variable: Records. (line 6)
* NR variable <1>: Auto-set. (line 143)
-* NR variable, changing: Auto-set. (line 411)
+* NR variable, changing: Auto-set. (line 410)
* null strings: awk split records. (line 121)
* null strings <1>: Regexp Field Splitting.
(line 43)
@@ -35134,7 +35141,7 @@ Index
(line 43)
* null strings, converting numbers to strings: Strings And Numbers.
(line 21)
-* null strings, matching: String Functions. (line 540)
+* null strings, matching: String Functions. (line 542)
* number as string of bits: Bitwise Functions. (line 109)
* number of array elements: String Functions. (line 201)
* number sign (#), #! (executable scripts): Executable Scripts.
@@ -35242,7 +35249,7 @@ Index
* p debugger command (alias for print): Viewing And Changing Data.
(line 35)
* Papadopoulos, Panos: Contributors. (line 131)
-* parent process ID of gawk process: Auto-set. (line 252)
+* parent process ID of gawk process: Auto-set. (line 251)
* parentheses (), in a profile: Profiling. (line 146)
* parentheses (), regexp operator: Regexp Operators. (line 81)
* password file: Passwd Functions. (line 16)
@@ -35313,7 +35320,7 @@ Index
* portability, operators: Increment Ops. (line 60)
* portability, operators, not in POSIX awk: Precedence. (line 97)
* portability, POSIXLY_CORRECT environment variable: Options. (line 376)
-* portability, substr() function: String Functions. (line 516)
+* portability, substr() function: String Functions. (line 518)
* portable object files: Explaining gettext. (line 37)
* portable object files <1>: Translator i18n. (line 6)
* portable object files, converting to message object files: I18N Example.
@@ -35412,8 +35419,8 @@ Index
* printing, unduplicated lines of text: Uniq Program. (line 6)
* printing, user information: Id Program. (line 6)
* private variables: Library Names. (line 11)
-* process group ID of gawk process: Auto-set. (line 246)
-* process ID of gawk process: Auto-set. (line 249)
+* process group ID of gawk process: Auto-set. (line 245)
+* process ID of gawk process: Auto-set. (line 248)
* processes, two-way communications with: Two-way I/O. (line 6)
* processing data: Basic High Level. (line 6)
* PROCINFO array: Auto-set. (line 148)
@@ -35565,7 +35572,7 @@ Index
* regular expressions, searching for: Egrep Program. (line 6)
* relational operators, See comparison operators: Typing and Comparison.
(line 9)
-* replace in string: String Functions. (line 412)
+* replace in string: String Functions. (line 414)
* retrying input: Retrying Input. (line 6)
* return debugger command: Debugger Execution Control.
(line 54)
@@ -35590,7 +35597,7 @@ Index
* right shift: Bitwise Functions. (line 54)
* right shift, bitwise: Bitwise Functions. (line 32)
* Ritchie, Dennis: Basic Data Typing. (line 54)
-* RLENGTH variable: Auto-set. (line 336)
+* RLENGTH variable: Auto-set. (line 335)
* RLENGTH variable, match() function and: String Functions. (line 228)
* Robbins, Arnold: Command Line Field Separator.
(line 71)
@@ -35618,11 +35625,11 @@ Index
* RS variable <1>: User-modified. (line 136)
* RS variable, multiline records and: Multiple Line. (line 17)
* rshift: Bitwise Functions. (line 54)
-* RSTART variable: Auto-set. (line 342)
+* RSTART variable: Auto-set. (line 341)
* RSTART variable, match() function and: String Functions. (line 228)
* RT variable: awk split records. (line 131)
* RT variable <1>: Multiple Line. (line 130)
-* RT variable <2>: Auto-set. (line 349)
+* RT variable <2>: Auto-set. (line 348)
* Rubin, Paul: History. (line 30)
* Rubin, Paul <1>: Contributors. (line 16)
* rule, definition of: Getting Started. (line 21)
@@ -35640,7 +35647,7 @@ Index
* scanning arrays: Scanning an Array. (line 6)
* scanning multidimensional arrays: Multiscanning. (line 11)
* Schorr, Andrew: Acknowledgments. (line 60)
-* Schorr, Andrew <1>: Auto-set. (line 381)
+* Schorr, Andrew <1>: Auto-set. (line 380)
* Schorr, Andrew <2>: Contributors. (line 136)
* Schreiber, Bert: Acknowledgments. (line 38)
* Schreiber, Rita: Acknowledgments. (line 38)
@@ -35726,7 +35733,7 @@ Index
* sidebar, Beware The Smoke and Mirrors!: Bitwise Functions. (line 127)
* sidebar, Changing FS Does Not Affect the Fields: Full Line Fields.
(line 14)
-* sidebar, Changing NR and FNR: Auto-set. (line 409)
+* sidebar, Changing NR and FNR: Auto-set. (line 408)
* sidebar, Controlling Output Buffering with system(): I/O Functions.
(line 166)
* sidebar, Escape Sequences for Metacharacters: Escape Sequences.
@@ -35735,7 +35742,7 @@ Index
(line 37)
* sidebar, Interactive Versus Noninteractive Buffering: I/O Functions.
(line 74)
-* sidebar, Matching the Null String: String Functions. (line 538)
+* sidebar, Matching the Null String: String Functions. (line 540)
* sidebar, Operator Evaluation Order: Increment Ops. (line 58)
* sidebar, Piping into sh: Redirection. (line 134)
* sidebar, Pre-POSIX awk Used OFMT for String Conversion: Strings And Numbers.
@@ -35813,7 +35820,7 @@ Index
* split() function, array elements, deleting: Delete. (line 61)
* split.awk program: Split Program. (line 30)
* sprintf: OFMT. (line 15)
-* sprintf <1>: String Functions. (line 387)
+* sprintf <1>: String Functions. (line 389)
* sprintf() function, OFMT variable and: User-modified. (line 116)
* sprintf() function, print/printf statements and: Round Function.
(line 6)
@@ -35859,7 +35866,7 @@ Index
* strings, continuation across lines: Scalar Constants. (line 53)
* strings, converting: Strings And Numbers. (line 6)
* strings, converting <1>: Bitwise Functions. (line 109)
-* strings, converting letter case: String Functions. (line 526)
+* strings, converting letter case: String Functions. (line 528)
* strings, converting, numbers to: User-modified. (line 30)
* strings, converting, numbers to <1>: User-modified. (line 107)
* strings, empty, See null strings: awk split records. (line 121)
@@ -35870,13 +35877,13 @@ Index
* strings, null: Regexp Field Splitting.
(line 43)
* strings, numeric: Variable Typing. (line 67)
-* strtonum: String Functions. (line 394)
+* strtonum: String Functions. (line 396)
* strtonum() function (gawk), --non-decimal-data option and: Nondecimal Data.
(line 35)
* sub: Standard Regexp Constants.
(line 43)
-* sub <1>: String Functions. (line 412)
-* sub() function, arguments of: String Functions. (line 466)
+* sub <1>: String Functions. (line 414)
+* sub() function, arguments of: String Functions. (line 468)
* sub() function, escape processing: Gory Details. (line 6)
* subscript separators: User-modified. (line 149)
* subscripts in arrays, multidimensional: Multidimensional. (line 10)
@@ -35890,12 +35897,12 @@ Index
* SUBSEP variable, and multidimensional arrays: Multidimensional.
(line 16)
* substitute in string: String Functions. (line 89)
-* substr: String Functions. (line 485)
-* substring: String Functions. (line 485)
+* substr: String Functions. (line 487)
+* substring: String Functions. (line 487)
* Sumner, Andrew: Other Versions. (line 64)
-* supplementary groups of gawk process: Auto-set. (line 293)
+* supplementary groups of gawk process: Auto-set. (line 292)
* switch statement: Switch Statement. (line 6)
-* SYMTAB array: Auto-set. (line 353)
+* SYMTAB array: Auto-set. (line 352)
* syntactic ambiguity: /= operator vs. /=.../ regexp constant: Assignment Ops.
(line 149)
* system: I/O Functions. (line 106)
@@ -35951,8 +35958,8 @@ Index
* timestamps, converting dates to: Time Functions. (line 78)
* timestamps, formatted: Getlocaltime Function.
(line 6)
-* tolower: String Functions. (line 527)
-* toupper: String Functions. (line 533)
+* tolower: String Functions. (line 529)
+* toupper: String Functions. (line 535)
* tr utility: Translate Program. (line 6)
* trace debugger command: Miscellaneous Debugger Commands.
(line 108)
@@ -35978,7 +35985,7 @@ Index
* troubleshooting, gawk, fatal errors, function arguments: Calling Built-in.
(line 16)
* troubleshooting, getline function: File Checking. (line 25)
-* troubleshooting, gsub()/sub() functions: String Functions. (line 476)
+* troubleshooting, gsub()/sub() functions: String Functions. (line 478)
* troubleshooting, match() function: String Functions. (line 292)
* troubleshooting, print statement, omitting commas: Print Examples.
(line 30)
@@ -35988,7 +35995,7 @@ Index
* troubleshooting, regexp constants vs. string constants: Computed Regexps.
(line 40)
* troubleshooting, string concatenation: Concatenation. (line 27)
-* troubleshooting, substr() function: String Functions. (line 503)
+* troubleshooting, substr() function: String Functions. (line 505)
* troubleshooting, system() function: I/O Functions. (line 128)
* troubleshooting, typographical errors, global variables: Options.
(line 99)
@@ -36077,10 +36084,10 @@ Index
* variables, uninitialized, as array subscripts: Uninitialized Subscripts.
(line 6)
* variables, user-defined: Variables. (line 6)
-* version of gawk: Auto-set. (line 263)
-* version of gawk extension API: Auto-set. (line 288)
-* version of GNU MP library: Auto-set. (line 271)
-* version of GNU MPFR library: Auto-set. (line 273)
+* version of gawk: Auto-set. (line 262)
+* version of gawk extension API: Auto-set. (line 287)
+* version of GNU MP library: Auto-set. (line 270)
+* version of GNU MPFR library: Auto-set. (line 272)
* vertical bar (|): Regexp Operators. (line 70)
* vertical bar (|), | operator (I/O): Getline/Pipe. (line 10)
* vertical bar (|), | operator (I/O) <1>: Precedence. (line 64)
@@ -36359,368 +36366,368 @@ Node: Exit Statement454653
Node: Built-in Variables457056
Node: User-modified458189
Node: Auto-set465956
-Ref: Auto-set-Footnote-1482806
-Ref: Auto-set-Footnote-2483012
-Node: ARGC and ARGV483068
-Node: Pattern Action Summary487281
-Node: Arrays489711
-Node: Array Basics491040
-Node: Array Intro491884
-Ref: figure-array-elements493859
-Ref: Array Intro-Footnote-1496563
-Node: Reference to Elements496691
-Node: Assigning Elements499155
-Node: Array Example499646
-Node: Scanning an Array501405
-Node: Controlling Scanning504427
-Ref: Controlling Scanning-Footnote-1509826
-Node: Numeric Array Subscripts510142
-Node: Uninitialized Subscripts512326
-Node: Delete513945
-Ref: Delete-Footnote-1516697
-Node: Multidimensional516754
-Node: Multiscanning519849
-Node: Arrays of Arrays521440
-Node: Arrays Summary526208
-Node: Functions528301
-Node: Built-in529339
-Node: Calling Built-in530420
-Node: Numeric Functions532416
-Ref: Numeric Functions-Footnote-1536444
-Ref: Numeric Functions-Footnote-2536801
-Ref: Numeric Functions-Footnote-3536849
-Node: String Functions537121
-Ref: String Functions-Footnote-1560830
-Ref: String Functions-Footnote-2560958
-Ref: String Functions-Footnote-3561206
-Node: Gory Details561293
-Ref: table-sub-escapes563084
-Ref: table-sub-proposed564603
-Ref: table-posix-sub565966
-Ref: table-gensub-escapes567507
-Ref: Gory Details-Footnote-1568330
-Node: I/O Functions568484
-Ref: table-system-return-values574952
-Ref: I/O Functions-Footnote-1577032
-Ref: I/O Functions-Footnote-2577180
-Node: Time Functions577300
-Ref: Time Functions-Footnote-1587971
-Ref: Time Functions-Footnote-2588039
-Ref: Time Functions-Footnote-3588197
-Ref: Time Functions-Footnote-4588308
-Ref: Time Functions-Footnote-5588420
-Ref: Time Functions-Footnote-6588647
-Node: Bitwise Functions588913
-Ref: table-bitwise-ops589507
-Ref: Bitwise Functions-Footnote-1595570
-Ref: Bitwise Functions-Footnote-2595743
-Node: Type Functions595934
-Node: I18N Functions598685
-Node: User-defined600336
-Node: Definition Syntax601141
-Ref: Definition Syntax-Footnote-1606828
-Node: Function Example606899
-Ref: Function Example-Footnote-1609821
-Node: Function Caveats609843
-Node: Calling A Function610361
-Node: Variable Scope611319
-Node: Pass By Value/Reference614313
-Node: Return Statement617812
-Node: Dynamic Typing620791
-Node: Indirect Calls621721
-Ref: Indirect Calls-Footnote-1631973
-Node: Functions Summary632101
-Node: Library Functions634806
-Ref: Library Functions-Footnote-1638413
-Ref: Library Functions-Footnote-2638556
-Node: Library Names638727
-Ref: Library Names-Footnote-1642187
-Ref: Library Names-Footnote-2642410
-Node: General Functions642496
-Node: Strtonum Function643599
-Node: Assert Function646621
-Node: Round Function649947
-Node: Cliff Random Function651487
-Node: Ordinal Functions652503
-Ref: Ordinal Functions-Footnote-1655566
-Ref: Ordinal Functions-Footnote-2655818
-Node: Join Function656028
-Ref: Join Function-Footnote-1657798
-Node: Getlocaltime Function657998
-Node: Readfile Function661740
-Node: Shell Quoting663717
-Node: Data File Management665118
-Node: Filetrans Function665750
-Node: Rewind Function669846
-Node: File Checking671756
-Ref: File Checking-Footnote-1673090
-Node: Empty Files673291
-Node: Ignoring Assigns675270
-Node: Getopt Function676820
-Ref: Getopt Function-Footnote-1688289
-Node: Passwd Functions688489
-Ref: Passwd Functions-Footnote-1697328
-Node: Group Functions697416
-Ref: Group Functions-Footnote-1705314
-Node: Walking Arrays705521
-Node: Library Functions Summary708529
-Node: Library Exercises709935
-Node: Sample Programs710400
-Node: Running Examples711170
-Node: Clones711898
-Node: Cut Program713122
-Node: Egrep Program723051
-Ref: Egrep Program-Footnote-1730563
-Node: Id Program730673
-Node: Split Program734353
-Ref: Split Program-Footnote-1737811
-Node: Tee Program737940
-Node: Uniq Program740730
-Node: Wc Program748156
-Ref: Wc Program-Footnote-1752411
-Node: Miscellaneous Programs752505
-Node: Dupword Program753718
-Node: Alarm Program755748
-Node: Translate Program760603
-Ref: Translate Program-Footnote-1765168
-Node: Labels Program765438
-Ref: Labels Program-Footnote-1768789
-Node: Word Sorting768873
-Node: History Sorting772945
-Node: Extract Program774780
-Node: Simple Sed782834
-Node: Igawk Program785908
-Ref: Igawk Program-Footnote-1800239
-Ref: Igawk Program-Footnote-2800441
-Ref: Igawk Program-Footnote-3800563
-Node: Anagram Program800678
-Node: Signature Program803740
-Node: Programs Summary804987
-Node: Programs Exercises806201
-Ref: Programs Exercises-Footnote-1810330
-Node: Advanced Features810421
-Node: Nondecimal Data812411
-Node: Array Sorting814002
-Node: Controlling Array Traversal814702
-Ref: Controlling Array Traversal-Footnote-1823070
-Node: Array Sorting Functions823188
-Ref: Array Sorting Functions-Footnote-1828279
-Node: Two-way I/O828475
-Ref: Two-way I/O-Footnote-1836195
-Ref: Two-way I/O-Footnote-2836382
-Node: TCP/IP Networking836464
-Node: Profiling839582
-Node: Advanced Features Summary848587
-Node: Internationalization850431
-Node: I18N and L10N851911
-Node: Explaining gettext852598
-Ref: Explaining gettext-Footnote-1858490
-Ref: Explaining gettext-Footnote-2858675
-Node: Programmer i18n858840
-Ref: Programmer i18n-Footnote-1863789
-Node: Translator i18n863838
-Node: String Extraction864632
-Ref: String Extraction-Footnote-1865764
-Node: Printf Ordering865850
-Ref: Printf Ordering-Footnote-1868636
-Node: I18N Portability868700
-Ref: I18N Portability-Footnote-1871156
-Node: I18N Example871219
-Ref: I18N Example-Footnote-1874025
-Node: Gawk I18N874098
-Node: I18N Summary874743
-Node: Debugger876084
-Node: Debugging877107
-Node: Debugging Concepts877548
-Node: Debugging Terms879357
-Node: Awk Debugging881932
-Node: Sample Debugging Session882838
-Node: Debugger Invocation883372
-Node: Finding The Bug884758
-Node: List of Debugger Commands891236
-Node: Breakpoint Control892569
-Node: Debugger Execution Control896263
-Node: Viewing And Changing Data899625
-Node: Execution Stack902999
-Node: Debugger Info904636
-Node: Miscellaneous Debugger Commands908707
-Node: Readline Support913769
-Node: Limitations914665
-Node: Debugging Summary916774
-Node: Arbitrary Precision Arithmetic918053
-Node: Computer Arithmetic919538
-Ref: table-numeric-ranges923304
-Ref: table-floating-point-ranges923797
-Ref: Computer Arithmetic-Footnote-1924455
-Node: Math Definitions924512
-Ref: table-ieee-formats927828
-Ref: Math Definitions-Footnote-1928431
-Node: MPFR features928536
-Node: FP Math Caution930254
-Ref: FP Math Caution-Footnote-1931326
-Node: Inexactness of computations931695
-Node: Inexact representation932655
-Node: Comparing FP Values934015
-Node: Errors accumulate935256
-Node: Getting Accuracy936689
-Node: Try To Round939399
-Node: Setting precision940298
-Ref: table-predefined-precision-strings940995
-Node: Setting the rounding mode942825
-Ref: table-gawk-rounding-modes943199
-Ref: Setting the rounding mode-Footnote-1947130
-Node: Arbitrary Precision Integers947309
-Ref: Arbitrary Precision Integers-Footnote-1950484
-Node: Checking for MPFR950633
-Node: POSIX Floating Point Problems952107
-Ref: POSIX Floating Point Problems-Footnote-1956392
-Node: Floating point summary956430
-Node: Dynamic Extensions958620
-Node: Extension Intro960173
-Node: Plugin License961439
-Node: Extension Mechanism Outline962236
-Ref: figure-load-extension962675
-Ref: figure-register-new-function964240
-Ref: figure-call-new-function965332
-Node: Extension API Description967394
-Node: Extension API Functions Introduction969036
-Node: General Data Types974576
-Ref: General Data Types-Footnote-1982937
-Node: Memory Allocation Functions983236
-Ref: Memory Allocation Functions-Footnote-1987446
-Node: Constructor Functions987545
-Node: Registration Functions991131
-Node: Extension Functions991816
-Node: Exit Callback Functions997031
-Node: Extension Version String998281
-Node: Input Parsers998944
-Node: Output Wrappers1011665
-Node: Two-way processors1016177
-Node: Printing Messages1018442
-Ref: Printing Messages-Footnote-11019613
-Node: Updating ERRNO1019766
-Node: Requesting Values1020505
-Ref: table-value-types-returned1021242
-Node: Accessing Parameters1022178
-Node: Symbol Table Access1023413
-Node: Symbol table by name1023925
-Node: Symbol table by cookie1025714
-Ref: Symbol table by cookie-Footnote-11029899
-Node: Cached values1029963
-Ref: Cached values-Footnote-11033499
-Node: Array Manipulation1033652
-Ref: Array Manipulation-Footnote-11034743
-Node: Array Data Types1034780
-Ref: Array Data Types-Footnote-11037438
-Node: Array Functions1037530
-Node: Flattening Arrays1042028
-Node: Creating Arrays1049004
-Node: Redirection API1053771
-Node: Extension API Variables1056604
-Node: Extension Versioning1057315
-Ref: gawk-api-version1057744
-Node: Extension GMP/MPFR Versioning1059475
-Node: Extension API Informational Variables1061103
-Node: Extension API Boilerplate1062176
-Node: Changes from API V11066150
-Node: Finding Extensions1067722
-Node: Extension Example1068281
-Node: Internal File Description1069079
-Node: Internal File Ops1073159
-Ref: Internal File Ops-Footnote-11084509
-Node: Using Internal File Ops1084649
-Ref: Using Internal File Ops-Footnote-11087032
-Node: Extension Samples1087306
-Node: Extension Sample File Functions1088835
-Node: Extension Sample Fnmatch1096484
-Node: Extension Sample Fork1097971
-Node: Extension Sample Inplace1099189
-Node: Extension Sample Ord1102406
-Node: Extension Sample Readdir1103242
-Ref: table-readdir-file-types1104131
-Node: Extension Sample Revout1104936
-Node: Extension Sample Rev2way1105525
-Node: Extension Sample Read write array1106265
-Node: Extension Sample Readfile1108207
-Node: Extension Sample Time1109302
-Node: Extension Sample API Tests1110650
-Node: gawkextlib1111142
-Node: Extension summary1114060
-Node: Extension Exercises1117762
-Node: Language History1119260
-Node: V7/SVR3.11120916
-Node: SVR41123068
-Node: POSIX1124502
-Node: BTL1125882
-Node: POSIX/GNU1126611
-Node: Feature History1132389
-Node: Common Extensions1148435
-Node: Ranges and Locales1149718
-Ref: Ranges and Locales-Footnote-11154334
-Ref: Ranges and Locales-Footnote-21154361
-Ref: Ranges and Locales-Footnote-31154596
-Node: Contributors1154817
-Node: History summary1160762
-Node: Installation1162142
-Node: Gawk Distribution1163086
-Node: Getting1163570
-Node: Extracting1164533
-Node: Distribution contents1166171
-Node: Unix Installation1172651
-Node: Quick Installation1173333
-Node: Shell Startup Files1175747
-Node: Additional Configuration Options1176836
-Node: Configuration Philosophy1179001
-Node: Non-Unix Installation1181370
-Node: PC Installation1181830
-Node: PC Binary Installation1182668
-Node: PC Compiling1183103
-Node: PC Using1184220
-Node: Cygwin1187435
-Node: MSYS1188534
-Node: VMS Installation1189035
-Node: VMS Compilation1189826
-Ref: VMS Compilation-Footnote-11191055
-Node: VMS Dynamic Extensions1191113
-Node: VMS Installation Details1192798
-Node: VMS Running1195051
-Node: VMS GNV1199330
-Node: VMS Old Gawk1200065
-Node: Bugs1200536
-Node: Bug address1201199
-Node: Usenet1204181
-Node: Maintainers1205185
-Node: Other Versions1206446
-Node: Installation summary1213004
-Node: Notes1214206
-Node: Compatibility Mode1215000
-Node: Additions1215782
-Node: Accessing The Source1216707
-Node: Adding Code1218144
-Node: New Ports1224363
-Node: Derived Files1228851
-Ref: Derived Files-Footnote-11234497
-Ref: Derived Files-Footnote-21234532
-Ref: Derived Files-Footnote-31235130
-Node: Future Extensions1235244
-Node: Implementation Limitations1235902
-Node: Extension Design1237085
-Node: Old Extension Problems1238229
-Ref: Old Extension Problems-Footnote-11239747
-Node: Extension New Mechanism Goals1239804
-Ref: Extension New Mechanism Goals-Footnote-11243168
-Node: Extension Other Design Decisions1243357
-Node: Extension Future Growth1245470
-Node: Notes summary1246306
-Node: Basic Concepts1247481
-Node: Basic High Level1248162
-Ref: figure-general-flow1248444
-Ref: figure-process-flow1249129
-Ref: Basic High Level-Footnote-11252430
-Node: Basic Data Typing1252615
-Node: Glossary1255943
-Node: Copying1287781
-Node: GNU Free Documentation License1325324
-Node: Index1350444
+Ref: Auto-set-Footnote-1482792
+Ref: Auto-set-Footnote-2482998
+Node: ARGC and ARGV483054
+Node: Pattern Action Summary487267
+Node: Arrays489697
+Node: Array Basics491026
+Node: Array Intro491870
+Ref: figure-array-elements493845
+Ref: Array Intro-Footnote-1496549
+Node: Reference to Elements496677
+Node: Assigning Elements499141
+Node: Array Example499632
+Node: Scanning an Array501391
+Node: Controlling Scanning504413
+Ref: Controlling Scanning-Footnote-1509812
+Node: Numeric Array Subscripts510128
+Node: Uninitialized Subscripts512312
+Node: Delete513931
+Ref: Delete-Footnote-1516683
+Node: Multidimensional516740
+Node: Multiscanning519835
+Node: Arrays of Arrays521426
+Node: Arrays Summary526194
+Node: Functions528287
+Node: Built-in529325
+Node: Calling Built-in530406
+Node: Numeric Functions532402
+Ref: Numeric Functions-Footnote-1536430
+Ref: Numeric Functions-Footnote-2536787
+Ref: Numeric Functions-Footnote-3536835
+Node: String Functions537107
+Ref: String Functions-Footnote-1560965
+Ref: String Functions-Footnote-2561093
+Ref: String Functions-Footnote-3561341
+Node: Gory Details561428
+Ref: table-sub-escapes563219
+Ref: table-sub-proposed564738
+Ref: table-posix-sub566101
+Ref: table-gensub-escapes567642
+Ref: Gory Details-Footnote-1568465
+Node: I/O Functions568619
+Ref: table-system-return-values575087
+Ref: I/O Functions-Footnote-1577167
+Ref: I/O Functions-Footnote-2577315
+Node: Time Functions577435
+Ref: Time Functions-Footnote-1588106
+Ref: Time Functions-Footnote-2588174
+Ref: Time Functions-Footnote-3588332
+Ref: Time Functions-Footnote-4588443
+Ref: Time Functions-Footnote-5588555
+Ref: Time Functions-Footnote-6588782
+Node: Bitwise Functions589048
+Ref: table-bitwise-ops589642
+Ref: Bitwise Functions-Footnote-1595705
+Ref: Bitwise Functions-Footnote-2595878
+Node: Type Functions596069
+Node: I18N Functions598820
+Node: User-defined600471
+Node: Definition Syntax601276
+Ref: Definition Syntax-Footnote-1606963
+Node: Function Example607034
+Ref: Function Example-Footnote-1609956
+Node: Function Caveats609978
+Node: Calling A Function610496
+Node: Variable Scope611454
+Node: Pass By Value/Reference614448
+Node: Return Statement617947
+Node: Dynamic Typing620926
+Node: Indirect Calls621856
+Ref: Indirect Calls-Footnote-1632108
+Node: Functions Summary632236
+Node: Library Functions634941
+Ref: Library Functions-Footnote-1638548
+Ref: Library Functions-Footnote-2638691
+Node: Library Names638862
+Ref: Library Names-Footnote-1642322
+Ref: Library Names-Footnote-2642545
+Node: General Functions642631
+Node: Strtonum Function643734
+Node: Assert Function646756
+Node: Round Function650082
+Node: Cliff Random Function651622
+Node: Ordinal Functions652638
+Ref: Ordinal Functions-Footnote-1655701
+Ref: Ordinal Functions-Footnote-2655953
+Node: Join Function656163
+Ref: Join Function-Footnote-1657933
+Node: Getlocaltime Function658133
+Node: Readfile Function661875
+Node: Shell Quoting663852
+Node: Data File Management665253
+Node: Filetrans Function665885
+Node: Rewind Function669981
+Node: File Checking671891
+Ref: File Checking-Footnote-1673225
+Node: Empty Files673426
+Node: Ignoring Assigns675405
+Node: Getopt Function676955
+Ref: Getopt Function-Footnote-1688424
+Node: Passwd Functions688624
+Ref: Passwd Functions-Footnote-1697463
+Node: Group Functions697551
+Ref: Group Functions-Footnote-1705449
+Node: Walking Arrays705656
+Node: Library Functions Summary708664
+Node: Library Exercises710070
+Node: Sample Programs710535
+Node: Running Examples711305
+Node: Clones712033
+Node: Cut Program713257
+Node: Egrep Program723186
+Ref: Egrep Program-Footnote-1730698
+Node: Id Program730808
+Node: Split Program734488
+Ref: Split Program-Footnote-1737946
+Node: Tee Program738075
+Node: Uniq Program740865
+Node: Wc Program748291
+Ref: Wc Program-Footnote-1752546
+Node: Miscellaneous Programs752640
+Node: Dupword Program753853
+Node: Alarm Program755883
+Node: Translate Program760738
+Ref: Translate Program-Footnote-1765303
+Node: Labels Program765573
+Ref: Labels Program-Footnote-1768924
+Node: Word Sorting769008
+Node: History Sorting773080
+Node: Extract Program774915
+Node: Simple Sed782969
+Node: Igawk Program786043
+Ref: Igawk Program-Footnote-1800374
+Ref: Igawk Program-Footnote-2800576
+Ref: Igawk Program-Footnote-3800698
+Node: Anagram Program800813
+Node: Signature Program803875
+Node: Programs Summary805122
+Node: Programs Exercises806336
+Ref: Programs Exercises-Footnote-1810465
+Node: Advanced Features810556
+Node: Nondecimal Data812546
+Node: Array Sorting814137
+Node: Controlling Array Traversal814837
+Ref: Controlling Array Traversal-Footnote-1823205
+Node: Array Sorting Functions823323
+Ref: Array Sorting Functions-Footnote-1828414
+Node: Two-way I/O828610
+Ref: Two-way I/O-Footnote-1836330
+Ref: Two-way I/O-Footnote-2836517
+Node: TCP/IP Networking836599
+Node: Profiling839717
+Node: Advanced Features Summary848722
+Node: Internationalization850566
+Node: I18N and L10N852046
+Node: Explaining gettext852733
+Ref: Explaining gettext-Footnote-1858625
+Ref: Explaining gettext-Footnote-2858810
+Node: Programmer i18n858975
+Ref: Programmer i18n-Footnote-1863924
+Node: Translator i18n863973
+Node: String Extraction864767
+Ref: String Extraction-Footnote-1865899
+Node: Printf Ordering865985
+Ref: Printf Ordering-Footnote-1868771
+Node: I18N Portability868835
+Ref: I18N Portability-Footnote-1871291
+Node: I18N Example871354
+Ref: I18N Example-Footnote-1874160
+Node: Gawk I18N874233
+Node: I18N Summary874878
+Node: Debugger876219
+Node: Debugging877242
+Node: Debugging Concepts877683
+Node: Debugging Terms879492
+Node: Awk Debugging882067
+Node: Sample Debugging Session882973
+Node: Debugger Invocation883507
+Node: Finding The Bug884893
+Node: List of Debugger Commands891371
+Node: Breakpoint Control892704
+Node: Debugger Execution Control896398
+Node: Viewing And Changing Data899760
+Node: Execution Stack903134
+Node: Debugger Info904771
+Node: Miscellaneous Debugger Commands908842
+Node: Readline Support913904
+Node: Limitations914800
+Node: Debugging Summary916909
+Node: Arbitrary Precision Arithmetic918188
+Node: Computer Arithmetic919673
+Ref: table-numeric-ranges923439
+Ref: table-floating-point-ranges923932
+Ref: Computer Arithmetic-Footnote-1924590
+Node: Math Definitions924647
+Ref: table-ieee-formats927963
+Ref: Math Definitions-Footnote-1928566
+Node: MPFR features928671
+Node: FP Math Caution930389
+Ref: FP Math Caution-Footnote-1931461
+Node: Inexactness of computations931830
+Node: Inexact representation932790
+Node: Comparing FP Values934150
+Node: Errors accumulate935391
+Node: Getting Accuracy936824
+Node: Try To Round939534
+Node: Setting precision940433
+Ref: table-predefined-precision-strings941130
+Node: Setting the rounding mode942960
+Ref: table-gawk-rounding-modes943334
+Ref: Setting the rounding mode-Footnote-1947265
+Node: Arbitrary Precision Integers947444
+Ref: Arbitrary Precision Integers-Footnote-1950619
+Node: Checking for MPFR950768
+Node: POSIX Floating Point Problems952242
+Ref: POSIX Floating Point Problems-Footnote-1956527
+Node: Floating point summary956565
+Node: Dynamic Extensions958755
+Node: Extension Intro960308
+Node: Plugin License961574
+Node: Extension Mechanism Outline962371
+Ref: figure-load-extension962810
+Ref: figure-register-new-function964375
+Ref: figure-call-new-function965467
+Node: Extension API Description967529
+Node: Extension API Functions Introduction969171
+Node: General Data Types974711
+Ref: General Data Types-Footnote-1983072
+Node: Memory Allocation Functions983371
+Ref: Memory Allocation Functions-Footnote-1987581
+Node: Constructor Functions987680
+Node: Registration Functions991266
+Node: Extension Functions991951
+Node: Exit Callback Functions997166
+Node: Extension Version String998416
+Node: Input Parsers999079
+Node: Output Wrappers1011800
+Node: Two-way processors1016312
+Node: Printing Messages1018577
+Ref: Printing Messages-Footnote-11019748
+Node: Updating ERRNO1019901
+Node: Requesting Values1020640
+Ref: table-value-types-returned1021377
+Node: Accessing Parameters1022313
+Node: Symbol Table Access1023548
+Node: Symbol table by name1024060
+Node: Symbol table by cookie1025849
+Ref: Symbol table by cookie-Footnote-11030034
+Node: Cached values1030098
+Ref: Cached values-Footnote-11033634
+Node: Array Manipulation1033787
+Ref: Array Manipulation-Footnote-11034878
+Node: Array Data Types1034915
+Ref: Array Data Types-Footnote-11037573
+Node: Array Functions1037665
+Node: Flattening Arrays1042163
+Node: Creating Arrays1049139
+Node: Redirection API1053906
+Node: Extension API Variables1056739
+Node: Extension Versioning1057450
+Ref: gawk-api-version1057879
+Node: Extension GMP/MPFR Versioning1059610
+Node: Extension API Informational Variables1061238
+Node: Extension API Boilerplate1062311
+Node: Changes from API V11066285
+Node: Finding Extensions1067857
+Node: Extension Example1068416
+Node: Internal File Description1069214
+Node: Internal File Ops1073294
+Ref: Internal File Ops-Footnote-11084644
+Node: Using Internal File Ops1084784
+Ref: Using Internal File Ops-Footnote-11087167
+Node: Extension Samples1087441
+Node: Extension Sample File Functions1088970
+Node: Extension Sample Fnmatch1096619
+Node: Extension Sample Fork1098106
+Node: Extension Sample Inplace1099324
+Node: Extension Sample Ord1102541
+Node: Extension Sample Readdir1103377
+Ref: table-readdir-file-types1104266
+Node: Extension Sample Revout1105071
+Node: Extension Sample Rev2way1105660
+Node: Extension Sample Read write array1106400
+Node: Extension Sample Readfile1108342
+Node: Extension Sample Time1109437
+Node: Extension Sample API Tests1110785
+Node: gawkextlib1111277
+Node: Extension summary1114195
+Node: Extension Exercises1117897
+Node: Language History1119395
+Node: V7/SVR3.11121051
+Node: SVR41123203
+Node: POSIX1124637
+Node: BTL1126017
+Node: POSIX/GNU1126746
+Node: Feature History1132524
+Node: Common Extensions1148570
+Node: Ranges and Locales1149853
+Ref: Ranges and Locales-Footnote-11154469
+Ref: Ranges and Locales-Footnote-21154496
+Ref: Ranges and Locales-Footnote-31154731
+Node: Contributors1154952
+Node: History summary1160897
+Node: Installation1162277
+Node: Gawk Distribution1163221
+Node: Getting1163705
+Node: Extracting1164668
+Node: Distribution contents1166306
+Node: Unix Installation1172786
+Node: Quick Installation1173468
+Node: Shell Startup Files1175882
+Node: Additional Configuration Options1176971
+Node: Configuration Philosophy1179136
+Node: Non-Unix Installation1181505
+Node: PC Installation1181965
+Node: PC Binary Installation1182803
+Node: PC Compiling1183238
+Node: PC Using1184355
+Node: Cygwin1187908
+Node: MSYS1189007
+Node: VMS Installation1189508
+Node: VMS Compilation1190299
+Ref: VMS Compilation-Footnote-11191528
+Node: VMS Dynamic Extensions1191586
+Node: VMS Installation Details1193271
+Node: VMS Running1195524
+Node: VMS GNV1199803
+Node: VMS Old Gawk1200538
+Node: Bugs1201009
+Node: Bug address1201672
+Node: Usenet1204654
+Node: Maintainers1205658
+Node: Other Versions1206919
+Node: Installation summary1213477
+Node: Notes1214679
+Node: Compatibility Mode1215473
+Node: Additions1216255
+Node: Accessing The Source1217180
+Node: Adding Code1218617
+Node: New Ports1224836
+Node: Derived Files1229324
+Ref: Derived Files-Footnote-11234970
+Ref: Derived Files-Footnote-21235005
+Ref: Derived Files-Footnote-31235603
+Node: Future Extensions1235717
+Node: Implementation Limitations1236375
+Node: Extension Design1237558
+Node: Old Extension Problems1238702
+Ref: Old Extension Problems-Footnote-11240220
+Node: Extension New Mechanism Goals1240277
+Ref: Extension New Mechanism Goals-Footnote-11243641
+Node: Extension Other Design Decisions1243830
+Node: Extension Future Growth1245943
+Node: Notes summary1246779
+Node: Basic Concepts1247954
+Node: Basic High Level1248635
+Ref: figure-general-flow1248917
+Ref: figure-process-flow1249602
+Ref: Basic High Level-Footnote-11252903
+Node: Basic Data Typing1253088
+Node: Glossary1256416
+Node: Copying1288254
+Node: GNU Free Documentation License1325797
+Node: Index1350917

End Tag Table
diff --git a/doc/gawk.texi b/doc/gawk.texi
index 6f5f4f81..d9f6bc9c 100644
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -8105,7 +8105,6 @@ FPAT = "([^,]*)|(\"[^\"]+\")"
Finally, the @code{patsplit()} function makes the same functionality
available for splitting regular strings (@pxref{String Functions}).
-
@node Testing field creation
@section Checking How @command{gawk} Is Splitting Records
@@ -15762,19 +15761,18 @@ This element gives a string indicating the platform for which
@item "vms"
OpenVMS or Vax/VMS.
-@item "macosx"
-Mac OS X.
-
-@item "cygwin"
-@itemx "djgpp"
+@item "djgpp"
@itemx "mingw"
-Microsoft Windows, using either Cygwin, DJGPP, or MinGW, respectively.
+Microsoft Windows, using either DJGPP or MinGW, respectively.
@item "os2"
OS/2.
+@item "os390"
+OS/390.
+
@item "posix"
-GNU/Linux and legacy Unix systems.
+GNU/Linux, Cygwin, Mac OS X, and legacy Unix systems.
@end table
@item PROCINFO["pgrpid"]
@@ -18431,8 +18429,8 @@ whitespace goes into @code{@var{seps}[@var{n}]}, where @var{n} is the
return value of
@code{split()} (i.e., the number of elements in @var{array}).
-The @code{split()} function splits strings into pieces in a
-manner similar to the way input lines are split into fields. For example:
+The @code{split()} function splits strings into pieces in the same way
+that input lines are split into fields. For example:
@example
split("cul-de-sac", a, "-", seps)
@@ -18468,6 +18466,8 @@ are separated by runs of whitespace.
Also, as with input field splitting, if @var{fieldsep} is the null string, each
individual character in the string is split into its own array element.
@value{COMMONEXT}
+Additionally, if @var{fieldsep} is a single-character string, that string acts
+as the separator, even if its value is a regular expression metacharacter.
Note, however, that @code{RS} has no effect on the way @code{split()}
works. Even though @samp{RS = ""} causes the newline character to also be an input
@@ -40049,6 +40049,12 @@ appropriate @samp{-v BINMODE=@var{N}} option on the command line.
@code{BINMODE} is set at the time a file or pipe is opened and cannot be
changed midstream.
+On POSIX-compatible systems, this variable's value has no effect.
+Thus, if you think your program will run on multiple different systems
+and that you may need to use @code{BINMODE}, you should simply set it
+(in the program or on the command line) unconditionally, and not worry
+about the operating system on which your program is running.
+
The name @code{BINMODE} was chosen to match @command{mawk}
(@pxref{Other Versions}).
@command{mawk} and @command{gawk} handle @code{BINMODE} similarly; however,
diff --git a/doc/gawktexi.in b/doc/gawktexi.in
index a8434568..e7bb7022 100644
--- a/doc/gawktexi.in
+++ b/doc/gawktexi.in
@@ -7704,7 +7704,6 @@ FPAT = "([^,]*)|(\"[^\"]+\")"
Finally, the @code{patsplit()} function makes the same functionality
available for splitting regular strings (@pxref{String Functions}).
-
@node Testing field creation
@section Checking How @command{gawk} Is Splitting Records
@@ -15080,19 +15079,18 @@ This element gives a string indicating the platform for which
@item "vms"
OpenVMS or Vax/VMS.
-@item "macosx"
-Mac OS X.
-
-@item "cygwin"
-@itemx "djgpp"
+@item "djgpp"
@itemx "mingw"
-Microsoft Windows, using either Cygwin, DJGPP, or MinGW, respectively.
+Microsoft Windows, using either DJGPP or MinGW, respectively.
@item "os2"
OS/2.
+@item "os390"
+OS/390.
+
@item "posix"
-GNU/Linux and legacy Unix systems.
+GNU/Linux, Cygwin, Mac OS X, and legacy Unix systems.
@end table
@item PROCINFO["pgrpid"]
@@ -17703,8 +17701,8 @@ whitespace goes into @code{@var{seps}[@var{n}]}, where @var{n} is the
return value of
@code{split()} (i.e., the number of elements in @var{array}).
-The @code{split()} function splits strings into pieces in a
-manner similar to the way input lines are split into fields. For example:
+The @code{split()} function splits strings into pieces in the same way
+that input lines are split into fields. For example:
@example
split("cul-de-sac", a, "-", seps)
@@ -17740,6 +17738,8 @@ are separated by runs of whitespace.
Also, as with input field splitting, if @var{fieldsep} is the null string, each
individual character in the string is split into its own array element.
@value{COMMONEXT}
+Additionally, if @var{fieldsep} is a single-character string, that string acts
+as the separator, even if its value is a regular expression metacharacter.
Note, however, that @code{RS} has no effect on the way @code{split()}
works. Even though @samp{RS = ""} causes the newline character to also be an input
@@ -39023,6 +39023,12 @@ appropriate @samp{-v BINMODE=@var{N}} option on the command line.
@code{BINMODE} is set at the time a file or pipe is opened and cannot be
changed midstream.
+On POSIX-compatible systems, this variable's value has no effect.
+Thus, if you think your program will run on multiple different systems
+and that you may need to use @code{BINMODE}, you should simply set it
+(in the program or on the command line) unconditionally, and not worry
+about the operating system on which your program is running.
+
The name @code{BINMODE} was chosen to match @command{mawk}
(@pxref{Other Versions}).
@command{mawk} and @command{gawk} handle @code{BINMODE} similarly; however,
diff --git a/main.c b/main.c
index a97bd180..45cae61d 100644
--- a/main.c
+++ b/main.c
@@ -1777,18 +1777,17 @@ set_locale_stuff(void)
static const char *
platform_name()
{
+ // Cygwin and Mac OS X count as POSIX
#if defined(__VMS)
return "vms";
-#elif defined(__APPLE__)
- return "macosx";
#elif defined(__MINGW32__)
return "mingw";
#elif defined(__DJGPP__)
return "djgpp";
-#elif defined(__CYGWIN__)
- return "cygwin";
#elif defined(__EMX__)
return "os2";
+#elif defined(USE_EBCDIC)
+ return "os390";
#else
return "posix";
#endif