summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2022-11-13 21:12:25 +0200
committerArnold D. Robbins <arnold@skeeve.com>2022-11-13 21:12:25 +0200
commite56990c4cb97de58281b5e6e67f71547ffc57719 (patch)
treec7a73d39352534ef0cf9f02c0cac36140a80ea58
parent86b1c221bdc50ede37a7b5c3ce6f7afa76d2cb2c (diff)
downloadgawk-e56990c4cb97de58281b5e6e67f71547ffc57719.tar.gz
New PROCINFO elements, "mb_cur_max" and "utf8".
-rw-r--r--NEWS3
-rw-r--r--doc/ChangeLog1
-rw-r--r--doc/gawk.info862
-rw-r--r--doc/gawk.texi21
-rw-r--r--doc/gawktexi.in21
-rw-r--r--main.c4
6 files changed, 489 insertions, 423 deletions
diff --git a/NEWS b/NEWS
index b2ab6d25..146d20a3 100644
--- a/NEWS
+++ b/NEWS
@@ -12,6 +12,9 @@ Changes from 5.2.1 to 5.3.0
that of the "One True AWK", when FS = "," is applied. See the
manual for details.
+2. PROCINFO gained two new elements: PROCINFO["mb_cur_max"] and
+ PROCINFO["utf8"]. See the manual for details.
+
Changes from 5.2.0 to 5.2.1
---------------------------
diff --git a/doc/ChangeLog b/doc/ChangeLog
index 3121897a..0684a843 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,6 +1,7 @@
2022-11-13 Arnold D. Robbins <arnold@skeeve.com>
* gawktexi.in (Other Versions): Add info on awkcc.
+ * gawktexi.in: Document "mb_cur_max" and "utf8" elemens in PROCINFO.
2022-11-12 Arnold D. Robbins <arnold@skeeve.com>
diff --git a/doc/gawk.info b/doc/gawk.info
index eea83768..a78cb42d 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -11508,6 +11508,10 @@ they are not special:
after it has finished parsing the program; they are _not_
updated while the program runs.
+ 'PROCINFO["mb_cur_max"]'
+ The maximum number of bytes that can be used to encode a
+ single character in the current character set.
+
'PROCINFO["platform"]'
This element gives a string indicating the platform for which
'gawk' was compiled. The value will be one of the following:
@@ -11541,6 +11545,10 @@ they are not special:
'PROCINFO["uid"]'
The value of the 'getuid()' system call.
+ 'PROCINFO["utf8"]'
+ This will be '"true"' if the current character set encoding is
+ UTF-8, '"false"' otherwise.
+
'PROCINFO["version"]'
The version of 'gawk'.
@@ -30704,6 +30712,14 @@ unfortunately. It added the following features:
allowing the use of persistent data on certain systems (*note
Persistent Memory::).
+ Version 5.3 added the following features:
+
+ * Comma separated value (CSV) field splitting (*note Comma Separated
+ Fields::).
+
+ * The '"mb_cur_max"' and '"utf8"' elements in the 'PROCINFO' array
+ (*note Auto-set::).
+

