gawk-diffs
[Top][All Lists]
Advanced

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

[SCM] gawk branch, gawk-5.1-stable, updated. gawk-4.1.0-4178-gfaa1e5b


From: Arnold Robbins
Subject: [SCM] gawk branch, gawk-5.1-stable, updated. gawk-4.1.0-4178-gfaa1e5b
Date: Tue, 1 Dec 2020 00:04:34 -0500 (EST)

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, gawk-5.1-stable has been updated
       via  faa1e5bb0c435a1ec4775a7ab9e42c3ba9e290af (commit)
       via  7ae8532608ef6b612d15713c90f6dcbe3d5cac29 (commit)
       via  e38041a0d5bb2d9b67a50e2fd1d816f12cad3068 (commit)
      from  c432356f6e1a544f31f65b7fbbee9e2f061bdb08 (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=faa1e5bb0c435a1ec4775a7ab9e42c3ba9e290af

commit faa1e5bb0c435a1ec4775a7ab9e42c3ba9e290af
Author: Arnold D. Robbins <arnold@skeeve.com>
Date:   Tue Dec 1 07:04:14 2020 +0200

    Update build-aux files.

diff --git a/build-aux/ChangeLog b/build-aux/ChangeLog
index ed59e3d..43351a6 100644
--- a/build-aux/ChangeLog
+++ b/build-aux/ChangeLog
@@ -1,3 +1,7 @@
+2020-12-01         Arnold D. Robbins     <arnold@skeeve.com>
+
+       * config.guess, config.sub: Updated from GNULIB.
+
 2020-11-16         Arnold D. Robbins     <arnold@skeeve.com>
 
        * config.guess, config.sub, install-sh: Updated from GNULIB.
diff --git a/build-aux/config.guess b/build-aux/config.guess
index 0fc11ed..699b3a1 100755
--- a/build-aux/config.guess
+++ b/build-aux/config.guess
@@ -2,7 +2,7 @@
 # Attempt to guess a canonical system name.
 #   Copyright 1992-2020 Free Software Foundation, Inc.
 
-timestamp='2020-11-07'
+timestamp='2020-11-19'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -27,7 +27,7 @@ timestamp='2020-11-07'
 # Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
 #
 # You can get the latest version of this script from:
-# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
+# https://git.savannah.gnu.org/cgit/config.git/plain/config.guess
 #
 # Please send patches to <config-patches@gnu.org>.
 
@@ -138,9 +138,7 @@ UNAME_VERSION=$( (uname -v) 2>/dev/null) || 
UNAME_VERSION=unknown
 
 case "$UNAME_SYSTEM" in
 Linux|GNU|GNU/*)
-       # If the system lacks a compiler, then just pick glibc.
-       # We could probably try harder.
-       LIBC=gnu
+       LIBC=unknown
 
        set_cc_for_build
        cat <<-EOF > "$dummy.c"
@@ -149,16 +147,30 @@ Linux|GNU|GNU/*)
        LIBC=uclibc
        #elif defined(__dietlibc__)
        LIBC=dietlibc
+       #elif defined(__GLIBC__)
+       LIBC=gnu
        #else
        #include <stdarg.h>
+       /* First heuristic to detect musl libc.  */
        #ifdef __DEFINED_va_list
        LIBC=musl
-       #else
-       LIBC=gnu
        #endif
        #endif
        EOF
        eval "$($CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 
's, ,,g')"
+
+       # Second heuristic to detect musl libc.
+       if [ "$LIBC" = unknown ] &&
+          command -v ldd >/dev/null &&
+          ldd --version 2>&1 | grep -q ^musl; then
+               LIBC=musl
+       fi
+
+       # If the system lacks a compiler, then just pick glibc.
+       # We could probably try harder.
+       if [ "$LIBC" = unknown ]; then
+               LIBC=gnu
+       fi
        ;;
 esac
 
@@ -1638,9 +1650,9 @@ This script (version $timestamp), has failed to recognize 
the
 operating system you are using. If your script is old, overwrite *all*
 copies of config.guess and config.sub with the latest versions from:
 
-  https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
+  https://git.savannah.gnu.org/cgit/config.git/plain/config.guess
 and
-  https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
+  https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
 EOF
 
 year=$(echo $timestamp | sed 's,-.*,,')
diff --git a/build-aux/config.sub b/build-aux/config.sub
index c874b7a..f2ead8d 100755
--- a/build-aux/config.sub
+++ b/build-aux/config.sub
@@ -2,7 +2,7 @@
 # Configuration validation subroutine script.
 #   Copyright 1992-2020 Free Software Foundation, Inc.
 
-timestamp='2020-11-07'
+timestamp='2020-11-19'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -33,7 +33,7 @@ timestamp='2020-11-07'
 # Otherwise, we print the canonical config type on stdout and succeed.
 
 # You can get the latest version of this script from:
-# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
+# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
 
 # This file is supposed to be the same for all GNU packages
 # and recognize all the CPU types, system types and aliases

http://git.sv.gnu.org/cgit/gawk.git/commit/?id=7ae8532608ef6b612d15713c90f6dcbe3d5cac29

commit 7ae8532608ef6b612d15713c90f6dcbe3d5cac29
Author: Arnold D. Robbins <arnold@skeeve.com>
Date:   Tue Dec 1 07:02:52 2020 +0200

    New doc section on extension philosophy.

diff --git a/doc/ChangeLog b/doc/ChangeLog
index 4d392a0..3e58a17 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -2,6 +2,7 @@
 
        * gawkinet.texi: Lots of cleanup edits. Bump the minor part
        of the edition.
+       * gawktexi.in: New section on extension philosphy.
 
 2020-11-28         Arnold D. Robbins     <arnold@skeeve.com>
 
diff --git a/doc/gawk.info b/doc/gawk.info
index b1ba867..985e4c6 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -495,6 +495,7 @@ in (a) below.  A copy of the license is included in the 
section entitled
 * TCP/IP Networking::                   Using 'gawk' for network
                                         programming.
 * Profiling::                           Profiling your 'awk' programs.
+* Extension Philosophy::                What should be built-in and what 
should not.
 * Advanced Features Summary::           Summary of advanced features.
 * I18N and L10N::                       Internationalization and Localization.
 * Explaining gettext::                  How GNU 'gettext' works.
@@ -20831,6 +20832,7 @@ their own:
 * Two-way I/O::                 Two-way communications with another process.
 * TCP/IP Networking::           Using 'gawk' for network programming.
 * Profiling::                   Profiling your 'awk' programs.
+* Extension Philosophy::        What should be built-in and what should not.
 * Advanced Features Summary::   Summary of advanced features.
 
 
@@ -21550,7 +21552,7 @@ complete introduction and discussion, as well as 
extensive examples.
      this includes any web service whose URL starts with 'https://'.
 
 
-File: gawk.info,  Node: Profiling,  Next: Advanced Features Summary,  Prev: 
TCP/IP Networking,  Up: Advanced Features
+File: gawk.info,  Node: Profiling,  Next: Extension Philosophy,  Prev: TCP/IP 
Networking,  Up: Advanced Features
 
 12.5 Profiling Your 'awk' Programs
 ==================================
@@ -21812,9 +21814,46 @@ numeric constants; if you used an octal or hexadecimal 
value in your
 source code, it will appear that way in the output.
 
 
-File: gawk.info,  Node: Advanced Features Summary,  Prev: Profiling,  Up: 
Advanced Features
+File: gawk.info,  Node: Extension Philosophy,  Next: Advanced Features 
Summary,  Prev: Profiling,  Up: Advanced Features
 
