[Top][All Lists]

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

[SCM] gawk branch, gawk-5.1-stable, updated. gawk-4.1.0-3994-ga43600e

From: Arnold Robbins
Subject: [SCM] gawk branch, gawk-5.1-stable, updated. gawk-4.1.0-3994-ga43600e
Date: Fri, 12 Jun 2020 03:49:39 -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, gawk-5.1-stable has been updated
       via  a43600eb76d87555c019079433f19039787befd5 (commit)
      from  901a6bf25b693537c59c4d1990c700e5c68db5e7 (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 -----------------------------------------------------------------

commit a43600eb76d87555c019079433f19039787befd5
Author: Arnold D. Robbins <>
Date:   Fri Jun 12 10:49:13 2020 +0300

    Improve asort and asorti treatment of SYMTAB and FUNCTAB. Document same.

diff --git a/ChangeLog b/ChangeLog
index 48f08cf..61c5261 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2020-06-12         Arnold D. Robbins     <>
+       * array.c (asort_actual): If SYMTAB or FUNCTAB is the second argument,
+       fatal out.   If they are the first argument, make it work when a
+       second argument is supplied.
+       * TODO: Updated.
 2020-06-10         Arnold D. Robbins     <>
        More miscellaneous fixes from Michael Builov <>.
diff --git a/TODO b/TODO
index 1a830dd..19414e9 100644
--- a/TODO
+++ b/TODO
@@ -1,4 +1,4 @@
-Wed Mar 18 22:05:22 IST 2020
+Fri Jun 12 10:46:43 IDT 2020
 There were too many files tracking different thoughts and ideas for
@@ -15,9 +15,6 @@ TODO
 Minor Cleanups and Code Improvements
-       Allow SYMTAB and FUNCTAB as arguments to asort/asorti if a
-       destination array is provided.
                ??? #if !defined(GAWK) && !defined(GAWK_OMIT_CONVENIENCE_MACROS)
@@ -30,9 +27,6 @@ Minor Cleanups and Code Improvements
        Fully synchronize whitespace tests (for \s, \S in Unicode
        environment) with those of GNU grep.
-       See if something like  b = a "" can be optimized to not do
-       a concatenation, but instead just set STRCUR on a.
        Message cleanup:
        * Messages in debug.c start with capital letters, but not in
          other files.
@@ -127,6 +121,10 @@ Things To Think About That May Never Happen
 Things That We Decided We Will Never Do
+       See if something like  b = a "" can be optimized to not do
+       a concatenation, but instead just set STRCUR on a.
+       (Tried this; the type of b doesn't come out correctly.)
        Consider moving var_value info into Node_var itself to reduce
        memory usage. This would break all uses of get_lhs in the
        code. It's too sweeping a change.
diff --git a/array.c b/array.c
index 4ff365f..e3bbc83 100644
--- a/array.c
+++ b/array.c
@@ -824,6 +824,12 @@ asort_actual(int nargs, sort_context_t ctxt)
                        fatal(_("%s: second argument is not an array"),
                                ctxt == ASORT ? "asort" : "asorti");
+               if (dest == symbol_table)
+                       fatal(_("%s: SYMTAB cannot be used as second argument"),
+                               ctxt == ASORT ? "asort" : "asorti");
+               else if (dest == func_table)
+                       fatal(_("%s: FUNCTAB cannot be used as second 
+                               ctxt == ASORT ? "asort" : "asorti");
        array = POP_PARAM();
@@ -831,11 +837,11 @@ asort_actual(int nargs, sort_context_t ctxt)
                fatal(_("%s: first argument is not an array"),
                        ctxt == ASORT ? "asort" : "asorti");
-       else if (array == symbol_table)
-               fatal(_("%s: first argument cannot be SYMTAB"),
+       else if (array == symbol_table && dest == NULL)
+               fatal(_("%s: first argument cannot be SYMTAB without a second 
                        ctxt == ASORT ? "asort" : "asorti");
-       else if (array == func_table)
-               fatal(_("%s: first argument cannot be FUNCTAB"),
+       else if (array == func_table && dest == NULL)
+               fatal(_("%s: first argument cannot be FUNCTAB without a second 
                        ctxt == ASORT ? "asort" : "asorti");
        if (dest != NULL) {
@@ -906,7 +912,15 @@ asort_actual(int nargs, sort_context_t ctxt)
                        if (r->type == Node_val)
                                value = dupnode(r);
-                       else {
+                       else if (r->type == Node_var)
+                               /* SYMTAB ... */
+                               value = dupnode(r->var_value);
+                       else if (r->type == Node_builtin_func
+                                || r->type == Node_func
+                                || r->type == Node_ext_func) {
+                               /* FUNCTAB ... */
+                               value = make_string(r->vname, strlen(r->vname));
+                       } else {
                                NODE *arr;
                                arr = make_array();
                                subs = force_string(subs);
diff --git a/doc/ChangeLog b/doc/ChangeLog
index 94f3e3d..d343305 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,3 +1,8 @@
+2020-06-12         Arnold D. Robbins     <>
+       * (String Functions): Update doc on asort and asorti
+       w.r.t. SYMTAB and FUNCTAB.
 2020-06-10         Andrew J. Schorr      <>
        * bc_notes: Add new field `unsigned long long ldl' to INSTRUCTION,
diff --git a/doc/ b/doc/
index 31892f4..2372931 100644
--- a/doc/
+++ b/doc/
@@ -12945,11 +12945,11 @@ Options::):
           a[2] = "last"
           a[3] = "middle"
-          NOTE: Due to implementation limitations, you may not use
-          either 'SYMTAB' or 'FUNCTAB' as arguments to these functions,
-          even if providing a second array to use for the actual
-          sorting.  Attempting to do so produces a fatal error.  This
-          restriction may be lifted in the future.
+          NOTE: You may not use either 'SYMTAB' or 'FUNCTAB' as the
+          second argument to these functions.  Attempting to do so
+          produces a fatal error.  You may use them as the first
+          argument, but only if providing a second array to use for the
+          actual sorting.
 'gensub(REGEXP, REPLACEMENT, HOW' [', TARGET']') #'
      Search the target string TARGET for matches of the regular
@@ -37564,354 +37564,354 @@ Ref: Numeric Functions-Footnote-1544597
 Ref: Numeric Functions-Footnote-2545245
 Ref: Numeric Functions-Footnote-3545293
 Node: String Functions545565
-Ref: String Functions-Footnote-1569749
-Ref: String Functions-Footnote-2569877
-Ref: String Functions-Footnote-3570125
-Node: Gory Details570212
-Ref: table-sub-escapes572003
-Ref: table-sub-proposed573522
-Ref: table-posix-sub574885
-Ref: table-gensub-escapes576426
-Ref: Gory Details-Footnote-1577249
-Node: I/O Functions577403
-Ref: table-system-return-values583871
-Ref: I/O Functions-Footnote-1585951
-Ref: I/O Functions-Footnote-2586099
-Node: Time Functions586219
-Ref: Time Functions-Footnote-1596890
-Ref: Time Functions-Footnote-2596958
-Ref: Time Functions-Footnote-3597116
-Ref: Time Functions-Footnote-4597227
-Ref: Time Functions-Footnote-5597339
-Ref: Time Functions-Footnote-6597566
-Node: Bitwise Functions597832
-Ref: table-bitwise-ops598426
-Ref: Bitwise Functions-Footnote-1604489
-Ref: Bitwise Functions-Footnote-2604662
-Node: Type Functions604853
-Node: I18N Functions607716
-Node: User-defined609367
-Node: Definition Syntax610179
-Ref: Definition Syntax-Footnote-1615866
-Node: Function Example615937
-Ref: Function Example-Footnote-1618859
-Node: Function Calling618881
-Node: Calling A Function619469
-Node: Variable Scope620427
-Node: Pass By Value/Reference623421
-Node: Function Caveats626065
-Ref: Function Caveats-Footnote-1628112
-Node: Return Statement628232
-Node: Dynamic Typing631211
-Node: Indirect Calls632141
-Ref: Indirect Calls-Footnote-1642393
-Node: Functions Summary642521
-Node: Library Functions645226
-Ref: Library Functions-Footnote-1648833
-Ref: Library Functions-Footnote-2648976
-Node: Library Names649147
-Ref: Library Names-Footnote-1652814
-Ref: Library Names-Footnote-2653037
-Node: General Functions653123
-Node: Strtonum Function654226
-Node: Assert Function657248
-Node: Round Function660574
-Node: Cliff Random Function662114
-Node: Ordinal Functions663130
-Ref: Ordinal Functions-Footnote-1666193
-Ref: Ordinal Functions-Footnote-2666445
-Node: Join Function666655
-Ref: Join Function-Footnote-1668425
-Node: Getlocaltime Function668625
-Node: Readfile Function672367
-Node: Shell Quoting674344
-Node: Data File Management675745
-Node: Filetrans Function676377
-Node: Rewind Function680473
-Node: File Checking682382
-Ref: File Checking-Footnote-1683716
-Node: Empty Files683917
-Node: Ignoring Assigns685896
-Node: Getopt Function687446
-Ref: Getopt Function-Footnote-1702658
-Node: Passwd Functions702858
-Ref: Passwd Functions-Footnote-1711697
-Node: Group Functions711785
-Ref: Group Functions-Footnote-1719683
-Node: Walking Arrays719890
-Node: Library Functions Summary722898
-Node: Library Exercises724304
-Node: Sample Programs724769
-Node: Running Examples725539
-Node: Clones726267
-Node: Cut Program727491
-Node: Egrep Program737420
-Ref: Egrep Program-Footnote-1744932
-Node: Id Program745042
-Node: Split Program748722
-Ref: Split Program-Footnote-1752180
-Node: Tee Program752309
-Node: Uniq Program755099
-Node: Wc Program762720
-Ref: Wc Program-Footnote-1766975
-Node: Miscellaneous Programs767069
-Node: Dupword Program768282
-Node: Alarm Program770312
-Node: Translate Program775167
-Ref: Translate Program-Footnote-1779732
-Node: Labels Program780002
-Ref: Labels Program-Footnote-1783353
-Node: Word Sorting783437
-Node: History Sorting787509
-Node: Extract Program789734
-Node: Simple Sed797788
-Node: Igawk Program800862
-Ref: Igawk Program-Footnote-1815193
-Ref: Igawk Program-Footnote-2815395
-Ref: Igawk Program-Footnote-3815517
-Node: Anagram Program815632
-Node: Signature Program818694
-Node: Programs Summary819941
-Node: Programs Exercises821155
-Ref: Programs Exercises-Footnote-1825284
-Node: Advanced Features825375
-Node: Nondecimal Data827365
-Node: Array Sorting828956
-Node: Controlling Array Traversal829656
-Ref: Controlling Array Traversal-Footnote-1838024
-Node: Array Sorting Functions838142
-Ref: Array Sorting Functions-Footnote-1843233
-Node: Two-way I/O843429
-Ref: Two-way I/O-Footnote-1851150
-Ref: Two-way I/O-Footnote-2851337
-Node: TCP/IP Networking851419
-Node: Profiling854537
-Node: Advanced Features Summary863552
-Node: Internationalization865396
-Node: I18N and L10N866876
-Node: Explaining gettext867563
-Ref: Explaining gettext-Footnote-1873455
-Ref: Explaining gettext-Footnote-2873640
-Node: Programmer i18n873805
-Ref: Programmer i18n-Footnote-1878754
-Node: Translator i18n878803
-Node: String Extraction879597
-Ref: String Extraction-Footnote-1880729
-Node: Printf Ordering880815
-Ref: Printf Ordering-Footnote-1883601
-Node: I18N Portability883665
-Ref: I18N Portability-Footnote-1886121
-Node: I18N Example886184
-Ref: I18N Example-Footnote-1889459
-Ref: I18N Example-Footnote-2889532
-Node: Gawk I18N889641
-Node: I18N Summary890290
-Node: Debugger891631
-Node: Debugging892631
-Node: Debugging Concepts893072
-Node: Debugging Terms894881
-Node: Awk Debugging897456
-Ref: Awk Debugging-Footnote-1898401
-Node: Sample Debugging Session898533
-Node: Debugger Invocation899067
-Node: Finding The Bug900453
-Node: List of Debugger Commands906927
-Node: Breakpoint Control908260
-Node: Debugger Execution Control911954
-Node: Viewing And Changing Data915316
-Node: Execution Stack918857
-Node: Debugger Info920494
-Node: Miscellaneous Debugger Commands924565
-Node: Readline Support929627
-Node: Limitations930523
-Node: Debugging Summary933077
-Node: Namespaces934356
-Node: Global Namespace935467
-Node: Qualified Names936865
-Node: Default Namespace937864
-Node: Changing The Namespace938605
-Node: Naming Rules940219
-Node: Internal Name Management942067
-Node: Namespace Example943109
-Node: Namespace And Features945671
-Node: Namespace Summary947106
-Node: Arbitrary Precision Arithmetic948583
-Node: Computer Arithmetic950070
-Ref: table-numeric-ranges953836
-Ref: table-floating-point-ranges954329
-Ref: Computer Arithmetic-Footnote-1954987
-Node: Math Definitions955044
-Ref: table-ieee-formats958360
-Ref: Math Definitions-Footnote-1958963
-Node: MPFR features959068
-Node: FP Math Caution960786
-Ref: FP Math Caution-Footnote-1961858
-Node: Inexactness of computations962227
-Node: Inexact representation963187
-Node: Comparing FP Values964547
-Node: Errors accumulate965788
-Node: Getting Accuracy967221
-Node: Try To Round969931
-Node: Setting precision970830
-Ref: table-predefined-precision-strings971527
-Node: Setting the rounding mode973357
-Ref: table-gawk-rounding-modes973731
-Ref: Setting the rounding mode-Footnote-1977662
-Node: Arbitrary Precision Integers977841
-Ref: Arbitrary Precision Integers-Footnote-1981016
-Node: Checking for MPFR981165
-Node: POSIX Floating Point Problems982639
-Ref: POSIX Floating Point Problems-Footnote-1986924
-Node: Floating point summary986962
-Node: Dynamic Extensions989152
-Node: Extension Intro990705
-Node: Plugin License991971
-Node: Extension Mechanism Outline992768
-Ref: figure-load-extension993207
-Ref: figure-register-new-function994772
-Ref: figure-call-new-function995864
-Node: Extension API Description997926
-Node: Extension API Functions Introduction999568
-Ref: table-api-std-headers1001404
-Node: General Data Types1005269
-Ref: General Data Types-Footnote-11013630
-Node: Memory Allocation Functions1013929
-Ref: Memory Allocation Functions-Footnote-11018139
-Node: Constructor Functions1018238
-Node: Registration Functions1021824
-Node: Extension Functions1022509
-Node: Exit Callback Functions1027831
-Node: Extension Version String1029081
-Node: Input Parsers1029744
-Node: Output Wrappers1042465
-Node: Two-way processors1046977
-Node: Printing Messages1049242
-Ref: Printing Messages-Footnote-11050413
-Node: Updating ERRNO1050566
-Node: Requesting Values1051305
-Ref: table-value-types-returned1052042
-Node: Accessing Parameters1052978
-Node: Symbol Table Access1054213
-Node: Symbol table by name1054725
-Ref: Symbol table by name-Footnote-11057749
-Node: Symbol table by cookie1057877
-Ref: Symbol table by cookie-Footnote-11062062
-Node: Cached values1062126
-Ref: Cached values-Footnote-11065662
-Node: Array Manipulation1065815
-Ref: Array Manipulation-Footnote-11066906
-Node: Array Data Types1066943
-Ref: Array Data Types-Footnote-11069601
-Node: Array Functions1069693
-Node: Flattening Arrays1074191
-Node: Creating Arrays1081167
-Node: Redirection API1085934
-Node: Extension API Variables1088767
-Node: Extension Versioning1089478
-Ref: gawk-api-version1089907
-Node: Extension GMP/MPFR Versioning1091638
-Node: Extension API Informational Variables1093266
-Node: Extension API Boilerplate1094339
-Node: Changes from API V11098313
-Node: Finding Extensions1099885
-Node: Extension Example1100444
-Node: Internal File Description1101242
-Node: Internal File Ops1105322
-Ref: Internal File Ops-Footnote-11116672
-Node: Using Internal File Ops1116812
-Ref: Using Internal File Ops-Footnote-11119195
-Node: Extension Samples1119469
-Node: Extension Sample File Functions1120998
-Node: Extension Sample Fnmatch1128647
-Node: Extension Sample Fork1130134
-Node: Extension Sample Inplace1131352
-Node: Extension Sample Ord1134977
-Node: Extension Sample Readdir1135813
-Ref: table-readdir-file-types1136702
-Node: Extension Sample Revout1137769
-Node: Extension Sample Rev2way1138358
-Node: Extension Sample Read write array1139098
-Node: Extension Sample Readfile1141040
-Node: Extension Sample Time1142135
-Node: Extension Sample API Tests1143887
-Node: gawkextlib1144379
-Node: Extension summary1147297
-Node: Extension Exercises1150999
-Node: Language History1152241
-Node: V7/SVR3.11153897
-Node: SVR41156049
-Node: POSIX1157483
-Node: BTL1158864
-Node: POSIX/GNU1159593
-Node: Feature History1165371
-Node: Common Extensions1181690
-Node: Ranges and Locales1182973
-Ref: Ranges and Locales-Footnote-11187589
-Ref: Ranges and Locales-Footnote-21187616
-Ref: Ranges and Locales-Footnote-31187851
-Node: Contributors1188074
-Node: History summary1194071
-Node: Installation1195451
-Node: Gawk Distribution1196395
-Node: Getting1196879
-Node: Extracting1197842
-Node: Distribution contents1199480
-Node: Unix Installation1205960
-Node: Quick Installation1206642
-Node: Shell Startup Files1209056
-Node: Additional Configuration Options1210145
-Node: Configuration Philosophy1212460
-Node: Non-Unix Installation1214829
-Node: PC Installation1215289
-Node: PC Binary Installation1216127
-Node: PC Compiling1216562
-Node: PC Using1217679
-Node: Cygwin1221232
-Node: MSYS1222456
-Node: VMS Installation1223058
-Node: VMS Compilation1223849
-Ref: VMS Compilation-Footnote-11225078
-Node: VMS Dynamic Extensions1225136
-Node: VMS Installation Details1226821
-Node: VMS Running1229074
-Node: VMS GNV1233353
-Node: VMS Old Gawk1234088
-Node: Bugs1234559
-Node: Bug address1235222
-Node: Usenet1238204
-Node: Maintainers1239208
-Node: Other Versions1240393
-Node: Installation summary1247481
-Node: Notes1248690
-Node: Compatibility Mode1249484
-Node: Additions1250266
-Node: Accessing The Source1251191
-Node: Adding Code1252628
-Node: New Ports1258847
-Node: Derived Files1263222
-Ref: Derived Files-Footnote-11268882
-Ref: Derived Files-Footnote-21268917
-Ref: Derived Files-Footnote-31269515
-Node: Future Extensions1269629
-Node: Implementation Limitations1270287
-Node: Extension Design1271497
-Node: Old Extension Problems1272641
-Ref: Old Extension Problems-Footnote-11274159
-Node: Extension New Mechanism Goals1274216
-Ref: Extension New Mechanism Goals-Footnote-11277580
-Node: Extension Other Design Decisions1277769
-Node: Extension Future Growth1279882
-Node: Notes summary1280488
-Node: Basic Concepts1281646
-Node: Basic High Level1282327
-Ref: figure-general-flow1282609
-Ref: figure-process-flow1283294
-Ref: Basic High Level-Footnote-11286595
-Node: Basic Data Typing1286780
-Node: Glossary1290108
-Node: Copying1321993
-Node: GNU Free Documentation License1359536
-Node: Index1384656
+Ref: String Functions-Footnote-1569722
+Ref: String Functions-Footnote-2569850
+Ref: String Functions-Footnote-3570098
+Node: Gory Details570185
+Ref: table-sub-escapes571976
+Ref: table-sub-proposed573495
+Ref: table-posix-sub574858
+Ref: table-gensub-escapes576399
+Ref: Gory Details-Footnote-1577222
+Node: I/O Functions577376
+Ref: table-system-return-values583844
+Ref: I/O Functions-Footnote-1585924
+Ref: I/O Functions-Footnote-2586072
+Node: Time Functions586192
+Ref: Time Functions-Footnote-1596863
+Ref: Time Functions-Footnote-2596931
+Ref: Time Functions-Footnote-3597089
+Ref: Time Functions-Footnote-4597200
+Ref: Time Functions-Footnote-5597312
+Ref: Time Functions-Footnote-6597539
+Node: Bitwise Functions597805
+Ref: table-bitwise-ops598399
+Ref: Bitwise Functions-Footnote-1604462
+Ref: Bitwise Functions-Footnote-2604635
+Node: Type Functions604826
+Node: I18N Functions607689
+Node: User-defined609340
+Node: Definition Syntax610152
+Ref: Definition Syntax-Footnote-1615839
+Node: Function Example615910
+Ref: Function Example-Footnote-1618832
+Node: Function Calling618854
+Node: Calling A Function619442
+Node: Variable Scope620400
+Node: Pass By Value/Reference623394
+Node: Function Caveats626038
+Ref: Function Caveats-Footnote-1628085
+Node: Return Statement628205
+Node: Dynamic Typing631184
+Node: Indirect Calls632114
+Ref: Indirect Calls-Footnote-1642366
+Node: Functions Summary642494
+Node: Library Functions645199
+Ref: Library Functions-Footnote-1648806
+Ref: Library Functions-Footnote-2648949
+Node: Library Names649120
+Ref: Library Names-Footnote-1652787
+Ref: Library Names-Footnote-2653010
+Node: General Functions653096
+Node: Strtonum Function654199
+Node: Assert Function657221
+Node: Round Function660547
+Node: Cliff Random Function662087
+Node: Ordinal Functions663103
+Ref: Ordinal Functions-Footnote-1666166
+Ref: Ordinal Functions-Footnote-2666418
+Node: Join Function666628
+Ref: Join Function-Footnote-1668398
+Node: Getlocaltime Function668598
+Node: Readfile Function672340
+Node: Shell Quoting674317
+Node: Data File Management675718
+Node: Filetrans Function676350
+Node: Rewind Function680446
+Node: File Checking682355
+Ref: File Checking-Footnote-1683689
+Node: Empty Files683890
+Node: Ignoring Assigns685869
+Node: Getopt Function687419
+Ref: Getopt Function-Footnote-1702631
+Node: Passwd Functions702831
+Ref: Passwd Functions-Footnote-1711670
+Node: Group Functions711758
+Ref: Group Functions-Footnote-1719656
+Node: Walking Arrays719863
+Node: Library Functions Summary722871
+Node: Library Exercises724277
+Node: Sample Programs724742
+Node: Running Examples725512
+Node: Clones726240
+Node: Cut Program727464
+Node: Egrep Program737393
+Ref: Egrep Program-Footnote-1744905
+Node: Id Program745015
+Node: Split Program748695
+Ref: Split Program-Footnote-1752153
+Node: Tee Program752282
+Node: Uniq Program755072
+Node: Wc Program762693
+Ref: Wc Program-Footnote-1766948
+Node: Miscellaneous Programs767042
+Node: Dupword Program768255
+Node: Alarm Program770285
+Node: Translate Program775140
+Ref: Translate Program-Footnote-1779705
+Node: Labels Program779975
+Ref: Labels Program-Footnote-1783326
+Node: Word Sorting783410
+Node: History Sorting787482
+Node: Extract Program789707
+Node: Simple Sed797761
+Node: Igawk Program800835
+Ref: Igawk Program-Footnote-1815166
+Ref: Igawk Program-Footnote-2815368
+Ref: Igawk Program-Footnote-3815490
+Node: Anagram Program815605
+Node: Signature Program818667
+Node: Programs Summary819914
+Node: Programs Exercises821128
+Ref: Programs Exercises-Footnote-1825257
+Node: Advanced Features825348
+Node: Nondecimal Data827338
+Node: Array Sorting828929
+Node: Controlling Array Traversal829629
+Ref: Controlling Array Traversal-Footnote-1837997
+Node: Array Sorting Functions838115
+Ref: Array Sorting Functions-Footnote-1843206
+Node: Two-way I/O843402
+Ref: Two-way I/O-Footnote-1851123
+Ref: Two-way I/O-Footnote-2851310
+Node: TCP/IP Networking851392
+Node: Profiling854510
+Node: Advanced Features Summary863525
+Node: Internationalization865369
+Node: I18N and L10N866849
+Node: Explaining gettext867536
+Ref: Explaining gettext-Footnote-1873428
+Ref: Explaining gettext-Footnote-2873613
+Node: Programmer i18n873778
+Ref: Programmer i18n-Footnote-1878727
+Node: Translator i18n878776
+Node: String Extraction879570
+Ref: String Extraction-Footnote-1880702
+Node: Printf Ordering880788
+Ref: Printf Ordering-Footnote-1883574
+Node: I18N Portability883638
+Ref: I18N Portability-Footnote-1886094
+Node: I18N Example886157
+Ref: I18N Example-Footnote-1889432
+Ref: I18N Example-Footnote-2889505
+Node: Gawk I18N889614
+Node: I18N Summary890263
+Node: Debugger891604
+Node: Debugging892604
+Node: Debugging Concepts893045
+Node: Debugging Terms894854
+Node: Awk Debugging897429
+Ref: Awk Debugging-Footnote-1898374
+Node: Sample Debugging Session898506
+Node: Debugger Invocation899040
+Node: Finding The Bug900426
+Node: List of Debugger Commands906900
+Node: Breakpoint Control908233
+Node: Debugger Execution Control911927
+Node: Viewing And Changing Data915289
+Node: Execution Stack918830
+Node: Debugger Info920467
+Node: Miscellaneous Debugger Commands924538
+Node: Readline Support929600
+Node: Limitations930496
+Node: Debugging Summary933050
+Node: Namespaces934329
+Node: Global Namespace935440
+Node: Qualified Names936838
+Node: Default Namespace937837
+Node: Changing The Namespace938578
+Node: Naming Rules940192
+Node: Internal Name Management942040
+Node: Namespace Example943082
+Node: Namespace And Features945644
+Node: Namespace Summary947079
+Node: Arbitrary Precision Arithmetic948556
+Node: Computer Arithmetic950043
+Ref: table-numeric-ranges953809
+Ref: table-floating-point-ranges954302
+Ref: Computer Arithmetic-Footnote-1954960
+Node: Math Definitions955017
+Ref: table-ieee-formats958333
+Ref: Math Definitions-Footnote-1958936
+Node: MPFR features959041
+Node: FP Math Caution960759
+Ref: FP Math Caution-Footnote-1961831
+Node: Inexactness of computations962200
+Node: Inexact representation963160
+Node: Comparing FP Values964520
+Node: Errors accumulate965761
+Node: Getting Accuracy967194
+Node: Try To Round969904
+Node: Setting precision970803
+Ref: table-predefined-precision-strings971500
+Node: Setting the rounding mode973330
+Ref: table-gawk-rounding-modes973704
+Ref: Setting the rounding mode-Footnote-1977635
+Node: Arbitrary Precision Integers977814
+Ref: Arbitrary Precision Integers-Footnote-1980989
+Node: Checking for MPFR981138
+Node: POSIX Floating Point Problems982612
+Ref: POSIX Floating Point Problems-Footnote-1986897
+Node: Floating point summary986935
+Node: Dynamic Extensions989125
+Node: Extension Intro990678
+Node: Plugin License991944
+Node: Extension Mechanism Outline992741
+Ref: figure-load-extension993180
+Ref: figure-register-new-function994745
+Ref: figure-call-new-function995837
+Node: Extension API Description997899
+Node: Extension API Functions Introduction999541
+Ref: table-api-std-headers1001377
+Node: General Data Types1005242
+Ref: General Data Types-Footnote-11013603
+Node: Memory Allocation Functions1013902
+Ref: Memory Allocation Functions-Footnote-11018112
+Node: Constructor Functions1018211
+Node: Registration Functions1021797
+Node: Extension Functions1022482
+Node: Exit Callback Functions1027804
+Node: Extension Version String1029054
+Node: Input Parsers1029717
+Node: Output Wrappers1042438
+Node: Two-way processors1046950
+Node: Printing Messages1049215
+Ref: Printing Messages-Footnote-11050386
+Node: Updating ERRNO1050539
+Node: Requesting Values1051278
+Ref: table-value-types-returned1052015
+Node: Accessing Parameters1052951
+Node: Symbol Table Access1054186
+Node: Symbol table by name1054698
+Ref: Symbol table by name-Footnote-11057722
+Node: Symbol table by cookie1057850
+Ref: Symbol table by cookie-Footnote-11062035
+Node: Cached values1062099
+Ref: Cached values-Footnote-11065635
+Node: Array Manipulation1065788
+Ref: Array Manipulation-Footnote-11066879
+Node: Array Data Types1066916
+Ref: Array Data Types-Footnote-11069574
+Node: Array Functions1069666
+Node: Flattening Arrays1074164
+Node: Creating Arrays1081140
+Node: Redirection API1085907
+Node: Extension API Variables1088740
+Node: Extension Versioning1089451
+Ref: gawk-api-version1089880
+Node: Extension GMP/MPFR Versioning1091611
+Node: Extension API Informational Variables1093239
+Node: Extension API Boilerplate1094312
+Node: Changes from API V11098286
+Node: Finding Extensions1099858
+Node: Extension Example1100417
+Node: Internal File Description1101215
+Node: Internal File Ops1105295
+Ref: Internal File Ops-Footnote-11116645
+Node: Using Internal File Ops1116785
+Ref: Using Internal File Ops-Footnote-11119168
+Node: Extension Samples1119442
+Node: Extension Sample File Functions1120971
+Node: Extension Sample Fnmatch1128620
+Node: Extension Sample Fork1130107
+Node: Extension Sample Inplace1131325
+Node: Extension Sample Ord1134950
+Node: Extension Sample Readdir1135786
+Ref: table-readdir-file-types1136675
+Node: Extension Sample Revout1137742
+Node: Extension Sample Rev2way1138331
+Node: Extension Sample Read write array1139071
+Node: Extension Sample Readfile1141013
+Node: Extension Sample Time1142108
+Node: Extension Sample API Tests1143860
+Node: gawkextlib1144352
+Node: Extension summary1147270
+Node: Extension Exercises1150972
+Node: Language History1152214
+Node: V7/SVR3.11153870
+Node: SVR41156022
+Node: POSIX1157456
+Node: BTL1158837
+Node: POSIX/GNU1159566
+Node: Feature History1165344
+Node: Common Extensions1181663
+Node: Ranges and Locales1182946
+Ref: Ranges and Locales-Footnote-11187562
+Ref: Ranges and Locales-Footnote-21187589
+Ref: Ranges and Locales-Footnote-31187824
+Node: Contributors1188047
+Node: History summary1194044
+Node: Installation1195424
+Node: Gawk Distribution1196368
+Node: Getting1196852
+Node: Extracting1197815
+Node: Distribution contents1199453
+Node: Unix Installation1205933
+Node: Quick Installation1206615
+Node: Shell Startup Files1209029
+Node: Additional Configuration Options1210118
+Node: Configuration Philosophy1212433
+Node: Non-Unix Installation1214802
+Node: PC Installation1215262
+Node: PC Binary Installation1216100
+Node: PC Compiling1216535
+Node: PC Using1217652
+Node: Cygwin1221205
+Node: MSYS1222429
+Node: VMS Installation1223031
+Node: VMS Compilation1223822
+Ref: VMS Compilation-Footnote-11225051
+Node: VMS Dynamic Extensions1225109
+Node: VMS Installation Details1226794
+Node: VMS Running1229047
+Node: VMS GNV1233326
+Node: VMS Old Gawk1234061
+Node: Bugs1234532
+Node: Bug address1235195
+Node: Usenet1238177
+Node: Maintainers1239181
+Node: Other Versions1240366
+Node: Installation summary1247454
+Node: Notes1248663
+Node: Compatibility Mode1249457
+Node: Additions1250239
+Node: Accessing The Source1251164
+Node: Adding Code1252601
+Node: New Ports1258820
+Node: Derived Files1263195
+Ref: Derived Files-Footnote-11268855
+Ref: Derived Files-Footnote-21268890
+Ref: Derived Files-Footnote-31269488
+Node: Future Extensions1269602
+Node: Implementation Limitations1270260
+Node: Extension Design1271470
+Node: Old Extension Problems1272614
+Ref: Old Extension Problems-Footnote-11274132
+Node: Extension New Mechanism Goals1274189
+Ref: Extension New Mechanism Goals-Footnote-11277553
+Node: Extension Other Design Decisions1277742
+Node: Extension Future Growth1279855
+Node: Notes summary1280461
+Node: Basic Concepts1281619
+Node: Basic High Level1282300
+Ref: figure-general-flow1282582
+Ref: figure-process-flow1283267
+Ref: Basic High Level-Footnote-11286568
+Node: Basic Data Typing1286753
+Node: Glossary1290081
+Node: Copying1321966
+Node: GNU Free Documentation License1359509
+Node: Index1384629
 End Tag Table
diff --git a/doc/gawk.texi b/doc/gawk.texi
index e844afc..d211a91 100644
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -59,7 +59,7 @@
 @c applies to and all the info about who's publishing this edition
 @c These apply across the board.
-@set UPDATE-MONTH March, 2020
+@set UPDATE-MONTH June, 2020
 @set VERSION 5.1
@@ -18423,10 +18423,10 @@ a[3] = "middle"
 @end example
 @quotation NOTE
-Due to implementation limitations, you may not use either @code{SYMTAB}
-or @code{FUNCTAB} as arguments to these functions, even if providing a
-second array to use for the actual sorting.  Attempting to do so produces
-a fatal error.  This restriction may be lifted in the future.
+You may not use either @code{SYMTAB} or @code{FUNCTAB} as the second
+argument to these functions.  Attempting to do so produces a fatal error.
+You may use them as the first argument, but only if providing a second
+array to use for the actual sorting.
 @end quotation
 @item @code{gensub(@var{regexp}, @var{replacement}, @var{how}} [@code{, 
@var{target}}]@code{) #}
diff --git a/doc/ b/doc/
index 2916de7..4a169b4 100644
--- a/doc/
+++ b/doc/
@@ -54,7 +54,7 @@
 @c applies to and all the info about who's publishing this edition
 @c These apply across the board.
-@set UPDATE-MONTH March, 2020
+@set UPDATE-MONTH June, 2020
 @set VERSION 5.1
@@ -17692,10 +17692,10 @@ a[3] = "middle"
 @end example
 @quotation NOTE
-Due to implementation limitations, you may not use either @code{SYMTAB}
-or @code{FUNCTAB} as arguments to these functions, even if providing a
-second array to use for the actual sorting.  Attempting to do so produces
-a fatal error.  This restriction may be lifted in the future.
+You may not use either @code{SYMTAB} or @code{FUNCTAB} as the second
+argument to these functions.  Attempting to do so produces a fatal error.
+You may use them as the first argument, but only if providing a second
+array to use for the actual sorting.
 @end quotation
 @item @code{gensub(@var{regexp}, @var{replacement}, @var{how}} [@code{, 
@var{target}}]@code{) #}


Summary of changes:
 ChangeLog       |   7 +
 TODO            |  12 +-
 array.c         |  24 +-
 doc/ChangeLog   |   5 +
 doc/   | 706 ++++++++++++++++++++++++++++----------------------------
 doc/gawk.texi   |  10 +-
 doc/ |  10 +-
 7 files changed, 399 insertions(+), 375 deletions(-)


reply via email to

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