aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--doc/ChangeLog3
-rw-r--r--doc/gawk.18
-rw-r--r--doc/gawk.info691
-rw-r--r--doc/gawk.texi13
-rw-r--r--doc/gawkman.texi13
-rw-r--r--main.c5
7 files changed, 398 insertions, 340 deletions
diff --git a/ChangeLog b/ChangeLog
index 9ef42ee2..d44fcdfe 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2013-04-23 Arnold D. Robbins <arnold@skeeve.com>
+
+ * main.c (load_procinfo): Add PROCINFO entries for API major
+ and minor versions.
+
2013-04-21 Arnold D. Robbins <arnold@skeeve.com>
* missing: Update from Automake 1.13.1.
diff --git a/doc/ChangeLog b/doc/ChangeLog
index 876ed352..61aab3fc 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -4,6 +4,9 @@
* awkcard.in: Minor addition.
* gawkman.texi: Minor fixes.
+ * gawk.1, gawkman.texi: Document PROCINFO entries for API
+ major and minor versions.
+
2013-04-21 Arnold D. Robbins <arnold@skeeve.com>
* gawkman.texi: Update all the menus. Fix spelling errors. Remove
diff --git a/doc/gawk.1 b/doc/gawk.1
index b1d80c07..d1fec1b8 100644
--- a/doc/gawk.1
+++ b/doc/gawk.1
@@ -1235,6 +1235,14 @@ arbitrary precision floating-point numbers.
This entry is not present if MPFR support is not compiled into
.IR gawk .
.TP
+\fBPROCINFO["api_major"]\fP
+The major version of the extension API.
+This entry is not present if loading dynamic extensions is not available.
+.TP
+\fBPROCINFO["api_minor"]\fP
+The minor version of the extension API.
+This entry is not present if loading dynamic extensions is not available.
+.TP
\fBPROCINFO["version"]\fP
the version of
.IR gawk .
diff --git a/doc/gawk.info b/doc/gawk.info
index 63b5a2a5..a0b7f10d 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -9834,6 +9834,17 @@ with a pound sign (`#').
`PROCINFO["prec_min"]'
The minimum precision required by MPFR.
+ The following additional elements in the array are available to
+ provide information about the version of the extension API, if
+ your version of `gawk' supports dynamic loading of extension
+ functions (*note Dynamic Extensions::):
+
+ `PROCINFO["api_major"]'
+ The major version of the extension API.
+
+ `PROCINFO["api_minor"]'
+ The minor version of the extension API.
+
On some systems, there may be elements in the array, `"group1"'
through `"groupN"' for some N. N is the number of supplementary
groups that the process has. Use the `in' operator to test for
@@ -29985,7 +29996,7 @@ Index
(line 46)
* dark corner, FILENAME variable <1>: Auto-set. (line 93)
* dark corner, FILENAME variable: Getline Notes. (line 19)
-* dark corner, FNR/NR variables: Auto-set. (line 300)
+* dark corner, FNR/NR variables: Auto-set. (line 311)
* dark corner, format-control characters: Control Letters. (line 18)
* dark corner, FS as null string: Single Character Fields.
(line 20)
@@ -30188,7 +30199,7 @@ Index
* differences in awk and gawk, regular expressions: Case-sensitivity.
(line 26)
* differences in awk and gawk, RS/RT variables: Records. (line 172)
-* differences in awk and gawk, RT variable: Auto-set. (line 252)
+* differences in awk and gawk, RT variable: Auto-set. (line 263)
* differences in awk and gawk, single-character fields: Single Character Fields.
(line 6)
* differences in awk and gawk, split() function: String Functions.
@@ -30197,7 +30208,7 @@ Index
* differences in awk and gawk, strings, storing: Records. (line 191)
* differences in awk and gawk, strtonum() function (gawk): String Functions.
(line 404)
-* differences in awk and gawk, SYMTAB variable: Auto-set. (line 260)
+* differences in awk and gawk, SYMTAB variable: Auto-set. (line 271)
* differences in awk and gawk, TEXTDOMAIN variable: User-modified.
(line 162)
* differences in awk and gawk, trunc-mod operation: Arithmetic Ops.
@@ -30463,7 +30474,7 @@ Index
* floating-point, numbers: General Arithmetic. (line 6)
* FNR variable <1>: Auto-set. (line 103)
* FNR variable: Records. (line 6)
-* FNR variable, changing: Auto-set. (line 300)
+* FNR variable, changing: Auto-set. (line 311)
* for statement: For Statement. (line 6)
* for statement, in arrays: Scanning an Array. (line 20)
* format specifiers, mixing regular with positional specifiers: Printf Ordering.
@@ -30631,7 +30642,7 @@ Index
* gawk, regular expressions, operators: GNU Regexp Operators.
(line 6)
* gawk, regular expressions, precedence: Regexp Operators. (line 161)
-* gawk, RT variable in <1>: Auto-set. (line 252)
+* gawk, RT variable in <1>: Auto-set. (line 263)
* gawk, RT variable in <2>: Getline/Variable/File.
(line 10)
* gawk, RT variable in <3>: Multiple Line. (line 129)
@@ -30640,7 +30651,7 @@ Index
* gawk, source code, obtaining: Getting. (line 6)
* gawk, splitting fields and: Constant Size. (line 87)
* gawk, string-translation functions: I18N Functions. (line 6)
-* gawk, SYMTAB array in: Auto-set. (line 260)
+* gawk, SYMTAB array in: Auto-set. (line 271)
* gawk, TEXTDOMAIN variable in: User-modified. (line 162)
* gawk, timestamps: Time Functions. (line 6)
* gawk, uses for: Preface. (line 36)
@@ -31047,7 +31058,7 @@ Index
* not Boolean-logic operator: Boolean Ops. (line 6)
* NR variable <1>: Auto-set. (line 125)
* NR variable: Records. (line 6)
-* NR variable, changing: Auto-set. (line 300)
+* NR variable, changing: Auto-set. (line 311)
* null strings <1>: Basic Data Typing. (line 26)
* null strings <2>: Truth Values. (line 6)
* null strings <3>: Regexp Field Splitting.
@@ -31474,7 +31485,7 @@ Index
* right angle bracket (>), >> operator (I/O): Redirection. (line 50)
* right shift, bitwise: Bitwise Functions. (line 32)
* Ritchie, Dennis: Basic Data Typing. (line 55)
-* RLENGTH variable: Auto-set. (line 239)
+* RLENGTH variable: Auto-set. (line 250)
* RLENGTH variable, match() function and: String Functions. (line 223)
* Robbins, Arnold <1>: Future Extensions. (line 6)
* Robbins, Arnold <2>: Bugs. (line 32)
@@ -31501,9 +31512,9 @@ Index
* RS variable: Records. (line 20)
* RS variable, multiline records and: Multiple Line. (line 17)
* rshift() function (gawk): Bitwise Functions. (line 52)
-* RSTART variable: Auto-set. (line 245)
+* RSTART variable: Auto-set. (line 256)
* RSTART variable, match() function and: String Functions. (line 223)
-* RT variable <1>: Auto-set. (line 252)
+* RT variable <1>: Auto-set. (line 263)
* RT variable <2>: Getline/Variable/File.
(line 10)
* RT variable <3>: Multiple Line. (line 129)
@@ -31586,7 +31597,7 @@ Index
(line 110)
* sidebar, Changing FS Does Not Affect the Fields: Field Splitting Summary.
(line 38)
-* sidebar, Changing NR and FNR: Auto-set. (line 298)
+* sidebar, Changing NR and FNR: Auto-set. (line 309)
* sidebar, Controlling Output Buffering with system(): I/O Functions.
(line 135)
* sidebar, Escape Sequences for Metacharacters: Escape Sequences.
@@ -31728,7 +31739,7 @@ Index
* substr() function: String Functions. (line 481)
* Sumner, Andrew: Other Versions. (line 64)
* switch statement: Switch Statement. (line 6)
-* SYMTAB array: Auto-set. (line 260)
+* SYMTAB array: Auto-set. (line 271)
* syntactic ambiguity: /= operator vs. /=.../ regexp constant: Assignment Ops.
(line 147)
* system() function: I/O Functions. (line 72)
@@ -32163,333 +32174,333 @@ Node: Built-in Variables402841
Node: User-modified403936
Ref: User-modified-Footnote-1412291
Node: Auto-set412353
-Ref: Auto-set-Footnote-1424877
-Ref: Auto-set-Footnote-2425082
-Node: ARGC and ARGV425138
-Node: Arrays428989
-Node: Array Basics430494
-Node: Array Intro431320
-Node: Reference to Elements435638
-Node: Assigning Elements437908
-Node: Array Example438399
-Node: Scanning an Array440131
-Node: Controlling Scanning442445
-Ref: Controlling Scanning-Footnote-1447368
-Node: Delete447684
-Ref: Delete-Footnote-1450449
-Node: Numeric Array Subscripts450506
-Node: Uninitialized Subscripts452689
-Node: Multi-dimensional454317
-Node: Multi-scanning457411
-Node: Arrays of Arrays459002
-Node: Functions463643
-Node: Built-in464462
-Node: Calling Built-in465540
-Node: Numeric Functions467528
-Ref: Numeric Functions-Footnote-1471360
-Ref: Numeric Functions-Footnote-2471717
-Ref: Numeric Functions-Footnote-3471765
-Node: String Functions472034
-Ref: String Functions-Footnote-1495531
-Ref: String Functions-Footnote-2495660
-Ref: String Functions-Footnote-3495908
-Node: Gory Details495995
-Ref: table-sub-escapes497674
-Ref: table-sub-posix-92499028
-Ref: table-sub-proposed500379
-Ref: table-posix-sub501733
-Ref: table-gensub-escapes503278
-Ref: Gory Details-Footnote-1504454
-Ref: Gory Details-Footnote-2504505
-Node: I/O Functions504656
-Ref: I/O Functions-Footnote-1511641
-Node: Time Functions511788
-Ref: Time Functions-Footnote-1522721
-Ref: Time Functions-Footnote-2522789
-Ref: Time Functions-Footnote-3522947
-Ref: Time Functions-Footnote-4523058
-Ref: Time Functions-Footnote-5523170
-Ref: Time Functions-Footnote-6523397
-Node: Bitwise Functions523663
-Ref: table-bitwise-ops524221
-Ref: Bitwise Functions-Footnote-1528442
-Node: Type Functions528626
-Node: I18N Functions529096
-Node: User-defined530723
-Node: Definition Syntax531527
-Ref: Definition Syntax-Footnote-1536437
-Node: Function Example536506
-Node: Function Caveats539100
-Node: Calling A Function539521
-Node: Variable Scope540636
-Node: Pass By Value/Reference543599
-Node: Return Statement547107
-Node: Dynamic Typing550088
-Node: Indirect Calls551019
-Node: Library Functions560704
-Ref: Library Functions-Footnote-1564217
-Ref: Library Functions-Footnote-2564360
-Node: Library Names564531
-Ref: Library Names-Footnote-1568002
-Ref: Library Names-Footnote-2568222
-Node: General Functions568308
-Node: Strtonum Function569261
-Node: Assert Function572191
-Node: Round Function575517
-Node: Cliff Random Function577060
-Node: Ordinal Functions578076
-Ref: Ordinal Functions-Footnote-1581146
-Ref: Ordinal Functions-Footnote-2581398
-Node: Join Function581607
-Ref: Join Function-Footnote-1583378
-Node: Getlocaltime Function583578
-Node: Data File Management587293
-Node: Filetrans Function587925
-Node: Rewind Function591994
-Node: File Checking593381
-Node: Empty Files594475
-Node: Ignoring Assigns596705
-Node: Getopt Function598258
-Ref: Getopt Function-Footnote-1609562
-Node: Passwd Functions609765
-Ref: Passwd Functions-Footnote-1618740
-Node: Group Functions618828
-Node: Walking Arrays626912
-Node: Sample Programs629049
-Node: Running Examples629723
-Node: Clones630451
-Node: Cut Program631675
-Node: Egrep Program641520
-Ref: Egrep Program-Footnote-1649293
-Node: Id Program649403
-Node: Split Program653019
-Ref: Split Program-Footnote-1656538
-Node: Tee Program656666
-Node: Uniq Program659469
-Node: Wc Program666898
-Ref: Wc Program-Footnote-1671164
-Ref: Wc Program-Footnote-2671364
-Node: Miscellaneous Programs671456
-Node: Dupword Program672644
-Node: Alarm Program674675
-Node: Translate Program679424
-Ref: Translate Program-Footnote-1683811
-Ref: Translate Program-Footnote-2684039
-Node: Labels Program684173
-Ref: Labels Program-Footnote-1687544
-Node: Word Sorting687628
-Node: History Sorting691512
-Node: Extract Program693351
-Ref: Extract Program-Footnote-1700852
-Node: Simple Sed700980
-Node: Igawk Program704042
-Ref: Igawk Program-Footnote-1719199
-Ref: Igawk Program-Footnote-2719400
-Node: Anagram Program719538
-Node: Signature Program722606
-Node: Advanced Features723706
-Node: Nondecimal Data725588
-Node: Array Sorting727171
-Node: Controlling Array Traversal727868
-Node: Array Sorting Functions736106
-Ref: Array Sorting Functions-Footnote-1739780
-Ref: Array Sorting Functions-Footnote-2739873
-Node: Two-way I/O740067
-Ref: Two-way I/O-Footnote-1745499
-Node: TCP/IP Networking745569
-Node: Profiling748413
-Node: Internationalization755868
-Node: I18N and L10N757293
-Node: Explaining gettext757979
-Ref: Explaining gettext-Footnote-1763045
-Ref: Explaining gettext-Footnote-2763229
-Node: Programmer i18n763394
-Node: Translator i18n767594
-Node: String Extraction768387
-Ref: String Extraction-Footnote-1769348
-Node: Printf Ordering769434
-Ref: Printf Ordering-Footnote-1772218
-Node: I18N Portability772282
-Ref: I18N Portability-Footnote-1774731
-Node: I18N Example774794
-Ref: I18N Example-Footnote-1777429
-Node: Gawk I18N777501
-Node: Debugger778122
-Node: Debugging779093
-Node: Debugging Concepts779526
-Node: Debugging Terms781382
-Node: Awk Debugging783979
-Node: Sample Debugging Session784871
-Node: Debugger Invocation785391
-Node: Finding The Bug786723
-Node: List of Debugger Commands793211
-Node: Breakpoint Control794545
-Node: Debugger Execution Control798209
-Node: Viewing And Changing Data801569
-Node: Execution Stack804925
-Node: Debugger Info806392
-Node: Miscellaneous Debugger Commands810374
-Node: Readline Support815550
-Node: Limitations816381
-Node: Arbitrary Precision Arithmetic818633
-Ref: Arbitrary Precision Arithmetic-Footnote-1820284
-Node: General Arithmetic820432
-Node: Floating Point Issues822152
-Node: String Conversion Precision823033
-Ref: String Conversion Precision-Footnote-1824739
-Node: Unexpected Results824848
-Node: POSIX Floating Point Problems827001
-Ref: POSIX Floating Point Problems-Footnote-1830826
-Node: Integer Programming830864
-Node: Floating-point Programming832617
-Ref: Floating-point Programming-Footnote-1838926
-Node: Floating-point Representation839190
-Node: Floating-point Context840355
-Ref: table-ieee-formats841197
-Node: Rounding Mode842581
-Ref: table-rounding-modes843060
-Ref: Rounding Mode-Footnote-1846064
-Node: Gawk and MPFR846245
-Node: Arbitrary Precision Floats847487
-Ref: Arbitrary Precision Floats-Footnote-1849916
-Node: Setting Precision850227
-Node: Setting Rounding Mode852960
-Ref: table-gawk-rounding-modes853364
-Node: Floating-point Constants854544
-Node: Changing Precision855968
-Ref: Changing Precision-Footnote-1857368
-Node: Exact Arithmetic857542
-Node: Arbitrary Precision Integers860650
-Ref: Arbitrary Precision Integers-Footnote-1863650
-Node: Dynamic Extensions863797
-Node: Extension Intro865174
-Node: Plugin License866382
-Node: Extension Mechanism Outline867067
-Ref: load-extension867484
-Ref: load-new-function868962
-Ref: call-new-function869957
-Node: Extension API Description871965
-Node: Extension API Functions Introduction873297
-Node: General Data Types878075
-Ref: General Data Types-Footnote-1883677
-Node: Requesting Values883976
-Ref: table-value-types-returned884707
-Node: Constructor Functions885661
-Node: Registration Functions888657
-Node: Extension Functions889342
-Node: Exit Callback Functions891516
-Node: Extension Version String892759
-Node: Input Parsers893409
-Node: Output Wrappers903126
-Node: Two-way processors907542
-Node: Printing Messages909672
-Ref: Printing Messages-Footnote-1910749
-Node: Updating `ERRNO'910901
-Node: Accessing Parameters911640
-Node: Symbol Table Access912870
-Node: Symbol table by name913382
-Node: Symbol table by cookie914955
-Ref: Symbol table by cookie-Footnote-1919084
-Node: Cached values919147
-Ref: Cached values-Footnote-1922590
-Node: Array Manipulation922681
-Ref: Array Manipulation-Footnote-1923779
-Node: Array Data Types923818
-Ref: Array Data Types-Footnote-1926521
-Node: Array Functions926613
-Node: Flattening Arrays930379
-Node: Creating Arrays937218
-Node: Extension API Variables942013
-Node: Extension Versioning942649
-Node: Extension API Informational Variables944550
-Node: Extension API Boilerplate945636
-Node: Finding Extensions949467
-Node: Extension Example950014
-Node: Internal File Description950752
-Node: Internal File Ops954440
-Ref: Internal File Ops-Footnote-1965887
-Node: Using Internal File Ops966027
-Ref: Using Internal File Ops-Footnote-1968380
-Node: Extension Samples968646
-Node: Extension Sample File Functions970170
-Node: Extension Sample Fnmatch978643
-Node: Extension Sample Fork980369
-Node: Extension Sample Inplace981587
-Node: Extension Sample Ord983365
-Node: Extension Sample Readdir984144
-Node: Extension Sample Revout985648
-Node: Extension Sample Rev2way986241
-Node: Extension Sample Read write array986931
-Node: Extension Sample Readfile988814
-Node: Extension Sample API Tests989571
-Node: Extension Sample Time990096
-Node: gawkextlib991403
-Node: Language History993784
-Node: V7/SVR3.1995306
-Node: SVR4997627
-Node: POSIX999069
-Node: BTL1000455
-Node: POSIX/GNU1001189
-Node: Common Extensions1006724
-Node: Ranges and Locales1007879
-Ref: Ranges and Locales-Footnote-11012497
-Ref: Ranges and Locales-Footnote-21012524
-Ref: Ranges and Locales-Footnote-31012784
-Node: Contributors1013005
-Node: Installation1017809
-Node: Gawk Distribution1018703
-Node: Getting1019187
-Node: Extracting1020013
-Node: Distribution contents1021705
-Node: Unix Installation1026966
-Node: Quick Installation1027583
-Node: Additional Configuration Options1029545
-Node: Configuration Philosophy1031022
-Node: Non-Unix Installation1033364
-Node: PC Installation1033822
-Node: PC Binary Installation1035121
-Node: PC Compiling1036969
-Node: PC Testing1039913
-Node: PC Using1041089
-Node: Cygwin1045274
-Node: MSYS1046274
-Node: VMS Installation1046788
-Node: VMS Compilation1047391
-Ref: VMS Compilation-Footnote-11048398
-Node: VMS Installation Details1048456
-Node: VMS Running1050091
-Node: VMS Old Gawk1051698
-Node: Bugs1052172
-Node: Other Versions1056024
-Node: Notes1061625
-Node: Compatibility Mode1062425
-Node: Additions1063208
-Node: Accessing The Source1064135
-Node: Adding Code1065575
-Node: New Ports1071620
-Node: Derived Files1075755
-Ref: Derived Files-Footnote-11081076
-Ref: Derived Files-Footnote-21081110
-Ref: Derived Files-Footnote-31081710
-Node: Future Extensions1081808
-Node: Implementation Limitations1082389
-Node: Extension Design1083641
-Node: Old Extension Problems1084790
-Ref: Old Extension Problems-Footnote-11086298
-Node: Extension New Mechanism Goals1086355
-Ref: Extension New Mechanism Goals-Footnote-11089714
-Node: Extension Other Design Decisions1089900
-Node: Extension Future Growth1092006
-Node: Old Extension Mechanism1092827
-Node: Basic Concepts1094567
-Node: Basic High Level1095248
-Ref: figure-general-flow1095519
-Ref: figure-process-flow1096118
-Ref: Basic High Level-Footnote-11099347
-Node: Basic Data Typing1099532
-Node: Glossary1102887
-Node: Copying1128358
-Node: GNU Free Documentation License1165915
-Node: Index1191052
+Ref: Auto-set-Footnote-1425284
+Ref: Auto-set-Footnote-2425489
+Node: ARGC and ARGV425545
+Node: Arrays429396
+Node: Array Basics430901
+Node: Array Intro431727
+Node: Reference to Elements436045
+Node: Assigning Elements438315
+Node: Array Example438806
+Node: Scanning an Array440538
+Node: Controlling Scanning442852
+Ref: Controlling Scanning-Footnote-1447775
+Node: Delete448091
+Ref: Delete-Footnote-1450856
+Node: Numeric Array Subscripts450913
+Node: Uninitialized Subscripts453096
+Node: Multi-dimensional454724
+Node: Multi-scanning457818
+Node: Arrays of Arrays459409
+Node: Functions464050
+Node: Built-in464869
+Node: Calling Built-in465947
+Node: Numeric Functions467935
+Ref: Numeric Functions-Footnote-1471767
+Ref: Numeric Functions-Footnote-2472124
+Ref: Numeric Functions-Footnote-3472172
+Node: String Functions472441
+Ref: String Functions-Footnote-1495938
+Ref: String Functions-Footnote-2496067
+Ref: String Functions-Footnote-3496315
+Node: Gory Details496402
+Ref: table-sub-escapes498081
+Ref: table-sub-posix-92499435
+Ref: table-sub-proposed500786
+Ref: table-posix-sub502140
+Ref: table-gensub-escapes503685
+Ref: Gory Details-Footnote-1504861
+Ref: Gory Details-Footnote-2504912
+Node: I/O Functions505063
+Ref: I/O Functions-Footnote-1512048
+Node: Time Functions512195
+Ref: Time Functions-Footnote-1523128
+Ref: Time Functions-Footnote-2523196
+Ref: Time Functions-Footnote-3523354
+Ref: Time Functions-Footnote-4523465
+Ref: Time Functions-Footnote-5523577
+Ref: Time Functions-Footnote-6523804
+Node: Bitwise Functions524070
+Ref: table-bitwise-ops524628
+Ref: Bitwise Functions-Footnote-1528849
+Node: Type Functions529033
+Node: I18N Functions529503
+Node: User-defined531130
+Node: Definition Syntax531934
+Ref: Definition Syntax-Footnote-1536844
+Node: Function Example536913
+Node: Function Caveats539507
+Node: Calling A Function539928
+Node: Variable Scope541043
+Node: Pass By Value/Reference544006
+Node: Return Statement547514
+Node: Dynamic Typing550495
+Node: Indirect Calls551426
+Node: Library Functions561111
+Ref: Library Functions-Footnote-1564624
+Ref: Library Functions-Footnote-2564767
+Node: Library Names564938
+Ref: Library Names-Footnote-1568409
+Ref: Library Names-Footnote-2568629
+Node: General Functions568715
+Node: Strtonum Function569668
+Node: Assert Function572598
+Node: Round Function575924
+Node: Cliff Random Function577467
+Node: Ordinal Functions578483
+Ref: Ordinal Functions-Footnote-1581553
+Ref: Ordinal Functions-Footnote-2581805
+Node: Join Function582014
+Ref: Join Function-Footnote-1583785
+Node: Getlocaltime Function583985
+Node: Data File Management587700
+Node: Filetrans Function588332
+Node: Rewind Function592401
+Node: File Checking593788
+Node: Empty Files594882
+Node: Ignoring Assigns597112
+Node: Getopt Function598665
+Ref: Getopt Function-Footnote-1609969
+Node: Passwd Functions610172
+Ref: Passwd Functions-Footnote-1619147
+Node: Group Functions619235
+Node: Walking Arrays627319
+Node: Sample Programs629456
+Node: Running Examples630130
+Node: Clones630858
+Node: Cut Program632082
+Node: Egrep Program641927
+Ref: Egrep Program-Footnote-1649700
+Node: Id Program649810
+Node: Split Program653426
+Ref: Split Program-Footnote-1656945
+Node: Tee Program657073
+Node: Uniq Program659876
+Node: Wc Program667305
+Ref: Wc Program-Footnote-1671571
+Ref: Wc Program-Footnote-2671771
+Node: Miscellaneous Programs671863
+Node: Dupword Program673051
+Node: Alarm Program675082
+Node: Translate Program679831
+Ref: Translate Program-Footnote-1684218
+Ref: Translate Program-Footnote-2684446
+Node: Labels Program684580
+Ref: Labels Program-Footnote-1687951
+Node: Word Sorting688035
+Node: History Sorting691919
+Node: Extract Program693758
+Ref: Extract Program-Footnote-1701259
+Node: Simple Sed701387
+Node: Igawk Program704449
+Ref: Igawk Program-Footnote-1719606
+Ref: Igawk Program-Footnote-2719807
+Node: Anagram Program719945
+Node: Signature Program723013
+Node: Advanced Features724113
+Node: Nondecimal Data725995
+Node: Array Sorting727578
+Node: Controlling Array Traversal728275
+Node: Array Sorting Functions736513
+Ref: Array Sorting Functions-Footnote-1740187
+Ref: Array Sorting Functions-Footnote-2740280
+Node: Two-way I/O740474
+Ref: Two-way I/O-Footnote-1745906
+Node: TCP/IP Networking745976
+Node: Profiling748820
+Node: Internationalization756275
+Node: I18N and L10N757700
+Node: Explaining gettext758386
+Ref: Explaining gettext-Footnote-1763452
+Ref: Explaining gettext-Footnote-2763636
+Node: Programmer i18n763801
+Node: Translator i18n768001
+Node: String Extraction768794
+Ref: String Extraction-Footnote-1769755
+Node: Printf Ordering769841
+Ref: Printf Ordering-Footnote-1772625
+Node: I18N Portability772689
+Ref: I18N Portability-Footnote-1775138
+Node: I18N Example775201
+Ref: I18N Example-Footnote-1777836
+Node: Gawk I18N777908
+Node: Debugger778529
+Node: Debugging779500
+Node: Debugging Concepts779933
+Node: Debugging Terms781789
+Node: Awk Debugging784386
+Node: Sample Debugging Session785278
+Node: Debugger Invocation785798
+Node: Finding The Bug787130
+Node: List of Debugger Commands793618
+Node: Breakpoint Control794952
+Node: Debugger Execution Control798616
+Node: Viewing And Changing Data801976
+Node: Execution Stack805332
+Node: Debugger Info806799
+Node: Miscellaneous Debugger Commands810781
+Node: Readline Support815957
+Node: Limitations816788
+Node: Arbitrary Precision Arithmetic819040
+Ref: Arbitrary Precision Arithmetic-Footnote-1820691
+Node: General Arithmetic820839
+Node: Floating Point Issues822559
+Node: String Conversion Precision823440
+Ref: String Conversion Precision-Footnote-1825146
+Node: Unexpected Results825255
+Node: POSIX Floating Point Problems827408
+Ref: POSIX Floating Point Problems-Footnote-1831233
+Node: Integer Programming831271
+Node: Floating-point Programming833024
+Ref: Floating-point Programming-Footnote-1839333
+Node: Floating-point Representation839597
+Node: Floating-point Context840762
+Ref: table-ieee-formats841604
+Node: Rounding Mode842988
+Ref: table-rounding-modes843467
+Ref: Rounding Mode-Footnote-1846471
+Node: Gawk and MPFR846652
+Node: Arbitrary Precision Floats847894
+Ref: Arbitrary Precision Floats-Footnote-1850323
+Node: Setting Precision850634
+Node: Setting Rounding Mode853367
+Ref: table-gawk-rounding-modes853771
+Node: Floating-point Constants854951
+Node: Changing Precision856375
+Ref: Changing Precision-Footnote-1857775
+Node: Exact Arithmetic857949
+Node: Arbitrary Precision Integers861057
+Ref: Arbitrary Precision Integers-Footnote-1864057
+Node: Dynamic Extensions864204
+Node: Extension Intro865581
+Node: Plugin License866789
+Node: Extension Mechanism Outline867474
+Ref: load-extension867891
+Ref: load-new-function869369
+Ref: call-new-function870364
+Node: Extension API Description872372
+Node: Extension API Functions Introduction873704
+Node: General Data Types878482
+Ref: General Data Types-Footnote-1884084
+Node: Requesting Values884383
+Ref: table-value-types-returned885114
+Node: Constructor Functions886068
+Node: Registration Functions889064
+Node: Extension Functions889749
+Node: Exit Callback Functions891923
+Node: Extension Version String893166
+Node: Input Parsers893816
+Node: Output Wrappers903533
+Node: Two-way processors907949
+Node: Printing Messages910079
+Ref: Printing Messages-Footnote-1911156
+Node: Updating `ERRNO'911308
+Node: Accessing Parameters912047
+Node: Symbol Table Access913277
+Node: Symbol table by name913789
+Node: Symbol table by cookie915362
+Ref: Symbol table by cookie-Footnote-1919491
+Node: Cached values919554
+Ref: Cached values-Footnote-1922997
+Node: Array Manipulation923088
+Ref: Array Manipulation-Footnote-1924186
+Node: Array Data Types924225
+Ref: Array Data Types-Footnote-1926928
+Node: Array Functions927020
+Node: Flattening Arrays930786
+Node: Creating Arrays937625
+Node: Extension API Variables942420
+Node: Extension Versioning943056
+Node: Extension API Informational Variables944957
+Node: Extension API Boilerplate946043
+Node: Finding Extensions949874
+Node: Extension Example950421
+Node: Internal File Description951159
+Node: Internal File Ops954847
+Ref: Internal File Ops-Footnote-1966294
+Node: Using Internal File Ops966434
+Ref: Using Internal File Ops-Footnote-1968787
+Node: Extension Samples969053
+Node: Extension Sample File Functions970577
+Node: Extension Sample Fnmatch979050
+Node: Extension Sample Fork980776
+Node: Extension Sample Inplace981994
+Node: Extension Sample Ord983772
+Node: Extension Sample Readdir984551
+Node: Extension Sample Revout986055
+Node: Extension Sample Rev2way986648
+Node: Extension Sample Read write array987338
+Node: Extension Sample Readfile989221
+Node: Extension Sample API Tests989978
+Node: Extension Sample Time990503
+Node: gawkextlib991810
+Node: Language History994191
+Node: V7/SVR3.1995713
+Node: SVR4998034
+Node: POSIX999476
+Node: BTL1000862
+Node: POSIX/GNU1001596
+Node: Common Extensions1007131
+Node: Ranges and Locales1008286
+Ref: Ranges and Locales-Footnote-11012904
+Ref: Ranges and Locales-Footnote-21012931
+Ref: Ranges and Locales-Footnote-31013191
+Node: Contributors1013412
+Node: Installation1018216
+Node: Gawk Distribution1019110
+Node: Getting1019594
+Node: Extracting1020420
+Node: Distribution contents1022112
+Node: Unix Installation1027373
+Node: Quick Installation1027990
+Node: Additional Configuration Options1029952
+Node: Configuration Philosophy1031429
+Node: Non-Unix Installation1033771
+Node: PC Installation1034229
+Node: PC Binary Installation1035528
+Node: PC Compiling1037376
+Node: PC Testing1040320
+Node: PC Using1041496
+Node: Cygwin1045681
+Node: MSYS1046681
+Node: VMS Installation1047195
+Node: VMS Compilation1047798
+Ref: VMS Compilation-Footnote-11048805
+Node: VMS Installation Details1048863
+Node: VMS Running1050498
+Node: VMS Old Gawk1052105
+Node: Bugs1052579
+Node: Other Versions1056431
+Node: Notes1062032
+Node: Compatibility Mode1062832
+Node: Additions1063615
+Node: Accessing The Source1064542
+Node: Adding Code1065982
+Node: New Ports1072027
+Node: Derived Files1076162
+Ref: Derived Files-Footnote-11081483
+Ref: Derived Files-Footnote-21081517
+Ref: Derived Files-Footnote-31082117
+Node: Future Extensions1082215
+Node: Implementation Limitations1082796
+Node: Extension Design1084048
+Node: Old Extension Problems1085197
+Ref: Old Extension Problems-Footnote-11086705
+Node: Extension New Mechanism Goals1086762
+Ref: Extension New Mechanism Goals-Footnote-11090121
+Node: Extension Other Design Decisions1090307
+Node: Extension Future Growth1092413
+Node: Old Extension Mechanism1093234
+Node: Basic Concepts1094974
+Node: Basic High Level1095655
+Ref: figure-general-flow1095926
+Ref: figure-process-flow1096525
+Ref: Basic High Level-Footnote-11099754
+Node: Basic Data Typing1099939
+Node: Glossary1103294
+Node: Copying1128765
+Node: GNU Free Documentation License1166322
+Node: Index1191459

End Tag Table
diff --git a/doc/gawk.texi b/doc/gawk.texi
index 1684e901..abebbb41 100644
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -13856,6 +13856,19 @@ The maximum precision supported by MPFR.
The minimum precision required by MPFR.
@end table
+The following additional elements in the array are available to provide
+information about the version of the extension API, if your version
+of @command{gawk} supports dynamic loading of extension functions
+(@pxref{Dynamic Extensions}):
+
+@table @code
+@item PROCINFO["api_major"]
+The major version of the extension API.
+
+@item PROCINFO["api_minor"]
+The minor version of the extension API.
+@end table
+
On some systems, there may be elements in the array, @code{"group1"}
through @code{"group@var{N}"} for some @var{N}. @var{N} is the number of
supplementary groups that the process has. Use the @code{in} operator
diff --git a/doc/gawkman.texi b/doc/gawkman.texi
index 3cf37663..2998e0b4 100644
--- a/doc/gawkman.texi
+++ b/doc/gawkman.texi
@@ -13241,6 +13241,19 @@ The maximum precision supported by MPFR.
The minimum precision required by MPFR.
@end table
+The following additional elements in the array are available to provide
+information about the version of the extension API, if your version
+of @command{gawk} supports dynamic loading of extension functions
+(@pxref{Dynamic Extensions}):
+
+@table @code
+@item PROCINFO["api_major"]
+The major version of the extension API.
+
+@item PROCINFO["api_minor"]
+The minor version of the extension API.
+@end table
+
On some systems, there may be elements in the array, @code{"group1"}
through @code{"group@var{N}"} for some @var{N}. @var{N} is the number of
supplementary groups that the process has. Use the @code{in} operator
diff --git a/main.c b/main.c
index 2a7fbc20..9ea76cdf 100644
--- a/main.c
+++ b/main.c
@@ -1129,6 +1129,11 @@ load_procinfo()
update_PROCINFO_num("prec_min", MPFR_PREC_MIN);
#endif
+#ifdef DYNAMIC
+ update_PROCINFO_num("api_major", GAWK_API_MAJOR_VERSION);
+ update_PROCINFO_num("api_minor", GAWK_API_MINOR_VERSION);
+#endif
+
#ifdef GETPGRP_VOID
#define getpgrp_arg() /* nothing */
#else