-12.6 Summary
+12.6 Builtin Features vs. Extensions
+====================================
+
+As this and subsequent major nodes show, 'gawk' has a large number of
+extensions over standard 'awk' built-in to the program.  These have
+developed over time.  More recently, the focus has moved to using the
+extension mechanism (*note Dynamic Extensions::) for adding features.
+This minor node discusses the "guiding philosophy" behind what should be
+added to the interpreter as a built-in feature vs. what should be done
+in extensions.
+
+   There are several goals:
+
+  1. Keep the language 'awk'; it should not become unrecognizable, even
+     if programs in it will only run on 'gawk'.
+
+  2. Keep the core from getting any larger unless absolutely necessary.
+
+  3. Add new functionality either in 'awk' scripts ('-f', '@include') or
+     in loadable extensions written in C or C++ ('-l', '@load').
+
+  4. Extend the core interpreter only if some feature is:
+
+       A. Truly desirable.
+       B. Cannot be done via (2) or (3) above.
+       C. Can be implemented without too much pain in the core.
+
+   Combining modules with 'awk' files is a powerful technique.  Some of
+the sample extensions demonstrate this.
+
+   Loading extensions and library files should not be done
+automatically, because then there's overhead that most users don't want
+or need.
+
+
+File: gawk.info,  Node: Advanced Features Summary,  Prev: Extension 
Philosophy,  Up: Advanced Features
+
+12.7 Summary
 ============
 
    * The '--non-decimal-data' option causes 'gawk' to treat octal- and
@@ -21852,6 +21891,9 @@ File: gawk.info,  Node: Advanced Features Summary,  
Prev: Profiling,  Up: Advanc
 
    * You can also just "pretty-print" the program.
 
+   * New features should be developed using the extension mechansim if
+     possible, and added to the core interpreter only as a last resort.
+
 
 File: gawk.info,  Node: Internationalization,  Next: Debugger,  Prev: Advanced 
Features,  Up: Top
 
@@ -37942,602 +37984,603 @@ Index
 
 Tag Table:
 Node: Top1200
