gawk-diffs
[Top][All Lists]
Advanced

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

[SCM] gawk branch, master, updated. gawk-4.1.0-4795-g48557ded


From: Arnold Robbins
Subject: [SCM] gawk branch, master, updated. gawk-4.1.0-4795-g48557ded
Date: Tue, 19 Jul 2022 03:13:45 -0400 (EDT)

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "gawk".

The branch, master has been updated
       via  48557ded75a7dad3ca5ddea13dfad54496722eed (commit)
       via  29eba696bdad1a9795aab173e7cd4e71d4933502 (commit)
      from  27bce666fac93015433ec12ff5c97a72d7250213 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://git.sv.gnu.org/cgit/gawk.git/commit/?id=48557ded75a7dad3ca5ddea13dfad54496722eed

commit 48557ded75a7dad3ca5ddea13dfad54496722eed
Author: Arnold D. Robbins <arnold@skeeve.com>
Date:   Tue Jul 19 10:13:21 2022 +0300

    Doc updates.

diff --git a/doc/ChangeLog b/doc/ChangeLog
index 30d6f633..9b18c753 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,3 +1,9 @@
+2022-07-19         Arnold D. Robbins     <arnold@skeeve.com>
+
+       * gawktexi.in (Persistent Memory): Document the PMA_VERBOSITY
+       environment variable. Eveywhere: do thorough indexing of all
+       environment variables.
+
 2022-07-14         Arnold D. Robbins     <arnold@skeeve.com>
 
        * gawkworkflow.texi: Typo fix.
diff --git a/doc/gawk.info b/doc/gawk.info
index db27f25a..cd28adb9 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -3209,6 +3209,10 @@ used by regular users:
      On systems that do not support the 'usleep()' system call, the
      value is rounded up to an integral number of seconds.
 
+'GAWK_PERSIST_FILE'
+     Specifies the backing file to use for persistent storage of
+     'gawk''s variables and arrays.  *Note Persistent Memory::.
+
 'GAWK_READ_TIMEOUT'
      Specifies the time, in milliseconds, for 'gawk' to wait for input
      before returning with an error.  *Note Read Timeout::.
@@ -3219,6 +3223,10 @@ used by regular users:
      Networking::.  Note that when nonfatal I/O is enabled (*note
      Nonfatal::), 'gawk' only tries to open a TCP/IP socket once.
 
+'PMA_VERBOSITY'
+     Controls the verbosity of the persistent memory allocator.  *Note
+     Persistent Memory::.
+
 'POSIXLY_CORRECT'
      Causes 'gawk' to switch to POSIX-compatibility mode, disabling all
      traditional and GNU extensions.  *Note Options::.
@@ -3284,6 +3292,7 @@ change.  The variables are:
 'TIDYMEM'
      If this variable exists, 'gawk' uses the 'mtrace()' library calls
      from the GNU C library to help track down possible memory leaks.
+     This cannot be used together with the persistent memory allocator.
 
 
 File: gawk.info,  Node: Exit Status,  Next: Include Files,  Prev: Environment 
Variables,  Up: Invoking Gawk
@@ -22194,6 +22203,12 @@ uses, provides the following advice about the backing 
file:
 with the '--disable-pma' option to the 'configure' command at the time
 that you build 'gawk' (*note Unix Installation::).
 
+   You can set the 'PMA_VERBOSITY' environment variable to a value
+between zero and three to control how much debugging and error
+information the persistent memory allocator will print.  'gawk' sets the
+default to one.  See the 'support/pma.c' source code to understand what
+the different verbosity levels are.
+
    Here are articles and web links that provide more information about
 persistent memory and why it's useful in a scripting language like
 'gawk'.
@@ -36063,13 +36078,41 @@ Index
 * awk programs, internationalizing <1>:  Programmer i18n.     (line   6)
 * awk to Go translator:                  Other Versions.      (line 133)
 * awka compiler for awk:                 Other Versions.      (line  64)
+* AWKBUFSIZE environment variable:       Other Environment Variables.
+                                                              (line  41)
 * AWKgo:                                 Other Versions.      (line 133)
-* AWKLIBPATH environment variable:       AWKLIBPATH Variable. (line   6)
+* AWKLIBPATH environment variable:       Options.             (line 203)
+* AWKLIBPATH environment variable <1>:   AWKLIBPATH Variable. (line   6)
+* AWKLIBPATH environment variable <2>:   Loading Shared Libraries.
+                                                              (line   8)
+* AWKLIBPATH environment variable <3>:   Invoking Summary.    (line  49)
+* AWKLIBPATH environment variable <4>:   Creating Arrays.     (line 129)
+* AWKLIBPATH environment variable <5>:   Using Internal File Ops.
+                                                              (line  44)
+* AWKLIBPATH environment variable <6>:   POSIX/GNU.           (line 108)
+* AWKLIBPATH environment variable <7>:   Distribution contents.
+                                                              (line 183)
+* AWKLIBPATH environment variable <8>:   Shell Startup Files. (line   6)
 * AWKPATH environment variable:          AWKPATH Variable.    (line   6)
-* AWKPATH environment variable <1>:      PC Using.            (line  12)
+* AWKPATH environment variable <1>:      Include Files.       (line   8)
+* AWKPATH environment variable <2>:      Invoking Summary.    (line  49)
+* AWKPATH environment variable <3>:      Igawk Program.       (line  12)
+* AWKPATH environment variable <4>:      Igawk Program.       (line 211)
+* AWKPATH environment variable <5>:      Debugger Invocation. (line  16)
+* AWKPATH environment variable <6>:      POSIX/GNU.           (line 105)
+* AWKPATH environment variable <7>:      Feature History.     (line  11)
+* AWKPATH environment variable <8>:      Distribution contents.
+                                                              (line 183)
+* AWKPATH environment variable <9>:      Shell Startup Files. (line   6)
+* AWKPATH environment variable <10>:     PC Using.            (line  12)
+* AWKPATH environment variable <11>:     VMS Running.         (line  57)
 * awkprof.out file:                      Profiling.           (line   6)
+* AWKREADFUNC environment variable:      Other Environment Variables.
+                                                              (line  57)
 * awksed.awk program:                    Simple Sed.          (line  25)
 * awkvars.out file:                      Options.             (line  97)
+* AWK_HASH environment variable:         Other Environment Variables.
+                                                              (line  50)
 * b debugger command (alias for break):  Breakpoint Control.  (line  11)
 * backslash (\):                         Comments.            (line  50)
 * backslash (\), in shell commands:      Quoting.             (line  48)
@@ -36894,21 +36937,91 @@ Index
 * endpwent() user-defined function:      Passwd Functions.    (line 210)
 * English, Steve:                        Advanced Features.   (line   6)
 * ENVIRON array:                         Auto-set.            (line  59)
+* environment variables, AWKLIBPATH:     Options.             (line 203)
 * environment variables, POSIXLY_CORRECT: Options.            (line 396)
 * environment variables, used by gawk:   Environment Variables.
                                                               (line   6)
 * environment variables, AWKPATH:        AWKPATH Variable.    (line   6)
-* environment variables, AWKLIBPATH:     AWKLIBPATH Variable. (line   6)
-* environment variables, GAWK_READ_TIMEOUT: Read Timeout.     (line  71)
-* environment variables, GAWK_SOCK_RETRIES: Nonfatal.         (line  53)
+* environment variables, AWKLIBPATH <1>: AWKLIBPATH Variable. (line   6)
+* environment variables, GAWK_MSEC_SLEEP: Other Environment Variables.
+                                                              (line  10)
+* environment variables, GAWK_PERSIST_FILE: Other Environment Variables.
+                                                              (line  15)
+* environment variables, GAWK_READ_TIMEOUT: Other Environment Variables.
+                                                              (line  19)
+* environment variables, GAWK_SOCK_RETRIES: Other Environment Variables.
+                                                              (line  23)
+* environment variables, PMA_VERBOSITY:  Other Environment Variables.
+                                                              (line  29)
+* environment variables, POSIXLY_CORRECT <1>: Other Environment Variables.
+                                                              (line  33)
+* environment variables, AWKBUFSIZE:     Other Environment Variables.
+                                                              (line  41)
+* environment variables, AWK_HASH:       Other Environment Variables.
+                                                              (line  50)
+* environment variables, AWKREADFUNC:    Other Environment Variables.
+                                                              (line  57)
+* environment variables, GAWK_MSG_SRC:   Other Environment Variables.
+                                                              (line  63)
+* environment variables, GAWK_LOCALE_DIR: Other Environment Variables.
+                                                              (line  70)
+* environment variables, GAWK_NO_DFA:    Other Environment Variables.
+                                                              (line  75)
+* environment variables, GAWK_STACKSIZE: Other Environment Variables.
+                                                              (line  83)
+* environment variables, INT_CHAIN_MAX:  Other Environment Variables.
+                                                              (line  87)
+* environment variables, STR_CHAIN_MAX:  Other Environment Variables.
+                                                              (line  91)
+* environment variables, TIDYMEM:        Other Environment Variables.
+                                                              (line  95)
+* environment variables, AWKPATH <1>:    Include Files.       (line   8)
+* environment variables, AWKLIBPATH <2>: Loading Shared Libraries.
+                                                              (line   8)
+* environment variables, AWKPATH <2>:    Invoking Summary.    (line  49)
+* environment variables, AWKLIBPATH <3>: Invoking Summary.    (line  49)
+* environment variables, POSIXLY_CORRECT <2>: Invoking Summary.
+                                                              (line  49)
+* environment variables, GAWK_READ_TIMEOUT <1>: Read Timeout. (line  71)
+* environment variables, GAWK_SOCK_RETRIES <1>: Nonfatal.     (line  53)
+* environment variables, POSIXLY_CORRECT <3>: Locale influences conversions.
+                                                              (line  41)
 * environment variables, in ENVIRON array: Auto-set.          (line  59)
+* environment variables, TZ:             Auto-set.            (line  76)
+* environment variables, LC_ALL:         Split Program.       (line  39)
+* environment variables, AWKPATH <3>:    Igawk Program.       (line  12)
+* environment variables, AWKPATH <4>:    Igawk Program.       (line 211)
+* environment variables, GAWK_PERSIST_FILE <1>: Persistent Memory.
+                                                              (line  32)
+* environment variables, PMA_VERBOSITY <1>: Persistent Memory.
+                                                              (line  74)
 * environment variables, LANGUAGE:       Explaining gettext.  (line 120)
-* environment variables, GAWK_LOCALE_DIR: Explaining gettext. (line 132)
+* environment variables, GAWK_LOCALE_DIR <1>: Explaining gettext.
+                                                              (line 132)
 * environment variables, LANGUAGE <1>:   I18N Example.        (line  68)
-* environment variables, LC_ALL:         I18N Example.        (line  68)
+* environment variables, LC_ALL <1>:     I18N Example.        (line  68)
 * environment variables, LANG:           I18N Example.        (line  68)
 * environment variables, LC_MESSAGES:    I18N Example.        (line  68)
-* environment variables, AWKPATH <1>:    PC Using.            (line  12)
+* environment variables, AWKPATH <5>:    Debugger Invocation. (line  16)
+* environment variables, AWKLIBPATH <4>: Creating Arrays.     (line 129)
+* environment variables, AWKLIBPATH <5>: Using Internal File Ops.
+                                                              (line  44)
+* environment variables, AWKPATH <6>:    POSIX/GNU.           (line 105)
+* environment variables, AWKLIBPATH <6>: POSIX/GNU.           (line 108)
+* environment variables, AWKPATH <7>:    Feature History.     (line  11)
+* environment variables, AWKPATH <8>:    Distribution contents.
+                                                              (line 183)
+* environment variables, AWKLIBPATH <7>: Distribution contents.
+                                                              (line 183)
+* environment variables, AWKPATH <9>:    Shell Startup Files. (line   6)
+* environment variables, AWKLIBPATH <8>: Shell Startup Files. (line   6)
+* environment variables, Path:           PC Binary Installation.
+                                                              (line   6)
+* environment variables, AWKPATH <10>:   PC Using.            (line  12)
+* environment variables, AWKPATH <11>:   VMS Running.         (line  57)
+* environment variables, LC_ALL <2>:     Bug address.         (line  18)
+* environment variables, PATH:           Derived Files.       (line  94)
+* environment, definition of:            Glossary.            (line 304)
 * epoch, definition of:                  Glossary.            (line 310)
 * equals sign (=), = operator:           Assignment Ops.      (line   6)
 * equals sign (=), == operator:          Comparison Operators.
@@ -37362,9 +37475,28 @@ Index
 * gawkpath_append shell function:        Shell Startup Files. (line  19)
 * gawkpath_default shell function:       Shell Startup Files. (line  12)
 * gawkpath_prepend shell function:       Shell Startup Files. (line  15)