File: gawk.info, Node: Common Extensions, Next: Ranges and Locales, Prev: Feature History, Up: Language History
@@ -36720,7 +36736,7 @@ Index
* dark corner, exit statement: Exit Statement. (line 30)
* dark corner, value of ARGV[0]: Auto-set. (line 39)
* dark corner, FILENAME variable <1>: Auto-set. (line 108)
-* dark corner, FNR/NR variables: Auto-set. (line 404)
+* dark corner, FNR/NR variables: Auto-set. (line 412)
* dark corner, array subscripts: Uninitialized Subscripts.
(line 43)
* dark corner, regexp as second argument to index(): String Functions.
@@ -36967,8 +36983,8 @@ Index
* differences in awk and gawk, ERRNO variable: Auto-set. (line 87)
* differences in awk and gawk, FUNCTAB variable: Auto-set. (line 134)
* differences in awk and gawk, PROCINFO array: Auto-set. (line 148)
-* differences in awk and gawk, RS/RT variables <3>: Auto-set. (line 343)
-* differences in awk and gawk, SYMTAB variable: Auto-set. (line 347)
+* differences in awk and gawk, RS/RT variables <3>: Auto-set. (line 351)
+* differences in awk and gawk, SYMTAB variable: Auto-set. (line 355)
* differences in awk and gawk, ARGC/ARGV variables: ARGC and ARGV.
(line 89)
* differences in awk and gawk, array elements, deleting: Delete.
@@ -37237,7 +37253,7 @@ Index
* expressions, selecting: Conditional Exp. (line 6)
* expressions, as patterns: Expression Patterns. (line 6)
* Extended Regular Expressions (EREs): Bracket Expressions. (line 34)
-* extension API, version number: Auto-set. (line 282)
+* extension API, version number: Auto-set. (line 290)
* extension API, interaction with namespaces: Namespace And Features.
(line 22)
* extension API: Extension API Description.
@@ -37412,7 +37428,7 @@ Index
(line 12)
* FNR variable: Records. (line 6)
* FNR variable <1>: Auto-set. (line 118)
-* FNR variable, changing: Auto-set. (line 404)
+* FNR variable, changing: Auto-set. (line 412)
* for statement: For Statement. (line 6)
* for statement, looping over arrays: Scanning an Array. (line 20)
* fork() extension function: Extension Sample Fork.
@@ -37576,9 +37592,9 @@ Index
* gawk, ERRNO variable in <3>: Auto-set. (line 87)
* gawk, FUNCTAB array in: Auto-set. (line 134)
* gawk, PROCINFO array in <1>: Auto-set. (line 148)
-* gawk, version of: Auto-set. (line 257)
-* gawk, RT variable in <3>: Auto-set. (line 343)
-* gawk, SYMTAB array in: Auto-set. (line 347)
+* gawk, version of: Auto-set. (line 265)
+* gawk, RT variable in <3>: Auto-set. (line 351)
+* gawk, SYMTAB array in: Auto-set. (line 355)
* gawk, IGNORECASE variable in <2>: Array Intro. (line 100)
* gawk, function arguments and: Calling Built-in. (line 16)
* gawk, IGNORECASE variable in <3>: String Functions. (line 57)
@@ -38049,7 +38065,7 @@ Index
* 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 271)
+* maximum precision supported by MPFR library: Auto-set. (line 279)
* McIlroy, Doug: Glossary. (line 255)
* McPhee, Patrick T.J.: Contributors. (line 103)
* memory, allocating for extensions: Memory Allocation Functions.
@@ -38064,7 +38080,7 @@ Index
* messages from extensions: Printing Messages. (line 6)
* metacharacters, escape sequences for: Escape Sequences. (line 139)
* metacharacters, in regular expressions: Regexp Operators. (line 6)
-* minimum precision required by MPFR library: Auto-set. (line 274)
+* minimum precision required by MPFR library: Auto-set. (line 282)
* Minshall, Greg: Getopt Function. (line 105)
* mkbool: Boolean Functions. (line 10)
* mktime: Time Functions. (line 25)
@@ -38161,7 +38177,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 404)
+* NR variable, changing: Auto-set. (line 412)
* null strings, in gawk arguments, quoting and: Quoting. (line 82)
* null strings, in gawk arguments, quoting and <1>: Other Arguments.
(line 73)
@@ -38278,7 +38294,7 @@ Index
(line 39)
* package, definition of: Global Namespace. (line 18)
* Papadopoulos, Panos: Contributors. (line 131)
-* parent process ID of gawk process: Auto-set. (line 246)
+* parent process ID of gawk process: Auto-set. (line 250)
* parentheses (), regexp operator: Regexp Operator Details.
(line 77)
* parentheses (), in a profile: Profiling. (line 146)
@@ -38318,7 +38334,7 @@ Index
* pipe, output: Redirection. (line 57)
* pipe, closing: Close Files And Pipes.
(line 6)
-* platform running on: Auto-set. (line 224)
+* platform running on: Auto-set. (line 228)
* Plauger, P.J.: Library Functions. (line 12)
* plug-in: Extension Intro. (line 6)
* plus sign (+), regexp operator: Regexp Operator Details.
@@ -38488,12 +38504,12 @@ Index
* printing, mailing labels: Labels Program. (line 6)
* printing, messages from extensions: Printing Messages. (line 6)
* private variables: Library Names. (line 11)
-* process group ID of gawk process: Auto-set. (line 240)
-* process ID of gawk process: Auto-set. (line 243)
+* process group ID of gawk process: Auto-set. (line 244)
+* process ID of gawk process: Auto-set. (line 247)
* processes, two-way communications with: Two-way I/O. (line 6)
* processing data: Basic High Level. (line 6)
* PROCINFO array: Auto-set. (line 148)
-* PROCINFO array, platform running on: Auto-set. (line 224)
+* PROCINFO array, platform running on: Auto-set. (line 228)
* PROCINFO array, values of sorted_in: Controlling Scanning.
(line 26)
* PROCINFO array <1>: Time Functions. (line 49)
@@ -38682,7 +38698,7 @@ Index
* right angle bracket (>), >> operator (I/O) <1>: Precedence. (line 64)
* right shift, bitwise: Bitwise Functions. (line 33)
* Ritchie, Dennis: Basic Data Typing. (line 54)
-* RLENGTH variable: Auto-set. (line 330)
+* RLENGTH variable: Auto-set. (line 338)
* RLENGTH variable, match() function and: String Functions. (line 241)
* Robbins, Miriam: Acknowledgments. (line 94)
* Robbins, Jean: Acknowledgments. (line 94)
@@ -38712,12 +38728,12 @@ Index
* RS variable, multiline records and: Multiple Line. (line 17)
* RS variable <1>: User-modified. (line 135)
* rshift: Bitwise Functions. (line 55)
-* RSTART variable: Auto-set. (line 336)
+* RSTART variable: Auto-set. (line 344)
* RSTART variable, match() function and: String Functions. (line 241)
* RT variable: awk split records. (line 118)
* RT variable <1>: gawk split records. (line 66)
* RT variable <2>: Multiple Line. (line 138)
-* RT variable <3>: Auto-set. (line 343)
+* RT variable <3>: Auto-set. (line 351)
* Rubin, Paul: History. (line 30)
* Rubin, Paul <1>: Contributors. (line 16)
* rule, definition of: Getting Started. (line 21)
@@ -38735,7 +38751,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 374)
+* Schorr, Andrew <1>: Auto-set. (line 382)
* Schorr, Andrew <2>: Contributors. (line 136)
* Schreiber, Bert: Acknowledgments. (line 38)
* Schreiber, Rita: Acknowledgments. (line 38)
@@ -38859,7 +38875,7 @@ Index
* sidebar, Syntactic Ambiguities Between /= and Regular Expressions: Assignment Ops.
(line 148)
* sidebar, Operator Evaluation Order: Increment Ops. (line 58)
-* sidebar, Changing NR and FNR: Auto-set. (line 402)
+* sidebar, Changing NR and FNR: Auto-set. (line 410)
* sidebar, Matching the Null String: String Functions. (line 565)
* sidebar, Interactive Versus Noninteractive Buffering: I/O Functions.
(line 73)
@@ -39021,9 +39037,9 @@ Index
* substr: String Functions. (line 503)
* substring: String Functions. (line 503)
* Sumner, Andrew: Other Versions. (line 64)
-* supplementary groups of gawk process: Auto-set. (line 287)
+* supplementary groups of gawk process: Auto-set. (line 295)
* switch statement: Switch Statement. (line 6)
-* SYMTAB array: Auto-set. (line 347)
+* SYMTAB array: Auto-set. (line 355)
* syntactic ambiguity: /= operator vs. /=.../ regexp constant: Assignment Ops.
(line 150)
* system: I/O Functions. (line 105)
@@ -39245,10 +39261,10 @@ Index
* variables, global, for library functions: Library Names. (line 11)
* variables, private: Library Names. (line 11)
* variables <1>: Basic Data Typing. (line 6)
-* version of, gawk: Auto-set. (line 257)
-* version of, GNU MP library: Auto-set. (line 265)
-* version of, GNU MPFR library: Auto-set. (line 267)
-* version of, gawk extension API: Auto-set. (line 282)
+* version of, gawk: Auto-set. (line 265)
+* version of, GNU MP library: Auto-set. (line 273)
+* version of, GNU MPFR library: Auto-set. (line 275)
+* version of, gawk extension API: Auto-set. (line 290)
* vertical bar (|): Regexp Operator Details.
(line 66)
* vertical bar (|), | operator (I/O): Getline/Pipe. (line 10)
@@ -39537,402 +39553,402 @@ Node: Exit Statement473172
Node: Built-in Variables475575
Node: User-modified476708
Node: Auto-set484475
-Ref: Auto-set-Footnote-1501184
-Ref: Auto-set-Footnote-2501390
-Node: ARGC and ARGV501446
-Node: Pattern Action Summary505659
-Node: Arrays508089
-Node: Array Basics509418
-Node: Array Intro510262
-Ref: figure-array-elements512237
-Ref: Array Intro-Footnote-1514942
-Node: Reference to Elements515070
-Node: Assigning Elements517534
-Node: Array Example518025
-Node: Scanning an Array519979
-Node: Controlling Scanning523001
-Ref: Controlling Scanning-Footnote-1529457
-Node: Numeric Array Subscripts529773
-Node: Uninitialized Subscripts531957
-Node: Delete533576
-Ref: Delete-Footnote-1536328
-Node: Multidimensional536385
-Node: Multiscanning539480
-Node: Arrays of Arrays541071
-Node: Arrays Summary545839
-Node: Functions547932
-Node: Built-in548970
-Node: Calling Built-in550123
-Node: Boolean Functions552119
-Node: Numeric Functions552673
-Ref: Numeric Functions-Footnote-1556700
-Ref: Numeric Functions-Footnote-2557348
-Ref: Numeric Functions-Footnote-3557396
-Node: String Functions557668
-Ref: String Functions-Footnote-1582808
-Ref: String Functions-Footnote-2582936
-Ref: String Functions-Footnote-3583184
-Node: Gory Details583271
-Ref: table-sub-escapes585062
-Ref: table-sub-proposed586582
-Ref: table-posix-sub587946
-Ref: table-gensub-escapes589488
-Ref: Gory Details-Footnote-1590312
-Node: I/O Functions590466
-Ref: table-system-return-values596920
-Ref: I/O Functions-Footnote-1599001
-Ref: I/O Functions-Footnote-2599149
-Node: Time Functions599269
-Ref: Time Functions-Footnote-1609940
-Ref: Time Functions-Footnote-2610008
-Ref: Time Functions-Footnote-3610166
-Ref: Time Functions-Footnote-4610277
-Ref: Time Functions-Footnote-5610389
-Ref: Time Functions-Footnote-6610616
-Node: Bitwise Functions610882
-Ref: table-bitwise-ops611476
-Ref: Bitwise Functions-Footnote-1617540
-Ref: Bitwise Functions-Footnote-2617713
-Node: Type Functions617904
-Node: I18N Functions621425
-Node: User-defined623076
-Node: Definition Syntax623888
-Ref: Definition Syntax-Footnote-1629582
-Node: Function Example629653
-Ref: Function Example-Footnote-1632575
-Node: Function Calling632597
-Node: Calling A Function633185
-Node: Variable Scope634143
-Node: Pass By Value/Reference637137
-Node: Function Caveats639781
-Ref: Function Caveats-Footnote-1641828
-Node: Return Statement641948
-Node: Dynamic Typing644927
-Node: Indirect Calls645857
-Node: Functions Summary656784
-Node: Library Functions659489
-Ref: Library Functions-Footnote-1662973
-Ref: Library Functions-Footnote-2663116
-Node: Library Names663287
-Ref: Library Names-Footnote-1666954
-Ref: Library Names-Footnote-2667177
-Node: General Functions667263
-Node: Strtonum Function668445
-Node: Assert Function671467
-Node: Round Function674793
-Node: Cliff Random Function676333
-Node: Ordinal Functions677349
-Ref: Ordinal Functions-Footnote-1680412
-Ref: Ordinal Functions-Footnote-2680664
-Node: Join Function680874
-Ref: Join Function-Footnote-1682644
-Node: Getlocaltime Function682844
-Node: Readfile Function686586
-Node: Shell Quoting688563
-Node: Isnumeric Function689991
-Node: Data File Management691379
-Node: Filetrans Function692011
-Node: Rewind Function696107
-Node: File Checking698016
-Ref: File Checking-Footnote-1699350
-Node: Empty Files699551
-Node: Ignoring Assigns701530
-Node: Getopt Function703080
-Ref: Getopt Function-Footnote-1718377
-Node: Passwd Functions718577
-Ref: Passwd Functions-Footnote-1727416
-Node: Group Functions727504
-Ref: Group Functions-Footnote-1735402
-Node: Walking Arrays735609
-Node: Library Functions Summary738617
-Node: Library Exercises740023
-Node: Sample Programs740488
-Node: Running Examples741258
-Node: Clones741986
-Node: Cut Program743210
-Node: Egrep Program753350
-Node: Id Program762351
-Node: Split Program772286
-Ref: Split Program-Footnote-1782179
-Node: Tee Program782352
-Node: Uniq Program785142
-Node: Wc Program792730
-Node: Bytes vs. Characters793117
-Node: Using extensions794665
-Node: wc program795419
-Node: Miscellaneous Programs800284
-Node: Dupword Program801497
-Node: Alarm Program803527
-Node: Translate Program808382
-Ref: Translate Program-Footnote-1812947
-Node: Labels Program813217
-Ref: Labels Program-Footnote-1816568
-Node: Word Sorting816652
-Node: History Sorting820724
-Node: Extract Program822949
-Node: Simple Sed830962
-Node: Igawk Program834036
-Ref: Igawk Program-Footnote-1848665
-Ref: Igawk Program-Footnote-2848867
-Ref: Igawk Program-Footnote-3848989
-Node: Anagram Program849104
-Node: Signature Program852166
-Node: Programs Summary853413
-Node: Programs Exercises854627
-Ref: Programs Exercises-Footnote-1858757
-Node: Advanced Features858843
-Node: Nondecimal Data861240
-Node: Boolean Typed Values862838
-Node: Array Sorting864719
-Node: Controlling Array Traversal865424
-Ref: Controlling Array Traversal-Footnote-1873792
-Node: Array Sorting Functions873910
-Ref: Array Sorting Functions-Footnote-1879821
-Node: Two-way I/O880017
-Ref: Two-way I/O-Footnote-1887743
-Ref: Two-way I/O-Footnote-2887930
-Node: TCP/IP Networking888012
-Node: Profiling891088
-Node: Persistent Memory900394
-Ref: Persistent Memory-Footnote-1908542
-Ref: Persistent Memory-Footnote-2908681
-Node: Extension Philosophy908808
-Node: Advanced Features Summary910295
-Node: Internationalization912467
-Node: I18N and L10N914141
-Node: Explaining gettext914828
-Ref: Explaining gettext-Footnote-1920720
-Ref: Explaining gettext-Footnote-2920905
-Node: Programmer i18n921070
-Ref: Programmer i18n-Footnote-1926019
-Node: Translator i18n926068
-Node: String Extraction926862
-Ref: String Extraction-Footnote-1927994
-Node: Printf Ordering928080
-Ref: Printf Ordering-Footnote-1930866
-Node: I18N Portability930930
-Ref: I18N Portability-Footnote-1933386
-Node: I18N Example933449
-Ref: I18N Example-Footnote-1936724
-Ref: I18N Example-Footnote-2936797
-Node: Gawk I18N936906
-Node: I18N Summary937528
-Node: Debugger938869
-Node: Debugging939869
-Node: Debugging Concepts940310
-Node: Debugging Terms942119
-Node: Awk Debugging944694
-Ref: Awk Debugging-Footnote-1945639
-Node: Sample Debugging Session945771
-Node: Debugger Invocation946305
-Node: Finding The Bug947691
-Node: List of Debugger Commands954165
-Node: Breakpoint Control955498
-Node: Debugger Execution Control959192
-Node: Viewing And Changing Data962554
-Node: Execution Stack966095
-Node: Debugger Info967732
-Node: Miscellaneous Debugger Commands971803
-Node: Readline Support976865
-Node: Limitations977761
-Node: Debugging Summary980315
-Node: Namespaces981594
-Node: Global Namespace982705
-Node: Qualified Names984103
-Node: Default Namespace985102
-Node: Changing The Namespace985843
-Node: Naming Rules987457
-Node: Internal Name Management989305
-Node: Namespace Example990347
-Node: Namespace And Features992909
-Node: Namespace Summary994344
-Node: Arbitrary Precision Arithmetic995821
-Node: Computer Arithmetic997308
-Ref: table-numeric-ranges1001074
-Ref: table-floating-point-ranges1001568
-Ref: Computer Arithmetic-Footnote-11002227
-Node: Math Definitions1002284
-Ref: table-ieee-formats1005260
-Node: MPFR features1005828
-Node: MPFR On Parole1006273
-Ref: MPFR On Parole-Footnote-11007102
-Node: MPFR Intro1007257
-Node: FP Math Caution1008908
-Ref: FP Math Caution-Footnote-11009980
-Node: Inexactness of computations1010349
-Node: Inexact representation1011380
-Node: Comparing FP Values1012740
-Node: Errors accumulate1013981
-Node: Strange values1015437
-Ref: Strange values-Footnote-11018025
-Node: Getting Accuracy1018130
-Node: Try To Round1020840
-Node: Setting precision1021739
-Ref: table-predefined-precision-strings1022436
-Node: Setting the rounding mode1024267
-Ref: table-gawk-rounding-modes1024641
-Ref: Setting the rounding mode-Footnote-11028573
-Node: Arbitrary Precision Integers1028752
-Ref: Arbitrary Precision Integers-Footnote-11031927
-Node: Checking for MPFR1032076
-Node: POSIX Floating Point Problems1033550
-Ref: POSIX Floating Point Problems-Footnote-11038203
-Node: Floating point summary1038241
-Node: Dynamic Extensions1040431
-Node: Extension Intro1041984
-Node: Plugin License1043250
-Node: Extension Mechanism Outline1044047
-Ref: figure-load-extension1044486
-Ref: figure-register-new-function1046052
-Ref: figure-call-new-function1047145
-Node: Extension API Description1049208
-Node: Extension API Functions Introduction1050921
-Ref: table-api-std-headers1052757
-Node: General Data Types1057007
-Ref: General Data Types-Footnote-11065713
-Node: Memory Allocation Functions1066012
-Ref: Memory Allocation Functions-Footnote-11070513
-Node: Constructor Functions1070612
-Node: API Ownership of MPFR and GMP Values1074265
-Node: Registration Functions1075798
-Node: Extension Functions1076498
-Node: Exit Callback Functions1081820
-Node: Extension Version String1083070
-Node: Input Parsers1083733
-Node: Output Wrappers1096454
-Node: Two-way processors1100966
-Node: Printing Messages1103231
-Ref: Printing Messages-Footnote-11104402
-Node: Updating ERRNO1104555
-Node: Requesting Values1105294
-Ref: table-value-types-returned1106031
-Node: Accessing Parameters1107140
-Node: Symbol Table Access1108377
-Node: Symbol table by name1108889
-Ref: Symbol table by name-Footnote-11111914
-Node: Symbol table by cookie1112042
-Ref: Symbol table by cookie-Footnote-11116227
-Node: Cached values1116291
-Ref: Cached values-Footnote-11119827
-Node: Array Manipulation1119980
-Ref: Array Manipulation-Footnote-11121071
-Node: Array Data Types1121108
-Ref: Array Data Types-Footnote-11123766
-Node: Array Functions1123858
-Node: Flattening Arrays1128643
-Node: Creating Arrays1135619
-Node: Redirection API1140386
-Node: Extension API Variables1143219
-Node: Extension Versioning1143930
-Ref: gawk-api-version1144359
-Node: Extension GMP/MPFR Versioning1146091
-Node: Extension API Informational Variables1147719
-Node: Extension API Boilerplate1148792
-Node: Changes from API V11152766
-Node: Finding Extensions1154338
-Node: Extension Example1154897
-Node: Internal File Description1155695
-Node: Internal File Ops1159775
-Ref: Internal File Ops-Footnote-11171125
-Node: Using Internal File Ops1171265
-Ref: Using Internal File Ops-Footnote-11173648
-Node: Extension Samples1173922
-Node: Extension Sample File Functions1175451
-Node: Extension Sample Fnmatch1183100
-Node: Extension Sample Fork1184587
-Node: Extension Sample Inplace1185805
-Node: Extension Sample Ord1189431
-Node: Extension Sample Readdir1190267
-Ref: table-readdir-file-types1191156
-Node: Extension Sample Revout1192224
-Node: Extension Sample Rev2way1192813
-Node: Extension Sample Read write array1193553
-Node: Extension Sample Readfile1196739
-Node: Extension Sample Time1197834
-Node: Extension Sample API Tests1199586
-Node: gawkextlib1200078
-Node: Extension summary1202996
-Node: Extension Exercises1206698
-Node: Language History1207940
-Node: V7/SVR3.11209596
-Node: SVR41211748
-Node: POSIX1213182
-Node: BTL1214563
-Node: POSIX/GNU1215292
-Node: Feature History1221209
-Node: Common Extensions1238948
-Node: Ranges and Locales1240231
-Ref: Ranges and Locales-Footnote-11244847
-Ref: Ranges and Locales-Footnote-21244874
-Ref: Ranges and Locales-Footnote-31245109
-Node: Contributors1245332
-Node: History summary1251329
-Node: Installation1252709
-Node: Gawk Distribution1253653
-Node: Getting1254137
-Node: Extracting1255100
-Node: Distribution contents1256738
-Node: Unix Installation1264236
-Node: Quick Installation1265040
-Node: Compiling with MPFR1267460
-Node: Shell Startup Files1268150
-Node: Additional Configuration Options1269239
-Node: Configuration Philosophy1271554
-Node: Compiling from Git1273950
-Node: Building the Documentation1274505
-Node: Non-Unix Installation1275889
-Node: PC Installation1276353
-Node: PC Binary Installation1277198
-Node: PC Compiling1278071
-Node: PC Using1279177
-Node: Cygwin1282673
-Node: MSYS1283897
-Node: OpenVMS Installation1284499
-Node: OpenVMS Compilation1285162
-Ref: OpenVMS Compilation-Footnote-11286585
-Node: OpenVMS Dynamic Extensions1286643
-Node: OpenVMS Installation Details1288255
-Node: OpenVMS Running1290550
-Node: OpenVMS GNV1294551
-Node: Bugs1295294
-Node: Bug definition1296206
-Node: Bug address1299708
-Node: Usenet1303227
-Node: Performance bugs1304416
-Node: Asking for help1307337
-Node: Maintainers1309304
-Node: Other Versions1310311
-Node: Installation summary1318891
-Node: Notes1320231
-Node: Compatibility Mode1321025
-Node: Additions1321807
-Node: Accessing The Source1322732
-Node: Adding Code1324169
-Node: New Ports1330984
-Node: Derived Files1335359
-Ref: Derived Files-Footnote-11341018
-Ref: Derived Files-Footnote-21341053
-Ref: Derived Files-Footnote-31341648
-Node: Future Extensions1341762
-Node: Implementation Limitations1342420
-Node: Extension Design1343630
-Node: Old Extension Problems1344774
-Ref: Old Extension Problems-Footnote-11346292
-Node: Extension New Mechanism Goals1346349
-Ref: Extension New Mechanism Goals-Footnote-11349713
-Node: Extension Other Design Decisions1349902
-Node: Extension Future Growth1352015
-Node: Notes summary1352621
-Node: Basic Concepts1353779
-Node: Basic High Level1354460
-Ref: figure-general-flow1354742
-Ref: figure-process-flow1355428
-Ref: Basic High Level-Footnote-11358730
-Node: Basic Data Typing1358915
-Node: Glossary1362243
-Node: Copying1394130
-Node: GNU Free Documentation License1431673
-Node: Index1456793
+Ref: Auto-set-Footnote-1501475
+Ref: Auto-set-Footnote-2501681
+Node: ARGC and ARGV501737
+Node: Pattern Action Summary505950
+Node: Arrays508380
+Node: Array Basics509709
+Node: Array Intro510553
+Ref: figure-array-elements512528
+Ref: Array Intro-Footnote-1515233
+Node: Reference to Elements515361
+Node: Assigning Elements517825
+Node: Array Example518316
+Node: Scanning an Array520270
+Node: Controlling Scanning523292
+Ref: Controlling Scanning-Footnote-1529748
+Node: Numeric Array Subscripts530064
+Node: Uninitialized Subscripts532248
+Node: Delete533867
+Ref: Delete-Footnote-1536619
+Node: Multidimensional536676
+Node: Multiscanning539771
+Node: Arrays of Arrays541362
+Node: Arrays Summary546130
+Node: Functions548223
+Node: Built-in549261
+Node: Calling Built-in550414
+Node: Boolean Functions552410
+Node: Numeric Functions552964
+Ref: Numeric Functions-Footnote-1556991
+Ref: Numeric Functions-Footnote-2557639
+Ref: Numeric Functions-Footnote-3557687
+Node: String Functions557959
+Ref: String Functions-Footnote-1583099
+Ref: String Functions-Footnote-2583227
+Ref: String Functions-Footnote-3583475
+Node: Gory Details583562
+Ref: table-sub-escapes585353
+Ref: table-sub-proposed586873
+Ref: table-posix-sub588237
+Ref: table-gensub-escapes589779
+Ref: Gory Details-Footnote-1590603
+Node: I/O Functions590757
+Ref: table-system-return-values597211
+Ref: I/O Functions-Footnote-1599292
+Ref: I/O Functions-Footnote-2599440
+Node: Time Functions599560
+Ref: Time Functions-Footnote-1610231
+Ref: Time Functions-Footnote-2610299
+Ref: Time Functions-Footnote-3610457
+Ref: Time Functions-Footnote-4610568
+Ref: Time Functions-Footnote-5610680
+Ref: Time Functions-Footnote-6610907
+Node: Bitwise Functions611173
+Ref: table-bitwise-ops611767
+Ref: Bitwise Functions-Footnote-1617831
+Ref: Bitwise Functions-Footnote-2618004
+Node: Type Functions618195
+Node: I18N Functions621716
+Node: User-defined623367
+Node: Definition Syntax624179
+Ref: Definition Syntax-Footnote-1629873
+Node: Function Example629944
+Ref: Function Example-Footnote-1632866
+Node: Function Calling632888
+Node: Calling A Function633476
+Node: Variable Scope634434
+Node: Pass By Value/Reference637428
+Node: Function Caveats640072
+Ref: Function Caveats-Footnote-1642119
+Node: Return Statement642239
+Node: Dynamic Typing645218
+Node: Indirect Calls646148
+Node: Functions Summary657075
+Node: Library Functions659780
+Ref: Library Functions-Footnote-1663264
+Ref: Library Functions-Footnote-2663407
+Node: Library Names663578
+Ref: Library Names-Footnote-1667245
+Ref: Library Names-Footnote-2667468
+Node: General Functions667554
+Node: Strtonum Function668736
+Node: Assert Function671758
+Node: Round Function675084
+Node: Cliff Random Function676624
+Node: Ordinal Functions677640
+Ref: Ordinal Functions-Footnote-1680703
+Ref: Ordinal Functions-Footnote-2680955
+Node: Join Function681165
+Ref: Join Function-Footnote-1682935
+Node: Getlocaltime Function683135
+Node: Readfile Function686877
+Node: Shell Quoting688854
+Node: Isnumeric Function690282
+Node: Data File Management691670
+Node: Filetrans Function692302
+Node: Rewind Function696398
+Node: File Checking698307
+Ref: File Checking-Footnote-1699641
+Node: Empty Files699842
+Node: Ignoring Assigns701821
+Node: Getopt Function703371
+Ref: Getopt Function-Footnote-1718668
+Node: Passwd Functions718868
+Ref: Passwd Functions-Footnote-1727707
+Node: Group Functions727795
+Ref: Group Functions-Footnote-1735693
+Node: Walking Arrays735900
+Node: Library Functions Summary738908
+Node: Library Exercises740314
+Node: Sample Programs740779
+Node: Running Examples741549
+Node: Clones742277
+Node: Cut Program743501
+Node: Egrep Program753641
+Node: Id Program762642
+Node: Split Program772577
+Ref: Split Program-Footnote-1782470
+Node: Tee Program782643
+Node: Uniq Program785433
+Node: Wc Program793021
+Node: Bytes vs. Characters793408
+Node: Using extensions794956
+Node: wc program795710
+Node: Miscellaneous Programs800575
+Node: Dupword Program801788
+Node: Alarm Program803818
+Node: Translate Program808673
+Ref: Translate Program-Footnote-1813238
+Node: Labels Program813508
+Ref: Labels Program-Footnote-1816859
+Node: Word Sorting816943
+Node: History Sorting821015
+Node: Extract Program823240
+Node: Simple Sed831253
+Node: Igawk Program834327
+Ref: Igawk Program-Footnote-1848956
+Ref: Igawk Program-Footnote-2849158
+Ref: Igawk Program-Footnote-3849280
+Node: Anagram Program849395
+Node: Signature Program852457
+Node: Programs Summary853704
+Node: Programs Exercises854918
+Ref: Programs Exercises-Footnote-1859048
+Node: Advanced Features859134
+Node: Nondecimal Data861531
+Node: Boolean Typed Values863129
+Node: Array Sorting865010
+Node: Controlling Array Traversal865715
+Ref: Controlling Array Traversal-Footnote-1874083
+Node: Array Sorting Functions874201
+Ref: Array Sorting Functions-Footnote-1880112
+Node: Two-way I/O880308
+Ref: Two-way I/O-Footnote-1888034
+Ref: Two-way I/O-Footnote-2888221
+Node: TCP/IP Networking888303
+Node: Profiling891379
+Node: Persistent Memory900685
+Ref: Persistent Memory-Footnote-1908833
+Ref: Persistent Memory-Footnote-2908972
+Node: Extension Philosophy909099
+Node: Advanced Features Summary910586
+Node: Internationalization912758
+Node: I18N and L10N914432
+Node: Explaining gettext915119
+Ref: Explaining gettext-Footnote-1921011
+Ref: Explaining gettext-Footnote-2921196
+Node: Programmer i18n921361
+Ref: Programmer i18n-Footnote-1926310
+Node: Translator i18n926359
+Node: String Extraction927153
+Ref: String Extraction-Footnote-1928285
+Node: Printf Ordering928371
+Ref: Printf Ordering-Footnote-1931157
+Node: I18N Portability931221
+Ref: I18N Portability-Footnote-1933677
+Node: I18N Example933740
+Ref: I18N Example-Footnote-1937015
+Ref: I18N Example-Footnote-2937088
+Node: Gawk I18N937197
+Node: I18N Summary937819
+Node: Debugger939160
+Node: Debugging940160
+Node: Debugging Concepts940601
+Node: Debugging Terms942410
+Node: Awk Debugging944985
+Ref: Awk Debugging-Footnote-1945930
+Node: Sample Debugging Session946062
+Node: Debugger Invocation946596
+Node: Finding The Bug947982
+Node: List of Debugger Commands954456
+Node: Breakpoint Control955789
+Node: Debugger Execution Control959483
+Node: Viewing And Changing Data962845
+Node: Execution Stack966386
+Node: Debugger Info968023
+Node: Miscellaneous Debugger Commands972094
+Node: Readline Support977156
+Node: Limitations978052
+Node: Debugging Summary980606
+Node: Namespaces981885
+Node: Global Namespace982996
+Node: Qualified Names984394
+Node: Default Namespace985393
+Node: Changing The Namespace986134
+Node: Naming Rules987748
+Node: Internal Name Management989596
+Node: Namespace Example990638
+Node: Namespace And Features993200
+Node: Namespace Summary994635
+Node: Arbitrary Precision Arithmetic996112
+Node: Computer Arithmetic997599
+Ref: table-numeric-ranges1001365
+Ref: table-floating-point-ranges1001859
+Ref: Computer Arithmetic-Footnote-11002518
+Node: Math Definitions1002575
+Ref: table-ieee-formats1005551
+Node: MPFR features1006119
+Node: MPFR On Parole1006564
+Ref: MPFR On Parole-Footnote-11007393
+Node: MPFR Intro1007548
+Node: FP Math Caution1009199
+Ref: FP Math Caution-Footnote-11010271
+Node: Inexactness of computations1010640
+Node: Inexact representation1011671
+Node: Comparing FP Values1013031
+Node: Errors accumulate1014272
+Node: Strange values1015728
+Ref: Strange values-Footnote-11018316
+Node: Getting Accuracy1018421
+Node: Try To Round1021131
+Node: Setting precision1022030
+Ref: table-predefined-precision-strings1022727
+Node: Setting the rounding mode1024558
+Ref: table-gawk-rounding-modes1024932
+Ref: Setting the rounding mode-Footnote-11028864
+Node: Arbitrary Precision Integers1029043
+Ref: Arbitrary Precision Integers-Footnote-11032218
+Node: Checking for MPFR1032367
+Node: POSIX Floating Point Problems1033841
+Ref: POSIX Floating Point Problems-Footnote-11038494
+Node: Floating point summary1038532
+Node: Dynamic Extensions1040722
+Node: Extension Intro1042275
+Node: Plugin License1043541
+Node: Extension Mechanism Outline1044338
+Ref: figure-load-extension1044777
+Ref: figure-register-new-function1046343
+Ref: figure-call-new-function1047436
+Node: Extension API Description1049499
+Node: Extension API Functions Introduction1051212
+Ref: table-api-std-headers1053048
+Node: General Data Types1057298
+Ref: General Data Types-Footnote-11066004
+Node: Memory Allocation Functions1066303
+Ref: Memory Allocation Functions-Footnote-11070804
+Node: Constructor Functions1070903
+Node: API Ownership of MPFR and GMP Values1074556
+Node: Registration Functions1076089
+Node: Extension Functions1076789
+Node: Exit Callback Functions1082111
+Node: Extension Version String1083361
+Node: Input Parsers1084024
+Node: Output Wrappers1096745
+Node: Two-way processors1101257
+Node: Printing Messages1103522
+Ref: Printing Messages-Footnote-11104693
+Node: Updating ERRNO1104846
+Node: Requesting Values1105585
+Ref: table-value-types-returned1106322
+Node: Accessing Parameters1107431
+Node: Symbol Table Access1108668
+Node: Symbol table by name1109180
+Ref: Symbol table by name-Footnote-11112205
+Node: Symbol table by cookie1112333
+Ref: Symbol table by cookie-Footnote-11116518
+Node: Cached values1116582
+Ref: Cached values-Footnote-11120118
+Node: Array Manipulation1120271
+Ref: Array Manipulation-Footnote-11121362
+Node: Array Data Types1121399
+Ref: Array Data Types-Footnote-11124057
+Node: Array Functions1124149
+Node: Flattening Arrays1128934
+Node: Creating Arrays1135910
+Node: Redirection API1140677
+Node: Extension API Variables1143510
+Node: Extension Versioning1144221
+Ref: gawk-api-version1144650
+Node: Extension GMP/MPFR Versioning1146382
+Node: Extension API Informational Variables1148010
+Node: Extension API Boilerplate1149083
+Node: Changes from API V11153057
+Node: Finding Extensions1154629
+Node: Extension Example1155188
+Node: Internal File Description1155986
+Node: Internal File Ops1160066
+Ref: Internal File Ops-Footnote-11171416
+Node: Using Internal File Ops1171556
+Ref: Using Internal File Ops-Footnote-11173939
+Node: Extension Samples1174213
+Node: Extension Sample File Functions1175742
+Node: Extension Sample Fnmatch1183391
+Node: Extension Sample Fork1184878
+Node: Extension Sample Inplace1186096
+Node: Extension Sample Ord1189722
+Node: Extension Sample Readdir1190558
+Ref: table-readdir-file-types1191447
+Node: Extension Sample Revout1192515
+Node: Extension Sample Rev2way1193104
+Node: Extension Sample Read write array1193844
+Node: Extension Sample Readfile1197030
+Node: Extension Sample Time1198125
+Node: Extension Sample API Tests1199877
+Node: gawkextlib1200369
+Node: Extension summary1203287
+Node: Extension Exercises1206989
+Node: Language History1208231
+Node: V7/SVR3.11209887
+Node: SVR41212039
+Node: POSIX1213473
+Node: BTL1214854
+Node: POSIX/GNU1215583
+Node: Feature History1221500
+Node: Common Extensions1239470
+Node: Ranges and Locales1240753
+Ref: Ranges and Locales-Footnote-11245369
+Ref: Ranges and Locales-Footnote-21245396
+Ref: Ranges and Locales-Footnote-31245631
+Node: Contributors1245854
+Node: History summary1251851
+Node: Installation1253231
+Node: Gawk Distribution1254175
+Node: Getting1254659
+Node: Extracting1255622
+Node: Distribution contents1257260
+Node: Unix Installation1264758
+Node: Quick Installation1265562
+Node: Compiling with MPFR1267982
+Node: Shell Startup Files1268672
+Node: Additional Configuration Options1269761
+Node: Configuration Philosophy1272076
+Node: Compiling from Git1274472
+Node: Building the Documentation1275027
+Node: Non-Unix Installation1276411
+Node: PC Installation1276875
+Node: PC Binary Installation1277720
+Node: PC Compiling1278593
+Node: PC Using1279699
+Node: Cygwin1283195
+Node: MSYS1284419
+Node: OpenVMS Installation1285021
+Node: OpenVMS Compilation1285684
+Ref: OpenVMS Compilation-Footnote-11287107
+Node: OpenVMS Dynamic Extensions1287165
+Node: OpenVMS Installation Details1288777
+Node: OpenVMS Running1291072
+Node: OpenVMS GNV1295073
+Node: Bugs1295816
+Node: Bug definition1296728
+Node: Bug address1300230
+Node: Usenet1303749
+Node: Performance bugs1304938
+Node: Asking for help1307859
+Node: Maintainers1309826
+Node: Other Versions1310833
+Node: Installation summary1319413
+Node: Notes1320753
+Node: Compatibility Mode1321547
+Node: Additions1322329
+Node: Accessing The Source1323254
+Node: Adding Code1324691
+Node: New Ports1331506
+Node: Derived Files1335881
+Ref: Derived Files-Footnote-11341540
+Ref: Derived Files-Footnote-21341575
+Ref: Derived Files-Footnote-31342170
+Node: Future Extensions1342284
+Node: Implementation Limitations1342942
+Node: Extension Design1344152
+Node: Old Extension Problems1345296
+Ref: Old Extension Problems-Footnote-11346814
+Node: Extension New Mechanism Goals1346871
+Ref: Extension New Mechanism Goals-Footnote-11350235
+Node: Extension Other Design Decisions1350424
+Node: Extension Future Growth1352537
+Node: Notes summary1353143
+Node: Basic Concepts1354301
+Node: Basic High Level1354982
+Ref: figure-general-flow1355264
+Ref: figure-process-flow1355950
+Ref: Basic High Level-Footnote-11359252
+Node: Basic Data Typing1359437
+Node: Glossary1362765
+Node: Copying1394652
+Node: GNU Free Documentation License1432195
+Node: Index1457315