-Node: Foreword344474
-Node: Foreword448916
-Node: Preface50448
-Ref: Preface-Footnote-153307
-Ref: Preface-Footnote-253416
-Ref: Preface-Footnote-353650
-Node: History53792
-Node: Names56144
-Ref: Names-Footnote-157248
-Node: This Manual57395
-Ref: This Manual-Footnote-164034
-Node: Conventions64134
-Node: Manual History66503
-Ref: Manual History-Footnote-169500
-Ref: Manual History-Footnote-269541
-Node: How To Contribute69615
-Node: Acknowledgments70541
-Node: Getting Started75478
-Node: Running gawk77917
-Node: One-shot79107
-Node: Read Terminal80370
-Node: Long82363
-Node: Executable Scripts83876
-Ref: Executable Scripts-Footnote-186509
-Node: Comments86612
-Node: Quoting89096
-Node: DOS Quoting94622
-Node: Sample Data Files96678
-Node: Very Simple99273
-Node: Two Rules105375
-Node: More Complex107260
-Node: Statements/Lines109592
-Ref: Statements/Lines-Footnote-1114076
-Node: Other Features114341
-Node: When115277
-Ref: When-Footnote-1117031
-Node: Intro Summary117096
-Node: Invoking Gawk117980
-Node: Command Line119494
-Node: Options120292
-Ref: Options-Footnote-1138206
-Ref: Options-Footnote-2138437
-Node: Other Arguments138462
-Node: Naming Standard Input142473
-Node: Environment Variables143683
-Node: AWKPATH Variable144241
-Ref: AWKPATH Variable-Footnote-1147653
-Ref: AWKPATH Variable-Footnote-2147687
-Node: AWKLIBPATH Variable148058
-Ref: AWKLIBPATH Variable-Footnote-1149755
-Node: Other Environment Variables150130
-Node: Exit Status153951
-Node: Include Files154628
-Node: Loading Shared Libraries158318
-Node: Obsolete159746
-Node: Undocumented160438
-Node: Invoking Summary160735
-Node: Regexp163576
-Node: Regexp Usage165030
-Node: Escape Sequences167067
-Node: Regexp Operators173308
-Node: Regexp Operator Details173793
-Ref: Regexp Operator Details-Footnote-1180225
-Node: Interval Expressions180372
-Ref: Interval Expressions-Footnote-1181793
-Node: Bracket Expressions181891
-Ref: table-char-classes184367
-Node: Leftmost Longest187693
-Node: Computed Regexps188996
-Node: GNU Regexp Operators192423
-Node: Case-sensitivity196160
-Ref: Case-sensitivity-Footnote-1199026
-Ref: Case-sensitivity-Footnote-2199261
-Node: Regexp Summary199369
-Node: Reading Files200835
-Node: Records203104
-Node: awk split records204179
-Node: gawk split records209454
-Ref: gawk split records-Footnote-1214187
-Node: Fields214224
-Node: Nonconstant Fields216965
-Ref: Nonconstant Fields-Footnote-1219201
-Node: Changing Fields219405
-Node: Field Separators225436
-Node: Default Field Splitting228134
-Node: Regexp Field Splitting229252
-Node: Single Character Fields232605
-Node: Command Line Field Separator233665
-Node: Full Line Fields236883
-Ref: Full Line Fields-Footnote-1238405
-Ref: Full Line Fields-Footnote-2238451
-Node: Field Splitting Summary238552
-Node: Constant Size240626
-Node: Fixed width data241358
-Node: Skipping intervening244825
-Node: Allowing trailing data245623
-Node: Fields with fixed data246660
-Node: Splitting By Content248178
-Ref: Splitting By Content-Footnote-1251961
-Node: More CSV252124
-Node: Testing field creation253434
-Node: Multiple Line255059
-Node: Getline261336
-Node: Plain Getline263805
-Node: Getline/Variable266378
-Node: Getline/File267529
-Node: Getline/Variable/File268917
-Ref: Getline/Variable/File-Footnote-1270522
-Node: Getline/Pipe270610
-Node: Getline/Variable/Pipe273314
-Node: Getline/Coprocess274449
-Node: Getline/Variable/Coprocess275716
-Node: Getline Notes276458
-Node: Getline Summary279255
-Ref: table-getline-variants279679
-Node: Read Timeout280427
-Ref: Read Timeout-Footnote-1284333
-Node: Retrying Input284391
-Node: Command-line directories285590
-Node: Input Summary286496
-Node: Input Exercises289668
-Node: Printing290102
-Node: Print291936
-Node: Print Examples293393
-Node: Output Separators296173
-Node: OFMT298190
-Node: Printf299546
-Node: Basic Printf300331
-Node: Control Letters301905
-Node: Format Modifiers307069
-Node: Printf Examples313084
-Node: Redirection315570
-Node: Special FD322411
-Ref: Special FD-Footnote-1325579
-Node: Special Files325653
-Node: Other Inherited Files326270
-Node: Special Network327271
-Node: Special Caveats328131
-Node: Close Files And Pipes329080
-Ref: table-close-pipe-return-values335987
-Ref: Close Files And Pipes-Footnote-1336800
-Ref: Close Files And Pipes-Footnote-2336948
-Node: Nonfatal337100
-Node: Output Summary339438
-Node: Output Exercises340660
-Node: Expressions341339
-Node: Values342527
-Node: Constants343205
-Node: Scalar Constants343896
-Ref: Scalar Constants-Footnote-1346406
-Node: Nondecimal-numbers346656
-Node: Regexp Constants349657
-Node: Using Constant Regexps350183
-Node: Standard Regexp Constants350805
-Node: Strong Regexp Constants353993
-Node: Variables357005
-Node: Using Variables357662
-Node: Assignment Options359572
-Node: Conversion362043
-Node: Strings And Numbers362567
-Ref: Strings And Numbers-Footnote-1365630
-Node: Locale influences conversions365739
-Ref: table-locale-affects368497
-Node: All Operators369115
-Node: Arithmetic Ops369744
-Node: Concatenation372460
-Ref: Concatenation-Footnote-1375307
-Node: Assignment Ops375414
-Ref: table-assign-ops380405
-Node: Increment Ops381718
-Node: Truth Values and Conditions385178
-Node: Truth Values386252
-Node: Typing and Comparison387300
-Node: Variable Typing388120
-Ref: Variable Typing-Footnote-1394583
-Ref: Variable Typing-Footnote-2394655
-Node: Comparison Operators394732
-Ref: table-relational-ops395151
-Node: POSIX String Comparison398646
-Ref: POSIX String Comparison-Footnote-1400341
-Ref: POSIX String Comparison-Footnote-2400480
-Node: Boolean Ops400564
-Ref: Boolean Ops-Footnote-1405046
-Node: Conditional Exp405138
-Node: Function Calls406874
-Node: Precedence410751
-Node: Locales414410
-Node: Expressions Summary416042
-Node: Patterns and Actions418615
-Node: Pattern Overview419735
-Node: Regexp Patterns421412
-Node: Expression Patterns421954
-Node: Ranges425735
-Node: BEGIN/END428843
-Node: Using BEGIN/END429604
-Ref: Using BEGIN/END-Footnote-1432358
-Node: I/O And BEGIN/END432464
-Node: BEGINFILE/ENDFILE434777
-Node: Empty438008
-Node: Using Shell Variables438325
-Node: Action Overview440599
-Node: Statements442924
-Node: If Statement444772
-Node: While Statement446267
-Node: Do Statement448295
-Node: For Statement449443
-Node: Switch Statement452614
-Node: Break Statement455055
-Node: Continue Statement457147
-Node: Next Statement458974
-Node: Nextfile Statement461357
-Node: Exit Statement464046
-Node: Built-in Variables466449
-Node: User-modified467582
-Node: Auto-set475349
-Ref: Auto-set-Footnote-1492156
-Ref: Auto-set-Footnote-2492362
-Node: ARGC and ARGV492418
-Node: Pattern Action Summary496631
-Node: Arrays499061
-Node: Array Basics500390
-Node: Array Intro501234
-Ref: figure-array-elements503209
-Ref: Array Intro-Footnote-1505913
-Node: Reference to Elements506041
-Node: Assigning Elements508505
-Node: Array Example508996
-Node: Scanning an Array510755
-Node: Controlling Scanning513777
-Ref: Controlling Scanning-Footnote-1520233
-Node: Numeric Array Subscripts520549
-Node: Uninitialized Subscripts522733
-Node: Delete524352
-Ref: Delete-Footnote-1527104
-Node: Multidimensional527161
-Node: Multiscanning530256
-Node: Arrays of Arrays531847
-Node: Arrays Summary536615
-Node: Functions538708
-Node: Built-in539746
-Node: Calling Built-in540827
-Node: Numeric Functions542823
-Ref: Numeric Functions-Footnote-1546851
-Ref: Numeric Functions-Footnote-2547499
-Ref: Numeric Functions-Footnote-3547547
-Node: String Functions547819
-Ref: String Functions-Footnote-1571960
-Ref: String Functions-Footnote-2572088
-Ref: String Functions-Footnote-3572336
-Node: Gory Details572423
-Ref: table-sub-escapes574214
-Ref: table-sub-proposed575733
-Ref: table-posix-sub577096
-Ref: table-gensub-escapes578637
-Ref: Gory Details-Footnote-1579460
-Node: I/O Functions579614
-Ref: table-system-return-values586068
-Ref: I/O Functions-Footnote-1588148
-Ref: I/O Functions-Footnote-2588296
-Node: Time Functions588416
-Ref: Time Functions-Footnote-1599087
-Ref: Time Functions-Footnote-2599155
-Ref: Time Functions-Footnote-3599313
-Ref: Time Functions-Footnote-4599424
-Ref: Time Functions-Footnote-5599536
-Ref: Time Functions-Footnote-6599763
-Node: Bitwise Functions600029
-Ref: table-bitwise-ops600623
-Ref: Bitwise Functions-Footnote-1606686
-Ref: Bitwise Functions-Footnote-2606859
-Node: Type Functions607050
-Node: I18N Functions609913
-Node: User-defined611564
-Node: Definition Syntax612376
-Ref: Definition Syntax-Footnote-1618070
-Node: Function Example618141
-Ref: Function Example-Footnote-1621063
-Node: Function Calling621085
-Node: Calling A Function621673
-Node: Variable Scope622631
-Node: Pass By Value/Reference625625
-Node: Function Caveats628269
-Ref: Function Caveats-Footnote-1630316
-Node: Return Statement630436
-Node: Dynamic Typing633415
-Node: Indirect Calls634345
-Ref: Indirect Calls-Footnote-1644597
-Node: Functions Summary644725
-Node: Library Functions647430
-Ref: Library Functions-Footnote-1651037
-Ref: Library Functions-Footnote-2651180
-Node: Library Names651351
-Ref: Library Names-Footnote-1655018
-Ref: Library Names-Footnote-2655241
-Node: General Functions655327
-Node: Strtonum Function656430
-Node: Assert Function659452
-Node: Round Function662778
-Node: Cliff Random Function664318
-Node: Ordinal Functions665334
-Ref: Ordinal Functions-Footnote-1668397
-Ref: Ordinal Functions-Footnote-2668649
-Node: Join Function668859
-Ref: Join Function-Footnote-1670629
-Node: Getlocaltime Function670829
-Node: Readfile Function674571
-Node: Shell Quoting676548
-Node: Data File Management677949
-Node: Filetrans Function678581
-Node: Rewind Function682677
-Node: File Checking684586
-Ref: File Checking-Footnote-1685920
-Node: Empty Files686121
-Node: Ignoring Assigns688100
-Node: Getopt Function689650
-Ref: Getopt Function-Footnote-1704861
-Node: Passwd Functions705061
-Ref: Passwd Functions-Footnote-1713900
-Node: Group Functions713988
-Ref: Group Functions-Footnote-1721886
-Node: Walking Arrays722093
-Node: Library Functions Summary725101
-Node: Library Exercises726507
-Node: Sample Programs726972
-Node: Running Examples727742
-Node: Clones728470
-Node: Cut Program729694
-Node: Egrep Program739834
-Node: Id Program748845
-Node: Split Program758792
-Ref: Split Program-Footnote-1768682
-Node: Tee Program768855
-Node: Uniq Program771645
-Node: Wc Program779233
-Node: Bytes vs. Characters779630
-Node: Using extensions781178
-Node: wc program781932
-Node: Miscellaneous Programs786797
-Node: Dupword Program788010
-Node: Alarm Program790040
-Node: Translate Program794895
-Ref: Translate Program-Footnote-1799460
-Node: Labels Program799730
-Ref: Labels Program-Footnote-1803081
-Node: Word Sorting803165
-Node: History Sorting807237
-Node: Extract Program809462
-Node: Simple Sed817516
-Node: Igawk Program820590
-Ref: Igawk Program-Footnote-1834921
-Ref: Igawk Program-Footnote-2835123
-Ref: Igawk Program-Footnote-3835245
-Node: Anagram Program835360
-Node: Signature Program838422
-Node: Programs Summary839669
-Node: Programs Exercises840883
-Ref: Programs Exercises-Footnote-1845013
-Node: Advanced Features845099
-Node: Nondecimal Data847089
-Node: Array Sorting848680
-Node: Controlling Array Traversal849380
-Ref: Controlling Array Traversal-Footnote-1857748
-Node: Array Sorting Functions857866
-Ref: Array Sorting Functions-Footnote-1862957
-Node: Two-way I/O863153
-Ref: Two-way I/O-Footnote-1870874
-Ref: Two-way I/O-Footnote-2871061
-Node: TCP/IP Networking871143
-Node: Profiling874261
-Node: Advanced Features Summary883575
-Node: Internationalization885419
-Node: I18N and L10N886899
-Node: Explaining gettext887586
-Ref: Explaining gettext-Footnote-1893478
-Ref: Explaining gettext-Footnote-2893663
-Node: Programmer i18n893828
-Ref: Programmer i18n-Footnote-1898777
-Node: Translator i18n898826
-Node: String Extraction899620
-Ref: String Extraction-Footnote-1900752
-Node: Printf Ordering900838
-Ref: Printf Ordering-Footnote-1903624
-Node: I18N Portability903688
-Ref: I18N Portability-Footnote-1906144
-Node: I18N Example906207
-Ref: I18N Example-Footnote-1909482
-Ref: I18N Example-Footnote-2909555
-Node: Gawk I18N909664
-Node: I18N Summary910313
-Node: Debugger911654
-Node: Debugging912654
-Node: Debugging Concepts913095
-Node: Debugging Terms914904
-Node: Awk Debugging917479
-Ref: Awk Debugging-Footnote-1918424
-Node: Sample Debugging Session918556
-Node: Debugger Invocation919090
-Node: Finding The Bug920476
-Node: List of Debugger Commands926950
-Node: Breakpoint Control928283
-Node: Debugger Execution Control931977
-Node: Viewing And Changing Data935339
-Node: Execution Stack938880
-Node: Debugger Info940517
-Node: Miscellaneous Debugger Commands944588
-Node: Readline Support949650
-Node: Limitations950546
-Node: Debugging Summary953100
-Node: Namespaces954379
-Node: Global Namespace955490
-Node: Qualified Names956888
-Node: Default Namespace957887
-Node: Changing The Namespace958628
-Node: Naming Rules960242
-Node: Internal Name Management962090
-Node: Namespace Example963132
-Node: Namespace And Features965694
-Node: Namespace Summary967129
-Node: Arbitrary Precision Arithmetic968606
-Node: Computer Arithmetic970093
-Ref: table-numeric-ranges973859
-Ref: table-floating-point-ranges974352
-Ref: Computer Arithmetic-Footnote-1975010
-Node: Math Definitions975067
-Ref: table-ieee-formats978383
-Ref: Math Definitions-Footnote-1978986
-Node: MPFR features979091
-Node: FP Math Caution980809
-Ref: FP Math Caution-Footnote-1981881
-Node: Inexactness of computations982250
-Node: Inexact representation983210
-Node: Comparing FP Values984570
-Node: Errors accumulate985811
-Node: Getting Accuracy987244
-Node: Try To Round989954
-Node: Setting precision990853
-Ref: table-predefined-precision-strings991550
-Node: Setting the rounding mode993380
-Ref: table-gawk-rounding-modes993754
-Ref: Setting the rounding mode-Footnote-1997685
-Node: Arbitrary Precision Integers997864
-Ref: Arbitrary Precision Integers-Footnote-11001039
-Node: Checking for MPFR1001188
-Node: POSIX Floating Point Problems1002662
-Ref: POSIX Floating Point Problems-Footnote-11006947
-Node: Floating point summary1006985
-Node: Dynamic Extensions1009175
-Node: Extension Intro1010728
-Node: Plugin License1011994
-Node: Extension Mechanism Outline1012791
-Ref: figure-load-extension1013230
-Ref: figure-register-new-function1014795
-Ref: figure-call-new-function1015887
-Node: Extension API Description1017949
-Node: Extension API Functions Introduction1019662
-Ref: table-api-std-headers1021498
-Node: General Data Types1025747
-Ref: General Data Types-Footnote-11034377
-Node: Memory Allocation Functions1034676
-Ref: Memory Allocation Functions-Footnote-11039177
-Node: Constructor Functions1039276
-Node: API Ownership of MPFR and GMP Values1042742
-Node: Registration Functions1044055
-Node: Extension Functions1044755
-Node: Exit Callback Functions1050077
-Node: Extension Version String1051327
-Node: Input Parsers1051990
-Node: Output Wrappers1064711
-Node: Two-way processors1069223
-Node: Printing Messages1071488
-Ref: Printing Messages-Footnote-11072659
-Node: Updating ERRNO1072812
-Node: Requesting Values1073551
-Ref: table-value-types-returned1074288
-Node: Accessing Parameters1075224
-Node: Symbol Table Access1076461
-Node: Symbol table by name1076973
-Ref: Symbol table by name-Footnote-11079997
-Node: Symbol table by cookie1080125
-Ref: Symbol table by cookie-Footnote-11084310
-Node: Cached values1084374
-Ref: Cached values-Footnote-11087910
-Node: Array Manipulation1088063
-Ref: Array Manipulation-Footnote-11089154
-Node: Array Data Types1089191
-Ref: Array Data Types-Footnote-11091849
-Node: Array Functions1091941
-Node: Flattening Arrays1096439
-Node: Creating Arrays1103415
-Node: Redirection API1108182
-Node: Extension API Variables1111015
-Node: Extension Versioning1111726
-Ref: gawk-api-version1112155
-Node: Extension GMP/MPFR Versioning1113886
-Node: Extension API Informational Variables1115514
-Node: Extension API Boilerplate1116587
-Node: Changes from API V11120561
-Node: Finding Extensions1122133
-Node: Extension Example1122692
-Node: Internal File Description1123490
-Node: Internal File Ops1127570
-Ref: Internal File Ops-Footnote-11138920
-Node: Using Internal File Ops1139060
-Ref: Using Internal File Ops-Footnote-11141443
-Node: Extension Samples1141717
-Node: Extension Sample File Functions1143246
-Node: Extension Sample Fnmatch1150895
-Node: Extension Sample Fork1152382
-Node: Extension Sample Inplace1153600
-Node: Extension Sample Ord1157226
-Node: Extension Sample Readdir1158062
-Ref: table-readdir-file-types1158951
-Node: Extension Sample Revout1160018
-Node: Extension Sample Rev2way1160607
-Node: Extension Sample Read write array1161347
-Node: Extension Sample Readfile1163289
-Node: Extension Sample Time1164384
-Node: Extension Sample API Tests1166136
-Node: gawkextlib1166628
-Node: Extension summary1169546
-Node: Extension Exercises1173248
-Node: Language History1174490
-Node: V7/SVR3.11176146
-Node: SVR41178298
-Node: POSIX1179732
-Node: BTL1181113
-Node: POSIX/GNU1181842
-Node: Feature History1187620
-Node: Common Extensions1203939
-Node: Ranges and Locales1205222
-Ref: Ranges and Locales-Footnote-11209838
-Ref: Ranges and Locales-Footnote-21209865
-Ref: Ranges and Locales-Footnote-31210100
-Node: Contributors1210323
-Node: History summary1216320
-Node: Installation1217700
-Node: Gawk Distribution1218644
-Node: Getting1219128
-Node: Extracting1220091
-Node: Distribution contents1221729
-Node: Unix Installation1228209
-Node: Quick Installation1228891
-Node: Shell Startup Files1231305
-Node: Additional Configuration Options1232394
-Node: Configuration Philosophy1234709
-Node: Non-Unix Installation1237078
-Node: PC Installation1237538
-Node: PC Binary Installation1238376
-Node: PC Compiling1238811
-Node: PC Using1239928
-Node: Cygwin1243481
-Node: MSYS1244705
-Node: VMS Installation1245307
-Node: VMS Compilation1246098
-Ref: VMS Compilation-Footnote-11247327
-Node: VMS Dynamic Extensions1247385
-Node: VMS Installation Details1249070
-Node: VMS Running1251323
-Node: VMS GNV1255602
-Node: VMS Old Gawk1256337
-Node: Bugs1256808
-Node: Bug address1257471
-Node: Usenet1260453
-Node: Maintainers1261457
-Node: Other Versions1262642
-Node: Installation summary1269730
-Node: Notes1270939
-Node: Compatibility Mode1271733
-Node: Additions1272515
-Node: Accessing The Source1273440
-Node: Adding Code1274877
-Node: New Ports1281096
-Node: Derived Files1285471
-Ref: Derived Files-Footnote-11291131
-Ref: Derived Files-Footnote-21291166
-Ref: Derived Files-Footnote-31291764
-Node: Future Extensions1291878
-Node: Implementation Limitations1292536
-Node: Extension Design1293746
-Node: Old Extension Problems1294890
-Ref: Old Extension Problems-Footnote-11296408
-Node: Extension New Mechanism Goals1296465
-Ref: Extension New Mechanism Goals-Footnote-11299829
-Node: Extension Other Design Decisions1300018
-Node: Extension Future Growth1302131
-Node: Notes summary1302737
-Node: Basic Concepts1303895
-Node: Basic High Level1304576
-Ref: figure-general-flow1304858
-Ref: figure-process-flow1305543
-Ref: Basic High Level-Footnote-11308844
-Node: Basic Data Typing1309029
-Node: Glossary1312357
-Node: Copying1344242
-Node: GNU Free Documentation License1381785
-Node: Index1406905
+Node: Foreword344559
+Node: Foreword449001
+Node: Preface50533
+Ref: Preface-Footnote-153392
+Ref: Preface-Footnote-253501
+Ref: Preface-Footnote-353735
+Node: History53877
+Node: Names56229
+Ref: Names-Footnote-157333
+Node: This Manual57480
+Ref: This Manual-Footnote-164119
+Node: Conventions64219
+Node: Manual History66588
+Ref: Manual History-Footnote-169585
+Ref: Manual History-Footnote-269626
+Node: How To Contribute69700
+Node: Acknowledgments70626
+Node: Getting Started75563
+Node: Running gawk78002
+Node: One-shot79192
+Node: Read Terminal80455
+Node: Long82448
+Node: Executable Scripts83961
+Ref: Executable Scripts-Footnote-186594
+Node: Comments86697
+Node: Quoting89181
+Node: DOS Quoting94707
+Node: Sample Data Files96763
+Node: Very Simple99358
+Node: Two Rules105460
+Node: More Complex107345
+Node: Statements/Lines109677
+Ref: Statements/Lines-Footnote-1114161
+Node: Other Features114426
+Node: When115362
+Ref: When-Footnote-1117116
+Node: Intro Summary117181
+Node: Invoking Gawk118065
+Node: Command Line119579
+Node: Options120377
+Ref: Options-Footnote-1138291
+Ref: Options-Footnote-2138522
+Node: Other Arguments138547
+Node: Naming Standard Input142558
+Node: Environment Variables143768
+Node: AWKPATH Variable144326
+Ref: AWKPATH Variable-Footnote-1147738
+Ref: AWKPATH Variable-Footnote-2147772
+Node: AWKLIBPATH Variable148143
+Ref: AWKLIBPATH Variable-Footnote-1149840
+Node: Other Environment Variables150215
+Node: Exit Status154036
+Node: Include Files154713
+Node: Loading Shared Libraries158403
+Node: Obsolete159831
+Node: Undocumented160523
+Node: Invoking Summary160820
+Node: Regexp163661
+Node: Regexp Usage165115
+Node: Escape Sequences167152
+Node: Regexp Operators173393
+Node: Regexp Operator Details173878
+Ref: Regexp Operator Details-Footnote-1180310
+Node: Interval Expressions180457
+Ref: Interval Expressions-Footnote-1181878
+Node: Bracket Expressions181976
+Ref: table-char-classes184452
+Node: Leftmost Longest187778
+Node: Computed Regexps189081
+Node: GNU Regexp Operators192508
+Node: Case-sensitivity196245
+Ref: Case-sensitivity-Footnote-1199111
+Ref: Case-sensitivity-Footnote-2199346
+Node: Regexp Summary199454
+Node: Reading Files200920
+Node: Records203189
+Node: awk split records204264
+Node: gawk split records209539
+Ref: gawk split records-Footnote-1214272
+Node: Fields214309
+Node: Nonconstant Fields217050
+Ref: Nonconstant Fields-Footnote-1219286
+Node: Changing Fields219490
+Node: Field Separators225521
+Node: Default Field Splitting228219
+Node: Regexp Field Splitting229337
+Node: Single Character Fields232690
+Node: Command Line Field Separator233750
+Node: Full Line Fields236968
+Ref: Full Line Fields-Footnote-1238490
+Ref: Full Line Fields-Footnote-2238536
+Node: Field Splitting Summary238637
+Node: Constant Size240711
+Node: Fixed width data241443
+Node: Skipping intervening244910
+Node: Allowing trailing data245708
+Node: Fields with fixed data246745
+Node: Splitting By Content248263
+Ref: Splitting By Content-Footnote-1252046
+Node: More CSV252209
+Node: Testing field creation253519
+Node: Multiple Line255144
+Node: Getline261421
+Node: Plain Getline263890
+Node: Getline/Variable266463
+Node: Getline/File267614
+Node: Getline/Variable/File269002
+Ref: Getline/Variable/File-Footnote-1270607
+Node: Getline/Pipe270695
+Node: Getline/Variable/Pipe273399
+Node: Getline/Coprocess274534
+Node: Getline/Variable/Coprocess275801
+Node: Getline Notes276543
+Node: Getline Summary279340
+Ref: table-getline-variants279764
+Node: Read Timeout280512
+Ref: Read Timeout-Footnote-1284418
+Node: Retrying Input284476
+Node: Command-line directories285675
+Node: Input Summary286581
+Node: Input Exercises289753
+Node: Printing290187
+Node: Print292021
+Node: Print Examples293478
+Node: Output Separators296258
+Node: OFMT298275
+Node: Printf299631
+Node: Basic Printf300416
+Node: Control Letters301990
+Node: Format Modifiers307154
+Node: Printf Examples313169
+Node: Redirection315655
+Node: Special FD322496
+Ref: Special FD-Footnote-1325664
+Node: Special Files325738
+Node: Other Inherited Files326355
+Node: Special Network327356
+Node: Special Caveats328216
+Node: Close Files And Pipes329165
+Ref: table-close-pipe-return-values336072
+Ref: Close Files And Pipes-Footnote-1336885
+Ref: Close Files And Pipes-Footnote-2337033
+Node: Nonfatal337185
+Node: Output Summary339523
+Node: Output Exercises340745
+Node: Expressions341424
+Node: Values342612
+Node: Constants343290
+Node: Scalar Constants343981
+Ref: Scalar Constants-Footnote-1346491
+Node: Nondecimal-numbers346741
+Node: Regexp Constants349742
+Node: Using Constant Regexps350268
+Node: Standard Regexp Constants350890
+Node: Strong Regexp Constants354078
+Node: Variables357090
+Node: Using Variables357747
+Node: Assignment Options359657
+Node: Conversion362128
+Node: Strings And Numbers362652
+Ref: Strings And Numbers-Footnote-1365715
+Node: Locale influences conversions365824
+Ref: table-locale-affects368582
+Node: All Operators369200
+Node: Arithmetic Ops369829
+Node: Concatenation372545
+Ref: Concatenation-Footnote-1375392
+Node: Assignment Ops375499
+Ref: table-assign-ops380490
+Node: Increment Ops381803
+Node: Truth Values and Conditions385263
+Node: Truth Values386337
+Node: Typing and Comparison387385
+Node: Variable Typing388205
+Ref: Variable Typing-Footnote-1394668
+Ref: Variable Typing-Footnote-2394740
+Node: Comparison Operators394817
+Ref: table-relational-ops395236
+Node: POSIX String Comparison398731
+Ref: POSIX String Comparison-Footnote-1400426
+Ref: POSIX String Comparison-Footnote-2400565
+Node: Boolean Ops400649
+Ref: Boolean Ops-Footnote-1405131
+Node: Conditional Exp405223
+Node: Function Calls406959
+Node: Precedence410836
+Node: Locales414495
+Node: Expressions Summary416127
+Node: Patterns and Actions418700
+Node: Pattern Overview419820
+Node: Regexp Patterns421497
+Node: Expression Patterns422039
+Node: Ranges425820
+Node: BEGIN/END428928
+Node: Using BEGIN/END429689
+Ref: Using BEGIN/END-Footnote-1432443
+Node: I/O And BEGIN/END432549
+Node: BEGINFILE/ENDFILE434862
+Node: Empty438093
+Node: Using Shell Variables438410
+Node: Action Overview440684
+Node: Statements443009
+Node: If Statement444857
+Node: While Statement446352
+Node: Do Statement448380
+Node: For Statement449528
+Node: Switch Statement452699
+Node: Break Statement455140
+Node: Continue Statement457232
+Node: Next Statement459059
+Node: Nextfile Statement461442
+Node: Exit Statement464131
+Node: Built-in Variables466534
+Node: User-modified467667
+Node: Auto-set475434
+Ref: Auto-set-Footnote-1492241
+Ref: Auto-set-Footnote-2492447
+Node: ARGC and ARGV492503
+Node: Pattern Action Summary496716
+Node: Arrays499146
+Node: Array Basics500475
+Node: Array Intro501319
+Ref: figure-array-elements503294
+Ref: Array Intro-Footnote-1505998
+Node: Reference to Elements506126
+Node: Assigning Elements508590
+Node: Array Example509081
+Node: Scanning an Array510840
+Node: Controlling Scanning513862
+Ref: Controlling Scanning-Footnote-1520318
+Node: Numeric Array Subscripts520634
+Node: Uninitialized Subscripts522818
+Node: Delete524437
+Ref: Delete-Footnote-1527189
+Node: Multidimensional527246
+Node: Multiscanning530341
+Node: Arrays of Arrays531932
+Node: Arrays Summary536700
+Node: Functions538793
+Node: Built-in539831
+Node: Calling Built-in540912
+Node: Numeric Functions542908
+Ref: Numeric Functions-Footnote-1546936
+Ref: Numeric Functions-Footnote-2547584
+Ref: Numeric Functions-Footnote-3547632
+Node: String Functions547904
+Ref: String Functions-Footnote-1572045
+Ref: String Functions-Footnote-2572173
+Ref: String Functions-Footnote-3572421
+Node: Gory Details572508
+Ref: table-sub-escapes574299
+Ref: table-sub-proposed575818
+Ref: table-posix-sub577181
+Ref: table-gensub-escapes578722
+Ref: Gory Details-Footnote-1579545
+Node: I/O Functions579699
+Ref: table-system-return-values586153
+Ref: I/O Functions-Footnote-1588233
+Ref: I/O Functions-Footnote-2588381
+Node: Time Functions588501
+Ref: Time Functions-Footnote-1599172
+Ref: Time Functions-Footnote-2599240
+Ref: Time Functions-Footnote-3599398
+Ref: Time Functions-Footnote-4599509
+Ref: Time Functions-Footnote-5599621
+Ref: Time Functions-Footnote-6599848
+Node: Bitwise Functions600114
+Ref: table-bitwise-ops600708
+Ref: Bitwise Functions-Footnote-1606771
+Ref: Bitwise Functions-Footnote-2606944
+Node: Type Functions607135
+Node: I18N Functions609998
+Node: User-defined611649
+Node: Definition Syntax612461
+Ref: Definition Syntax-Footnote-1618155
+Node: Function Example618226
+Ref: Function Example-Footnote-1621148
+Node: Function Calling621170
+Node: Calling A Function621758
+Node: Variable Scope622716
+Node: Pass By Value/Reference625710
+Node: Function Caveats628354
+Ref: Function Caveats-Footnote-1630401
+Node: Return Statement630521
+Node: Dynamic Typing633500
+Node: Indirect Calls634430
+Ref: Indirect Calls-Footnote-1644682
+Node: Functions Summary644810
+Node: Library Functions647515
+Ref: Library Functions-Footnote-1651122
+Ref: Library Functions-Footnote-2651265
+Node: Library Names651436
+Ref: Library Names-Footnote-1655103
+Ref: Library Names-Footnote-2655326
+Node: General Functions655412
+Node: Strtonum Function656515
+Node: Assert Function659537
+Node: Round Function662863
+Node: Cliff Random Function664403
+Node: Ordinal Functions665419
+Ref: Ordinal Functions-Footnote-1668482
+Ref: Ordinal Functions-Footnote-2668734
+Node: Join Function668944
+Ref: Join Function-Footnote-1670714
+Node: Getlocaltime Function670914
+Node: Readfile Function674656
+Node: Shell Quoting676633
+Node: Data File Management678034
+Node: Filetrans Function678666
+Node: Rewind Function682762
+Node: File Checking684671
+Ref: File Checking-Footnote-1686005
+Node: Empty Files686206
+Node: Ignoring Assigns688185
+Node: Getopt Function689735
+Ref: Getopt Function-Footnote-1704946
+Node: Passwd Functions705146
+Ref: Passwd Functions-Footnote-1713985
+Node: Group Functions714073
+Ref: Group Functions-Footnote-1721971
+Node: Walking Arrays722178
+Node: Library Functions Summary725186
+Node: Library Exercises726592
+Node: Sample Programs727057
+Node: Running Examples727827
+Node: Clones728555
+Node: Cut Program729779
+Node: Egrep Program739919
+Node: Id Program748930
+Node: Split Program758877
+Ref: Split Program-Footnote-1768767
+Node: Tee Program768940
+Node: Uniq Program771730
+Node: Wc Program779318
+Node: Bytes vs. Characters779715
+Node: Using extensions781263
+Node: wc program782017
+Node: Miscellaneous Programs786882
+Node: Dupword Program788095
+Node: Alarm Program790125
+Node: Translate Program794980
+Ref: Translate Program-Footnote-1799545
+Node: Labels Program799815
+Ref: Labels Program-Footnote-1803166
+Node: Word Sorting803250
+Node: History Sorting807322
+Node: Extract Program809547
+Node: Simple Sed817601
+Node: Igawk Program820675
+Ref: Igawk Program-Footnote-1835006
+Ref: Igawk Program-Footnote-2835208
+Ref: Igawk Program-Footnote-3835330
+Node: Anagram Program835445
+Node: Signature Program838507
+Node: Programs Summary839754
+Node: Programs Exercises840968
+Ref: Programs Exercises-Footnote-1845098
+Node: Advanced Features845184
+Node: Nondecimal Data847251
+Node: Array Sorting848842
+Node: Controlling Array Traversal849542
+Ref: Controlling Array Traversal-Footnote-1857910
+Node: Array Sorting Functions858028
+Ref: Array Sorting Functions-Footnote-1863119
+Node: Two-way I/O863315
+Ref: Two-way I/O-Footnote-1871036
+Ref: Two-way I/O-Footnote-2871223
+Node: TCP/IP Networking871305
+Node: Profiling874423
+Node: Extension Philosophy883732
+Node: Advanced Features Summary885183
+Node: Internationalization887182
+Node: I18N and L10N888662
+Node: Explaining gettext889349
+Ref: Explaining gettext-Footnote-1895241
+Ref: Explaining gettext-Footnote-2895426
+Node: Programmer i18n895591
+Ref: Programmer i18n-Footnote-1900540
+Node: Translator i18n900589
+Node: String Extraction901383
+Ref: String Extraction-Footnote-1902515
+Node: Printf Ordering902601
+Ref: Printf Ordering-Footnote-1905387
+Node: I18N Portability905451
+Ref: I18N Portability-Footnote-1907907
+Node: I18N Example907970
+Ref: I18N Example-Footnote-1911245
+Ref: I18N Example-Footnote-2911318
+Node: Gawk I18N911427
+Node: I18N Summary912076
+Node: Debugger913417
+Node: Debugging914417
+Node: Debugging Concepts914858
+Node: Debugging Terms916667
+Node: Awk Debugging919242
+Ref: Awk Debugging-Footnote-1920187
+Node: Sample Debugging Session920319
+Node: Debugger Invocation920853
+Node: Finding The Bug922239
+Node: List of Debugger Commands928713
+Node: Breakpoint Control930046
+Node: Debugger Execution Control933740
+Node: Viewing And Changing Data937102
+Node: Execution Stack940643
+Node: Debugger Info942280
+Node: Miscellaneous Debugger Commands946351
+Node: Readline Support951413
+Node: Limitations952309
+Node: Debugging Summary954863
+Node: Namespaces956142
+Node: Global Namespace957253
+Node: Qualified Names958651
+Node: Default Namespace959650
+Node: Changing The Namespace960391
+Node: Naming Rules962005
+Node: Internal Name Management963853
+Node: Namespace Example964895
+Node: Namespace And Features967457
+Node: Namespace Summary968892
+Node: Arbitrary Precision Arithmetic970369
+Node: Computer Arithmetic971856
+Ref: table-numeric-ranges975622
+Ref: table-floating-point-ranges976115
+Ref: Computer Arithmetic-Footnote-1976773
+Node: Math Definitions976830
+Ref: table-ieee-formats980146
+Ref: Math Definitions-Footnote-1980749
+Node: MPFR features980854
+Node: FP Math Caution982572
+Ref: FP Math Caution-Footnote-1983644
+Node: Inexactness of computations984013
+Node: Inexact representation984973
+Node: Comparing FP Values986333
+Node: Errors accumulate987574
+Node: Getting Accuracy989007
+Node: Try To Round991717
+Node: Setting precision992616
+Ref: table-predefined-precision-strings993313
+Node: Setting the rounding mode995143
+Ref: table-gawk-rounding-modes995517
+Ref: Setting the rounding mode-Footnote-1999448
+Node: Arbitrary Precision Integers999627
+Ref: Arbitrary Precision Integers-Footnote-11002802
+Node: Checking for MPFR1002951
+Node: POSIX Floating Point Problems1004425
+Ref: POSIX Floating Point Problems-Footnote-11008710
+Node: Floating point summary1008748
+Node: Dynamic Extensions1010938
+Node: Extension Intro1012491
+Node: Plugin License1013757
+Node: Extension Mechanism Outline1014554
+Ref: figure-load-extension1014993
+Ref: figure-register-new-function1016558
+Ref: figure-call-new-function1017650
+Node: Extension API Description1019712
+Node: Extension API Functions Introduction1021425
+Ref: table-api-std-headers1023261
+Node: General Data Types1027510
+Ref: General Data Types-Footnote-11036140
+Node: Memory Allocation Functions1036439
+Ref: Memory Allocation Functions-Footnote-11040940
+Node: Constructor Functions1041039
+Node: API Ownership of MPFR and GMP Values1044505
+Node: Registration Functions1045818
+Node: Extension Functions1046518
+Node: Exit Callback Functions1051840
+Node: Extension Version String1053090
+Node: Input Parsers1053753
+Node: Output Wrappers1066474
+Node: Two-way processors1070986
+Node: Printing Messages1073251
+Ref: Printing Messages-Footnote-11074422
+Node: Updating ERRNO1074575
+Node: Requesting Values1075314
+Ref: table-value-types-returned1076051
+Node: Accessing Parameters1076987
+Node: Symbol Table Access1078224
+Node: Symbol table by name1078736
+Ref: Symbol table by name-Footnote-11081760
+Node: Symbol table by cookie1081888
+Ref: Symbol table by cookie-Footnote-11086073
+Node: Cached values1086137
+Ref: Cached values-Footnote-11089673
+Node: Array Manipulation1089826
+Ref: Array Manipulation-Footnote-11090917
+Node: Array Data Types1090954
+Ref: Array Data Types-Footnote-11093612
+Node: Array Functions1093704
+Node: Flattening Arrays1098202
+Node: Creating Arrays1105178
+Node: Redirection API1109945
+Node: Extension API Variables1112778
+Node: Extension Versioning1113489
+Ref: gawk-api-version1113918
+Node: Extension GMP/MPFR Versioning1115649
+Node: Extension API Informational Variables1117277
+Node: Extension API Boilerplate1118350
+Node: Changes from API V11122324
+Node: Finding Extensions1123896
+Node: Extension Example1124455
+Node: Internal File Description1125253
+Node: Internal File Ops1129333
+Ref: Internal File Ops-Footnote-11140683
+Node: Using Internal File Ops1140823
+Ref: Using Internal File Ops-Footnote-11143206
+Node: Extension Samples1143480
+Node: Extension Sample File Functions1145009
+Node: Extension Sample Fnmatch1152658
+Node: Extension Sample Fork1154145
+Node: Extension Sample Inplace1155363
+Node: Extension Sample Ord1158989
+Node: Extension Sample Readdir1159825
+Ref: table-readdir-file-types1160714
+Node: Extension Sample Revout1161781
+Node: Extension Sample Rev2way1162370
+Node: Extension Sample Read write array1163110
+Node: Extension Sample Readfile1165052
+Node: Extension Sample Time1166147
+Node: Extension Sample API Tests1167899
+Node: gawkextlib1168391
+Node: Extension summary1171309
+Node: Extension Exercises1175011
+Node: Language History1176253
+Node: V7/SVR3.11177909
+Node: SVR41180061
+Node: POSIX1181495
+Node: BTL1182876
+Node: POSIX/GNU1183605
+Node: Feature History1189383
+Node: Common Extensions1205702
+Node: Ranges and Locales1206985
+Ref: Ranges and Locales-Footnote-11211601
+Ref: Ranges and Locales-Footnote-21211628
+Ref: Ranges and Locales-Footnote-31211863
+Node: Contributors1212086
+Node: History summary1218083
+Node: Installation1219463
+Node: Gawk Distribution1220407
+Node: Getting1220891
+Node: Extracting1221854
+Node: Distribution contents1223492
+Node: Unix Installation1229972
+Node: Quick Installation1230654
+Node: Shell Startup Files1233068
+Node: Additional Configuration Options1234157
+Node: Configuration Philosophy1236472
+Node: Non-Unix Installation1238841
+Node: PC Installation1239301
+Node: PC Binary Installation1240139
+Node: PC Compiling1240574
+Node: PC Using1241691
+Node: Cygwin1245244
+Node: MSYS1246468
+Node: VMS Installation1247070
+Node: VMS Compilation1247861
+Ref: VMS Compilation-Footnote-11249090
+Node: VMS Dynamic Extensions1249148
+Node: VMS Installation Details1250833
+Node: VMS Running1253086
+Node: VMS GNV1257365
+Node: VMS Old Gawk1258100
+Node: Bugs1258571
+Node: Bug address1259234
+Node: Usenet1262216
+Node: Maintainers1263220
+Node: Other Versions1264405
+Node: Installation summary1271493
+Node: Notes1272702
+Node: Compatibility Mode1273496
+Node: Additions1274278
+Node: Accessing The Source1275203
+Node: Adding Code1276640
+Node: New Ports1282859
+Node: Derived Files1287234
+Ref: Derived Files-Footnote-11292894
+Ref: Derived Files-Footnote-21292929
+Ref: Derived Files-Footnote-31293527
+Node: Future Extensions1293641
+Node: Implementation Limitations1294299
+Node: Extension Design1295509
+Node: Old Extension Problems1296653
+Ref: Old Extension Problems-Footnote-11298171
+Node: Extension New Mechanism Goals1298228
+Ref: Extension New Mechanism Goals-Footnote-11301592
+Node: Extension Other Design Decisions1301781
+Node: Extension Future Growth1303894
+Node: Notes summary1304500
+Node: Basic Concepts1305658
+Node: Basic High Level1306339
+Ref: figure-general-flow1306621
+Ref: figure-process-flow1307306
+Ref: Basic High Level-Footnote-11310607
+Node: Basic Data Typing1310792
+Node: Glossary1314120
+Node: Copying1346005
+Node: GNU Free Documentation License1383548
+Node: Index1408668
 
 End Tag Table
 