-* GAWK_LOCALE_DIR environment variable:  Explaining gettext.  (line 132)
-* GAWK_READ_TIMEOUT environment variable: Read Timeout.       (line  71)
-* GAWK_SOCK_RETRIES environment variable: Nonfatal.           (line  53)
+* GAWK_LOCALE_DIR environment variable:  Other Environment Variables.
+                                                              (line  70)
+* GAWK_LOCALE_DIR environment variable <1>: Explaining gettext.
+                                                              (line 132)
+* GAWK_MSEC_SLEEP environment variable:  Other Environment Variables.
+                                                              (line  10)
+* GAWK_MSG_SRC environment variable:     Other Environment Variables.
+                                                              (line  63)
+* GAWK_NO_DFA environment variable:      Other Environment Variables.
+                                                              (line  75)
+* GAWK_PERSIST_FILE environment variable: Other Environment Variables.
+                                                              (line  15)
+* GAWK_PERSIST_FILE environment variable <1>: Persistent Memory.
+                                                              (line  32)
+* GAWK_READ_TIMEOUT environment variable: Other Environment Variables.
+                                                              (line  19)
+* GAWK_READ_TIMEOUT environment variable <1>: Read Timeout.   (line  71)
+* GAWK_SOCK_RETRIES environment variable: Other Environment Variables.
+                                                              (line  23)
+* GAWK_SOCK_RETRIES environment variable <1>: Nonfatal.       (line  53)
+* GAWK_STACKSIZE environment variable:   Other Environment Variables.
+                                                              (line  83)
 * generate time values:                  Time Functions.      (line  25)
 * gensub:                                Standard Regexp Constants.
                                                               (line  43)
@@ -37591,6 +37723,8 @@ Index
 * interpreted programs <1>:              Glossary.            (line 443)
 * interval expressions, regexp operator: Regexp Operator Details.
                                                               (line 118)
+* INT_CHAIN_MAX environment variable:    Other Environment Variables.
+                                                              (line  87)
 * inventory-shipped file:                Sample Data Files.   (line  32)
 * invoke shell command:                  I/O Functions.       (line 105)
 * isarray:                               Type Functions.      (line  11)
@@ -37613,7 +37747,7 @@ Index
 * Kahrs, Jürgen <1>:                     Contributors.        (line  71)
 * Kasal, Stepan:                         Acknowledgments.     (line  60)
 * Kelly, Terence:                        Persistent Memory.   (line  56)
-* Kelly, Terence <1>:                    Persistent Memory.   (line  78)
+* Kelly, Terence <1>:                    Persistent Memory.   (line  84)
 * Kelly, Terence <2>:                    Feature History.     (line 508)
 * Kenobi, Obi-Wan:                       Undocumented.        (line   6)
 * Kernighan, Brian:                      History.             (line  17)
@@ -37639,7 +37773,9 @@ Index
 * LANGUAGE environment variable:         Explaining gettext.  (line 120)
 * LANGUAGE environment variable <1>:     I18N Example.        (line  68)
 * languages, data-driven:                Basic High Level.    (line  76)
-* LC_ALL environment variable:           I18N Example.        (line  68)
+* LC_ALL environment variable:           Split Program.       (line  39)
+* LC_ALL environment variable <1>:       I18N Example.        (line  68)
+* LC_ALL environment variable <2>:       Bug address.         (line  18)
 * LC_ALL locale category:                Explaining gettext.  (line 117)
 * LC_COLLATE locale category:            Explaining gettext.  (line  94)
 * LC_CTYPE locale category:              Explaining gettext.  (line  98)
@@ -37998,6 +38134,9 @@ Index
                                                               (line  77)
 * parentheses (), in a profile:          Profiling.           (line 146)
 * password file:                         Passwd Functions.    (line  16)
+* Path environment variable:             PC Binary Installation.
+                                                              (line   6)
+* PATH environment variable:             Derived Files.       (line  94)
 * patsplit:                              String Functions.    (line 310)
 * patterns, default:                     Very Simple.         (line  34)
 * patterns, regexp constants as:         Regexp Usage.        (line   6)
@@ -38042,6 +38181,9 @@ Index
 * plus sign (+), + operator:             Precedence.          (line  51)
 * plus sign (+), + operator <1>:         Precedence.          (line  57)
 * plus sign (+), += operator <1>:        Precedence.          (line  94)
+* PMA_VERBOSITY environment variable:    Other Environment Variables.
+                                                              (line  29)
+* PMA_VERBOSITY environment variable <1>: Persistent Memory.  (line  74)
 * pointers to functions:                 Indirect Calls.      (line   6)
 * portability, #! (executable scripts):  Executable Scripts.  (line  29)
 * portability, ARGV variable:            Executable Scripts.  (line  55)
@@ -38144,6 +38286,11 @@ Index
                                                               (line  83)
 * POSIX mode <13>:                       Feature History.     (line 315)
 * POSIXLY_CORRECT environment variable:  Options.             (line 396)
+* POSIXLY_CORRECT environment variable <1>: Other Environment Variables.
+                                                              (line  33)
+* POSIXLY_CORRECT environment variable <2>: Invoking Summary. (line  49)
+* POSIXLY_CORRECT environment variable <3>: Locale influences conversions.
+                                                              (line  41)
 * PREC variable:                         User-modified.       (line 126)
 * precedence, regexp operators:          Regexp Operator Details.
                                                               (line 137)
@@ -38698,6 +38845,8 @@ Index
 * strtonum:                              String Functions.    (line 408)
 * strtonum() function (gawk), --non-decimal-data option and: Nondecimal Data.
                                                               (line  35)
+* STR_CHAIN_MAX environment variable:    Other Environment Variables.
+                                                              (line  91)
 * sub:                                   Standard Regexp Constants.
                                                               (line  43)
 * sub <1>:                               String Functions.    (line 426)
@@ -38755,6 +38904,8 @@ Index
 * TEXTDOMAIN variable, BEGIN pattern and: Programmer i18n.    (line  60)
 * TEXTDOMAIN variable, portability and:  I18N Portability.    (line  20)
 * textdomain() function (C library):     Explaining gettext.  (line  28)
+* TIDYMEM environment variable:          Other Environment Variables.
+                                                              (line  95)
 * tilde (~), ~ operator:                 Regexp Usage.        (line  19)
 * tilde (~), ~ operator <1>:             Computed Regexps.    (line   6)
 * tilde (~), ~ operator <2>:             Case-sensitivity.    (line  26)
@@ -38829,6 +38980,7 @@ Index
 * type, of variable, typeof() function (gawk): Type Functions.
                                                               (line  14)
 * typeof:                                Type Functions.      (line  14)
+* TZ environment variable:               Auto-set.            (line  76)
 * u debugger command (alias for until):  Debugger Execution Control.
                                                               (line  82)
 * unassigned array elements:             Reference to Elements.
@@ -39064,566 +39216,566 @@ Ref: AWKPATH Variable-Footnote-2149334
 Node: AWKLIBPATH Variable149705
 Ref: AWKLIBPATH Variable-Footnote-1151402
 Node: Other Environment Variables151777