End Tag Table
diff --git a/doc/gawk.texi b/doc/gawk.texi
index e4cab32f..789fa13d 100644
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -16550,6 +16550,10 @@ The values indicate what @command{gawk} knows about the identifiers
after it has finished parsing the program; they are @emph{not} updated
while the program runs.
+@item PROCINFO["mb_cur_max"]
+The maximum number of bytes that can be used to encode a single
+character in the current character set.
+
@item PROCINFO["platform"]
@cindex platform running on
@cindex @code{PROCINFO} array @subentry platform running on
@@ -16591,6 +16595,10 @@ Assigning a new value to this element changes the default.
@item PROCINFO["uid"]
The value of the @code{getuid()} system call.
+@item PROCINFO["utf8"]
+This will be @code{"true"} if the current character set encoding
+is UTF-8, @code{"false"} otherwise.
+
@item PROCINFO["version"]
@cindex version of @subentry @command{gawk}
@cindex @command{gawk} @subentry version of
@@ -42136,6 +42144,19 @@ added, allowing the use of persistent data on certain systems
@end itemize
+Version 5.3 added the following features:
+
+@itemize
+@item
+Comma separated value (CSV) field splitting
+(@pxref{Comma Separated Fields}).
+
+@item
+The @code{"mb_cur_max"} and @code{"utf8"} elements in the
+@code{PROCINFO} array (@pxref{Auto-set}).
+
+@end itemize
+
@c XXX ADD MORE STUFF HERE
@end ifclear
diff --git a/doc/gawktexi.in b/doc/gawktexi.in
index d38f83a7..2e5cda34 100644
--- a/doc/gawktexi.in
+++ b/doc/gawktexi.in
@@ -15737,6 +15737,10 @@ The values indicate what @command{gawk} knows about the identifiers
after it has finished parsing the program; they are @emph{not} updated
while the program runs.
+@item PROCINFO["mb_cur_max"]
+The maximum number of bytes that can be used to encode a single
+character in the current character set.
+
@item PROCINFO["platform"]
@cindex platform running on
@cindex @code{PROCINFO} array @subentry platform running on
@@ -15778,6 +15782,10 @@ Assigning a new value to this element changes the default.
@item PROCINFO["uid"]
The value of the @code{getuid()} system call.
+@item PROCINFO["utf8"]
+This will be @code{"true"} if the current character set encoding
+is UTF-8, @code{"false"} otherwise.
+
@item PROCINFO["version"]
@cindex version of @subentry @command{gawk}
@cindex @command{gawk} @subentry version of
@@ -40979,6 +40987,19 @@ added, allowing the use of persistent data on certain systems
@end itemize
+Version 5.3 added the following features:
+
+@itemize
+@item
+Comma separated value (CSV) field splitting
+(@pxref{Comma Separated Fields}).
+
+@item
+The @code{"mb_cur_max"} and @code{"utf8"} elements in the
+@code{PROCINFO} array (@pxref{Auto-set}).
+
+@end itemize
+
@c XXX ADD MORE STUFF HERE
@end ifclear
diff --git a/main.c b/main.c
index ef0ab023..78a6b708 100644
--- a/main.c
+++ b/main.c
@@ -1096,6 +1096,10 @@ load_procinfo()
groupset = NULL;
}
#endif
+
+ update_PROCINFO_num("mb_cur_max", gawk_mb_cur_max);
+ update_PROCINFO_str("utf8", using_utf8() ? "true" : "false");
+
load_procinfo_argv();
return PROCINFO_node;
}