diff --git a/doc/gawk.texi b/doc/gawk.texi
index d211e48..7f9816a 100644
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -868,6 +868,7 @@ particular records in a file and perform operations upon 
them.
 * TCP/IP Networking::                   Using @command{gawk} for network
                                         programming.
 * Profiling::                           Profiling your @command{awk} programs.
+* Extension Philosophy::                What should be built-in and what 
should not.
 * Advanced Features Summary::           Summary of advanced features.
 * I18N and L10N::                       Internationalization and Localization.
 * Explaining gettext::                  How GNU @command{gettext} works.
@@ -29249,6 +29250,7 @@ discusses the ability to dynamically add new built-in 
functions to
 * Two-way I/O::                 Two-way communications with another process.
 * TCP/IP Networking::           Using @command{gawk} for network programming.
 * Profiling::                   Profiling your @command{awk} programs.
+* Extension Philosophy::        What should be built-in and what should not.
 * Advanced Features Summary::   Summary of advanced features.
 @end menu
 
@@ -30523,6 +30525,52 @@ Profiling and pretty-printing also preserve the 
original format of numeric
 constants; if you used an octal or hexadecimal value in your source
 code, it will appear that way in the output.
 
+@node Extension Philosophy
+@section Builtin Features vs.@: Extensions
+
+As this and subsequent @value{CHAPTER}s show, @command{gawk} has a
+large number of extensions over standard @command{awk} built-in to
+the program.  These have developed over time.  More recently, the
+focus has moved to using the extension mechanism (@pxref{Dynamic Extensions})
+for adding features.  This @value{SECTION} discusses the ``guiding philosophy''
+behind what should be added to the interpreter as a built-in
+feature vs.@: what should be done in extensions.
+
+There are several goals:
+
+@enumerate 1
+@item
+Keep the language @command{awk}; it should not become unrecognizable, even
+if programs in it will only run on @command{gawk}.
+
+@item
+Keep the core from getting any larger unless absolutely necessary.
+
+@item
+Add new functionality either in @command{awk} scripts (@option{-f},
+@code{@@include}) or in loadable extensions written in C or C++
+(@option{-l}, @code{@@load}).
+
+@item
+Extend the core interpreter only if some feature is:
+
+@c sublist
+@enumerate A
+@item
+Truly desirable.
+@item
+Cannot be done via (2) or (3) above.
+@item
+Can be implemented without too much pain in the core.
+@end enumerate
+@end enumerate
+
+Combining modules with @command{awk} files is a powerful technique.
+Some of the sample extensions demonstrate this.
+
+Loading extensions and library files should not be done automatically,
+because then there's overhead that most users don't want or need.
+
 @node Advanced Features Summary
 @section Summary
 