-Node: Exit Status155729
-Node: Include Files156406
-Node: Loading Shared Libraries160096
-Node: Obsolete161524
-Node: Undocumented162144
-Node: Invoking Summary162441
-Node: Regexp165282
-Node: Regexp Usage166736
-Node: Escape Sequences168773
-Node: Regexp Operators175015
-Node: Regexp Operator Details175500
-Ref: Regexp Operator Details-Footnote-1182864
-Node: Interval Expressions183011
-Ref: Interval Expressions-Footnote-1185186
-Node: Bracket Expressions185284
-Ref: table-char-classes187760
-Node: Leftmost Longest191087
-Node: Computed Regexps192390
-Node: GNU Regexp Operators195817
-Node: Case-sensitivity199495
-Ref: Case-sensitivity-Footnote-1202361
-Ref: Case-sensitivity-Footnote-2202596
-Node: Regexp Summary202704
-Node: Reading Files204170
-Node: Records206439
-Node: awk split records207514
-Node: gawk split records212214
-Ref: gawk split records-Footnote-1217288
-Node: Fields217325
-Node: Nonconstant Fields220066
-Ref: Nonconstant Fields-Footnote-1222302
-Node: Changing Fields222506
-Node: Field Separators228537
-Node: Default Field Splitting231235
-Node: Regexp Field Splitting232353
-Node: Single Character Fields236030
-Node: Command Line Field Separator237090
-Node: Full Line Fields240308
-Ref: Full Line Fields-Footnote-1241830
-Ref: Full Line Fields-Footnote-2241876
-Node: Field Splitting Summary241977
-Node: Constant Size244051
-Node: Fixed width data244783
-Node: Skipping intervening248250
-Node: Allowing trailing data249048
-Node: Fields with fixed data250085
-Node: Splitting By Content251603
-Ref: Splitting By Content-Footnote-1255439
-Node: More CSV255602
-Node: FS versus FPAT257217
-Node: Testing field creation258377
-Node: Multiple Line260002
-Node: Getline266279
-Node: Plain Getline268748
-Node: Getline/Variable271321
-Node: Getline/File272472
-Node: Getline/Variable/File273860
-Ref: Getline/Variable/File-Footnote-1275465
-Node: Getline/Pipe275553
-Node: Getline/Variable/Pipe278257
-Node: Getline/Coprocess279392
-Node: Getline/Variable/Coprocess280659
-Node: Getline Notes281401
-Node: Getline Summary284198
-Ref: table-getline-variants284622
-Node: Read Timeout285371
-Ref: Read Timeout-Footnote-1289287
-Node: Retrying Input289345
-Node: Command-line directories290544
-Node: Input Summary291450
-Node: Input Exercises294622
-Node: Printing295056
-Node: Print296890
-Node: Print Examples298347
-Node: Output Separators301127
-Node: OFMT303144
-Node: Printf304500
-Node: Basic Printf305285
-Node: Control Letters306859
-Node: Format Modifiers312021
-Node: Printf Examples318036
-Node: Redirection320522
-Node: Special FD327363
-Ref: Special FD-Footnote-1330531
-Node: Special Files330605
-Node: Other Inherited Files331222
-Node: Special Network332223
-Node: Special Caveats333083
-Node: Close Files And Pipes334032
-Ref: table-close-pipe-return-values340939
-Ref: Close Files And Pipes-Footnote-1341753
-Ref: Close Files And Pipes-Footnote-2341901
-Node: Nonfatal342053
-Node: Output Summary344391
-Node: Output Exercises345613
-Node: Expressions346292
-Node: Values347480
-Node: Constants348158
-Node: Scalar Constants348849
-Ref: Scalar Constants-Footnote-1351359
-Node: Nondecimal-numbers351609
-Node: Regexp Constants354610
-Node: Using Constant Regexps355136
-Node: Standard Regexp Constants355758
-Node: Strong Regexp Constants358946
-Node: Variables362661
-Node: Using Variables363318
-Node: Assignment Options365228
-Node: Conversion367699
-Node: Strings And Numbers368223
-Ref: Strings And Numbers-Footnote-1371286
-Node: Locale influences conversions371395
-Ref: table-locale-affects374153
-Node: All Operators374772
-Node: Arithmetic Ops375401
-Node: Concatenation378117
-Ref: Concatenation-Footnote-1380964
-Node: Assignment Ops381071
-Ref: table-assign-ops386062
-Node: Increment Ops387376
-Node: Truth Values and Conditions390836
-Node: Truth Values391910
-Node: Typing and Comparison392958
-Node: Variable Typing393778
-Ref: Variable Typing-Footnote-1400241
-Ref: Variable Typing-Footnote-2400313
-Node: Comparison Operators400390
-Ref: table-relational-ops400809
-Node: POSIX String Comparison404305
-Ref: POSIX String Comparison-Footnote-1406000
-Ref: POSIX String Comparison-Footnote-2406139
-Node: Boolean Ops406223
-Ref: Boolean Ops-Footnote-1410705
-Node: Conditional Exp410797
-Node: Function Calls412533
-Node: Precedence416410
-Node: Locales420069
-Node: Expressions Summary421701
-Node: Patterns and Actions424274
-Node: Pattern Overview425394
-Node: Regexp Patterns427071
-Node: Expression Patterns427613
-Node: Ranges431394
-Node: BEGIN/END434502
-Node: Using BEGIN/END435263
-Ref: Using BEGIN/END-Footnote-1438017
-Node: I/O And BEGIN/END438123
-Node: BEGINFILE/ENDFILE440436
-Node: Empty443667
-Node: Using Shell Variables443984
-Node: Action Overview446258
-Node: Statements448583
-Node: If Statement450431
-Node: While Statement451926
-Node: Do Statement453954
-Node: For Statement455102
-Node: Switch Statement458357
-Node: Break Statement460798
-Node: Continue Statement462890
-Node: Next Statement464717
-Node: Nextfile Statement467100
-Node: Exit Statement469789
-Node: Built-in Variables472192
-Node: User-modified473325
-Node: Auto-set481092
-Ref: Auto-set-Footnote-1497794
-Ref: Auto-set-Footnote-2498000
-Node: ARGC and ARGV498056
-Node: Pattern Action Summary502269
-Node: Arrays504699
-Node: Array Basics506028
-Node: Array Intro506872
-Ref: figure-array-elements508847
-Ref: Array Intro-Footnote-1511552
-Node: Reference to Elements511680
-Node: Assigning Elements514144
-Node: Array Example514635
-Node: Scanning an Array516589
-Node: Controlling Scanning519611
-Ref: Controlling Scanning-Footnote-1526067
-Node: Numeric Array Subscripts526383
-Node: Uninitialized Subscripts528567
-Node: Delete530186
-Ref: Delete-Footnote-1532938
-Node: Multidimensional532995
-Node: Multiscanning536090
-Node: Arrays of Arrays537681
-Node: Arrays Summary542449
-Node: Functions544542
-Node: Built-in545580
-Node: Calling Built-in546733
-Node: Boolean Functions548729
-Node: Numeric Functions549283
-Ref: Numeric Functions-Footnote-1553310
-Ref: Numeric Functions-Footnote-2553958
-Ref: Numeric Functions-Footnote-3554006
-Node: String Functions554278
-Ref: String Functions-Footnote-1579120
-Ref: String Functions-Footnote-2579248
-Ref: String Functions-Footnote-3579496
-Node: Gory Details579583
-Ref: table-sub-escapes581374
-Ref: table-sub-proposed582894
-Ref: table-posix-sub584258
-Ref: table-gensub-escapes585800
-Ref: Gory Details-Footnote-1586624
-Node: I/O Functions586778
-Ref: table-system-return-values593232
-Ref: I/O Functions-Footnote-1595313
-Ref: I/O Functions-Footnote-2595461
-Node: Time Functions595581
-Ref: Time Functions-Footnote-1606252
-Ref: Time Functions-Footnote-2606320
-Ref: Time Functions-Footnote-3606478
-Ref: Time Functions-Footnote-4606589
-Ref: Time Functions-Footnote-5606701
-Ref: Time Functions-Footnote-6606928
-Node: Bitwise Functions607194
-Ref: table-bitwise-ops607788
-Ref: Bitwise Functions-Footnote-1613852
-Ref: Bitwise Functions-Footnote-2614025
-Node: Type Functions614216
-Node: I18N Functions617737
-Node: User-defined619388
-Node: Definition Syntax620200
-Ref: Definition Syntax-Footnote-1625894
-Node: Function Example625965
-Ref: Function Example-Footnote-1628887
-Node: Function Calling628909
-Node: Calling A Function629497
-Node: Variable Scope630455
-Node: Pass By Value/Reference633449
-Node: Function Caveats636093
-Ref: Function Caveats-Footnote-1638140
-Node: Return Statement638260
-Node: Dynamic Typing641239
-Node: Indirect Calls642169
-Node: Functions Summary653096
-Node: Library Functions655801
-Ref: Library Functions-Footnote-1659408
-Ref: Library Functions-Footnote-2659551
-Node: Library Names659722
-Ref: Library Names-Footnote-1663389
-Ref: Library Names-Footnote-2663612
-Node: General Functions663698
-Node: Strtonum Function664880
-Node: Assert Function667902
-Node: Round Function671228
-Node: Cliff Random Function672768
-Node: Ordinal Functions673784
-Ref: Ordinal Functions-Footnote-1676847
-Ref: Ordinal Functions-Footnote-2677099
-Node: Join Function677309
-Ref: Join Function-Footnote-1679079
-Node: Getlocaltime Function679279
-Node: Readfile Function683021
-Node: Shell Quoting684998
-Node: Isnumeric Function686426
-Node: Data File Management687814
-Node: Filetrans Function688446
-Node: Rewind Function692542
-Node: File Checking694451
-Ref: File Checking-Footnote-1695785
-Node: Empty Files695986
-Node: Ignoring Assigns697965
-Node: Getopt Function699515
-Ref: Getopt Function-Footnote-1714812
-Node: Passwd Functions715012
-Ref: Passwd Functions-Footnote-1723851
-Node: Group Functions723939
-Ref: Group Functions-Footnote-1731837
-Node: Walking Arrays732044
-Node: Library Functions Summary735052
-Node: Library Exercises736458
-Node: Sample Programs736923
-Node: Running Examples737693
-Node: Clones738421
-Node: Cut Program739645
-Node: Egrep Program749785
-Node: Id Program758786
-Node: Split Program768721
-Ref: Split Program-Footnote-1778614
-Node: Tee Program778787
-Node: Uniq Program781577
-Node: Wc Program789165
-Node: Bytes vs. Characters789552
-Node: Using extensions791100
-Node: wc program791854
-Node: Miscellaneous Programs796719
-Node: Dupword Program797932
-Node: Alarm Program799962
-Node: Translate Program804817
-Ref: Translate Program-Footnote-1809382
-Node: Labels Program809652
-Ref: Labels Program-Footnote-1813003
-Node: Word Sorting813087
-Node: History Sorting817159
-Node: Extract Program819384
-Node: Simple Sed827397
-Node: Igawk Program830471
-Ref: Igawk Program-Footnote-1844802
-Ref: Igawk Program-Footnote-2845004
-Ref: Igawk Program-Footnote-3845126
-Node: Anagram Program845241
-Node: Signature Program848303
-Node: Programs Summary849550
-Node: Programs Exercises850764
-Ref: Programs Exercises-Footnote-1854894
-Node: Advanced Features854980
-Node: Nondecimal Data857377
-Node: Boolean Typed Values858975
-Node: Array Sorting860856
-Node: Controlling Array Traversal861561
-Ref: Controlling Array Traversal-Footnote-1869929
-Node: Array Sorting Functions870047
-Ref: Array Sorting Functions-Footnote-1875958
-Node: Two-way I/O876154
-Ref: Two-way I/O-Footnote-1883880
-Ref: Two-way I/O-Footnote-2884067
-Node: TCP/IP Networking884149
-Node: Profiling887225
-Node: Persistent Memory896531
-Ref: Persistent Memory-Footnote-1902725
-Node: Extension Philosophy902852
-Node: Advanced Features Summary904339
-Node: Internationalization906511
-Node: I18N and L10N908185
-Node: Explaining gettext908872
-Ref: Explaining gettext-Footnote-1914764
-Ref: Explaining gettext-Footnote-2914949
-Node: Programmer i18n915114
-Ref: Programmer i18n-Footnote-1920063
-Node: Translator i18n920112
-Node: String Extraction920906
-Ref: String Extraction-Footnote-1922038
-Node: Printf Ordering922124
-Ref: Printf Ordering-Footnote-1924910
-Node: I18N Portability924974
-Ref: I18N Portability-Footnote-1927430
-Node: I18N Example927493
-Ref: I18N Example-Footnote-1930768
-Ref: I18N Example-Footnote-2930841
-Node: Gawk I18N930950
-Node: I18N Summary931572
-Node: Debugger932913
-Node: Debugging933913
-Node: Debugging Concepts934354
-Node: Debugging Terms936163
-Node: Awk Debugging938738
-Ref: Awk Debugging-Footnote-1939683
-Node: Sample Debugging Session939815
-Node: Debugger Invocation940349
-Node: Finding The Bug941735
-Node: List of Debugger Commands948209
-Node: Breakpoint Control949542
-Node: Debugger Execution Control953236
-Node: Viewing And Changing Data956598
-Node: Execution Stack960139
-Node: Debugger Info961776
-Node: Miscellaneous Debugger Commands965847
-Node: Readline Support970909
-Node: Limitations971805
-Node: Debugging Summary974359
-Node: Namespaces975638
-Node: Global Namespace976749
-Node: Qualified Names978147
-Node: Default Namespace979146
-Node: Changing The Namespace979887
-Node: Naming Rules981501
-Node: Internal Name Management983349
-Node: Namespace Example984391
-Node: Namespace And Features986953
-Node: Namespace Summary988388
-Node: Arbitrary Precision Arithmetic989865
-Node: Computer Arithmetic991352
-Ref: table-numeric-ranges995118
-Ref: table-floating-point-ranges995612
-Ref: Computer Arithmetic-Footnote-1996271
-Node: Math Definitions996328
-Ref: table-ieee-formats999304
-Node: MPFR features999872
-Node: MPFR On Parole1000317
-Ref: MPFR On Parole-Footnote-11001146
-Node: MPFR Intro1001301
-Node: FP Math Caution1002940
-Ref: FP Math Caution-Footnote-11004012
-Node: Inexactness of computations1004381
-Node: Inexact representation1005412
-Node: Comparing FP Values1006772
-Node: Errors accumulate1008013
-Node: Strange values1009469
-Ref: Strange values-Footnote-11012057
-Node: Getting Accuracy1012162
-Node: Try To Round1014872
-Node: Setting precision1015771
-Ref: table-predefined-precision-strings1016468
-Node: Setting the rounding mode1018299
-Ref: table-gawk-rounding-modes1018673
-Ref: Setting the rounding mode-Footnote-11022605
-Node: Arbitrary Precision Integers1022784
-Ref: Arbitrary Precision Integers-Footnote-11025959
-Node: Checking for MPFR1026108
-Node: POSIX Floating Point Problems1027582
-Ref: POSIX Floating Point Problems-Footnote-11032235
-Node: Floating point summary1032273
-Node: Dynamic Extensions1034463
-Node: Extension Intro1036016
-Node: Plugin License1037282
-Node: Extension Mechanism Outline1038079
-Ref: figure-load-extension1038518
-Ref: figure-register-new-function1040084
-Ref: figure-call-new-function1041177
-Node: Extension API Description1043240
-Node: Extension API Functions Introduction1044953
-Ref: table-api-std-headers1046789
-Node: General Data Types1051039
-Ref: General Data Types-Footnote-11059745
-Node: Memory Allocation Functions1060044
-Ref: Memory Allocation Functions-Footnote-11064545
-Node: Constructor Functions1064644
-Node: API Ownership of MPFR and GMP Values1068297
-Node: Registration Functions1069830
-Node: Extension Functions1070530
-Node: Exit Callback Functions1075852
-Node: Extension Version String1077102
-Node: Input Parsers1077765
-Node: Output Wrappers1090486
-Node: Two-way processors1094998
-Node: Printing Messages1097263
-Ref: Printing Messages-Footnote-11098434
-Node: Updating ERRNO1098587
-Node: Requesting Values1099326
-Ref: table-value-types-returned1100063
-Node: Accessing Parameters1101172
-Node: Symbol Table Access1102409
-Node: Symbol table by name1102921
-Ref: Symbol table by name-Footnote-11105946
-Node: Symbol table by cookie1106074
-Ref: Symbol table by cookie-Footnote-11110259
-Node: Cached values1110323
-Ref: Cached values-Footnote-11113859
-Node: Array Manipulation1114012
-Ref: Array Manipulation-Footnote-11115103
-Node: Array Data Types1115140
-Ref: Array Data Types-Footnote-11117798
-Node: Array Functions1117890
-Node: Flattening Arrays1122675
-Node: Creating Arrays1129651
-Node: Redirection API1134418
-Node: Extension API Variables1137251
-Node: Extension Versioning1137962
-Ref: gawk-api-version1138391
-Node: Extension GMP/MPFR Versioning1140123
-Node: Extension API Informational Variables1141751
-Node: Extension API Boilerplate1142824
-Node: Changes from API V11146798
-Node: Finding Extensions1148370
-Node: Extension Example1148929
-Node: Internal File Description1149727
-Node: Internal File Ops1153807
-Ref: Internal File Ops-Footnote-11165157
-Node: Using Internal File Ops1165297
-Ref: Using Internal File Ops-Footnote-11167680
-Node: Extension Samples1167954
-Node: Extension Sample File Functions1169483
-Node: Extension Sample Fnmatch1177132
-Node: Extension Sample Fork1178619
-Node: Extension Sample Inplace1179837
-Node: Extension Sample Ord1183463
-Node: Extension Sample Readdir1184299
-Ref: table-readdir-file-types1185188
-Node: Extension Sample Revout1186256
-Node: Extension Sample Rev2way1186845
-Node: Extension Sample Read write array1187585
-Node: Extension Sample Readfile1190750
-Node: Extension Sample Time1191845
-Node: Extension Sample API Tests1193597
-Node: gawkextlib1194089
-Node: Extension summary1197007
-Node: Extension Exercises1200709
-Node: Language History1201951
-Node: V7/SVR3.11203607
-Node: SVR41205759
-Node: POSIX1207193
-Node: BTL1208574
-Node: POSIX/GNU1209303
-Node: Feature History1215209
-Node: Common Extensions1232948
-Node: Ranges and Locales1234231
-Ref: Ranges and Locales-Footnote-11238847
-Ref: Ranges and Locales-Footnote-21238874
-Ref: Ranges and Locales-Footnote-31239109
-Node: Contributors1239332
-Node: History summary1245329
-Node: Installation1246709
-Node: Gawk Distribution1247653
-Node: Getting1248137
-Node: Extracting1249100
-Node: Distribution contents1250738
-Node: Unix Installation1257799
-Node: Quick Installation1258603
-Node: Compiling with MPFR1261023
-Node: Shell Startup Files1261713
-Node: Additional Configuration Options1262802
-Node: Configuration Philosophy1265117
-Node: Compiling from Git1267513
-Node: Building the Documentation1268068
-Node: Non-Unix Installation1269452
-Node: PC Installation1269912
-Node: PC Binary Installation1270750
-Node: PC Compiling1271623
-Node: PC Using1272740
-Node: Cygwin1276236
-Node: MSYS1277460
-Node: VMS Installation1278062
-Node: VMS Compilation1278781
-Ref: VMS Compilation-Footnote-11280010
-Node: VMS Dynamic Extensions1280068
-Node: VMS Installation Details1281753
-Node: VMS Running1284015
-Node: VMS GNV1288294
-Node: Bugs1289008
-Node: Bug definition1289920
-Node: Bug address1292856
-Node: Usenet1296044
-Node: Performance bugs1297233
-Node: Asking for help1300154
-Node: Maintainers1302121
-Node: Other Versions1303128
-Node: Installation summary1311398
-Node: Notes1312755
-Node: Compatibility Mode1313549
-Node: Additions1314331
-Node: Accessing The Source1315256
-Node: Adding Code1316693
-Node: New Ports1323508
-Node: Derived Files1327883
-Ref: Derived Files-Footnote-11333543
-Ref: Derived Files-Footnote-21333578
-Ref: Derived Files-Footnote-31334176
-Node: Future Extensions1334290
-Node: Implementation Limitations1334948
-Node: Extension Design1336158
-Node: Old Extension Problems1337302
-Ref: Old Extension Problems-Footnote-11338820
-Node: Extension New Mechanism Goals1338877
-Ref: Extension New Mechanism Goals-Footnote-11342241
-Node: Extension Other Design Decisions1342430
-Node: Extension Future Growth1344543
-Node: Notes summary1345149
-Node: Basic Concepts1346307
-Node: Basic High Level1346988
-Ref: figure-general-flow1347270
-Ref: figure-process-flow1347956
-Ref: Basic High Level-Footnote-11351258
-Node: Basic Data Typing1351443
-Node: Glossary1354771
-Node: Copying1386658
-Node: GNU Free Documentation License1424201
-Node: Index1449321
+Node: Exit Status156065
+Node: Include Files156742
+Node: Loading Shared Libraries160432
+Node: Obsolete161860
+Node: Undocumented162480
+Node: Invoking Summary162777
+Node: Regexp165618
+Node: Regexp Usage167072
+Node: Escape Sequences169109
+Node: Regexp Operators175351
+Node: Regexp Operator Details175836
+Ref: Regexp Operator Details-Footnote-1183200
+Node: Interval Expressions183347
+Ref: Interval Expressions-Footnote-1185522
+Node: Bracket Expressions185620
+Ref: table-char-classes188096
+Node: Leftmost Longest191423
+Node: Computed Regexps192726
+Node: GNU Regexp Operators196153
+Node: Case-sensitivity199831
+Ref: Case-sensitivity-Footnote-1202697
+Ref: Case-sensitivity-Footnote-2202932
+Node: Regexp Summary203040
+Node: Reading Files204506
+Node: Records206775
+Node: awk split records207850
+Node: gawk split records212550
+Ref: gawk split records-Footnote-1217624
+Node: Fields217661
+Node: Nonconstant Fields220402
+Ref: Nonconstant Fields-Footnote-1222638
+Node: Changing Fields222842
+Node: Field Separators228873
+Node: Default Field Splitting231571
+Node: Regexp Field Splitting232689
+Node: Single Character Fields236366
+Node: Command Line Field Separator237426
+Node: Full Line Fields240644
+Ref: Full Line Fields-Footnote-1242166
+Ref: Full Line Fields-Footnote-2242212
+Node: Field Splitting Summary242313
+Node: Constant Size244387
+Node: Fixed width data245119
+Node: Skipping intervening248586
+Node: Allowing trailing data249384
+Node: Fields with fixed data250421
+Node: Splitting By Content251939
+Ref: Splitting By Content-Footnote-1255775
+Node: More CSV255938
+Node: FS versus FPAT257553
+Node: Testing field creation258713
+Node: Multiple Line260338
+Node: Getline266615
+Node: Plain Getline269084
+Node: Getline/Variable271657
+Node: Getline/File272808
+Node: Getline/Variable/File274196
+Ref: Getline/Variable/File-Footnote-1275801
+Node: Getline/Pipe275889
+Node: Getline/Variable/Pipe278593
+Node: Getline/Coprocess279728
+Node: Getline/Variable/Coprocess280995
+Node: Getline Notes281737
+Node: Getline Summary284534
+Ref: table-getline-variants284958
+Node: Read Timeout285707
+Ref: Read Timeout-Footnote-1289623
+Node: Retrying Input289681
+Node: Command-line directories290880
+Node: Input Summary291786
+Node: Input Exercises294958
+Node: Printing295392
+Node: Print297226
+Node: Print Examples298683
+Node: Output Separators301463
+Node: OFMT303480
+Node: Printf304836
+Node: Basic Printf305621
+Node: Control Letters307195
+Node: Format Modifiers312357
+Node: Printf Examples318372
+Node: Redirection320858
+Node: Special FD327699
+Ref: Special FD-Footnote-1330867
+Node: Special Files330941
+Node: Other Inherited Files331558
+Node: Special Network332559
+Node: Special Caveats333419
+Node: Close Files And Pipes334368
+Ref: table-close-pipe-return-values341275
+Ref: Close Files And Pipes-Footnote-1342089
+Ref: Close Files And Pipes-Footnote-2342237
+Node: Nonfatal342389
+Node: Output Summary344727
+Node: Output Exercises345949
+Node: Expressions346628
+Node: Values347816
+Node: Constants348494
+Node: Scalar Constants349185
+Ref: Scalar Constants-Footnote-1351695
+Node: Nondecimal-numbers351945
+Node: Regexp Constants354946
+Node: Using Constant Regexps355472
+Node: Standard Regexp Constants356094
+Node: Strong Regexp Constants359282
+Node: Variables362997
+Node: Using Variables363654
+Node: Assignment Options365564
+Node: Conversion368035
+Node: Strings And Numbers368559
+Ref: Strings And Numbers-Footnote-1371622
+Node: Locale influences conversions371731
+Ref: table-locale-affects374489
+Node: All Operators375108
+Node: Arithmetic Ops375737
+Node: Concatenation378453
+Ref: Concatenation-Footnote-1381300
+Node: Assignment Ops381407
+Ref: table-assign-ops386398
+Node: Increment Ops387712
+Node: Truth Values and Conditions391172
+Node: Truth Values392246
+Node: Typing and Comparison393294
+Node: Variable Typing394114
+Ref: Variable Typing-Footnote-1400577
+Ref: Variable Typing-Footnote-2400649
+Node: Comparison Operators400726
+Ref: table-relational-ops401145
+Node: POSIX String Comparison404641
+Ref: POSIX String Comparison-Footnote-1406336
+Ref: POSIX String Comparison-Footnote-2406475
+Node: Boolean Ops406559
+Ref: Boolean Ops-Footnote-1411041
+Node: Conditional Exp411133
+Node: Function Calls412869
+Node: Precedence416746
+Node: Locales420405
+Node: Expressions Summary422037
+Node: Patterns and Actions424610
+Node: Pattern Overview425730
+Node: Regexp Patterns427407
+Node: Expression Patterns427949
+Node: Ranges431730
+Node: BEGIN/END434838
+Node: Using BEGIN/END435599
+Ref: Using BEGIN/END-Footnote-1438353
+Node: I/O And BEGIN/END438459
+Node: BEGINFILE/ENDFILE440772
+Node: Empty444003
+Node: Using Shell Variables444320
+Node: Action Overview446594
+Node: Statements448919
+Node: If Statement450767
+Node: While Statement452262
+Node: Do Statement454290
+Node: For Statement455438
+Node: Switch Statement458693
+Node: Break Statement461134
+Node: Continue Statement463226
+Node: Next Statement465053
+Node: Nextfile Statement467436
+Node: Exit Statement470125
+Node: Built-in Variables472528
+Node: User-modified473661
+Node: Auto-set481428
+Ref: Auto-set-Footnote-1498130
+Ref: Auto-set-Footnote-2498336
+Node: ARGC and ARGV498392
+Node: Pattern Action Summary502605
+Node: Arrays505035
+Node: Array Basics506364
+Node: Array Intro507208
+Ref: figure-array-elements509183
+Ref: Array Intro-Footnote-1511888
+Node: Reference to Elements512016
+Node: Assigning Elements514480
+Node: Array Example514971
+Node: Scanning an Array516925
+Node: Controlling Scanning519947
+Ref: Controlling Scanning-Footnote-1526403
+Node: Numeric Array Subscripts526719
+Node: Uninitialized Subscripts528903
+Node: Delete530522
+Ref: Delete-Footnote-1533274
+Node: Multidimensional533331
+Node: Multiscanning536426
+Node: Arrays of Arrays538017
+Node: Arrays Summary542785
+Node: Functions544878
+Node: Built-in545916
+Node: Calling Built-in547069
+Node: Boolean Functions549065
+Node: Numeric Functions549619
+Ref: Numeric Functions-Footnote-1553646
+Ref: Numeric Functions-Footnote-2554294
+Ref: Numeric Functions-Footnote-3554342
+Node: String Functions554614
+Ref: String Functions-Footnote-1579456
+Ref: String Functions-Footnote-2579584
+Ref: String Functions-Footnote-3579832
+Node: Gory Details579919
+Ref: table-sub-escapes581710
+Ref: table-sub-proposed583230
+Ref: table-posix-sub584594
+Ref: table-gensub-escapes586136
+Ref: Gory Details-Footnote-1586960
+Node: I/O Functions587114
+Ref: table-system-return-values593568
+Ref: I/O Functions-Footnote-1595649
+Ref: I/O Functions-Footnote-2595797
+Node: Time Functions595917
+Ref: Time Functions-Footnote-1606588
+Ref: Time Functions-Footnote-2606656
+Ref: Time Functions-Footnote-3606814
+Ref: Time Functions-Footnote-4606925
+Ref: Time Functions-Footnote-5607037
+Ref: Time Functions-Footnote-6607264
+Node: Bitwise Functions607530
+Ref: table-bitwise-ops608124
+Ref: Bitwise Functions-Footnote-1614188
+Ref: Bitwise Functions-Footnote-2614361
+Node: Type Functions614552
+Node: I18N Functions618073
+Node: User-defined619724
+Node: Definition Syntax620536
+Ref: Definition Syntax-Footnote-1626230
+Node: Function Example626301
+Ref: Function Example-Footnote-1629223
+Node: Function Calling629245
+Node: Calling A Function629833
+Node: Variable Scope630791
+Node: Pass By Value/Reference633785
+Node: Function Caveats636429
+Ref: Function Caveats-Footnote-1638476
+Node: Return Statement638596
+Node: Dynamic Typing641575
+Node: Indirect Calls642505
+Node: Functions Summary653432
+Node: Library Functions656137
+Ref: Library Functions-Footnote-1659744
+Ref: Library Functions-Footnote-2659887
+Node: Library Names660058
+Ref: Library Names-Footnote-1663725
+Ref: Library Names-Footnote-2663948
+Node: General Functions664034
+Node: Strtonum Function665216
+Node: Assert Function668238
+Node: Round Function671564
+Node: Cliff Random Function673104
+Node: Ordinal Functions674120
+Ref: Ordinal Functions-Footnote-1677183
+Ref: Ordinal Functions-Footnote-2677435
+Node: Join Function677645
+Ref: Join Function-Footnote-1679415
+Node: Getlocaltime Function679615
+Node: Readfile Function683357
+Node: Shell Quoting685334
+Node: Isnumeric Function686762
+Node: Data File Management688150
+Node: Filetrans Function688782
+Node: Rewind Function692878
+Node: File Checking694787
+Ref: File Checking-Footnote-1696121
+Node: Empty Files696322
+Node: Ignoring Assigns698301
+Node: Getopt Function699851
+Ref: Getopt Function-Footnote-1715148
+Node: Passwd Functions715348
+Ref: Passwd Functions-Footnote-1724187
+Node: Group Functions724275
+Ref: Group Functions-Footnote-1732173
+Node: Walking Arrays732380
+Node: Library Functions Summary735388
+Node: Library Exercises736794
+Node: Sample Programs737259
+Node: Running Examples738029
+Node: Clones738757
+Node: Cut Program739981
+Node: Egrep Program750121
+Node: Id Program759122
+Node: Split Program769057
+Ref: Split Program-Footnote-1778950
+Node: Tee Program779123
+Node: Uniq Program781913
+Node: Wc Program789501
+Node: Bytes vs. Characters789888
+Node: Using extensions791436
+Node: wc program792190
+Node: Miscellaneous Programs797055
+Node: Dupword Program798268
+Node: Alarm Program800298
+Node: Translate Program805153
+Ref: Translate Program-Footnote-1809718
+Node: Labels Program809988
+Ref: Labels Program-Footnote-1813339
+Node: Word Sorting813423
+Node: History Sorting817495
+Node: Extract Program819720
+Node: Simple Sed827733
+Node: Igawk Program830807
+Ref: Igawk Program-Footnote-1845138
+Ref: Igawk Program-Footnote-2845340
+Ref: Igawk Program-Footnote-3845462
+Node: Anagram Program845577
+Node: Signature Program848639
+Node: Programs Summary849886
+Node: Programs Exercises851100
+Ref: Programs Exercises-Footnote-1855230
+Node: Advanced Features855316
+Node: Nondecimal Data857713
+Node: Boolean Typed Values859311
+Node: Array Sorting861192
+Node: Controlling Array Traversal861897
+Ref: Controlling Array Traversal-Footnote-1870265
+Node: Array Sorting Functions870383
+Ref: Array Sorting Functions-Footnote-1876294
+Node: Two-way I/O876490
+Ref: Two-way I/O-Footnote-1884216
+Ref: Two-way I/O-Footnote-2884403
+Node: TCP/IP Networking884485
+Node: Profiling887561
+Node: Persistent Memory896867
+Ref: Persistent Memory-Footnote-1903373
+Node: Extension Philosophy903500
+Node: Advanced Features Summary904987
+Node: Internationalization907159
+Node: I18N and L10N908833
+Node: Explaining gettext909520
+Ref: Explaining gettext-Footnote-1915412
+Ref: Explaining gettext-Footnote-2915597
+Node: Programmer i18n915762
+Ref: Programmer i18n-Footnote-1920711
+Node: Translator i18n920760
+Node: String Extraction921554
+Ref: String Extraction-Footnote-1922686
+Node: Printf Ordering922772
+Ref: Printf Ordering-Footnote-1925558
+Node: I18N Portability925622
+Ref: I18N Portability-Footnote-1928078
+Node: I18N Example928141
+Ref: I18N Example-Footnote-1931416
+Ref: I18N Example-Footnote-2931489
+Node: Gawk I18N931598
+Node: I18N Summary932220
+Node: Debugger933561
+Node: Debugging934561
+Node: Debugging Concepts935002
+Node: Debugging Terms936811
+Node: Awk Debugging939386
+Ref: Awk Debugging-Footnote-1940331
+Node: Sample Debugging Session940463
+Node: Debugger Invocation940997
+Node: Finding The Bug942383
+Node: List of Debugger Commands948857
+Node: Breakpoint Control950190
+Node: Debugger Execution Control953884
+Node: Viewing And Changing Data957246
+Node: Execution Stack960787
+Node: Debugger Info962424
+Node: Miscellaneous Debugger Commands966495
+Node: Readline Support971557
+Node: Limitations972453
+Node: Debugging Summary975007
+Node: Namespaces976286
+Node: Global Namespace977397
+Node: Qualified Names978795
+Node: Default Namespace979794
+Node: Changing The Namespace980535
+Node: Naming Rules982149
+Node: Internal Name Management983997
+Node: Namespace Example985039
+Node: Namespace And Features987601
+Node: Namespace Summary989036
+Node: Arbitrary Precision Arithmetic990513
+Node: Computer Arithmetic992000
+Ref: table-numeric-ranges995766
+Ref: table-floating-point-ranges996260
+Ref: Computer Arithmetic-Footnote-1996919
+Node: Math Definitions996976
+Ref: table-ieee-formats999952
+Node: MPFR features1000520
+Node: MPFR On Parole1000965
+Ref: MPFR On Parole-Footnote-11001794
+Node: MPFR Intro1001949
+Node: FP Math Caution1003588
+Ref: FP Math Caution-Footnote-11004660
+Node: Inexactness of computations1005029
+Node: Inexact representation1006060
+Node: Comparing FP Values1007420
+Node: Errors accumulate1008661
+Node: Strange values1010117
+Ref: Strange values-Footnote-11012705
+Node: Getting Accuracy1012810
+Node: Try To Round1015520
+Node: Setting precision1016419
+Ref: table-predefined-precision-strings1017116
+Node: Setting the rounding mode1018947
+Ref: table-gawk-rounding-modes1019321
+Ref: Setting the rounding mode-Footnote-11023253
+Node: Arbitrary Precision Integers1023432
+Ref: Arbitrary Precision Integers-Footnote-11026607
+Node: Checking for MPFR1026756
+Node: POSIX Floating Point Problems1028230
+Ref: POSIX Floating Point Problems-Footnote-11032883
+Node: Floating point summary1032921
+Node: Dynamic Extensions1035111
+Node: Extension Intro1036664
+Node: Plugin License1037930
+Node: Extension Mechanism Outline1038727
+Ref: figure-load-extension1039166
+Ref: figure-register-new-function1040732
+Ref: figure-call-new-function1041825
+Node: Extension API Description1043888
+Node: Extension API Functions Introduction1045601
+Ref: table-api-std-headers1047437
+Node: General Data Types1051687
+Ref: General Data Types-Footnote-11060393
+Node: Memory Allocation Functions1060692
+Ref: Memory Allocation Functions-Footnote-11065193
+Node: Constructor Functions1065292
+Node: API Ownership of MPFR and GMP Values1068945
+Node: Registration Functions1070478
+Node: Extension Functions1071178
+Node: Exit Callback Functions1076500
+Node: Extension Version String1077750
+Node: Input Parsers1078413
+Node: Output Wrappers1091134
+Node: Two-way processors1095646
+Node: Printing Messages1097911
+Ref: Printing Messages-Footnote-11099082
+Node: Updating ERRNO1099235
+Node: Requesting Values1099974
+Ref: table-value-types-returned1100711
+Node: Accessing Parameters1101820
+Node: Symbol Table Access1103057
+Node: Symbol table by name1103569
+Ref: Symbol table by name-Footnote-11106594
+Node: Symbol table by cookie1106722
+Ref: Symbol table by cookie-Footnote-11110907
+Node: Cached values1110971
+Ref: Cached values-Footnote-11114507
+Node: Array Manipulation1114660
+Ref: Array Manipulation-Footnote-11115751
+Node: Array Data Types1115788
+Ref: Array Data Types-Footnote-11118446
+Node: Array Functions1118538
+Node: Flattening Arrays1123323
+Node: Creating Arrays1130299
+Node: Redirection API1135066
+Node: Extension API Variables1137899
+Node: Extension Versioning1138610
+Ref: gawk-api-version1139039
+Node: Extension GMP/MPFR Versioning1140771
+Node: Extension API Informational Variables1142399
+Node: Extension API Boilerplate1143472
+Node: Changes from API V11147446
+Node: Finding Extensions1149018
+Node: Extension Example1149577
+Node: Internal File Description1150375
+Node: Internal File Ops1154455
+Ref: Internal File Ops-Footnote-11165805
+Node: Using Internal File Ops1165945
+Ref: Using Internal File Ops-Footnote-11168328
+Node: Extension Samples1168602
+Node: Extension Sample File Functions1170131
+Node: Extension Sample Fnmatch1177780
+Node: Extension Sample Fork1179267
+Node: Extension Sample Inplace1180485
+Node: Extension Sample Ord1184111
+Node: Extension Sample Readdir1184947
+Ref: table-readdir-file-types1185836
+Node: Extension Sample Revout1186904
+Node: Extension Sample Rev2way1187493
+Node: Extension Sample Read write array1188233
+Node: Extension Sample Readfile1191398
+Node: Extension Sample Time1192493
+Node: Extension Sample API Tests1194245
+Node: gawkextlib1194737
+Node: Extension summary1197655
+Node: Extension Exercises1201357
+Node: Language History1202599
+Node: V7/SVR3.11204255
+Node: SVR41206407
+Node: POSIX1207841
+Node: BTL1209222
+Node: POSIX/GNU1209951
+Node: Feature History1215857
+Node: Common Extensions1233596
+Node: Ranges and Locales1234879
+Ref: Ranges and Locales-Footnote-11239495
+Ref: Ranges and Locales-Footnote-21239522
+Ref: Ranges and Locales-Footnote-31239757
+Node: Contributors1239980
+Node: History summary1245977
+Node: Installation1247357
+Node: Gawk Distribution1248301
+Node: Getting1248785
+Node: Extracting1249748
+Node: Distribution contents1251386
+Node: Unix Installation1258447
+Node: Quick Installation1259251
+Node: Compiling with MPFR1261671
+Node: Shell Startup Files1262361
+Node: Additional Configuration Options1263450
+Node: Configuration Philosophy1265765
+Node: Compiling from Git1268161
+Node: Building the Documentation1268716
+Node: Non-Unix Installation1270100
+Node: PC Installation1270560
+Node: PC Binary Installation1271398
+Node: PC Compiling1272271
+Node: PC Using1273388
+Node: Cygwin1276884
+Node: MSYS1278108
+Node: VMS Installation1278710
+Node: VMS Compilation1279429
+Ref: VMS Compilation-Footnote-11280658
+Node: VMS Dynamic Extensions1280716
+Node: VMS Installation Details1282401
+Node: VMS Running1284663
+Node: VMS GNV1288942
+Node: Bugs1289656
+Node: Bug definition1290568
+Node: Bug address1293504
+Node: Usenet1296692
+Node: Performance bugs1297881
+Node: Asking for help1300802
+Node: Maintainers1302769
+Node: Other Versions1303776
+Node: Installation summary1312046
+Node: Notes1313403
+Node: Compatibility Mode1314197
+Node: Additions1314979
+Node: Accessing The Source1315904
+Node: Adding Code1317341
+Node: New Ports1324156
+Node: Derived Files1328531
+Ref: Derived Files-Footnote-11334191
+Ref: Derived Files-Footnote-21334226
+Ref: Derived Files-Footnote-31334824
+Node: Future Extensions1334938
+Node: Implementation Limitations1335596
+Node: Extension Design1336806
+Node: Old Extension Problems1337950
+Ref: Old Extension Problems-Footnote-11339468
+Node: Extension New Mechanism Goals1339525
+Ref: Extension New Mechanism Goals-Footnote-11342889
+Node: Extension Other Design Decisions1343078
+Node: Extension Future Growth1345191
+Node: Notes summary1345797
+Node: Basic Concepts1346955
+Node: Basic High Level1347636
+Ref: figure-general-flow1347918
+Ref: figure-process-flow1348604
+Ref: Basic High Level-Footnote-11351906
+Node: Basic Data Typing1352091
+Node: Glossary1355419
+Node: Copying1387306
+Node: GNU Free Documentation License1424849
+Node: Index1449969
 
 End Tag Table
 