@@ -30565,6 +30613,9 @@ you tune them more easily.  Sending the @code{USR1} 
signal while profiling cause
 @item
 You can also just ``pretty-print'' the program.
 
+@item
+New features should be developed using the extension mechansim if possible, 
and added
+to the core interpreter only as a last resort.
 @end itemize
 
 
diff --git a/doc/gawktexi.in b/doc/gawktexi.in
index a5c65a3..ceacad6 100644
--- a/doc/gawktexi.in
+++ b/doc/gawktexi.in
@@ -863,6 +863,7 @@ particular records in a file and perform operations upon 
them.
 * TCP/IP Networking::                   Using @command{gawk} for network
                                         programming.
 * Profiling::                           Profiling your @command{awk} programs.
+* Extension Philosophy::                What should be built-in and what 
should not.
 * Advanced Features Summary::           Summary of advanced features.
 * I18N and L10N::                       Internationalization and Localization.
 * Explaining gettext::                  How GNU @command{gettext} works.
@@ -28215,6 +28216,7 @@ discusses the ability to dynamically add new built-in 
functions to
 * Two-way I/O::                 Two-way communications with another process.
 * TCP/IP Networking::           Using @command{gawk} for network programming.
 * Profiling::                   Profiling your @command{awk} programs.
+* Extension Philosophy::        What should be built-in and what should not.
 * Advanced Features Summary::   Summary of advanced features.
 @end menu
 