diff --git a/doc/gawk.texi b/doc/gawk.texi
index 298cd8f5..ebce2b93 100644
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -4147,6 +4147,8 @@ sign in the output.
 @cindex @option{-l} option
 @cindex @option{--load} option
 @cindex loading extensions
+@cindex @env{AWKLIBPATH} environment variable
+@cindex environment variables @subentry @env{AWKLIBPATH}
 Load a dynamic extension named @var{ext}. Extensions
 are stored as system shared libraries.
 This option searches for the library using the @env{AWKLIBPATH}
@@ -4198,6 +4200,10 @@ Select arbitrary-precision arithmetic on numbers. This 
option has no effect
 if @command{gawk} is not compiled to use the GNU MPFR and MP libraries
 (@pxref{Arbitrary Precision Arithmetic}).
 
+@ignore
+@cindex @env{GAWK_NO_MPFR_WARN} environment variable
+@cindex environment variables @subentry @env{GAWK_NO_MPFR_WARN}
+@end ignore
 As of @value{PVERSION} 5.2,
 the arbitrary precision arithmetic features in @command{gawk}
 are ``on parole.''
@@ -4831,6 +4837,8 @@ behavior, but they are more specialized. Those in the 
following
 list are meant to be used by regular users:
 
 @table @env
+@cindex @env{GAWK_MSEC_SLEEP} environment variable
+@cindex environment variables @subentry @env{GAWK_MSEC_SLEEP}
 @item GAWK_MSEC_SLEEP
 Specifies the interval between connection retries,
 in milliseconds. On systems that do not support