@@ -29489,6 +29491,52 @@ Profiling and pretty-printing also preserve the 
original format of numeric
 constants; if you used an octal or hexadecimal value in your source
 code, it will appear that way in the output.
 
+@node Extension Philosophy
+@section Builtin Features vs.@: Extensions
+
+As this and subsequent @value{CHAPTER}s show, @command{gawk} has a
+large number of extensions over standard @command{awk} built-in to
+the program.  These have developed over time.  More recently, the
+focus has moved to using the extension mechanism (@pxref{Dynamic Extensions})
+for adding features.  This @value{SECTION} discusses the ``guiding philosophy''
+behind what should be added to the interpreter as a built-in
+feature vs.@: what should be done in extensions.
+
+There are several goals:
+
+@enumerate 1
+@item
+Keep the language @command{awk}; it should not become unrecognizable, even
+if programs in it will only run on @command{gawk}.
+
+@item
+Keep the core from getting any larger unless absolutely necessary.
+
+@item
+Add new functionality either in @command{awk} scripts (@option{-f},
+@code{@@include}) or in loadable extensions written in C or C++
+(@option{-l}, @code{@@load}).
+
+@item
+Extend the core interpreter only if some feature is:
+
+@c sublist
+@enumerate A
+@item
+Truly desirable.
+@item
+Cannot be done via (2) or (3) above.
+@item
+Can be implemented without too much pain in the core.
+@end enumerate
+@end enumerate
+
+Combining modules with @command{awk} files is a powerful technique.
+Some of the sample extensions demonstrate this.
+
+Loading extensions and library files should not be done automatically,
+because then there's overhead that most users don't want or need.
+
 @node Advanced Features Summary
 @section Summary
 
@@ -29531,6 +29579,9 @@ you tune them more easily.  Sending the @code{USR1} 
signal while profiling cause
 @item
 You can also just ``pretty-print'' the program.
 
+@item
+New features should be developed using the extension mechansim if possible, 
and added
+to the core interpreter only as a last resort.
 @end itemize
 
 

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

commit e38041a0d5bb2d9b67a50e2fd1d816f12cad3068
Author: Arnold D. Robbins <arnold@skeeve.com>
Date:   Tue Dec 1 07:02:32 2020 +0200

    Add a generated program after updating gawkinet.texi.

diff --git a/awklib/eg/network/coreserv.awk b/awklib/eg/network/coreserv.awk
index a5c8b1e..7a17693 100644
--- a/awklib/eg/network/coreserv.awk
+++ b/awklib/eg/network/coreserv.awk
@@ -58,7 +58,7 @@ BEGIN {
   }
 }
 
-function CGI_setup(   method, uri, version, i)
+function CGI_setup(method, uri, version,    i)
 {
     delete GETARG
     delete MENU

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

Summary of changes:
 awklib/eg/network/coreserv.awk |    2 +-
 build-aux/ChangeLog            |    4 +
 build-aux/config.guess         |   30 +-
 build-aux/config.sub           |    4 +-
 doc/ChangeLog                  |    1 +
 doc/gawk.info                  | 1241 +++++++++++++++++++++-------------------
 doc/gawk.texi                  |   51 ++
 doc/gawktexi.in                |   51 ++
 8 files changed, 773 insertions(+), 611 deletions(-)


hooks/post-receive
-- 
gawk



reply via email to

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