@@ -4838,16 +4846,29 @@ the @code{usleep()} system call,
 the value is rounded up to an integral number of seconds.
 
 @ignore
+@cindex @env{GAWK_NO_MPFR_WARN} environment variable
+@cindex environment variables @subentry @env{GAWK_NO_MPFR_WARN}
 @item GAWK_NO_MPFR_WARN
 Specifies that @command{gawk} should not print a deprecation
 warning when used with the @option{-M}/@option{--bignum} options.
 @end ignore
 
+@cindex @env{GAWK_PERSIST_FILE} environment variable
+@cindex environment variables @subentry @env{GAWK_PERSIST_FILE}
+@item GAWK_PERSIST_FILE
+Specifies the backing file to use for persistent storage
+of @command{gawk}'s variables and arrays.
+@xref{Persistent Memory}.
+
+@cindex @env{GAWK_READ_TIMEOUT} environment variable
+@cindex environment variables @subentry @env{GAWK_READ_TIMEOUT}
 @item GAWK_READ_TIMEOUT
 Specifies the time, in milliseconds, for @command{gawk} to
 wait for input before returning with an error.
 @xref{Read Timeout}.
 
+@cindex @env{GAWK_SOCK_RETRIES} environment variable
+@cindex environment variables @subentry @env{GAWK_SOCK_RETRIES}
 @item GAWK_SOCK_RETRIES
 Controls the number of times @command{gawk} attempts to
 retry a two-way TCP/IP (socket) connection before giving up.
@@ -4855,6 +4876,14 @@ retry a two-way TCP/IP (socket) connection before giving 
up.
 Note that when nonfatal I/O is enabled (@pxref{Nonfatal}),
 @command{gawk} only tries to open a TCP/IP socket once.
 
+@cindex @env{PMA_VERBOSITY} environment variable
+@cindex environment variables @subentry @env{PMA_VERBOSITY}
+@item PMA_VERBOSITY
+Controls the verbosity of the persistent memory allocator.
+@xref{Persistent Memory}.
+
+@cindex @env{POSIXLY_CORRECT} environment variable
+@cindex environment variables @subentry @env{POSIXLY_CORRECT}
 @item POSIXLY_CORRECT
 Causes @command{gawk} to switch to POSIX-compatibility
 mode, disabling all traditional and GNU extensions.
@@ -4866,6 +4895,8 @@ for use by the @command{gawk} developers for testing and 
tuning.
 They are subject to change. The variables are:
 
 @table @env
+@cindex @env{AWKBUFSIZE} environment variable
+@cindex environment variables @subentry @env{AWKBUFSIZE}
 @item AWKBUFSIZE
 This variable only affects @command{gawk} on POSIX-compliant systems.
 With a value of @samp{exact}, @command{gawk} uses the size of each input
@@ -4875,6 +4906,8 @@ the size of the buffer to allocate.  (When this variable 
is not set,
 @command{gawk} uses the smaller of the file's size and the ``default''
 blocksize, which is usually the filesystem's I/O blocksize.)
 
+@cindex @env{AWK_HASH} environment variable
+@cindex environment variables @subentry @env{AWK_HASH}
 @item AWK_HASH
 If this variable exists with a value of @samp{gst}, @command{gawk}
 switches to using the hash function from GNU Smalltalk for
@@ -4884,12 +4917,16 @@ With a value of @samp{fnv1a}, @command{gawk} uses the
 FNV1-A hash function}.
 These functions may be marginally faster than the standard function.
 
+@cindex @env{AWKREADFUNC} environment variable
+@cindex environment variables @subentry @env{AWKREADFUNC}
 @item AWKREADFUNC
 If this variable exists, @command{gawk} switches to reading source
 files one line at a time, instead of reading in blocks. This exists
 for debugging problems on filesystems on non-POSIX operating systems
 where I/O is performed in records, not in blocks.
 
+@cindex @env{GAWK_MSG_SRC} environment variable
+@cindex environment variables @subentry @env{GAWK_MSG_SRC}
 @item GAWK_MSG_SRC
 If this variable exists, @command{gawk} includes the @value{FN}
 and line number within the @command{gawk} source code
@@ -4898,11 +4935,15 @@ are generated.  Its purpose is to help isolate the 
source of a
 message, as there are multiple places that produce the
 same warning or error message.
 
+@cindex @env{GAWK_LOCALE_DIR} environment variable
+@cindex environment variables @subentry @env{GAWK_LOCALE_DIR}
 @item GAWK_LOCALE_DIR
 Specifies the location of compiled message object files
 for @command{gawk} itself. This is passed to the @code{bindtextdomain()}
 function when @command{gawk} starts up.
 
+@cindex @env{GAWK_NO_DFA} environment variable
+@cindex environment variables @subentry @env{GAWK_NO_DFA}
 @item GAWK_NO_DFA
 If this variable exists, @command{gawk} does not use the DFA regexp matcher
 for ``does it match'' kinds of tests. This can cause @command{gawk}
@@ -4911,21 +4952,30 @@ two regexp matchers that @command{gawk} uses 
internally. (There aren't
 supposed to be differences, but occasionally theory and practice don't
 coordinate with each other.)
 
+@cindex @env{GAWK_STACKSIZE} environment variable
+@cindex environment variables @subentry @env{GAWK_STACKSIZE}
 @item GAWK_STACKSIZE
 This specifies the amount by which @command{gawk} should grow its
 internal evaluation stack, when needed.
 
+@cindex @env{INT_CHAIN_MAX} environment variable
+@cindex environment variables @subentry @env{INT_CHAIN_MAX}
 @item INT_CHAIN_MAX
 This specifies intended maximum number of items @command{gawk} will maintain 
on a
 hash chain for managing arrays indexed by integers.
 
+@cindex @env{STR_CHAIN_MAX} environment variable
+@cindex environment variables @subentry @env{STR_CHAIN_MAX}
 @item STR_CHAIN_MAX
 This specifies intended maximum number of items @command{gawk} will maintain 
on a
 hash chain for managing arrays indexed by strings.
 
+@cindex @env{TIDYMEM} environment variable
+@cindex environment variables @subentry @env{TIDYMEM}
 @item TIDYMEM
 If this variable exists, @command{gawk} uses the @code{mtrace()} library
 calls from the GNU C library to help track down possible memory leaks.
+This cannot be used together with the persistent memory allocator.
 @end table
 
 @node Exit Status
@@ -4960,6 +5010,8 @@ This @value{SECTION} describes a feature that is specific 
to @command{gawk}.
 @cindex file inclusion, @code{@@include} directive
 @cindex including files, @code{@@include} directive
 @cindex @code{@@include} directive @sortas{include directive}
+@cindex @env{AWKPATH} environment variable
+@cindex environment variables @subentry @env{AWKPATH}
 The @code{@@include} keyword can be used to read external @command{awk} source
 files.  This gives you the ability to split large @command{awk} source files
 into smaller, more manageable pieces, and also lets you reuse common 
@command{awk}
@@ -5090,6 +5142,8 @@ This @value{SECTION} describes a feature that is specific 
to @command{gawk}.
 @cindex loading extensions @subentry @code{@@load} directive
 @cindex extensions @subentry loadable @subentry loading, @code{@@load} 
directive
 @cindex @code{@@load} directive @sortas{load directive}
+@cindex @env{AWKLIBPATH} environment variable
+@cindex environment variables @subentry @env{AWKLIBPATH}
 The @code{@@load} keyword can be used to read external @command{awk} extensions
 (stored as system shared libraries).
 This allows you to link in compiled code that may offer superior
@@ -5327,6 +5381,12 @@ on the command line. @command{gawk} also lets you use 
the special
 @value{FN} @file{/dev/stdin}.
 
 @item
+@cindex @env{AWKPATH} environment variable
+@cindex environment variables @subentry @env{AWKPATH}
+@cindex @env{AWKLIBPATH} environment variable
+@cindex environment variables @subentry @env{AWKLIBPATH}
+@cindex @env{POSIXLY_CORRECT} environment variable
+@cindex environment variables @subentry @env{POSIXLY_CORRECT}
 @command{gawk} pays attention to a number of environment variables.
 @env{AWKPATH}, @env{AWKLIBPATH}, and @env{POSIXLY_CORRECT} are the
 most important ones.
@@ -12413,6 +12473,8 @@ treats @samp{4,321} as 4, while in the Danish locale, 
it's treated
 as the full number including the fractional part, 4.321.
 
 @cindex POSIX mode
+@cindex @env{POSIXLY_CORRECT} environment variable
+@cindex environment variables @subentry @env{POSIXLY_CORRECT}
 Some earlier versions of @command{gawk} fully complied with this aspect
 of the standard.  However, many users in non-English locales complained
 about this behavior, because their data used a period as the decimal
@@ -16228,6 +16290,8 @@ that it creates.  You should therefore be especially 
careful if you
 modify @code{ENVIRON["PATH"]}, which is the search path for finding
 executable programs.
 
+@cindex @env{TZ} environment variable
+@cindex environment variables @subentry @env{TZ}
 This can also affect the running @command{gawk} program, since some of the
 built-in functions may pay attention to certain environment variables.
 The most notable instance of this is @code{mktime()} (@pxref{Time
@@ -26523,6 +26587,8 @@ If supplied, @var{file} is the input file to read. 
Otherwise standard
 input is processed.  If supplied, @var{outname} is the leading prefix
 to use for @value{FN}s, instead of @samp{x}.
 
+@cindex @env{LC_ALL} environment variable
+@cindex environment variables @subentry @env{LC_ALL}
 In order to use the @option{-b} option, @command{gawk} should be invoked
 with its @option{-b} option (@pxref{Options}), or with the environment
 variable @env{LC_ALL} set to @samp{C}, so that each input byte is treated
@@ -28665,6 +28731,8 @@ This @value{SECTION} provides the motivation for making 
file inclusion
 available for standard @command{awk}, and shows how to do it using a
 combination of shell and @command{awk} programming.
 
+@cindex @env{AWKPATH} environment variable
+@cindex environment variables @subentry @env{AWKPATH}
 Using library functions in @command{awk} can be very beneficial. It
 encourages code reuse and the writing of general functions. Programs are
 smaller and therefore clearer.
@@ -28900,6 +28968,8 @@ the stack is ``popped,'' and the previous input file 
becomes the current
 input file again.  The process is started by making the original file
 the first one on the stack.
 
+@cindex @env{AWKPATH} environment variable
+@cindex environment variables @subentry @env{AWKPATH}
 The @code{pathto()} function does the work of finding the full path to
 a file.  It simulates @command{gawk}'s behavior when searching the
 @env{AWKPATH} environment variable
@@ -30996,6 +31066,9 @@ utility:
 $ @kbd{truncate -s 4G data.pma}
 @end example
 
+
+@cindex @env{GAWK_PERSIST_FILE} environment variable
+@cindex environment variables @subentry @env{GAWK_PERSIST_FILE}
 @item
 Provide the path to the data file in the @env{GAWK_PERSIST_FILE}
 environment variable.  This is best done by placing the value in the
@@ -31059,6 +31132,14 @@ You can disable the use of the persistent memory 
allocator in
 command at the time that you build @command{gawk} (@pxref{Unix
 Installation}).
 
+@cindex @env{PMA_VERBOSITY} environment variable
+@cindex environment variables @subentry @env{PMA_VERBOSITY}
+You can set the @env{PMA_VERBOSITY} environment variable to a
+value between zero and three to control how much debugging
+and error information the persistent memory allocator will print.
+@command{gawk} sets the default to one. See the @file{support/pma.c}
+source code to understand what the different verbosity levels are.
+
 Here are articles and web links that provide more information about
 persistent memory and why it's useful in a scripting language like
 @command{gawk}.
@@ -32329,6 +32410,8 @@ In our case, we invoke the debugger like this:
 $ @kbd{gawk -D -f getopt.awk -f join.awk -f uniq.awk -1 inputfile}
 @end example
 
+@cindex @env{AWKPATH} environment variable
+@cindex environment variables @subentry @env{AWKPATH}
 @noindent
 where both @file{getopt.awk} and @file{uniq.awk} are in @env{$AWKPATH}.
 (Experienced users of GDB or similar debuggers should note that
@@ -38361,6 +38444,8 @@ BEGIN @{
 @}
 @end example
 
+@cindex @env{AWKLIBPATH} environment variable
+@cindex environment variables @subentry @env{AWKLIBPATH}
 Here is the result of running the script:
 
 @example
@@ -39391,6 +39476,8 @@ BEGIN @{
 @}
 @end example
 
+@cindex @env{AWKLIBPATH} environment variable
+@cindex environment variables @subentry @env{AWKLIBPATH}
 The @env{AWKLIBPATH} environment variable tells
 @command{gawk} where to find extensions (@pxref{Finding Extensions}).
 We set it to the current directory and run the program:
@@ -40938,11 +41025,15 @@ division and remainder
 Changes and/or additions in the command-line options:
 
 @itemize @value{MINUS}
+@cindex @env{AWKPATH} environment variable
+@cindex environment variables @subentry @env{AWKPATH}
 @item
 The @env{AWKPATH} environment variable for specifying a path search for
 the @option{-f} command-line option
 (@pxref{Options})
 
+@cindex @env{AWKLIBPATH} environment variable
+@cindex environment variables @subentry @env{AWKLIBPATH}
 @item
 The @env{AWKLIBPATH} environment variable for specifying a path search for
 the @option{-l} command-line option
@@ -41132,6 +41223,8 @@ in the order they were added to @command{gawk}.
 Version 2.10 of @command{gawk} introduced the following features:
 
 @itemize @value{BULLET}
+@cindex @env{AWKPATH} environment variable
+@cindex environment variables @subentry @env{AWKPATH}
 @item
 The @env{AWKPATH} environment variable for specifying a path search for
 the @option{-f} command-line option
@@ -42696,6 +42789,10 @@ The source code, manual pages, and infrastructure 
files for
 the sample extensions included with @command{gawk}.
 @xref{Dynamic Extensions}, for more information.
 
+@cindex @env{AWKPATH} environment variable
+@cindex environment variables @subentry @env{AWKPATH}
+@cindex @env{AWKLIBPATH} environment variable
+@cindex environment variables @subentry @env{AWKLIBPATH}
 @item extras/*
 Additional non-essential files.  Currently, this directory contains some shell
 startup files to be installed in @file{/etc/profile.d} to aid in manipulating
@@ -42838,6 +42935,10 @@ your particular system.
 @node Shell Startup Files
 @appendixsubsec Shell Startup Files
 
+@cindex @env{AWKPATH} environment variable
+@cindex environment variables @subentry @env{AWKPATH}
+@cindex @env{AWKLIBPATH} environment variable
+@cindex environment variables @subentry @env{AWKLIBPATH}
 The distribution contains shell startup files @file{gawk.sh} and
 @file{gawk.csh}, containing functions to aid in manipulating
 the @env{AWKPATH} and @env{AWKLIBPATH} environment variables.
@@ -43095,6 +43196,8 @@ See also the @file{README_d/README.pc} file in the 
distribution.
 @appendixsubsubsec Installing a Prepared Distribution for MS-Windows Systems
 @cindex installing @command{gawk} @subentry MS-Windows
 
+@cindex @env{Path} environment variable
+@cindex environment variables @subentry @env{Path}
 The only supported binary distribution for MS-Windows systems
 is that provided by Eli Zaretskii's 
@uref{https://sourceforge.net/projects/ezwinports/,
 ``ezwinports''} project.  Install the compiled @command{gawk} from there.
@@ -43557,6 +43660,8 @@ or @code{TZ} logical names is set.  Older versions of 
VMS, such as VAX/VMS
 
 @cindex search paths
 @cindex search paths @subentry for source files
+@cindex @env{AWKPATH} environment variable
+@cindex environment variables @subentry @env{AWKPATH}
 The default search path, when looking for @command{awk} program files specified
 by the @option{-f} option, is @code{"SYS$DISK:[],AWK_LIBRARY:"}.  The logical
 name @env{AWKPATH} can be used to override this default.  The format
@@ -43749,6 +43854,8 @@ Verify that you have the latest version of 
@command{gawk}.
 Many bugs (usually subtle ones) are fixed at each release, and if yours
 is out-of-date, the problem may already have been solved.
 
+@cindex @env{LC_ALL} environment variable
+@cindex environment variables @subentry @env{LC_ALL}
 @item
 Please see if setting the environment variable @env{LC_ALL}
 to @code{LC_ALL=C} causes things to behave as you expect. If so, it's
@@ -44910,6 +45017,8 @@ dorking with the configuration machinery.
 
 @c @enumerate A
 @c @item
+@cindex @env{PATH} environment variable
+@cindex environment variables @subentry @env{PATH}
 Installing from source is quite easy. It's how the maintainer worked for years
 (and still works).
 He had @file{/usr/local/bin} at the front of his @env{PATH} and just did:
@@ -45978,6 +46087,7 @@ ordinary expression.  It could be a string constant, 
such as
 @item Empty String
 See ``Null String.''
 
+@cindex environment, definition of
 @item Environment
 A collection of strings, of the form @samp{@var{name}=@var{val}}, that each
 program has available to it. Users generally place values into the
diff --git a/doc/gawktexi.in b/doc/gawktexi.in
index c8340cbd..4d021657 100644
--- a/doc/gawktexi.in
+++ b/doc/gawktexi.in
@@ -4057,6 +4057,8 @@ sign in the output.
 @cindex @option{-l} option
 @cindex @option{--load} option
 @cindex loading extensions
+@cindex @env{AWKLIBPATH} environment variable
+@cindex environment variables @subentry @env{AWKLIBPATH}
 Load a dynamic extension named @var{ext}. Extensions
 are stored as system shared libraries.
 This option searches for the library using the @env{AWKLIBPATH}
@@ -4108,6 +4110,10 @@ Select arbitrary-precision arithmetic on numbers. This 
option has no effect
 if @command{gawk} is not compiled to use the GNU MPFR and MP libraries
 (@pxref{Arbitrary Precision Arithmetic}).
 
+@ignore
+@cindex @env{GAWK_NO_MPFR_WARN} environment variable
+@cindex environment variables @subentry @env{GAWK_NO_MPFR_WARN}
+@end ignore
 As of @value{PVERSION} 5.2,
 the arbitrary precision arithmetic features in @command{gawk}
 are ``on parole.''
@@ -4697,6 +4703,8 @@ behavior, but they are more specialized. Those in the 
following
 list are meant to be used by regular users:
 
 @table @env
+@cindex @env{GAWK_MSEC_SLEEP} environment variable
+@cindex environment variables @subentry @env{GAWK_MSEC_SLEEP}
 @item GAWK_MSEC_SLEEP
 Specifies the interval between connection retries,
 in milliseconds. On systems that do not support
@@ -4704,16 +4712,29 @@ the @code{usleep()} system call,
 the value is rounded up to an integral number of seconds.
 
 @ignore
+@cindex @env{GAWK_NO_MPFR_WARN} environment variable
+@cindex environment variables @subentry @env{GAWK_NO_MPFR_WARN}
 @item GAWK_NO_MPFR_WARN
 Specifies that @command{gawk} should not print a deprecation
 warning when used with the @option{-M}/@option{--bignum} options.
 @end ignore
 
+@cindex @env{GAWK_PERSIST_FILE} environment variable
+@cindex environment variables @subentry @env{GAWK_PERSIST_FILE}
+@item GAWK_PERSIST_FILE
+Specifies the backing file to use for persistent storage
+of @command{gawk}'s variables and arrays.
+@xref{Persistent Memory}.
+
+@cindex @env{GAWK_READ_TIMEOUT} environment variable
+@cindex environment variables @subentry @env{GAWK_READ_TIMEOUT}
 @item GAWK_READ_TIMEOUT
 Specifies the time, in milliseconds, for @command{gawk} to
 wait for input before returning with an error.
 @xref{Read Timeout}.
 
+@cindex @env{GAWK_SOCK_RETRIES} environment variable
+@cindex environment variables @subentry @env{GAWK_SOCK_RETRIES}
 @item GAWK_SOCK_RETRIES
 Controls the number of times @command{gawk} attempts to
 retry a two-way TCP/IP (socket) connection before giving up.
@@ -4721,6 +4742,14 @@ retry a two-way TCP/IP (socket) connection before giving 
up.
 Note that when nonfatal I/O is enabled (@pxref{Nonfatal}),
 @command{gawk} only tries to open a TCP/IP socket once.
 
+@cindex @env{PMA_VERBOSITY} environment variable
+@cindex environment variables @subentry @env{PMA_VERBOSITY}
+@item PMA_VERBOSITY
+Controls the verbosity of the persistent memory allocator.
+@xref{Persistent Memory}.
+
+@cindex @env{POSIXLY_CORRECT} environment variable
+@cindex environment variables @subentry @env{POSIXLY_CORRECT}
 @item POSIXLY_CORRECT
 Causes @command{gawk} to switch to POSIX-compatibility
 mode, disabling all traditional and GNU extensions.
@@ -4732,6 +4761,8 @@ for use by the @command{gawk} developers for testing and 
tuning.
 They are subject to change. The variables are:
 
 @table @env
+@cindex @env{AWKBUFSIZE} environment variable
+@cindex environment variables @subentry @env{AWKBUFSIZE}
 @item AWKBUFSIZE
 This variable only affects @command{gawk} on POSIX-compliant systems.
 With a value of @samp{exact}, @command{gawk} uses the size of each input
@@ -4741,6 +4772,8 @@ the size of the buffer to allocate.  (When this variable 
is not set,
 @command{gawk} uses the smaller of the file's size and the ``default''
 blocksize, which is usually the filesystem's I/O blocksize.)
 
+@cindex @env{AWK_HASH} environment variable
+@cindex environment variables @subentry @env{AWK_HASH}
 @item AWK_HASH
 If this variable exists with a value of @samp{gst}, @command{gawk}
 switches to using the hash function from GNU Smalltalk for
@@ -4750,12 +4783,16 @@ With a value of @samp{fnv1a}, @command{gawk} uses the
 FNV1-A hash function}.
 These functions may be marginally faster than the standard function.
 
+@cindex @env{AWKREADFUNC} environment variable
+@cindex environment variables @subentry @env{AWKREADFUNC}
 @item AWKREADFUNC
 If this variable exists, @command{gawk} switches to reading source
 files one line at a time, instead of reading in blocks. This exists
 for debugging problems on filesystems on non-POSIX operating systems
 where I/O is performed in records, not in blocks.
 
+@cindex @env{GAWK_MSG_SRC} environment variable
+@cindex environment variables @subentry @env{GAWK_MSG_SRC}
 @item GAWK_MSG_SRC
 If this variable exists, @command{gawk} includes the @value{FN}
 and line number within the @command{gawk} source code
@@ -4764,11 +4801,15 @@ are generated.  Its purpose is to help isolate the 
source of a
 message, as there are multiple places that produce the
 same warning or error message.
 
+@cindex @env{GAWK_LOCALE_DIR} environment variable
+@cindex environment variables @subentry @env{GAWK_LOCALE_DIR}
 @item GAWK_LOCALE_DIR
 Specifies the location of compiled message object files
 for @command{gawk} itself. This is passed to the @code{bindtextdomain()}
 function when @command{gawk} starts up.
 
+@cindex @env{GAWK_NO_DFA} environment variable
+@cindex environment variables @subentry @env{GAWK_NO_DFA}
 @item GAWK_NO_DFA
 If this variable exists, @command{gawk} does not use the DFA regexp matcher
 for ``does it match'' kinds of tests. This can cause @command{gawk}
@@ -4777,21 +4818,30 @@ two regexp matchers that @command{gawk} uses 
internally. (There aren't
 supposed to be differences, but occasionally theory and practice don't
 coordinate with each other.)
 
+@cindex @env{GAWK_STACKSIZE} environment variable
+@cindex environment variables @subentry @env{GAWK_STACKSIZE}
 @item GAWK_STACKSIZE
 This specifies the amount by which @command{gawk} should grow its
 internal evaluation stack, when needed.
 
+@cindex @env{INT_CHAIN_MAX} environment variable
+@cindex environment variables @subentry @env{INT_CHAIN_MAX}
 @item INT_CHAIN_MAX
 This specifies intended maximum number of items @command{gawk} will maintain 
on a
 hash chain for managing arrays indexed by integers.
 
+@cindex @env{STR_CHAIN_MAX} environment variable
+@cindex environment variables @subentry @env{STR_CHAIN_MAX}
 @item STR_CHAIN_MAX
 This specifies intended maximum number of items @command{gawk} will maintain 
on a
 hash chain for managing arrays indexed by strings.
 
+@cindex @env{TIDYMEM} environment variable
+@cindex environment variables @subentry @env{TIDYMEM}
 @item TIDYMEM
 If this variable exists, @command{gawk} uses the @code{mtrace()} library
 calls from the GNU C library to help track down possible memory leaks.
+This cannot be used together with the persistent memory allocator.
 @end table
 
 @node Exit Status
@@ -4826,6 +4876,8 @@ This @value{SECTION} describes a feature that is specific 
to @command{gawk}.
 @cindex file inclusion, @code{@@include} directive
 @cindex including files, @code{@@include} directive
 @cindex @code{@@include} directive @sortas{include directive}
+@cindex @env{AWKPATH} environment variable
+@cindex environment variables @subentry @env{AWKPATH}
 The @code{@@include} keyword can be used to read external @command{awk} source
 files.  This gives you the ability to split large @command{awk} source files
 into smaller, more manageable pieces, and also lets you reuse common 
@command{awk}
@@ -4956,6 +5008,8 @@ This @value{SECTION} describes a feature that is specific 
to @command{gawk}.
 @cindex loading extensions @subentry @code{@@load} directive
 @cindex extensions @subentry loadable @subentry loading, @code{@@load} 
directive
 @cindex @code{@@load} directive @sortas{load directive}
+@cindex @env{AWKLIBPATH} environment variable
+@cindex environment variables @subentry @env{AWKLIBPATH}
 The @code{@@load} keyword can be used to read external @command{awk} extensions
 (stored as system shared libraries).
 This allows you to link in compiled code that may offer superior
@@ -5193,6 +5247,12 @@ on the command line. @command{gawk} also lets you use 
the special
 @value{FN} @file{/dev/stdin}.
 
 @item
+@cindex @env{AWKPATH} environment variable
+@cindex environment variables @subentry @env{AWKPATH}
+@cindex @env{AWKLIBPATH} environment variable
+@cindex environment variables @subentry @env{AWKLIBPATH}
+@cindex @env{POSIXLY_CORRECT} environment variable
+@cindex environment variables @subentry @env{POSIXLY_CORRECT}
 @command{gawk} pays attention to a number of environment variables.
 @env{AWKPATH}, @env{AWKLIBPATH}, and @env{POSIXLY_CORRECT} are the
 most important ones.
@@ -11710,6 +11770,8 @@ treats @samp{4,321} as 4, while in the Danish locale, 
it's treated
 as the full number including the fractional part, 4.321.
 
 @cindex POSIX mode
+@cindex @env{POSIXLY_CORRECT} environment variable
+@cindex environment variables @subentry @env{POSIXLY_CORRECT}
 Some earlier versions of @command{gawk} fully complied with this aspect
 of the standard.  However, many users in non-English locales complained
 about this behavior, because their data used a period as the decimal
@@ -15415,6 +15477,8 @@ that it creates.  You should therefore be especially 
careful if you
 modify @code{ENVIRON["PATH"]}, which is the search path for finding
 executable programs.
 
+@cindex @env{TZ} environment variable
+@cindex environment variables @subentry @env{TZ}
 This can also affect the running @command{gawk} program, since some of the
 built-in functions may pay attention to certain environment variables.
 The most notable instance of this is @code{mktime()} (@pxref{Time
@@ -25405,6 +25469,8 @@ If supplied, @var{file} is the input file to read. 
Otherwise standard
 input is processed.  If supplied, @var{outname} is the leading prefix
 to use for @value{FN}s, instead of @samp{x}.
 
+@cindex @env{LC_ALL} environment variable
+@cindex environment variables @subentry @env{LC_ALL}
 In order to use the @option{-b} option, @command{gawk} should be invoked
 with its @option{-b} option (@pxref{Options}), or with the environment
 variable @env{LC_ALL} set to @samp{C}, so that each input byte is treated
@@ -27547,6 +27613,8 @@ This @value{SECTION} provides the motivation for making 
file inclusion
 available for standard @command{awk}, and shows how to do it using a
 combination of shell and @command{awk} programming.
 
+@cindex @env{AWKPATH} environment variable
+@cindex environment variables @subentry @env{AWKPATH}
 Using library functions in @command{awk} can be very beneficial. It
 encourages code reuse and the writing of general functions. Programs are
 smaller and therefore clearer.
@@ -27782,6 +27850,8 @@ the stack is ``popped,'' and the previous input file 
becomes the current
 input file again.  The process is started by making the original file
 the first one on the stack.
 
+@cindex @env{AWKPATH} environment variable
+@cindex environment variables @subentry @env{AWKPATH}
 The @code{pathto()} function does the work of finding the full path to
 a file.  It simulates @command{gawk}'s behavior when searching the
 @env{AWKPATH} environment variable
@@ -29878,6 +29948,9 @@ utility:
 $ @kbd{truncate -s 4G data.pma}
 @end example
 
+
+@cindex @env{GAWK_PERSIST_FILE} environment variable
+@cindex environment variables @subentry @env{GAWK_PERSIST_FILE}
 @item
 Provide the path to the data file in the @env{GAWK_PERSIST_FILE}
 environment variable.  This is best done by placing the value in the
@@ -29941,6 +30014,14 @@ You can disable the use of the persistent memory 
allocator in
 command at the time that you build @command{gawk} (@pxref{Unix
 Installation}).
 
+@cindex @env{PMA_VERBOSITY} environment variable
+@cindex environment variables @subentry @env{PMA_VERBOSITY}
+You can set the @env{PMA_VERBOSITY} environment variable to a
+value between zero and three to control how much debugging
+and error information the persistent memory allocator will print.
+@command{gawk} sets the default to one. See the @file{support/pma.c}
+source code to understand what the different verbosity levels are.
+
 Here are articles and web links that provide more information about
 persistent memory and why it's useful in a scripting language like
 @command{gawk}.
@@ -31211,6 +31292,8 @@ In our case, we invoke the debugger like this:
 $ @kbd{gawk -D -f getopt.awk -f join.awk -f uniq.awk -1 inputfile}
 @end example
 
+@cindex @env{AWKPATH} environment variable
+@cindex environment variables @subentry @env{AWKPATH}
 @noindent
 where both @file{getopt.awk} and @file{uniq.awk} are in @env{$AWKPATH}.
 (Experienced users of GDB or similar debuggers should note that
@@ -37204,6 +37287,8 @@ BEGIN @{
 @}
 @end example
 
+@cindex @env{AWKLIBPATH} environment variable
+@cindex environment variables @subentry @env{AWKLIBPATH}
 Here is the result of running the script:
 
 @example
@@ -38234,6 +38319,8 @@ BEGIN @{
 @}
 @end example
 
+@cindex @env{AWKLIBPATH} environment variable
+@cindex environment variables @subentry @env{AWKLIBPATH}
 The @env{AWKLIBPATH} environment variable tells
 @command{gawk} where to find extensions (@pxref{Finding Extensions}).
 We set it to the current directory and run the program:
@@ -39781,11 +39868,15 @@ division and remainder
 Changes and/or additions in the command-line options:
 
 @itemize @value{MINUS}
+@cindex @env{AWKPATH} environment variable
+@cindex environment variables @subentry @env{AWKPATH}
 @item
 The @env{AWKPATH} environment variable for specifying a path search for
 the @option{-f} command-line option
 (@pxref{Options})
 
+@cindex @env{AWKLIBPATH} environment variable
+@cindex environment variables @subentry @env{AWKLIBPATH}
 @item
 The @env{AWKLIBPATH} environment variable for specifying a path search for
 the @option{-l} command-line option
@@ -39975,6 +40066,8 @@ in the order they were added to @command{gawk}.
 Version 2.10 of @command{gawk} introduced the following features:
 
 @itemize @value{BULLET}
+@cindex @env{AWKPATH} environment variable
+@cindex environment variables @subentry @env{AWKPATH}
 @item
 The @env{AWKPATH} environment variable for specifying a path search for
 the @option{-f} command-line option
@@ -41539,6 +41632,10 @@ The source code, manual pages, and infrastructure 
files for
 the sample extensions included with @command{gawk}.
 @xref{Dynamic Extensions}, for more information.
 
+@cindex @env{AWKPATH} environment variable
+@cindex environment variables @subentry @env{AWKPATH}
+@cindex @env{AWKLIBPATH} environment variable
+@cindex environment variables @subentry @env{AWKLIBPATH}
 @item extras/*
 Additional non-essential files.  Currently, this directory contains some shell
 startup files to be installed in @file{/etc/profile.d} to aid in manipulating
@@ -41681,6 +41778,10 @@ your particular system.
 @node Shell Startup Files
 @appendixsubsec Shell Startup Files
 
+@cindex @env{AWKPATH} environment variable
+@cindex environment variables @subentry @env{AWKPATH}
+@cindex @env{AWKLIBPATH} environment variable
+@cindex environment variables @subentry @env{AWKLIBPATH}
 The distribution contains shell startup files @file{gawk.sh} and
 @file{gawk.csh}, containing functions to aid in manipulating
 the @env{AWKPATH} and @env{AWKLIBPATH} environment variables.
@@ -41938,6 +42039,8 @@ See also the @file{README_d/README.pc} file in the 
distribution.
 @appendixsubsubsec Installing a Prepared Distribution for MS-Windows Systems
 @cindex installing @command{gawk} @subentry MS-Windows
 
+@cindex @env{Path} environment variable
+@cindex environment variables @subentry @env{Path}
 The only supported binary distribution for MS-Windows systems
 is that provided by Eli Zaretskii's 
@uref{https://sourceforge.net/projects/ezwinports/,
 ``ezwinports''} project.  Install the compiled @command{gawk} from there.
@@ -42400,6 +42503,8 @@ or @code{TZ} logical names is set.  Older versions of 
VMS, such as VAX/VMS
 
 @cindex search paths
 @cindex search paths @subentry for source files
+@cindex @env{AWKPATH} environment variable
+@cindex environment variables @subentry @env{AWKPATH}
 The default search path, when looking for @command{awk} program files specified
 by the @option{-f} option, is @code{"SYS$DISK:[],AWK_LIBRARY:"}.  The logical
 name @env{AWKPATH} can be used to override this default.  The format
@@ -42592,6 +42697,8 @@ Verify that you have the latest version of 
@command{gawk}.
 Many bugs (usually subtle ones) are fixed at each release, and if yours
 is out-of-date, the problem may already have been solved.
 
+@cindex @env{LC_ALL} environment variable
+@cindex environment variables @subentry @env{LC_ALL}
 @item
 Please see if setting the environment variable @env{LC_ALL}
 to @code{LC_ALL=C} causes things to behave as you expect. If so, it's
@@ -43753,6 +43860,8 @@ dorking with the configuration machinery.
 
 @c @enumerate A
 @c @item
+@cindex @env{PATH} environment variable
+@cindex environment variables @subentry @env{PATH}
 Installing from source is quite easy. It's how the maintainer worked for years
 (and still works).
 He had @file{/usr/local/bin} at the front of his @env{PATH} and just did:
@@ -44821,6 +44930,7 @@ ordinary expression.  It could be a string constant, 
such as
 @item Empty String
 See ``Null String.''
 
+@cindex environment, definition of
 @item Environment
 A collection of strings, of the form @samp{@var{name}=@var{val}}, that each
 program has available to it. Users generally place values into the

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

commit 29eba696bdad1a9795aab173e7cd4e71d4933502
Author: Arnold D. Robbins <arnold@skeeve.com>
Date:   Tue Jul 19 10:12:59 2022 +0300

    Improve error handling when pma_init fails.

diff --git a/ChangeLog b/ChangeLog
index 5c60a869..ae200135 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2022-07-18         Arnold D. Robbins     <arnold@skeeve.com>
+
+       * main.c (main): Don't use fatal() if pma_init() fails, apparently
+       it tries deep down to allocate memory.  Print return value and
+       pma_errno value. Thanks to Terence Kelly for the analysis and
+       suggestion.
+       * custom.h (pma_errno): Define to 0 if not using persisent malloc.
+
 2022-07-17         Arnold D. Robbins     <arnold@skeeve.com>
 
        * main.c (parse_args): Handle --persist with no argument to issue a
diff --git a/custom.h b/custom.h
index 67d0d1f0..2b77992c 100644
--- a/custom.h
+++ b/custom.h
@@ -123,4 +123,5 @@ typedef unsigned long long uint_fast64_t;
 #define pma_init(verbose, file)        0
 #define pma_get_root() NULL
 #define pma_set_root(rootptr)  /* nothing */
+#define pma_errno 0
 #endif /* ! USE_PERSISTENT_MALLOC */
diff --git a/main.c b/main.c
index 76222d6c..b0c4a1e2 100644
--- a/main.c
+++ b/main.c
@@ -237,8 +237,13 @@ for PMA */
 
        myname = gawk_name(argv[0]);
 
-       if (pma_init(1, persist_file) != 0) {
-               fatal(_("persistent memory allocator failed to initialize"));
+       int pma_result = pma_init(1, persist_file);
+       if (pma_result != 0) {
+               // don't use 'fatal' routine, it seems to need to
+               // allocate memory
+               fprintf(stderr, _("%s: fatal: persistent memory allocator 
failed to initialize: return value %d, pma.c line: %d.\n"),
+                               myname, pma_result, pma_errno);
+               exit(EXIT_FATAL);
        }
 
        using_persistent_malloc = (persist_file != NULL);

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

Summary of changes:
 ChangeLog       |    8 +
 custom.h        |    1 +
 doc/ChangeLog   |    6 +
 doc/gawk.info   | 1298 +++++++++++++++++++++++++++++++------------------------
 doc/gawk.texi   |  110 +++++
 doc/gawktexi.in |  110 +++++
 main.c          |    9 +-
 7 files changed, 967 insertions(+), 575 deletions(-)


hooks/post-receive
-- 
gawk



reply via email to

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