gawk-diffs
[Top][All Lists]
Advanced

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

[SCM] gawk branch, gawk-5.3-stable, updated. gawk-4.1.0-5545-gf4a85163


From: Arnold Robbins
Subject: [SCM] gawk branch, gawk-5.3-stable, updated. gawk-4.1.0-5545-gf4a85163
Date: Thu, 10 Oct 2024 11:30:54 -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.3-stable has been updated
       via  f4a85163624711ba95bd6995042fd53327548276 (commit)
       via  02de169a9c2c85af1b7fb8ddcf9f1026356567c3 (commit)
       via  d3ca1afc64c82d340ba203cbabba68397dbb5afe (commit)
       via  ea471067dfa8536dd413eda63e74597dc4ad5348 (commit)
      from  da2e2e6f70cadab9a84c673fa45fdfe06150d9ce (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=f4a85163624711ba95bd6995042fd53327548276

commit f4a85163624711ba95bd6995042fd53327548276
Author: Arnold D. Robbins <arnold@skeeve.com>
Date:   Thu Oct 10 18:29:46 2024 +0300

    Update test files.

diff --git a/test/ChangeLog b/test/ChangeLog
index d93dab2f..6f992433 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -1,3 +1,11 @@
+2024-10-10         Arnold D. Robbins     <arnold@skeeve.com>
+
+       * lintplus2.ok, mpfrmemok1.ok, nsprof1.ok, nsprof2.ok, nsprof3.ok,
+       profile0.ok, profile2.ok, profile3.ok, profile4.ok, profile5.ok,
+       profile6.ok, profile7.ok, profile8.ok, profile9.ok, profile11.ok,
+       profile13.ok, profile14.ok, profile15.ok, profile16.ok,
+       profile17.ok: Updated after code change.
+
 2024-09-19         Arnold D. Robbins     <arnold@skeeve.com>
 
        * Makefile.am (EXTRADIST): New test, delmessy.
diff --git a/test/lintplus2.ok b/test/lintplus2.ok
index 470ab5cd..99435bc9 100644
--- a/test/lintplus2.ok
+++ b/test/lintplus2.ok
@@ -1,4 +1,3 @@
 BEGIN {
        1 > 2 ? 1 + 1 : 2
 }
-
diff --git a/test/mpfrmemok1.ok b/test/mpfrmemok1.ok
index 6bbd0309..cbc1a2ec 100644
--- a/test/mpfrmemok1.ok
+++ b/test/mpfrmemok1.ok
@@ -4,4 +4,3 @@
        BEGIN {
      1         v = 0x0100000000000000000000000000000000
        }
-
diff --git a/test/nsprof1.ok b/test/nsprof1.ok
index cbd82cc5..b08c4e0f 100644
--- a/test/nsprof1.ok
+++ b/test/nsprof1.ok
@@ -1,4 +1,3 @@
-
 @namespace "foo"
 
 BEGIN {
@@ -11,10 +10,8 @@ BEGIN {
        print "bar"
 }
 
-
 @namespace "stuff"
 
-
 function stuff()
 {
        print "stuff"
diff --git a/test/nsprof2.ok b/test/nsprof2.ok
index 1fa220d7..eda4aad6 100644
--- a/test/nsprof2.ok
+++ b/test/nsprof2.ok
@@ -8,10 +8,8 @@
 
 @namespace "foo"       # this is foo
 
-
 @namespace "bar"       # this is bar
 
-
 @namespace "passwd"    # move to passwd namespace
 
 BEGIN {
@@ -19,7 +17,6 @@ BEGIN {
        Awklib = "/usr/local/libexec/awk/"
 }
 
-
 function awk::endpwent()
 {
        Count = 0
diff --git a/test/nsprof3.ok b/test/nsprof3.ok
index b63f1b48..0b7b366f 100644
--- a/test/nsprof3.ok
+++ b/test/nsprof3.ok
@@ -11,7 +11,6 @@ function b()
 
 @namespace "bar"
 
-
 function a()
 {
        awk::a()
@@ -24,7 +23,6 @@ function b()
 
 @namespace "foo"
 
-
 function a()
 {
        awk::a()
diff --git a/test/profile0.ok b/test/profile0.ok
index 42c464ba..7f0084ab 100644
--- a/test/profile0.ok
+++ b/test/profile0.ok
@@ -3,4 +3,3 @@
      2  NR == 1 { # 1
      1         print
        }
-
diff --git a/test/profile11.ok b/test/profile11.ok
index be6ed526..fae27c6e 100644
--- a/test/profile11.ok
+++ b/test/profile11.ok
@@ -1,6 +1,7 @@
 @load "filefuncs"      # get file functions
 
 # comments/for.awk
+
 BEGIN {
        for (i = 1; i <= 10; i++) {
                print i
@@ -29,6 +30,7 @@ BEGIN {
 }
 
 # comments/for0.awk
+
 BEGIN {
        for (iggy in foo) {
                # comment 5
@@ -38,6 +40,7 @@ BEGIN {
 }
 
 # comments/for1.awk
+
 BEGIN {
        for (iggy in foo) {
                # comment 1
@@ -59,6 +62,7 @@ BEGIN {
 }
 
 # comments/for2.awk
+
 BEGIN {
        for (;;) {
                print i
@@ -87,6 +91,7 @@ BEGIN {
 }
 
 # comments/for_del.awk
+
 BEGIN {
        for (iggy in foo) {
                delete foo[iggy]
@@ -94,6 +99,7 @@ BEGIN {
 }
 
 # comments/do.awk
+
 BEGIN {
        do {    # DO comment
                # LBRACE comment
@@ -104,6 +110,7 @@ BEGIN {
 }
 
 # comments/do2.awk
+
 BEGIN {
        do {    # DO comment
                # LBRACE comment
@@ -113,6 +120,7 @@ BEGIN {
 }
 
 # comments2/do.awk
+
 BEGIN {
        do {    # do comment
                # lbrace comment
@@ -124,6 +132,7 @@ BEGIN {
 }
 
 # comments2/if.awk
+
 BEGIN {
        if (a) {
                # IF comment
@@ -139,6 +148,7 @@ BEGIN {
 }
 
 # comments/if0.awk
+
 BEGIN {
        if (a) {
                # nothing
@@ -148,6 +158,7 @@ BEGIN {
 }
 
 # comments/switch.awk
+
 BEGIN {
        a = 5
        switch (a) {    # switch EOL comment
@@ -169,6 +180,7 @@ BEGIN {
 }
 
 # comments2/switch.awk
+
 BEGIN {
        a = 5
        switch (a) {    # switch EOL comment
@@ -187,6 +199,7 @@ BEGIN {
 }
 
 # comments2/switch0.awk
+
 BEGIN {
        a = 5
        switch (a) {
@@ -200,6 +213,7 @@ BEGIN {
 }
 
 # comments2/switch1.awk
+
 BEGIN {
        a = 5
        switch (a) {
@@ -214,6 +228,7 @@ BEGIN {
 }
 
 # comments2/while.awk
+
 BEGIN {
        while (1) {
                # while comment
@@ -224,6 +239,7 @@ BEGIN {
 }
 
 # comments2/while2.awk
+
 BEGIN {
        while (1) {
                # while comment
@@ -239,6 +255,7 @@ BEGIN {
 }
 
 # comments/load.awk
+
 BEGIN {
        stat("/etc/passwd", data)
        for (i in data) {
@@ -247,6 +264,7 @@ BEGIN {
 }
 
 # comments/andor.awk
+
 BEGIN {
        if (a && # and comment
                 b || # or comment
@@ -256,6 +274,7 @@ BEGIN {
 }
 
 # comments/qmcol-qm.awk
+
 BEGIN {
        a = 1 ? # qm comment
                   2 : 3
@@ -263,6 +282,7 @@ BEGIN {
 }
 
 # comments/qmcol-colon.awk
+
 BEGIN {
        a = 1 ? 2 : # colon comment
                   3
@@ -270,6 +290,7 @@ BEGIN {
 }
 
 # comments/qmcolboth.awk
+
 BEGIN {
        a = 1 ? # qm comment
                   2 : # colon comment
@@ -278,6 +299,7 @@ BEGIN {
 }
 
 # test beginning of line block comments (com2.awk)
+
 BEGIN {
        print "hi"      # comment 1
        # comment 2
@@ -289,8 +311,10 @@ BEGIN {
        }
 }
 
+
 # comments/exp.awk
 # range comment
+
 # range comment 2
 
 # range comment b
@@ -307,6 +331,7 @@ function bar(p1, p2)
        print "foo"
 }
 
+
 # rbrace eol bar
 
 # rbrace block bar
@@ -321,6 +346,7 @@ function baz(p1, p2)
        print "foo"
 }
 
+
 # rbrace EOL comment funnyhaha
 
 # rbrace block comment funnyhaha
@@ -334,6 +360,7 @@ function callme(a, b, c)
                c
 }
 
+
 # rbrace eol baz
 
 # rbrace block baz
@@ -349,6 +376,7 @@ function funny(param1, param2, param3, param4)
        print "funny"
 }
 
+
 # rbrace EOL comment funny
 
 # rbrace block comment funny
diff --git a/test/profile13.ok b/test/profile13.ok
index 258238a9..910b9c85 100644
--- a/test/profile13.ok
+++ b/test/profile13.ok
@@ -2,4 +2,3 @@ BEGIN {
        printf("hello\n") > "/dev/stderr"
        printf("hello\n") > "/dev/stderr"
 }
-
diff --git a/test/profile14.ok b/test/profile14.ok
index fb145616..f34551f4 100644
--- a/test/profile14.ok
+++ b/test/profile14.ok
@@ -1,4 +1,5 @@
 #: 200810_ Prettyprint weirdness to show Arnold
+
 BEGIN {
        IGNORECASE = 1
        printf ("\n")
@@ -9,13 +10,15 @@ BEGIN {
 
 # --5-5-5-----------
 
+
 #..4.4.4.............
 function overridefunc(note)
 {
        printf "%s:\tHello Lone Star state from @namespace awk\n", note
 }
 
-@namespace "masterlib" # masterlib is library of "default" user-defined 
functions
+@namespace "masterlib" 
+# masterlib is library of "default" user-defined functions
 
 
 # e-o-function tstlib()
diff --git a/test/profile15.ok b/test/profile15.ok
index c6eea608..fc527f14 100644
--- a/test/profile15.ok
+++ b/test/profile15.ok
@@ -12,7 +12,6 @@ function zzzz()
 
 @namespace "bbb"
 
-
 function zzz()
 {
        return "bbb::zzz"
@@ -20,7 +19,6 @@ function zzz()
 
 @namespace "nnn"
 
-
 function abc()
 {
        return "nnn::abc"
diff --git a/test/profile16.ok b/test/profile16.ok
index b954b1c5..e0c9c42b 100644
--- a/test/profile16.ok
+++ b/test/profile16.ok
@@ -3,10 +3,8 @@ BEGIN {
        foofoo::xxx()
 }
 
-
 @namespace "foo"
 
-
 function foo_bar()
 {
        print "foo::foo_bar"
diff --git a/test/profile17.ok b/test/profile17.ok
index 5340b251..799791ed 100644
--- a/test/profile17.ok
+++ b/test/profile17.ok
@@ -16,4 +16,3 @@ BEGIN {
                break
        }
 }
-
diff --git a/test/profile2.ok b/test/profile2.ok
index 3369a114..bcd0a63e 100644
--- a/test/profile2.ok
+++ b/test/profile2.ok
@@ -72,7 +72,6 @@
      1         close(sortcmd)
        }
 
-
        # Functions, listed alphabetically
 
      1  function asplit(str, arr, fs, n)
diff --git a/test/profile3.ok b/test/profile3.ok
index bbf06541..ac9477c6 100644
--- a/test/profile3.ok
+++ b/test/profile3.ok
@@ -5,7 +5,6 @@
      1         print @the_func("Hello")
        }
 
-
        # Functions, listed alphabetically
 
      1  function p(str)
diff --git a/test/profile4.ok b/test/profile4.ok
index 06b31bc1..11a3dbd4 100644
--- a/test/profile4.ok
+++ b/test/profile4.ok
@@ -6,4 +6,3 @@ BEGIN {
        a = ((c = tolower("FOO")) in JUNK)
        x = (y == 0 && z == 2 && q == 45)
 }
-
diff --git a/test/profile5.ok b/test/profile5.ok
index a6aeb46f..d3dbc1c2 100644
--- a/test/profile5.ok
+++ b/test/profile5.ok
@@ -3,6 +3,7 @@ BEGIN {
 }
 
 
#___________________________________________________________________________________
+
 BEGIN {        
############################################################################
        BINMODE = "rw"
        SUBSEP = "\000"
@@ -24,6 +25,7 @@ BEGIN {
 }
 
 
#___________________________________________________________________________________
+
 BEGIN {        
#############################################################################
        _delay_perfmsdelay = 11500
 }
@@ -33,15 +35,17 @@ BEGIN {
 }
 
 
#___________________________________________________________________________________
+
 BEGIN {
 }
-
 ###########################################################################
+
 BEGIN {
        _addlib("_EXTFN")
 }
 
 
#___________________________________________________________________________________
+
 BEGIN {        
#############################################################################
        delete _XCHR
        delete _ASC
@@ -102,6 +106,7 @@ BEGIN {
 }
 
 
#___________________________________________________________________________________
+
 BEGIN {        
#############################################################################
        _SYS_STDCON = "CON"
        _CON_WIDTH = match(_cmd("MODE " _SYS_STDCON " 2>NUL"), /Columns:[ 
\t]*([0-9]+)/, A) ? strtonum(A[1]) : 80
@@ -112,6 +117,7 @@ BEGIN {
 }
 
 
#___________________________________________________________________________________
+
 BEGIN {        
#############################################################################
        if (_SYS_STDOUT == "") {
                _SYS_STDOUT = "/dev/stdout"
@@ -134,6 +140,7 @@ BEGIN {
 }
 
 
#___________________________________________________________________________________
+
 BEGIN {        
#############################################################################
        _tInBy = "\212._tInBy"
        _tgenuid_init()
@@ -166,6 +173,7 @@ BEGIN {
 }
 
 
#___________________________________________________________________________________
+
 BEGIN {        
#############################################################################
        if (_gawk_scriptlevel < 1) {
                _ERRLOG_TF = 1
@@ -183,21 +191,23 @@ BEGIN {
 }
 
 
#___________________________________________________________________________________
+
 BEGIN {
        _shortcut_init()
 }
-
 #########################################################
+
 BEGIN {
        _addlib("_eXTFN")
 }
 
 
#___________________________________________________________________________________
+
 BEGIN {
        _extfn_init()
 }
-
 ############################################################
+
 BEGIN {
        _addlib("_sHARE")
 }
@@ -218,32 +228,38 @@ BEGIN {
 # after removal of array format detection: there is unfinished conflicts: it 
is possible to totally remove array uid-gen initialization
 
 #_____________________________________________________
+
 BEGIN {
        _inituidefault()
 }
 
 #_____________________________________________________
+
 BEGIN {
        _initfilever()
 }
 
 #_____________________________________________________
+
 BEGIN {
        _initshare()
 }
 
 #_________________________________________________________________
+
 BEGIN {
        _inspass(_IMPORT, "_import_data")
 }
 
 #_______________________________________________
+
 BEGIN {
        _TEND[_ARRLEN] = 0
        _TYPEWORD = "_TYPE"
 }
 
 #_______________________________________________
+
 BEGIN {
        _ARRLEN = "\032LEN"
        _ARRPTR = "\032PTR"
@@ -251,6 +267,7 @@ BEGIN {
 }
 
 #_____________________________________________________
+
 BEGIN {
        _getperf_fn = "_nop"
 }
@@ -260,16 +277,19 @@ BEGIN {
 }
 
 #_____________________________________________________
+
 BEGIN {
        _initrdreg()
 }
 
 #_____________________________________________________
+
 BEGIN {
        _initregpath0()
 }
 
 #_____________________________________________________
+
 BEGIN {
        _initsys()
 }
@@ -285,6 +305,7 @@ BEGIN {
 
 #BootDevice               BuildNumber  BuildType            Caption            
                          CodeSet  CountryCode  CreationClassName      
CSCreationClassName   CSDVersion      CSName  CurrentTimeZone  
DataExecutionPrevention_32BitApplications  DataExecutionPrevention_Available  
DataExecutionPrevention_Drivers  DataExecutionPrevention_SupportPolicy  Debug  
Description  Distributed  EncryptionLevel  ForegroundApplicationBoost  
FreePhysicalMemory  FreeSpaceInPagingFiles  FreeVirtualMemory  InstallDate      
          LargeSystemCache  LastBootUpTime             LocalDateTime            
  Locale  Manufacturer           MaxNumberOfProcesses  MaxProcessMemorySize  
MUILanguages  Name                                                              
                    NumberOfLicensedUsers  NumberOfProcesses  NumberOfUsers  
OperatingSystemSKU  Organization  OSArchitecture  OSLanguage  OSProductSuite  
OSType  OtherTypeDescription  PAEEnabled  PlusProductID  PlusVersionNumber  
Primary 
  ProductType  RegisteredUser  SerialNumber             ServicePackMajorVersion 
 ServicePackMinorVersion  SizeStoredInPagingFiles  Status  SuiteMask  
SystemDevice             SystemDirectory      SystemDrive  TotalSwapSpaceSize  
TotalVirtualMemorySize  TotalVisibleMemorySize  Version   WindowsDirectory
 #\Device\HarddiskVolume1  7601         Multiprocessor Free  Microsoft Windows 
Server 2008 R2 Enterprise  1252     1            Win32_OperatingSystem  
Win32_ComputerSystem  Service Pack 1  CPU     180              TRUE             
                          TRUE                               TRUE               
              3                                      FALSE               FALSE  
      256              0                           6925316             33518716 
               41134632           20110502192745.000000+180                    
20130426120425.497469+180  20130510134606.932000+180  0409    Microsoft 
Corporation  -1                    8589934464            {"en-US"}     
Microsoft Windows Server 2008 R2 Enterprise 
|C:\Windows|\Device\Harddisk0\Partition2  0                      116            
    2              10                                64-bit          1033       
 274             18                                                             
             TRUE    
  3            Windows User    55041-507-2389175-84833  1                       
 0                        33554432                 OK      274        
\Device\HarddiskVolume2  C:\Windows\system32  C:                               
50311020                16758448                6.1.7601  C:\Windows
+
 BEGIN {        
############################################################################
        a = ENVIRON["EGAWK_CMDLINE"]
        gsub(/^[ \t]*/, "", a)
@@ -305,12 +326,14 @@ BEGIN {   
########################################################################
 }
 
 #_____________________________________________________________________________
+
 END {  ########################################################################
        _EXIT()
 }
 
 #_______________________________________________________________________
 ########################################################################
+
 END {  
###############################################################################
        if (_gawk_scriptlevel < 1) {
                close(_errlog_file)
@@ -332,6 +355,7 @@ END {       
##########################################################################
 #_____________________________________________________________________________
 # _rQBRO(ptr)                          - Returns brothers total quantity.      
                [TESTED]
 #                                              If !ptr then returns "".
+
 END {  
###############################################################################
        if (_gawk_scriptlevel < 1) {
                if (! _fileio_notdeltmpflag) {
@@ -632,6 +656,7 @@ END {       
##########################################################################
 #      var     _gawk_scriptlevel
 
#___________________________________________________________________________________
 
####################################################################################
+
 END {  
###############################################################################
        if (_constatstrln > 0) {
                _constat()
@@ -653,6 +678,7 @@ END {       
##########################################################################
 # try different key combinations
 # add lib-specified to all libs
 
+
 #_______________________________________________________________________
 function W(p, p0, p1)
 {
@@ -923,6 +949,7 @@ function _FILEIO(c, t, P, A)
        }
 }
 
+
 ############################################################
 
 #_____________________________________________________________________________
@@ -961,6 +988,7 @@ function _INIT(f)
 {
 }
 
+
 
#___________________________________________________________________________________
 function _INITBASE()
 {
@@ -992,6 +1020,7 @@ function _INSTRUC(c, t, P)
        }
 }
 
+
 
#___________________________________________________________________________________
 
 
@@ -1033,6 +1062,7 @@ function _SHORTCUT(c, t, P)
        }
 }
 
+
 
#______________________________________________________________________________________________
 function _START(t, i, A)
 {
@@ -1166,6 +1196,7 @@ function _SYSIO(c, t, P)
        }
 }
 
+
 #_______________________________________________________________________
 ########################################################################
 function _W(p, A, v)
@@ -1186,6 +1217,7 @@ function _W(p, A, v)
        return v
 }
 
+
 #_______________________________________________________________________
 function _Zexparr(S, s, t, i)
 {
@@ -1205,6 +1237,7 @@ function _Zexparr(S, s, t, i)
        return t
 }
 
+
 #_________________________________________________________________
 function _Zexparr_i0(S, t, i)
 {
@@ -1214,6 +1247,7 @@ function _Zexparr_i0(S, t, i)
        return t
 }
 
+
 #_________________________________________________________________
 function _Zexparr_i1(t)
 {
@@ -1223,6 +1257,7 @@ function _Zexparr_i1(t)
        return t
 }
 
+
 #_________________________________________________________________
 function _Zexparr_i2(t)
 {
@@ -1230,6 +1265,7 @@ function _Zexparr_i2(t)
        return t
 }
 
+
 #_________________________________________________________________
 function _Zexparr_i3(t)
 {
@@ -1238,6 +1274,7 @@ function _Zexparr_i3(t)
        return t
 }
 
+
 #_______________________________________________________________________
 function _Zimparr(D, t, A, B)
 {
@@ -1251,12 +1288,14 @@ function _Zimparr(D, t, A, B)
        }
 }
 
+
 #_________________________________________________________________
 function _Zimparr_i0(A, B, i)
 {
        return (i in A ? (A[i] B[i] _Zimparr_i0(A, B, i + 1)) : "")
 }
 
+
 #_________________________________________________________________
 function _Zimparr_i1(D, A, B, i, t, a, n)
 {
@@ -1281,6 +1320,7 @@ function _Zimparr_i1(D, A, B, i, t, a, n)
        }
 }
 
+
 #_________________________________________________________________
 function _Zimparr_i2(t)
 {
@@ -1289,6 +1329,7 @@ function _Zimparr_i2(t)
        return t
 }
 
+
 #_____________________________________________________________________________
 function _Zimport(t, p, A, c, i, n, B)
 {
@@ -1362,6 +1403,7 @@ function _accmpu(A, a, n)
        }
 }
 
+
 #_______________________________________________________________________
 function _add(S, sf, D, df)
 {
@@ -1386,6 +1428,7 @@ function _add(S, sf, D, df)
        }
 }
 
+
 #_________________________________________________________________
 function _addarr(D, S)
 {
@@ -1395,6 +1438,7 @@ function _addarr(D, S)
        }
 }
 
+
 #_____________________________________________________
 function _addarr_i0(D, S, i)
 {
@@ -1411,6 +1455,7 @@ function _addarr_i0(D, S, i)
        }
 }
 
+
 #_______________________________________________________________________
 function _addarrmask(D, S, M)
 {
@@ -1440,6 +1485,7 @@ function _addarrmask(D, S, M)
        }
 }
 
+
 
#___________________________________________________________________________________
 
####################################################################################
 
@@ -1451,6 +1497,7 @@ function _addf(A, f)
        A["B"][""] = A["F"][A["B"][f] = A["B"][""]] = f
 }
 
+
 #___________________________________________________________
 function _addfile(f, d, a, b)
 {
@@ -1477,6 +1524,7 @@ function _addfile(f, d, a, b)
        return d
 }
 
+
 #_____________________________________________________________________________
 function _addlib(f)
 {
@@ -1484,6 +1532,7 @@ function _addlib(f)
        _addf(_LIBAPI, f)
 }
 
+
 
#___________________________________________________________________________________
 
####################################################################################
 
@@ -1495,6 +1544,7 @@ function _addlist(A, v)
        A[++A[0]] = v
 }
 
+
 ############################################
 
 #_______________________________________________________________________
@@ -1506,6 +1556,7 @@ function _bearray(A)
        }
 }
 
+
 #_________________________________________________________________
 function _bframe(A, t, p)
 {
@@ -1513,12 +1564,14 @@ function _bframe(A, t, p)
        return _bframe_i0(A, t, p, A[""])
 }
 
+
 #___________________________________________________________
 function _bframe_i0(A, t, p, f)
 {
        return (f ? (_bframe_i0(A, t, p, A[f]) (@f(t, p))) : "")
 }
 
+
 # add to _dumparr: checking that if element is undefined
 
 
@@ -1564,6 +1617,7 @@ function _cfguid(p, optr, pfx, sfx, hstrcnt, lstrchr)
        return p
 }
 
+
 #_____________________________________________________
 function _cfguidchr(p, h, l, H, L)
 {
@@ -1583,6 +1637,7 @@ function _cfguidchr(p, h, l, H, L)
        return _cfguidl(p, L, L)
 }
 
+
 #_______________________________________________
 function _cfguidh(p, H, L, hi, h, li)
 {
@@ -1615,6 +1670,7 @@ function _check(p)
        _reg_check(p)
 }
 
+
 #_______________________________________________________________________
 function _chrline(t, ts, w, s)
 {
@@ -1622,6 +1678,7 @@ function _chrline(t, ts, w, s)
        return (t = " " _tabtospc(t, ts) (t ? t ~ /[ \t]$/ ? "" : " " : "")) 
_getchrln(s ? s : "_", (w ? w : _CON_WIDTH - 1) - length(t)) _CHR["EOL"]
 }
 
+
 #_____________________________________________________________________________
 function _cmd(c, i, A)
 {
@@ -1640,6 +1697,7 @@ function _cmd(c, i, A)
        return RT
 }
 
+
 #_______________________________________________________________________
 function _cmparr(A0, A1, R, a, i)
 {
@@ -1664,6 +1722,7 @@ function _cmparr(A0, A1, R, a, i)
        return a
 }
 
+
 #_____________________________________________________________________________
 function _con(t, ts, a, b, c, d, i, r, A, B)
 {
@@ -1706,6 +1765,7 @@ function _con(t, ts, a, b, c, d, i, r, A, B)
        RLENGTH = d
 }
 
+
 #_______________________________________________________________________
 function _conin(t, a, b)
 {
@@ -1728,6 +1788,7 @@ function _conin(t, a, b)
        return t
 }
 
+
 #_______________________________________________________________________
 function _conl(t, ts)
 {
@@ -1735,6 +1796,7 @@ function _conl(t, ts)
        return _con(t (t ~ /\x0A$/ ? "" : _CHR["EOL"]), ts)
 }
 
+
 #_______________________________________________________________________
 function _conline(t, ts)
 {
@@ -1742,6 +1804,7 @@ function _conline(t, ts)
        return _con(_chrline(t, ts))
 }
 
+
 
#___________________________________________________________________________________
 
####################################################################################
 function _conlq(t, ts)
@@ -1749,6 +1812,7 @@ function _conlq(t, ts)
        return _conl("`" t "'", ts)
 }
 
+
 #_______________________________________________________________________
 function _constat(t, ts, ln, a)
 {
@@ -1768,6 +1832,7 @@ function _constat(t, ts, ln, a)
        return _constatstr
 }
 
+
 #_________________________________________________________________
 function _constatgtstr(t, ln, a, b)
 {
@@ -1786,6 +1851,7 @@ function _constatgtstr(t, ln, a, b)
        return (substr(t, 1, b = int((ln - 3) / 2)) "..." substr(t, a - ln + b 
+ 4))
 }
 
+
 #_______________________________________________________________________
 function _constatpop()
 {
@@ -1796,6 +1862,7 @@ function _constatpop()
        return _constat("")
 }
 
+
 #_______________________________________________________________________
 function _constatpush(t, ts)
 {
@@ -1807,12 +1874,14 @@ function _constatpush(t, ts)
        return _constatstr
 }
 
+
 
#___________________________________________________________________________________
 function _creport(p, t, f, z)
 {
        _[p]["REPORT"] = _[p]["REPORT"] _ln(t (f == "" ? "" : ": " f))
 }
 
+
 
#_________________________________________________________________________________________
 function _defdir(pp, n, f, v, p)
 {
@@ -1822,6 +1891,7 @@ function _defdir(pp, n, f, v, p)
        return p
 }
 
+
 
#_________________________________________________________________________________________
 function _defdll(pp, n, rn, p)
 {
@@ -1832,6 +1902,7 @@ function _defdll(pp, n, rn, p)
        return p
 }
 
+
 #___________________________________________________________
 function _defescarr(D, r, S, i, c, t)
 {
@@ -1859,6 +1930,7 @@ function _defescarr(D, r, S, i, c, t)
        return t
 }
 
+
 
#_________________________________________________________________________________________
 function _defile(pp, n, f, v, p)
 {
@@ -1871,6 +1943,7 @@ function _defile(pp, n, f, v, p)
        return p
 }
 
+
 #_______________________________________________________________________
 function _defn(f, c, v)
 {
@@ -1878,6 +1951,7 @@ function _defn(f, c, v)
        FUNCTAB[c f] = v
 }
 
+
 
#_________________________________________________________________________________________
 function _defreg(pp, n, f, v, p)
 {
@@ -1889,6 +1963,7 @@ function _defreg(pp, n, f, v, p)
        }
 }
 
+
 
#_______________________________________________________________________________________________
 function _defsolution(pp, n, rn, p)
 {
@@ -1899,6 +1974,7 @@ function _defsolution(pp, n, rn, p)
        return p
 }
 
+
 
#_________________________________________________________________________________________
 function _defsrv(pp, n, f, v, p)
 {
@@ -1908,6 +1984,7 @@ function _defsrv(pp, n, f, v, p)
        return p
 }
 
+
 #_______________________________________________________________________
 function _del(f, c, a, A)
 {
@@ -1937,6 +2014,7 @@ function _del(f, c, a, A)
        return a
 }
 
+
 #_______________________________________________________________________
 function _delay(t, a)
 {
@@ -1946,6 +2024,7 @@ function _delay(t, a)
        }
 }
 
+
 #_________________________________________________________________
 function _delayms(a)
 {
@@ -1954,6 +2033,7 @@ function _delayms(a)
        }
 }
 
+
 #_______________________________________________________________________
 function _deletepfx(A, f, B, le, i)
 {
@@ -1967,6 +2047,7 @@ function _deletepfx(A, f, B, le, i)
        }
 }
 
+
 #_________________________________________________________________
 function _delf(A, f)
 {
@@ -1976,6 +2057,7 @@ function _delf(A, f)
        delete A["B"][f]
 }
 
+
 #_______________________________________________________________________
 function _deluid(p)
 {
@@ -1990,6 +2072,7 @@ function _deluid(p)
        return _deluida0
 }
 
+
 #_______________________________________________________________________
 function _dir(A, rd, i, r, f, ds, pf, B, C)
 {
@@ -2020,6 +2103,7 @@ function _dir(A, rd, i, r, f, ds, pf, B, C)
        return r
 }
 
+
 #_________________________________________________________________
 function _dirtree(A, f, B)
 {
@@ -2032,6 +2116,7 @@ function _dirtree(A, f, B)
        return f
 }
 
+
 #___________________________________________________________
 function _dirtree_i0(B, i, c, A, f, lf, a, C)
 {
@@ -2053,6 +2138,7 @@ function _dirtree_i0(B, i, c, A, f, lf, a, C)
        return i
 }
 
+
 #_______________________________________________________________________
 function _dll_check(pp)
 {
@@ -2071,6 +2157,7 @@ function _dll_check(pp)
        }
 }
 
+
 #_______________________________________________
 function _dll_check_i0(p, R, pp, p2, i, i2, r, f, v, rs, d, tv, tf)
 {
@@ -2127,6 +2214,7 @@ function _dll_check_i0(p, R, pp, p2, i, i2, r, f, v, rs, 
d, tv, tf)
        }
 }
 
+
 #_______________________________________________
 function _dll_check_i1(p, pp, p1, p2, p3, i)
 {
@@ -2139,6 +2227,7 @@ function _dll_check_i1(p, pp, p1, p2, p3, i)
        }
 }
 
+
 
#___________________________________________________________________________________
 function _dllerr(p, t, f)
 {
@@ -2179,6 +2268,7 @@ function _drawuid(p, cn, ch, o)
        }
 }
 
+
 #_______________________________________________________________________
 function _dumparr(A, t, lv, a)
 {
@@ -2194,6 +2284,7 @@ function _dumparr(A, t, lv, a)
        }
 }
 
+
 #___________________________________________________________
 function _dumparr_i1(A, lv, ls, ln, t, t2, i, a, f)
 {
@@ -2237,6 +2328,7 @@ function _dumparr_i1(A, lv, ls, ln, t, t2, i, a, f)
        }
 }
 
+
 
#___________________________________________________________________________________
 
####################################################################################
 
@@ -2255,6 +2347,7 @@ function _dumpobj(p, f, t, s)
        return s
 }
 
+
 #___________________________________________________________
 function _dumpobj_i0(p, f, t)
 {
@@ -2267,18 +2360,21 @@ function _dumpobj_i0(p, f, t)
        return (_dumpobj_i1(p, t " ") _dumpobj_i2(p, _getchrln(" ", length(t))))
 }
 
+
 #___________________________________________________________
 function _dumpobj_i1(p, t)
 {
        return _ln(t substr(((p in _tPREV) ? "\253" _tPREV[p] : "") "       ", 
1, 7) " " substr(((p in _tPARENT) ? "\210" _tPARENT[p] : "") "       ", 1, 7) " 
" substr(((p in _tFCHLD) ? _tFCHLD[p] : "") "\205" ((p in _tQCHLD) ? " (" 
_tQCHLD[p] ") " : "\205") "\205" ((p in _tLCHLD) ? _tLCHLD[p] : "") "           
           ", 1, 22) substr(((p in _tNEXT) ? "\273" _tNEXT[p] : "") "        ", 
1, 8))
 }
 
+
 #___________________________________________________________
 function _dumpobj_i2(p, t)
 {
        return (_dumpobj_i3(_[p], t " ") _dumpobj_i3(_ptr[p], _getchrln(" ", 
length(t)) "`", "`"))
 }
 
+
 #___________________________________________________________
 function _dumpobj_i3(A, t, p, e, s, i, t2)
 {
@@ -2303,6 +2399,7 @@ function _dumpobj_i3(A, t, p, e, s, i, t2)
        return _ln(t "=" _dumpobj_i4(p A) "'")
 }
 
+
 #___________________________________________________________
 function _dumpobj_i4(t)
 {
@@ -2312,6 +2409,7 @@ function _dumpobj_i4(t)
        return t
 }
 
+
 #_________________________________________________________________
 function _dumpobj_nc(p, f, t)
 {
@@ -2319,6 +2417,7 @@ function _dumpobj_nc(p, f, t)
        return _dumpobj_i0(p, f, t "." p "{ ")
 }
 
+
 #_________________________________________________________________
 function _dumpobjm(p, f, t, s, t2)
 {
@@ -2331,6 +2430,7 @@ function _dumpobjm(p, f, t, s, t2)
        return s
 }
 
+
 #_________________________________________________________________
 function _dumpobjm_nc(p, f, t, s, t2)
 {
@@ -2366,6 +2466,7 @@ function _dumpuidgen(p, pd, pc, ps)
        }
 }
 
+
 #_____________________________________________________________________________
 function _dumpval(v, n)
 {
@@ -2397,12 +2498,14 @@ function _eXTFN(c, t, P)
        }
 }
 
+
 #_________________________________________________________________
 function _endpass(t)
 {
        _endpass_v0 = t
 }
 
+
 #_______________________________________________________________________
 function _err(t, a, b)
 {
@@ -2418,6 +2521,7 @@ function _err(t, a, b)
        return t
 }
 
+
 #_________________________________________________________________
 function _errnl(t)
 {
@@ -2425,6 +2529,7 @@ function _errnl(t)
        return _err(t (t ~ /\x0A$/ ? "" : _CHR["EOL"]))
 }
 
+
 #_______________________________________________________________________
 function _error(t, d, A)
 {
@@ -2436,6 +2541,7 @@ function _error(t, d, A)
        }
 }
 
+
 #_______________________________________________________________________
 function _exit(c)
 {
@@ -2443,6 +2549,7 @@ function _exit(c)
        exit c
 }
 
+
 #_____________________________________________________________________________
 function _export_data(t, i, A)
 {
@@ -2452,6 +2559,7 @@ function _export_data(t, i, A)
        _expout("_DATA: " _Zexparr(A) "\n")
 }
 
+
 
#___________________________________________________________________________________
 
####################################################################################
 
@@ -2469,6 +2577,7 @@ function _expout(t, d, a, b)
        ORS = b
 }
 
+
 
#_________________________________________________________________________________________
 
##########################################################################################
 function _extfn_init()
@@ -2503,6 +2612,7 @@ function _faccr_i0(A, t, p, P, f, r)
        return r
 }
 
+
 #_______________________________________________________________________
 function _fatal(t, d, A)
 {
@@ -2537,6 +2647,7 @@ function _ffaccr(A, t, p, P)
        return _faccr_i0(A["F"], t, p, P)
 }
 
+
 ##################
 
 #_______________________________________________________________________
@@ -2546,12 +2657,14 @@ function _fframe(A, t, p)
        return _fframe_i0(A, t, p, A[""])
 }
 
+
 #___________________________________________________________
 function _fframe_i0(A, t, p, f)
 {
        return (f ? ((@f(t, p)) _fframe_i0(A, t, p, A[f])) : "")
 }
 
+
 #_________________________________________________________________
 function _file(f)
 {
@@ -2562,6 +2675,7 @@ function _file(f)
        return (f in _FILEXT ? _FILEXT[f] : "")
 }
 
+
 #_______________________________________________________________________
 function _file_check(p)
 {
@@ -2570,6 +2684,7 @@ function _file_check(p)
        }
 }
 
+
 #_______________________________________________
 function _file_check_i0(p, pp, p1, p2, f, v)
 {
@@ -2599,6 +2714,7 @@ function _file_check_i0(p, pp, p1, p2, f, v)
        }
 }
 
+
 #_________________________________________________________________
 function _filed(f, dd, d)
 {
@@ -2624,6 +2740,7 @@ function _filed(f, dd, d)
        return d
 }
 
+
 #_________________________________________________________________
 function _filen(f)
 {
@@ -2634,6 +2751,7 @@ function _filen(f)
        return (f in _FILENAM ? _FILENAM[f] : "")
 }
 
+
 #_________________________________________________________________
 function _filene(f)
 {
@@ -2644,6 +2762,7 @@ function _filene(f)
        return (f in _FILENAM ? _FILENAM[f] : "") (f in _FILEXT ? _FILEXT[f] : 
"")
 }
 
+
 #_________________________________________________________________
 function _filenotexist(f, a)
 {
@@ -2662,6 +2781,7 @@ function _filenotexist(f, a)
        return a
 }
 
+
 #_______________________________________________________________________
 function _filepath(f, dd)
 {
@@ -2672,6 +2792,7 @@ function _filepath(f, dd)
        return (filegetrootdir(f, dd) (f in _FILENAM ? _FILENAM[f] : "") (f in 
_FILEXT ? _FILEXT[f] : ""))
 }
 
+
 #_________________________________________________________________
 function _filer(f, dd)
 {
@@ -2688,6 +2809,7 @@ function _filer(f, dd)
        return (_FILEROOT[dd, f] = fileri(dd))
 }
 
+
 #_________________________________________________________________
 function _filerd(f, dd)
 {
@@ -2698,6 +2820,7 @@ function _filerd(f, dd)
        return filegetrootdir(f, dd)
 }
 
+
 #_________________________________________________________________
 function _filerdn(f, dd)
 {
@@ -2708,6 +2831,7 @@ function _filerdn(f, dd)
        return (f in _FILENAM ? (filegetrootdir(f, dd) _FILENAM[f]) : "")
 }
 
+
 #_________________________________________________________________
 function _filerdne(f, dd)
 {
@@ -2724,6 +2848,7 @@ function _filerdne(f, dd)
        return ""
 }
 
+
 #___________________________________________________________
 function _filerdnehnd(st, c, r, d, n, A)
 {
@@ -2779,6 +2904,7 @@ function _filerdnehnd(st, c, r, d, n, A)
        return ""
 }
 
+
 #_______________________________________________________________________
 function _filexist(f, a)
 {
@@ -2798,6 +2924,7 @@ function _filexist(f, a)
        return _NOP
 }
 
+
 #_______________________________________________________________________
 function _fn(f, p0, p1, p2)
 {
@@ -2807,6 +2934,7 @@ function _fn(f, p0, p1, p2)
        }
 }
 
+
 #_______________________________________________________________________
 function _foreach(A, f, r, p0, p1, p2, i, p)
 {
@@ -2823,6 +2951,7 @@ function _foreach(A, f, r, p0, p1, p2, i, p)
        }
 }
 
+
 #_____________________________________________________
 function _foreach_i0(A, f, D, p0, p1, p2)
 {
@@ -2835,12 +2964,14 @@ function _foreach_i0(A, f, D, p0, p1, p2)
        }
 }
 
+
 #_____________________________________________________
 function _foreach_i1(p, f, D, p0, p1, p2)
 {
        _gen(D, @f(p, p0, p1, p2))
 }
 
+
 #_____________________________________________________________________________
 function _formatrexp(t)
 {
@@ -2852,6 +2983,7 @@ function _formatrexp(t)
        return (_formatstrs0 _FORMATSTRA[t])
 }
 
+
 #___________________________________________________________
 function _formatrexp_init()
 {
@@ -2860,6 +2992,7 @@ function _formatrexp_init()
        _FORMATREXPESC["\t"] = "\\t"
 }
 
+
 #_____________________________________________________________________________
 function _formatstrd(t)
 {
@@ -2871,6 +3004,7 @@ function _formatstrd(t)
        return (_formatstrs0 _FORMATSTRA[t])
 }
 
+
 #___________________________________________________________
 function _formatstrd_init()
 {
@@ -2879,6 +3013,7 @@ function _formatstrd_init()
        _FORMATSTRDESC["\t"] = "\\t"
 }
 
+
 
#__________________________________________________________________________________
 
 
####################################################################################
@@ -2897,6 +3032,7 @@ function _formatstrs(t)
        return (_formatstrs0 _FORMATSTRA[t])
 }
 
+
 #___________________________________________________________
 function _formatstrs_init()
 {
@@ -2918,6 +3054,7 @@ function _fpp(q, D, S)
        return q
 }
 
+
 #_______________________________________________________________________
 ########################################################################
 function _fthru(A, c, p, B)
@@ -2925,6 +3062,7 @@ function _fthru(A, c, p, B)
        return _fthru_i0(A, c, p, B, A[""])
 }
 
+
 #_________________________________________________________________
 function _fthru_i0(A, c, p, B, f)
 {
@@ -2938,6 +3076,7 @@ function _gen(D, t)
        }
 }
 
+
 #_____________________________________________________________________________
 function _gensubfn(t, r, f, p0, A)
 {
@@ -2948,6 +3087,7 @@ function _gensubfn(t, r, f, p0, A)
        return t
 }
 
+
 #_____________________________________________________________________________
 function _get_errout(p)
 {
@@ -2955,12 +3095,14 @@ function _get_errout(p)
        return _tframe("_get_errout_i0", p)
 }
 
+
 #_______________________________________________________________________
 function _get_errout_i0(p, t, n, a)
 {
        return (p in _tLOG ? (_get_errout_i1(p) _get_errout_i3(p)) : "")
 }
 
+
 #_________________________________________________________________
 function _get_errout_i1(p, t, n, a)
 {
@@ -2978,12 +3120,14 @@ function _get_errout_i1(p, t, n, a)
        }
 }
 
+
 #_______________________________________________________________________
 function _get_errout_i2(p)
 {
        return ("FILE" in _tLOG[p] ? (_tLOG[p]["FILE"] ("LINE" in _tLOG[p] ? 
("(" _tLOG[p]["LINE"] ")") : "") ": ") : "")
 }
 
+
 #_______________________________________________________________________
 function _get_errout_i3(p, t, ts, cl, cp, cr, a, b)
 {
@@ -3003,6 +3147,7 @@ function _get_errout_i3(p, t, ts, cl, cp, cr, a, b)
        }
 }
 
+
 #_____________________________________________________________________________
 function _get_logout(p)
 {
@@ -3010,6 +3155,7 @@ function _get_logout(p)
        return _tframe("_get_logout_i0", p)
 }
 
+
 #_______________________________________________________________________
 function _get_logout_i0(p, t, n, a)
 {
@@ -3027,6 +3173,7 @@ function _get_logout_i0(p, t, n, a)
        }
 }
 
+
 #_______________________________________________________________________
 function _getchrln(s, w)
 {
@@ -3053,6 +3200,7 @@ function _getchrln(s, w)
        }
 }
 
+
 #_______________________________________________________________________
 function _getdate()
 {
@@ -3060,6 +3208,7 @@ function _getdate()
        return strftime("%F")
 }
 
+
 #_____________________________________________________________________________
 function _getfilepath(t, f, al, b, A)
 {
@@ -3089,6 +3238,7 @@ function _getfilever(f)
        }
 }
 
+
 #_________________________________________________________________
 function _getime()
 {
@@ -3096,6 +3246,7 @@ function _getime()
        return strftime("%H:%M:%S")
 }
 
+
 #_________________________________________________________________
 function _getmpdir(f, dd)
 {
@@ -3109,6 +3260,7 @@ function _getmpdir(f, dd)
        return f
 }
 
+
 #_________________________________________________________________
 function _getmpfile(f, dd)
 {
@@ -3122,6 +3274,7 @@ function _getmpfile(f, dd)
        return f
 }
 
+
 #_______________________________________________________________________
 function _getperf(o, t, a)
 {
@@ -3134,6 +3287,7 @@ function _getperf(o, t, a)
        return 1
 }
 
+
 #___________________________________________________________
 function _getperf_(o, t, a)
 {
@@ -3147,6 +3301,7 @@ function _getperf_(o, t, a)
        return 1
 }
 
+
 #___________________________________________________________
 function _getperf_noe(o, t, a)
 {
@@ -3157,12 +3312,14 @@ function _getperf_noe(o, t, a)
        return 1
 }
 
+
 #___________________________________________________________
 function _getperf_noenot(o, t, a)
 {
        return 1
 }
 
+
 #___________________________________________________________
 function _getperf_not(o, t, a)
 {
@@ -3171,6 +3328,7 @@ function _getperf_not(o, t, a)
        }
 }
 
+
 
#_________________________________________________________________________________________
 
##########################################################################################
 function _getreg_i1(D, r, R, a, i, il, ir, rc, B)
@@ -3197,6 +3355,7 @@ function _getreg_i1(D, r, R, a, i, il, ir, rc, B)
        }
 }
 
+
 #_________________________________________________________________
 function _getsecond()
 {
@@ -3204,6 +3363,7 @@ function _getsecond()
        return systime()
 }
 
+
 #___________________________________________________________
 function _getsecondsync(a, c, b, c2)
 {
@@ -3215,6 +3375,7 @@ function _getsecondsync(a, c, b, c2)
        return (a + 1)
 }
 
+
 #_______________________________________________________________________
 function _getuid(p)
 {
@@ -3230,6 +3391,7 @@ function _getuid(p)
        return _tptr
 }
 
+
 #_____________________________________________________
 function _getuid_i0(p, UL, UH)
 {
@@ -3248,6 +3410,7 @@ function _handle8494(t)
        return gensub(/(.)/, ".\\1", "G", t)
 }
 
+
 #_____________________________________________________________________________
 function _hexnum(n, l)
 {
@@ -3258,6 +3421,7 @@ function _hexnum(n, l)
        return sprintf("%." (l + 0 < 1 ? 2 : l) "X", n)
 }
 
+
 #_________________________________________________________________
 function _igetperf(t, s, o)
 {
@@ -3289,6 +3453,7 @@ function _import_data(t, p, p2, a)
        return t
 }
 
+
 #_______________________________________________________________________
 function _info(t, d, A)
 {
@@ -3300,6 +3465,7 @@ function _info(t, d, A)
        }
 }
 
+
 # test with the different path types
 #      _conl(_ln("SRC:") _dumparr(S)); _conl();
 function _ini(p, cs, dptr, pfx, sfx, hstr, lstr)
@@ -3345,6 +3511,7 @@ function _initshare()
        _sharextool = "\\\\CPU\\eGAWK\\LIB\\_share\\_share.exe"
 }
 
+
 #_________________________________________
 function _initspecialuid()
 {
@@ -3360,6 +3527,7 @@ function _initsys()
 {
 }
 
+
 #_______________________________________________________________________
 function _inituid(p, cs, dptr, pfx, sfx, hstr, lstr, A)
 {
@@ -3420,6 +3588,7 @@ function _inituidefault(h, l, H, L)
        _initspecialuid()
 }
 
+
 #_______________________________________________________________________
 function _ins(S, sf, D, df)
 {
@@ -3444,6 +3613,7 @@ function _ins(S, sf, D, df)
        }
 }
 
+
 #_________________________________________________________________
 function _insf(A, f)
 {
@@ -3451,6 +3621,7 @@ function _insf(A, f)
        A["F"][""] = A["B"][A["F"][f] = A["F"][""]] = f
 }
 
+
 #_________________________________________________________________
 function _insframe(A, f)
 {
@@ -3459,6 +3630,7 @@ function _insframe(A, f)
        A[""] = f
 }
 
+
 ########################
 
 #_________________________________________________________________
@@ -3468,6 +3640,7 @@ function _inspass(A, f)
        A[""] = f
 }
 
+
 # there is problem with string's format: i can;t easilly merge 2 charsets: 
comma-divided and every-char-divided strings
 
 #_______________________________________________________________________
@@ -3491,6 +3664,7 @@ function _isptr(p)
        return 0
 }
 
+
 #_______________________________________________________________________
 function _istr(p)
 {
@@ -3508,6 +3682,7 @@ function _istr(p)
        return (it = p == "" ? "s" : "S")
 }
 
+
 #_________________________________________________________________
 function _lengthsort(i1, v1, i2, v2)
 {
@@ -3515,42 +3690,49 @@ function _lengthsort(i1, v1, i2, v2)
        return (length(i1) < length(i2) ? -1 : length(i1) > length(i2) ? 1 : i1 
< i2 ? -1 : 1)
 }
 
+
 #_________________________________________________________________
 function _lib_APPLY()
 {
        return _ffaccr(_LIBAPI, "_lib_APPLY")
 }
 
+
 #_________________________________________________________________
 function _lib_BEGIN(A)
 {
        return _ffaccr(_LIBAPI, "_lib_BEGIN", "", A)
 }
 
+
 #_______________________________________________________________________
 function _lib_CMDLN(t)
 {
        return _pass(_LIBAPI["F"], "_lib_CMDLN", t)
 }
 
+
 #_________________________________________________________________
 function _lib_END(A)
 {
        return _ffaccr(_LIBAPI, "_lib_END", "", A)
 }
 
+
 #_________________________________________________________________
 function _lib_HELP()
 {
        return _fbaccr(_LIBAPI, "_lib_HELP")
 }
 
+
 #_________________________________________________________________
 function _lib_NAMEVER()
 {
        return _fbaccr(_LIBAPI, "_lib_NAMEVER")
 }
 
+
 #_____________________________________________________________________________
 function _ln(t)
 {
@@ -3558,6 +3740,7 @@ function _ln(t)
        return (t ~ /\x0A$/ ? t : (t _CHR["EOL"]))
 }
 
+
 #_________________________________________________________________
 function _log(A, p, a, B)
 {
@@ -3579,6 +3762,7 @@ function _log(A, p, a, B)
        }
 }
 
+
 #_________________________________________________________________
 function _lspctab(t, ts, l, l1, l2, A)
 {
@@ -3621,6 +3805,7 @@ function _macsfx94(F, D, C, p1, p2, p3)
        return _mpuretsub(D, _handle8494(_mpuacc))
 }
 
+
 #_______________________________________________________________________
 function _movarr(D, S)
 {
@@ -3648,6 +3833,7 @@ function _mpu(t, F, p1, p2, p3, D, C)
        return t
 }
 
+
 #
 #      /rexpstr/       ->      datastr
 #      (\x00\t\+)*     ->      28 00 09 5B 2B 29
@@ -3705,6 +3891,7 @@ function _mpusub(F, D, C, d, p1, p2, p3, q)
        _conl("mpusub exit: _mpuacc: `" _mpuacc "'")
 }
 
+
 #_______________________________________________________________________
 function _n(F, v, p)
 {
@@ -3731,6 +3918,7 @@ function _n(F, v, p)
        return _nN_i0(_tgenuid(), F, v)
 }
 
+
 #_____________________________________________________
 function _nN_i0(p, F, v)
 {
@@ -3762,6 +3950,7 @@ function _nN_i0(p, F, v)
        return p
 }
 
+
 #_________________________________________________________________
 function _newclrdir(f)
 {
@@ -3775,6 +3964,7 @@ function _newclrdir(f)
        return f
 }
 
+
 #_______________________________________________________________________
 function _newdir(f)
 {
@@ -3789,6 +3979,7 @@ function _newdir(f)
        return f
 }
 
+
 ##############################
 
 #_______________________________________________________________________
@@ -3796,6 +3987,7 @@ function _nop(p0, p1, p2, p3)
 {
 }
 
+
 #_____________________________________________________
 #      _retarr(ARRAY,start,prefixtr,postfixtr)
 #              Return string collected from elements of ARRAY.
@@ -3831,6 +4023,7 @@ function _nretarr(A, i, v, r, q)
        return
 }
 
+
 #___________________________________________________________
 function _nretarrd(A, i, v, r, q)
 {
@@ -3853,6 +4046,7 @@ function _nretarrd(A, i, v, r, q)
        delete A[""]
 }
 
+
 
#___________________________________________________________________________________
 
####################################################################################
 
@@ -3871,6 +4065,7 @@ function _out(t, a, b)
        return t
 }
 
+
 #_________________________________________________________________
 function _outnl(t)
 {
@@ -3926,6 +4121,7 @@ function _p8(s1, s2, s3, s4, s5, s6, s7, s8, p1, p2, p3, 
p4, p5, p6, p7, p8)
        return @_qparamf0(s1, s2, s3, s4, s5, s6, s7, s8, s8, p1, p2, p3, p4, 
p5, p6, p7)
 }
 
+
 #_______________________________________________________________________
 function _pass(A, f, t, p2, i, a)
 {
@@ -3948,6 +4144,7 @@ function _pass(A, f, t, p2, i, a)
        return t
 }
 
+
 # this is somnitelno: that   / / . / / com 56 / / - is the DEV...; what is DEV 
??? this already PROBLEM
 #_____________________________________________________________________________
 function _patharr0(D, q, i, h, A, B)
@@ -3988,6 +4185,7 @@ function _patharr0(D, q, i, h, A, B)
        }
 }
 
+
 #_____________________________________________________
 function _patharr0_i0(t, D, l, r, d, i)
 {
@@ -4008,6 +4206,7 @@ function _patharr0_i0(t, D, l, r, d, i)
        return t
 }
 
+
 #_____________________________________________________
 function _patharr0_i1(D, A, i, q, t, c)
 {
@@ -4090,6 +4289,7 @@ function _pr8(s1, s2, s3, s4, s5, s6, s7, s8, p1, p2, p3, 
p4, p5, p6, p7, p8)
        return @_qparamf1(p1, p2, p3, p4, p5, p6, p7, p8)
 }
 
+
 #_________________________________________________________________
 function _printarr(A, t, lv, r, a)
 {
@@ -4106,6 +4306,7 @@ function _printarr(A, t, lv, r, a)
        }
 }
 
+
 #___________________________________________________________
 function _printarr_i1(A, lv, ls, ln, t, t2, i, a, f)
 {
@@ -4190,6 +4391,7 @@ function _qparam_i0(p0, p1, p2, p3, p4, p5, p6, p7)
        }
 }
 
+
 #_______________________________________________________________________
 function _qstr(t, c, A, B)
 {
@@ -4201,6 +4403,7 @@ function _qstr(t, c, A, B)
        return c
 }
 
+
 #_________________________________________________________________
 function _qstrq(t)
 {
@@ -4210,6 +4413,7 @@ function _qstrq(t)
        return t
 }
 
+
 ################################################################
 
 #_____________________________________________________________________________
@@ -4237,6 +4441,7 @@ function _rEG(c, t, P, a, A)
        }
 }
 
+
 #_______________________________________________________________________
 function _rFBRO(p)
 {
@@ -4253,6 +4458,7 @@ function _rFBRO(p)
        return p
 }
 
+
 #_______________________________________________________________________
 function _rFCHLD(p)
 {
@@ -4263,6 +4469,7 @@ function _rFCHLD(p)
        return ""
 }
 
+
 ######################## p="", !v
 
 #_______________________________________________________________________
@@ -4281,6 +4488,7 @@ function _rLBRO(p)
        return p
 }
 
+
 ######################## p=""
 
 #_______________________________________________________________________
@@ -4293,6 +4501,7 @@ function _rLCHLD(p)
        return ""
 }
 
+
 #_______________________________________________________________________
 function _rLINK(p)
 {
@@ -4300,6 +4509,7 @@ function _rLINK(p)
        return (p in _tLINK ? _tLINK[p] : "")
 }
 
+
 ######################## p=""
 
 #_______________________________________________________________________
@@ -4312,6 +4522,7 @@ function _rNEXT(p)
        return ""
 }
 
+
 ######################## p=""
 
 #_______________________________________________________________________
@@ -4324,6 +4535,7 @@ function _rPARENT(p)
        return ""
 }
 
+
 ######################## p=""
 
 #_______________________________________________________________________
@@ -4336,6 +4548,7 @@ function _rPREV(p)
        return ""
 }
 
+
 ######################## p=""
 
 #_______________________________________________________________________
@@ -4361,6 +4574,7 @@ function _rQBRO(p, c, p1)
        return p
 }
 
+
 ######################## p=""
 
 #_______________________________________________________________________
@@ -4373,6 +4587,7 @@ function _rQCHLD(p)
        return ""
 }
 
+
 
#___________________________________________________________________________________
 # EMMULATED FUNCTIONAL FIELDS 
######################################################
 
@@ -4388,6 +4603,7 @@ function _rSQFIRST(g, p, A)
        return _rsqgetptr(g, p)
 }
 
+
 #_________________________________________________________________
 function _rSQFIRSTA(g, p, A)
 {
@@ -4400,6 +4616,7 @@ function _rSQFIRSTA(g, p, A)
        return _rSQNEXTA(g, p, A)
 }
 
+
 #_______________________________________________________________________
 function _rSQNEXT(g, p, A)
 {
@@ -4410,6 +4627,7 @@ function _rSQNEXT(g, p, A)
        return _rsqnext_i0(g, p)
 }
 
+
 #_________________________________________________________________
 function _rSQNEXTA(g, p, A)
 {
@@ -4439,6 +4657,7 @@ function _rconline(t)
        _rprt = _rprt _ln((t = " " t " ") _getchrln("_", _CON_WIDTH - length(t) 
- 1))
 }
 
+
 #___________________________________________________________
 function _rd_shortcut(D, f)
 {
@@ -4456,6 +4675,7 @@ function _rd_shortcut(D, f)
        return (ERRNO ? ERRNO = "read shortcut: " ERRNO : _NOP)
 }
 
+
 #_______________________________________________________________________
 function _rdfile(f, i, A)
 {
@@ -4481,6 +4701,7 @@ function _rdfile(f, i, A)
        return (RT = _NOP)
 }
 
+
 
####################################################################################
 # PUBLIC:
 #_____________________________________________________________________________
@@ -4522,6 +4743,7 @@ function _rdreg(D, p)
        return (_rdregfld + _rdregkey)
 }
 
+
 #___________________________________________________________
 function _rdreg_i0(D, A)
 {
@@ -4542,6 +4764,7 @@ function _rdreg_i0(D, A)
        return 1
 }
 
+
 
#_____________________________________________________________________________________________________
 
######################################################################################################
 function _rdsafe(A, i, d)
@@ -4552,12 +4775,14 @@ function _rdsafe(A, i, d)
        return d
 }
 
+
 #_______________________________________________________________________
 function _reg_check(p)
 {
        _tframe("_reg_check_i0", p, p)
 }
 
+
 #_______________________________________________
 function _reg_check_i0(p, pp, p1, p2)
 {
@@ -4580,12 +4805,14 @@ function _reg_check_i0(p, pp, p1, p2)
        }
 }
 
+
 #_____________________________________________________
 function _registryinit()
 {
        _registrytmpfile = _getmpfile()
 }
 
+
 # _rdregfld            : gvar  - number of readed registry fields by _rdreg()
 # _rdregkey            : gvar  - number of readed registry keys by _rdreg()
 #_____________________________________________________________________________
@@ -4612,6 +4839,7 @@ function _regpath0(D, i, s, q, S)
        }
 }
 
+
 
#_________________________________________________________________________________________
 function _report(p)
 {
@@ -4637,6 +4865,7 @@ function _report_i0(p, p0, p1, p2)
        }
 }
 
+
 
#___________________________________________________________________________________
 function _reporterr(p, t3, pp, t, t2)
 {
@@ -4651,6 +4880,7 @@ function _reporterr(p, t3, pp, t, t2)
        return (t t3)
 }
 
+
 
#___________________________________________________________________________________
 
####################################################################################
 
@@ -4734,6 +4964,7 @@ function _retarr_i0(A, q, i, a)
        return a
 }
 
+
 #_________________________________________________________________
 function _retarrd(A, v, i)
 {
@@ -4745,6 +4976,7 @@ function _retarrd(A, v, i)
        return v
 }
 
+
 #_____________________________________________________
 function _retarrd_i0(A, i)
 {
@@ -4754,6 +4986,7 @@ function _retarrd_i0(A, i)
        delete A
 }
 
+
 #_______________________________________________________________________
 ########################################################################
 #EXPERIMENTAL
@@ -4771,6 +5004,7 @@ function _rexpfnend(t)
        _REXPFN[""] = t
 }
 
+
 #_____________________________________________________________________________
 function _rexpstr(r, i, c, A)
 {
@@ -4783,12 +5017,14 @@ function _rexpstr(r, i, c, A)
        return r
 }
 
+
 #_____________________________________________________________________________
 function _rexpstr_i0(t, A, p0)
 {
        return (_REXPSTR[t] = "\\" t)
 }
 
+
 #___________________________________________________________
 function _rmtsharerr(h, t)
 {
@@ -4812,6 +5048,7 @@ function _rpp(q, D, S)
        return q
 }
 
+
 
#_________________________________________________________________________________________
 function _rrdreg(DD, p, k, t, v, c, i, q, tT, A, B, C, D)
 {
@@ -4865,6 +5102,7 @@ function _rrdreg(DD, p, k, t, v, c, i, q, tT, A, B, C, D)
        }
 }
 
+
 #_________________________________________________________________
 function _rsqgetptr(g, p, A)
 {
@@ -4882,6 +5120,7 @@ function _rsqgetptr(g, p, A)
        return p
 }
 
+
 #___________________________________________________________
 function _rsqnext_i0(g, p)
 {
@@ -4931,6 +5170,7 @@ function _rxpfn(R, t, p, i, f, A)
        return _rexpfnend(t)
 }
 
+
 ##############################################################
 
 #_____________________________________________________________________________
@@ -4958,6 +5198,7 @@ function _sHARE(c, t, P, a, A)
        }
 }
 
+
 ################################################################
 
 #_____________________________________________________________________________
@@ -4985,12 +5226,14 @@ function _sYS(c, t, P, a, A)
        }
 }
 
+
 #_______________________________________________________________________
 function _serv_check(p)
 {
        _tframe("_serv_check_i0", p, p)
 }
 
+
 #_______________________________________________
 function _serv_check_i0(p, p0, p1, p2, p3, i, q, c)
 {
@@ -5006,6 +5249,7 @@ function _serv_check_i0(p, p0, p1, p2, p3, i, q, c)
        IGNORECASE = i
 }
 
+
 #_______________________________________________________________________
 function _setarrsort(f, a)
 {
@@ -5019,6 +5263,7 @@ function _setarrsort(f, a)
        return a
 }
 
+
 #_______________________________________________________________________
 function _setmpath(p, a)
 {
@@ -5036,6 +5281,7 @@ function _setmpath(p, a)
        }
 }
 
+
 
#_________________________________________________________________________________________
 
##########################################################################################
 function _sharelist(D, h, q, c, l, A, B)
@@ -5057,6 +5303,7 @@ function _sharelist(D, h, q, c, l, A, B)
        return _rmtsharerr(h, c)
 }
 
+
 #_____________________________________________________________________________
 function _sharepath(h, s, A)
 {
@@ -5107,6 +5354,7 @@ function _shortcut(D, S)
        return 1
 }
 
+
 #________________________________________________
 function _shortcut_init(A, B, q)
 {
@@ -5139,6 +5387,7 @@ function _shortcut_init(A, B, q)
        _shortcut_fpath = "\\\\localhost\\eGAWK\\LIB\\_shortcut\\_shortcut.exe"
 }
 
+
 #_____________________________________________________
 function _shortcut_nerr(t, s, A)
 {
@@ -5284,6 +5533,7 @@ function _splitpath_test()
        return
 }
 
+
 #_______________________________________________________________________
 function _splitstr(A, t, r)
 {
@@ -5312,6 +5562,7 @@ function _splitstr(A, t, r)
        }
 }
 
+
 #_____________________________________________________
 function _splitstr_i0(A, t, C)
 {
@@ -5329,6 +5580,7 @@ function _splitstr_i0(A, t, C)
        return _splitstrp0
 }
 
+
 #_______________________________________________
 function _strtorexp(t)
 {
@@ -5363,6 +5615,7 @@ function _subseqon(B, r, F, f, s, e, q, i, A)
        return (r (@f(A[i])))
 }
 
+
 #_____________________________________________________________________________
 # _rdreg(ARRAY,reg_path)
 #              Import into ARRAY the content of the whole registree tree with 
the higher point specified by reg_path.
@@ -5479,6 +5732,7 @@ function _tOBJ(c, t, P)
        }
 }
 
+
 #_______________________________________________________________________
 function _tOBJ_CLEANUP(p)
 {
@@ -5498,6 +5752,7 @@ function _tOBJ_CLEANUP(p)
        }
 }
 
+
 #_______________________________________________________________________
 function _tabtospc(t, ts, xc, a, c, n, A, B)
 {
@@ -5514,6 +5769,7 @@ function _tabtospc(t, ts, xc, a, c, n, A, B)
        return t
 }
 
+
 
#___________________________________________________________________________________
 
####################################################################################
 function _tapi(p, f, p0, p1, p2, p3, c)
@@ -5528,6 +5784,7 @@ function _tapi(p, f, p0, p1, p2, p3, c)
        } while ("CLASS" in _[c])
 }
 
+
 #_____________________________________________________________________________
 function _tbframe(f, p, p0, p1)
 {
@@ -5538,6 +5795,7 @@ function _tbframe(f, p, p0, p1)
        return f
 }
 
+
 #___________________________________________________________
 function _tbframe_i0(f, p, p0, p1, a)
 {
@@ -5547,6 +5805,7 @@ function _tbframe_i0(f, p, p0, p1, a)
        return (p in _tLCHLD ? _tmbframe(f, _tLCHLD[p], p0, p1) : @f(p, p0, p1))
 }
 
+
 #_______________________________________________________________________
 function _tbframex(f, p, p0, p1)
 {
@@ -5557,6 +5816,7 @@ function _tbframex(f, p, p0, p1)
        return f
 }
 
+
 #___________________________________________________________
 function _tbframex_i0(f, p, p0, p1)
 {
@@ -5566,6 +5826,7 @@ function _tbframex_i0(f, p, p0, p1)
        return (p in _tLCHLD ? _tmbframex(f, _tLCHLD[p], p0, p1) : @f(p, p0, 
p1))
 }
 
+
 #_____________________________________________________________________________
 function _tbpass(f, p, p0, p1)
 {
@@ -5576,6 +5837,7 @@ function _tbpass(f, p, p0, p1)
        return f
 }
 
+
 #___________________________________________________________
 function _tbpass_i0(f, p, p0, p1, a)
 {
@@ -5585,6 +5847,7 @@ function _tbpass_i0(f, p, p0, p1, a)
        return (p in _tLCHLD ? _tmbpass(f, _tLCHLD[p], p0, p1) : @f(p, p0, p1))
 }
 
+
 #_____________________________________________________________________________
 function _tbpassx(f, p, p0, p1)
 {
@@ -5595,6 +5858,7 @@ function _tbpassx(f, p, p0, p1)
        return f
 }
 
+
 #___________________________________________________________
 function _tbpassx_i0(f, p, p0, p1)
 {
@@ -5604,6 +5868,7 @@ function _tbpassx_i0(f, p, p0, p1)
        return (p in _tLCHLD ? _tmbpassx(f, _tLCHLD[p], p0, p1) : @f(p, p0, p1))
 }
 
+
 #_____________________________________________________________________________
 function _tbrochld(p, f, pp)
 {
@@ -5688,6 +5953,7 @@ function _tbrochld(p, f, pp)
        return p
 }
 
+
 #_________________________________________________________________
 function _tbrunframe(f, p, p0, p1)
 {
@@ -5695,6 +5961,7 @@ function _tbrunframe(f, p, p0, p1)
        return _tbframe(f ? f : "_trunframe_i0", p, p0, p1)
 }
 
+
 #_________________________________________________________________
 function _tbrunframex(f, p, p0, p1)
 {
@@ -5702,6 +5969,7 @@ function _tbrunframex(f, p, p0, p1)
        return _tbframex(f ? f : "_trunframe_i0", p, p0, p1)
 }
 
+
 #_________________________________________________________________
 function _tbrunpass(f, p, p0, p1)
 {
@@ -5709,6 +5977,7 @@ function _tbrunpass(f, p, p0, p1)
        return _tbpass(f ? f : "_trunframe_i0", p, p0, p1)
 }
 
+
 #_________________________________________________________________
 function _tbrunpassx(f, p, p0, p1)
 {
@@ -5716,6 +5985,7 @@ function _tbrunpassx(f, p, p0, p1)
        return _tbpassx(f ? f : "_trunframe_i0", p, p0, p1)
 }
 
+
 #_____________________________________________________________________________
 function _tdel(p, i)
 {
@@ -5740,6 +6010,7 @@ function _tdel(p, i)
        }
 }
 
+
 #_____________________________________________________
 function _tdel_i0(p, i)
 {
@@ -5760,6 +6031,7 @@ function _tdel_i0(p, i)
        _UIDSDEL[p]
 }
 
+
 #_____________________________________________________
 function _tdel_i1(A, i)
 {
@@ -5772,6 +6044,7 @@ function _tdel_i1(A, i)
        }
 }
 
+
 #_____________________________________________________________________________
 function _tdelete(p, v)
 {
@@ -5782,6 +6055,7 @@ function _tdelete(p, v)
        return v
 }
 
+
 #_________________________________________________________________
 function _tdelitem(p)
 {
@@ -5795,6 +6069,7 @@ function _tdelitem(p)
        }
 }
 
+
 #_______________________________________________________________________
 function _tend(a, b)
 {
@@ -5806,6 +6081,7 @@ function _tend(a, b)
        }
 }
 
+
 #_____________________________________________________________________________
 function _texclude(p, v, pp)
 {
@@ -5848,6 +6124,7 @@ function _texclude(p, v, pp)
        }
 }
 
+
 # _tDLINK progressive development: concrete _tDLINK function\processing algo; 
all frame's families support
 #_____________________________________________________________________________
 function _tframe(fF, p, p0, p1, p2)
@@ -5859,6 +6136,7 @@ function _tframe(fF, p, p0, p1, p2)
        return p
 }
 
+
 #_____________________________________________________________________________
 function _tframe0(f, p, p0, p1, p2, p3, A)
 {
@@ -5872,6 +6150,7 @@ function _tframe0(f, p, p0, p1, p2, p3, A)
        }
 }
 
+
 #_______________________________________________
 function _tframe0_i0(A, p, f)
 {
@@ -5896,6 +6175,7 @@ function _tframe0_i0(A, p, f)
        return _tframe0_i2(A, ".", p)
 }
 
+
 #_______________________________________________
 function _tframe0_i1(A, p)
 {
@@ -5908,6 +6188,7 @@ function _tframe0_i1(A, p)
        return _tframe0_i0(A, p)
 }
 
+
 #_______________________________________________
 function _tframe0_i2(A, m, p)
 {
@@ -5926,6 +6207,7 @@ function _tframe0_i2(A, m, p)
        }
 }
 
+
 #_________________________________________________________________
 function _tframe1(f, p, p0, p1, p2, p3, A)
 {
@@ -5939,6 +6221,7 @@ function _tframe1(f, p, p0, p1, p2, p3, A)
        }
 }
 
+
 #_______________________________________________
 function _tframe1_i0(A, p, p0)
 {
@@ -5952,6 +6235,7 @@ function _tframe1_i0(A, p, p0)
        return _tframe1_i2(A, ".", p, p0)
 }
 
+
 #_______________________________________________
 function _tframe1_i1(A, p, p0)
 {
@@ -5964,6 +6248,7 @@ function _tframe1_i1(A, p, p0)
        return _tframe1_i0(A, p, p0)
 }
 
+
 #_______________________________________________
 function _tframe1_i2(A, m, p, p0)
 {
@@ -5982,6 +6267,7 @@ function _tframe1_i2(A, m, p, p0)
        }
 }
 
+
 #_________________________________________________________________
 function _tframe2(f, p, p0, p1, p2, p3, A)
 {
@@ -5995,6 +6281,7 @@ function _tframe2(f, p, p0, p1, p2, p3, A)
        }
 }
 
+
 #_______________________________________________
 function _tframe2_i0(A, p, p0, p1)
 {
@@ -6008,6 +6295,7 @@ function _tframe2_i0(A, p, p0, p1)
        return _tframe2_i2(A, ".", p, p0, p1)
 }
 
+
 #_______________________________________________
 function _tframe2_i1(A, p, p0, p1)
 {
@@ -6020,6 +6308,7 @@ function _tframe2_i1(A, p, p0, p1)
        return _tframe2_i0(A, p, p0, p1)
 }
 
+
 #_______________________________________________
 function _tframe2_i2(A, m, p, p0, p1)
 {
@@ -6038,6 +6327,7 @@ function _tframe2_i2(A, m, p, p0, p1)
        }
 }
 
+
 #_________________________________________________________________
 function _tframe3(f, p, p0, p1, p2, p3, A)
 {
@@ -6051,6 +6341,7 @@ function _tframe3(f, p, p0, p1, p2, p3, A)
        }
 }
 
+
 #_______________________________________________
 function _tframe3_i0(A, p, p0, p1, p2)
 {
@@ -6064,6 +6355,7 @@ function _tframe3_i0(A, p, p0, p1, p2)
        return _tframe3_i2(A, ".", p, p0, p1, p2)
 }
 
+
 #_______________________________________________
 function _tframe3_i1(A, p, p0, p1, p2)
 {
@@ -6076,6 +6368,7 @@ function _tframe3_i1(A, p, p0, p1, p2)
        return _tframe3_i0(A, p, p0, p1, p2)
 }
 
+
 #_______________________________________________
 function _tframe3_i2(A, m, p, p0, p1, p2)
 {
@@ -6094,6 +6387,7 @@ function _tframe3_i2(A, m, p, p0, p1, p2)
        }
 }
 
+
 #_________________________________________________________________
 function _tframe4(f, p, p0, p1, p2, p3, A)
 {
@@ -6107,6 +6401,7 @@ function _tframe4(f, p, p0, p1, p2, p3, A)
        }
 }
 
+
 #_______________________________________________
 function _tframe4_i0(A, p, p0, p1, p2, p3)
 {
@@ -6120,6 +6415,7 @@ function _tframe4_i0(A, p, p0, p1, p2, p3)
        return _tframe4_i2(A, ".", p, p0, p1, p2, p3)
 }
 
+
 #_______________________________________________
 function _tframe4_i1(A, p, p0, p1, p2, p3)
 {
@@ -6132,6 +6428,7 @@ function _tframe4_i1(A, p, p0, p1, p2, p3)
        return _tframe4_i0(A, p, p0, p1, p2, p3)
 }
 
+
 #_______________________________________________
 function _tframe4_i2(A, m, p, p0, p1, p2, p3)
 {
@@ -6150,6 +6447,7 @@ function _tframe4_i2(A, m, p, p0, p1, p2, p3)
        }
 }
 
+
 #___________________________________________________________
 function _tframe_i0(f, p, p0, p1, p2, a)
 {
@@ -6159,6 +6457,7 @@ function _tframe_i0(f, p, p0, p1, p2, a)
        return (p in _tFCHLD ? _tmframe_i0(f, _tFCHLD[p], p0, p1, p2) : (p in 
_tDLINK ? @f(_tDLINK[p], p0, p1, p2) : @f(p, p0, p1, p2)))
 }
 
+
 #___________________________________________________________
 function _tframe_i1(F, p, p0, p1, p2, a)
 {
@@ -6168,6 +6467,7 @@ function _tframe_i1(F, p, p0, p1, p2, a)
        return (p in _tFCHLD ? ("." in F ? _th1(a = F["."], @a(p, p0, p1, p2)) 
: "") _tmframe_i1(F, _tFCHLD[p], p0, p1, p2) : (">" in F ? _th1(a = F[">"], p 
in _tDLINK ? @a(_tDLINK[p], p0, p1, p2) : @a(p, p0, p1, p2)) : ""))
 }
 
+
 #_______________________________________________________________________
 function _tframex(f, p, p0, p1)
 {
@@ -6178,6 +6478,7 @@ function _tframex(f, p, p0, p1)
        return f
 }
 
+
 #___________________________________________________________
 function _tframex_i0(f, p, p0, p1)
 {
@@ -6187,6 +6488,7 @@ function _tframex_i0(f, p, p0, p1)
        return (p in _tFCHLD ? _tmframex(f, _tFCHLD[p], p0, p1) : @f(p, p0, p1))
 }
 
+
 #_____________________________________________________
 function _tframex_p0(A, f, q, i, B, C)
 {
@@ -6208,6 +6510,7 @@ function _tframex_p0(A, f, q, i, B, C)
        }
 }
 
+
 #_______________________________________________
 function _tframex_p1(A, v, i, r, B)
 {
@@ -6235,6 +6538,7 @@ function _tframex_p1(A, v, i, r, B)
        }
 }
 
+
 #_____________________________________________________
 #      F       v       action
 #-----------------------------------------------------
@@ -6259,6 +6563,7 @@ function _tgenuid(c)
        return _fatal("_tUID: Out of UID range")
 }
 
+
 #_____________________________________________________
 function _tgenuid_init(a, b, A)
 {
@@ -6273,6 +6578,7 @@ function _tgenuid_init(a, b, A)
        _uidcntr = A[a] A[b]
 }
 
+
 #      if ( F in _TCLASS )                             { 
_[p]["CLASS"]=_TCLASS[F]; _tapi(p); return p }
 #              # ???           _mpu(F,p)               ???
 #              return p }
@@ -6297,6 +6603,7 @@ function _tgetitem(p, n, a, b)
        }
 }
 
+
 #_________________________________________________________________
 function _tgetsp(p)
 {
@@ -6304,6 +6611,7 @@ function _tgetsp(p)
        return _tSTACK[p][0]
 }
 
+
 
####################################################################################
 
 #_____________________________________________________________________________
@@ -6312,6 +6620,7 @@ function _th0(p, p1, p2, p3)
        return p
 }
 
+
 ##########################################
 
 #_________________________________________________________________
@@ -6320,6 +6629,7 @@ function _th1(p0, p, p2, p3)
        return p
 }
 
+
 ##############################
 
 #_________________________________________________________________
@@ -6328,6 +6638,7 @@ function _th10(p0, p1)
        return (p1 p0)
 }
 
+
 ##############################
 
 #_________________________________________________________________
@@ -6336,6 +6647,7 @@ function _th2(p0, p1, r, p3)
        return p
 }
 
+
 ##############################
 
 #_________________________________________________________________
@@ -6344,6 +6656,7 @@ function _th3(p0, p1, p2, r)
        return p
 }
 
+
 #_________________________________________________________________
 function _tifend(l)
 {
@@ -6351,6 +6664,7 @@ function _tifend(l)
        return (_t_ENDF[0] + l) in _t_ENDF ? (_t_ENDF[_t_ENDF[0] + l] ? 
_t_ENDF[_t_ENDF[0] + l] : 1) : ""
 }
 
+
 #      test _tbrochld fn; develope tOBJ r\w func specification for brochld func
 
 #_________________________________________________________________
@@ -6373,6 +6687,7 @@ function _tinit_i0(D, S, i)
        }
 }
 
+
 #_______________________________________________________________________
 ########################################################################
 
@@ -6503,6 +6818,7 @@ function _tlist_i1(L, p)
        }
 }
 
+
 #_________________________________________________________________
 function _tmbframe(f, p, p0, p1, t)
 {
@@ -6513,6 +6829,7 @@ function _tmbframe(f, p, p0, p1, t)
        return t
 }
 
+
 #_________________________________________________________________
 function _tmbframex(f, p, p0, p1, t)
 {
@@ -6524,6 +6841,7 @@ function _tmbframex(f, p, p0, p1, t)
        return t
 }
 
+
 #_________________________________________________________________
 function _tmbpass(f, p, p0, p1)
 {
@@ -6534,6 +6852,7 @@ function _tmbpass(f, p, p0, p1)
        return p0
 }
 
+
 #_________________________________________________________________
 function _tmbpassx(f, p, p0, p1)
 {
@@ -6545,6 +6864,7 @@ function _tmbpassx(f, p, p0, p1)
        return p0
 }
 
+
 #_________________________________________________________________
 function _tmframe(f, p, p0, p1, p2)
 {
@@ -6555,6 +6875,7 @@ function _tmframe(f, p, p0, p1, p2)
        return f
 }
 
+
 #___________________________________________________________
 function _tmframe_i0(f, p, p0, p1, p2, t)
 {
@@ -6564,6 +6885,7 @@ function _tmframe_i0(f, p, p0, p1, p2, t)
        return t
 }
 
+
 #___________________________________________________________
 function _tmframe_i1(F, p, p0, p1, p2, t)
 {
@@ -6573,6 +6895,7 @@ function _tmframe_i1(F, p, p0, p1, p2, t)
        return t
 }
 
+
 #_________________________________________________________________
 function _tmframex(f, p, p0, p1, t)
 {
@@ -6584,6 +6907,7 @@ function _tmframex(f, p, p0, p1, t)
        return t
 }
 
+
 #_________________________________________________________________
 function _tmpass(f, p, p0, p1)
 {
@@ -6594,6 +6918,7 @@ function _tmpass(f, p, p0, p1)
        return p0
 }
 
+
 #_________________________________________________________________
 function _tmpassx(f, p, p0, p1)
 {
@@ -6620,6 +6945,7 @@ function _torexp_fmask(t)
        return gensub(/\\\*/, ".*", "G", gensub(/\\\?/, ".?", "G", 
_strtorexp(t)))
 }
 
+
 #_______________________________________________
 function _torexp_init()
 {
@@ -6632,12 +6958,14 @@ function _torexp_init()
        _TOREXPFN["'"] = "_torexp_sqstr"
 }
 
+
 #_______________________________________________
 function _torexp_rexp(t)
 {
        return t
 }
 
+
 #_____________________________________________________________________________
 function _tpass(f, p, p0, p1)
 {
@@ -6648,6 +6976,7 @@ function _tpass(f, p, p0, p1)
        return f
 }
 
+
 #___________________________________________________________
 function _tpass_i0(f, p, p0, p1, a)
 {
@@ -6657,6 +6986,7 @@ function _tpass_i0(f, p, p0, p1, a)
        return (p in _tFCHLD ? _tmpass(f, _tFCHLD[p], p0, p1) : @f(p, p0, p1))
 }
 
+
 #_____________________________________________________________________________
 function _tpassx(f, p, p0, p1)
 {
@@ -6667,6 +6997,7 @@ function _tpassx(f, p, p0, p1)
        return f
 }
 
+
 #___________________________________________________________
 function _tpassx_i0(f, p, p0, p1)
 {
@@ -6676,6 +7007,7 @@ function _tpassx_i0(f, p, p0, p1)
        return (p in _tFCHLD ? _tmpassx(f, _tFCHLD[p], p0, p1) : @f(p, p0, p1))
 }
 
+
 #_________________________________________________________________
 function _tpop(p, aA, a)
 {
@@ -6692,6 +7024,7 @@ function _tpop(p, aA, a)
        _fatal("^" p ": Out of tSTACK")
 }
 
+
 #_____________________________________________________________________________
 function _tpush(p, aA, a)
 {
@@ -6707,6 +7040,7 @@ function _tpush(p, aA, a)
        return (_tSTACK[p][a] = aA)
 }
 
+
 # prefix       -
 # prichr       - aware character `{', `^',`]'
 # sechr        - aware character `.' as the first char of sechr, and character 
`}'
@@ -6730,6 +7064,7 @@ function _tr(n, cs, H)
        _rconl()
 }
 
+
 #_______________________________________________________________________
 function _trace(t, d, A)
 {
@@ -6741,6 +7076,7 @@ function _trace(t, d, A)
        }
 }
 
+
 #_________________________________________________________________
 function _trunframe(f, p, p0, p1, p2)
 {
@@ -6748,6 +7084,7 @@ function _trunframe(f, p, p0, p1, p2)
        return _tframe(f ? f : "_trunframe_i0", p, p0, p1, p2)
 }
 
+
 #_________________________________________________________________
 function _trunframe_i0(p, p0, p1, p2, f)
 {
@@ -6757,6 +7094,7 @@ function _trunframe_i0(p, p0, p1, p2, f)
        }
 }
 
+
 #_________________________________________________________________
 function _trunframex(f, p, p0, p1)
 {
@@ -6764,6 +7102,7 @@ function _trunframex(f, p, p0, p1)
        return _tframex(f ? f : "_trunframe_i0", p, p0, p1)
 }
 
+
 #_________________________________________________________________
 function _trunpass(f, p, p0, p1)
 {
@@ -6771,6 +7110,7 @@ function _trunpass(f, p, p0, p1)
        return _tpass(f ? f : "_trunframe_i0", p, p0, p1)
 }
 
+
 #_________________________________________________________________
 function _trunpassx(f, p, p0, p1)
 {
@@ -6778,6 +7118,7 @@ function _trunpassx(f, p, p0, p1)
        return _tpassx(f ? f : "_trunframe_i0", p, p0, p1)
 }
 
+
 #_________________________________________________________________
 function _tsetsp(p, v)
 {
@@ -6785,6 +7126,7 @@ function _tsetsp(p, v)
        return (_tSTACK[p][0] = v)
 }
 
+
 #                      dptr                    - morg ptr; in case if object 
deleted then _CLASSPTR[ptr] will be deleted(object is death), but
 #                                                      _tUIDEL[_CLASSPTR[ptr]] 
will be created that object can be resurrected from morg
 #                                                      dptr can be any string 
containing any characters except `:'. It's not verified
@@ -6932,6 +7274,7 @@ function _typa(p, A)
        return (_t0 = isarray(p) ? "#" : p == 0 ? p == "" ? 0 : p in A ? "`" : 
p ? 3 : 4 : p in A ? "`" : p + 0 == p ? 5 : p ? 3 : 2)
 }
 
+
 #_____________________________________________________
 #      _tframe0(hndstr,ptr)
 #
@@ -6981,6 +7324,7 @@ function _une(t)
        return gensub(/\xB4(.)/, "\\1", "G", t)
 }
 
+
 
#___________________________________________________________________________________
 function _unformatrexp(t)
 {
@@ -6992,6 +7336,7 @@ function _unformatrexp(t)
        return (_formatstrs0 _FORMATSTRA[t])
 }
 
+
 #___________________________________________________________
 function _unformatrexp_init(i, a)
 {
@@ -7020,6 +7365,7 @@ function _unformatrexp_init(i, a)
        }
 }
 
+
 
#___________________________________________________________________________________
 function _unformatstr(t)
 {
@@ -7031,6 +7377,7 @@ function _unformatstr(t)
        return (_formatstrs0 _FORMATSTRA[t])
 }
 
+
 #___________________________________________________________
 function _unformatstr_init(i)
 {
@@ -7057,12 +7404,14 @@ function _unformatstr_init(i)
        }
 }
 
+
 #_____________________________________________________________________________
 function _uninit_del(A, i, p0)
 {
        _del(i)
 }
 
+
 
####################################################################################
 # PUBLIC:
 #_____________________________________________________________________________
@@ -7094,6 +7443,7 @@ function _unstr(t)
        return gensub(/\\(.)/, "\\1", "G", t)
 }
 
+
 #_________________________________________________________________
 function _untmp(f, a)
 {
@@ -7110,6 +7460,7 @@ function _untmp(f, a)
        return ""
 }
 
+
 #_____________________________________________________________________________
 function _val(v, t)
 {
@@ -7122,6 +7473,7 @@ function _val(v, t)
        return (_ln(v "'") _ln(t))
 }
 
+
 #_____________________________________________________________________________
 function _val0(v)
 {
@@ -7134,6 +7486,7 @@ function _val0(v)
        return ("\"" v "\"")
 }
 
+
 #_____________________________________________________________________________
 function _var(v, t)
 {
@@ -7146,6 +7499,7 @@ function _var(v, t)
        return (_ln(v "'") _ln(t))
 }
 
+
 #_______________________________________________________________________
 function _verb(t, d, A)
 {
@@ -7157,6 +7511,7 @@ function _verb(t, d, A)
        }
 }
 
+
 #_________________________________________________________________
 function _wFBRO(p, v, a)
 {
@@ -7271,6 +7626,7 @@ function _wFBRO(p, v, a)
        }
 }
 
+
 #_________________________________________________________________
 function _wFCHLD(p, v, a)
 {
@@ -7359,6 +7715,7 @@ function _wFCHLD(p, v, a)
        }
 }
 
+
 #_________________________________________________________________
 function _wLBRO(p, v, a)
 {
@@ -7473,6 +7830,7 @@ function _wLBRO(p, v, a)
        }
 }
 
+
 #_________________________________________________________________
 function _wLCHLD(p, v, a)
 {
@@ -7561,6 +7919,7 @@ function _wLCHLD(p, v, a)
        }
 }
 
+
 #_________________________________________________________________
 function _wLINK(p, v)
 {
@@ -7568,6 +7927,7 @@ function _wLINK(p, v)
        return (_tLINK[p] = v)
 }
 
+
 #_________________________________________________________________
 function _wNEXT(p, v, a, b)
 {
@@ -7643,6 +8003,7 @@ function _wNEXT(p, v, a, b)
        }
 }
 
+
 #_________________________________________________________________
 function _wPARENT(p, v)
 {
@@ -7650,6 +8011,7 @@ function _wPARENT(p, v)
        return v
 }
 
+
 #_________________________________________________________________
 function _wPREV(p, v, a, b)
 {
@@ -7725,6 +8087,7 @@ function _wPREV(p, v, a, b)
        }
 }
 
+
 #_________________________________________________________________
 function _wQBRO(p, v)
 {
@@ -7732,6 +8095,7 @@ function _wQBRO(p, v)
        return v
 }
 
+
 #_________________________________________________________________
 function _wQCHLD(p, v)
 {
@@ -7760,6 +8124,7 @@ function _wQCHLD(p, v)
        }
 }
 
+
 #_______________________________________________________________________
 function _warning(t, d, A)
 {
@@ -7771,6 +8136,7 @@ function _warning(t, d, A)
        }
 }
 
+
 #___________________________________________________________
 function _wfilerdnehnd(f, t)
 {
@@ -7794,6 +8160,7 @@ function _wonline(t)
        wonl = wonl _ln(substr(" _ " t " 
_____________________________________________________________________________________________________________________________________",
 1, 126))
 }
 
+
 #___________________________________________________________
 function _wr_shortcut(f, S)
 {
@@ -7812,6 +8179,7 @@ function _wr_shortcut(f, S)
        return (ERRNO ? ERRNO = "write shortcut: " ERRNO : _NOP)
 }
 
+
 #_________________________________________________________________
 function _wrfile(f, d, a, b)
 {
@@ -7838,6 +8206,7 @@ function _wrfile(f, d, a, b)
        return f
 }
 
+
 #___________________________________________________________
 function _wrfile1(f, d, a, b)
 {
@@ -7864,6 +8233,7 @@ function _wrfile1(f, d, a, b)
        return d
 }
 
+
 #_______________________________________________________________________
 function _yexport(p)
 {
@@ -7871,6 +8241,7 @@ function _yexport(p)
        return _tframe("_yexport_i0", p)
 }
 
+
 #_______________________________________________________________________
 function _yexport_i0(p, p0, p1, p2)
 {
@@ -7885,6 +8256,7 @@ function _yexport_i0(p, p0, p1, p2)
        }
 }
 
+
 #_________________________________________________________________
 function cmp_str_idx(i1, v1, i2, v2)
 {
@@ -7892,6 +8264,7 @@ function cmp_str_idx(i1, v1, i2, v2)
        return (i1 < i2 ? -1 : 1)
 }
 
+
 #___________________________________________________________
 function filedi(f, d)
 {
@@ -7913,6 +8286,7 @@ function filedi(f, d)
        return (_FILEDIR[_FILEIO_RD, f] = _FILEIO_D _FILEDIR[f])
 }
 
+
 #___________________________________________________________
 function filegetdrvdir(t, r)
 {
@@ -7929,6 +8303,7 @@ function filegetdrvdir(t, r)
        return ""
 }
 
+
 #___________________________________________________________
 function filegetrootdir(f, dd, d)
 {
@@ -7967,6 +8342,7 @@ function filegetrootdir(f, dd, d)
        return (_FILEROOT[dd, f] = fileri(dd)) d
 }
 
+
 #___________________________________________________________
 function filerdnehndi(st, a, c, r, d, n, A)
 {
@@ -8020,6 +8396,7 @@ function filerdnehndi(st, a, c, r, d, n, A)
        return ""
 }
 
+
 #_____________________________________________________
 function fileri(f)
 {
@@ -8040,6 +8417,7 @@ function hujf(a, b, c)
        _conl("hujf(" a "," b "," c ")")
 }
 
+
 #___________________________________________________________
 function ncmp_str_idx(i1, v1, i2, v2)
 {
@@ -8135,6 +8513,7 @@ function tts(p, uidel, psfx, cnt, chr, p5, p6, p7, im)
        _conl("mask: `" _qparamask "'")
 }
 
+
 #                      #               - p is array
 #                      `               - p is ptr detected in array 
_CLASSPTR(for _typ); or p is ptr detected in array A(for _typa)
 #                      0               - p is undefined
@@ -8165,6 +8544,7 @@ function zorr(A, i, r)
        _conl("``````````````" a "''''''''''''''''")
 }
 
+
 #_____________________________________________________________________________
 function zzer()
 {
diff --git a/test/profile6.ok b/test/profile6.ok
index 0c9486c7..e15cecc2 100644
--- a/test/profile6.ok
+++ b/test/profile6.ok
@@ -7,4 +7,3 @@
      1         print -3 Q (-4)
      1         print -3 Q (-4) (-5)
        }
-
diff --git a/test/profile7.ok b/test/profile7.ok
index 10da2eb4..e900848b 100644
--- a/test/profile7.ok
+++ b/test/profile7.ok
@@ -14,4 +14,3 @@
      1         print a - 1 - b
      1         print a + 1 - b
        }
-
diff --git a/test/profile8.ok b/test/profile8.ok
index 2b9c156f..69f047f8 100644
--- a/test/profile8.ok
+++ b/test/profile8.ok
@@ -18,4 +18,3 @@
        for (;;) {
        }
 }
-
diff --git a/test/profile9.ok b/test/profile9.ok
index 34f7a96b..ad318e22 100644
--- a/test/profile9.ok
+++ b/test/profile9.ok
@@ -3,12 +3,13 @@
 # comments
 
 # Add up
+
 {
        sum += $1
 }
 
 # Print sum
+
 END {
        print sum
 }
-

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

commit 02de169a9c2c85af1b7fb8ddcf9f1026356567c3
Merge: d3ca1afc da2e2e6f
Author: Arnold D. Robbins <arnold@skeeve.com>
Date:   Thu Oct 10 18:25:20 2024 +0300

    Merge branch 'gawk-5.3-stable' into stable/pretty-printer

diff --cc ChangeLog
index 828b367d,ee00ea3a..98e92faa
--- a/ChangeLog
+++ b/ChangeLog
@@@ -1,20 -1,19 +1,33 @@@
+ 2024-10-10         Arnold D. Robbins     <arnold@skeeve.com>
+ 
 -      Check if RE match at end of strig could be an exact
++      Check if RE match at end of string could be an exact
+       match. This is true if the maybe_long flag is false.
+       Thanks to Ronald D. Rechenmacher <ron@fnal.gov> for
+       the idea.
+ 
+       * io.c (rsrescan): Add an additional check when the
+       match is exactly at the end.
+       * re.c (make_regexp): Add backslash to the list of
+       characters which sets the maybe_long field.
+       
 +2024-09-25         Arnold D. Robbins     <arnold@skeeve.com>
 +
 +      Clean up spurious newlines in pretty printer output.
 +      Thanks to John Devin <john.m.devin@gmail.com> for the
 +      motivation.
 +
 +      * awk.h (close_prof_file): New function.
 +      * main.c (main): All close_prof_file.
 +      * profile.c (close_prof_file): New function.
 +      (at_start): New variable.
 +      (pprint, print_lib_list, print_include_list, print_comment,
 +      pp_func, pp_namespace): Use it.
 +
  2024-09-19         Arnold D. Robbins     <arnold@skeeve.com>
  
        * array.c (do_delete): Handle case where subscript is Node_elem_new.
--      Thanks to Denis Shirokov <cosmogen@gmail.com> for the report and test 
case.
++      Thanks to Denis Shirokov <cosmogen@gmail.com> for the report and
++      test case.
  
  2024-09-17         Arnold D. Robbins     <arnold@skeeve.com>
  

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

commit d3ca1afc64c82d340ba203cbabba68397dbb5afe
Merge: ea471067 a228c487
Author: Arnold D. Robbins <arnold@skeeve.com>
Date:   Sat Oct 5 20:52:43 2024 +0300

    Merge branch 'gawk-5.3-stable' into stable/pretty-printer


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

commit ea471067dfa8536dd413eda63e74597dc4ad5348
Author: Arnold D. Robbins <arnold@skeeve.com>
Date:   Wed Sep 25 08:37:47 2024 +0300

    Clean up spurious newlines in pretty printer output.

diff --git a/ChangeLog b/ChangeLog
index f606530d..828b367d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+2024-09-25         Arnold D. Robbins     <arnold@skeeve.com>
+
+       Clean up spurious newlines in pretty printer output.
+       Thanks to John Devin <john.m.devin@gmail.com> for the
+       motivation.
+
+       * awk.h (close_prof_file): New function.
+       * main.c (main): All close_prof_file.
+       * profile.c (close_prof_file): New function.
+       (at_start): New variable.
+       (pprint, print_lib_list, print_include_list, print_comment,
+       pp_func, pp_namespace): Use it.
+
 2024-09-19         Arnold D. Robbins     <arnold@skeeve.com>
 
        * array.c (do_delete): Handle case where subscript is Node_elem_new.
diff --git a/awk.h b/awk.h
index 9997534d..683a90c2 100644
--- a/awk.h
+++ b/awk.h
@@ -1745,6 +1745,7 @@ extern void (*lintfunc)(const char *mesg, ...);
 /* profile.c */
 extern void init_profiling_signals(void);
 extern void set_prof_file(const char *filename);
+extern void close_prof_file(void);
 extern void dump_prog(INSTRUCTION *code);
 extern char *pp_number(NODE *n);
 extern char *pp_string(const char *in_str, size_t len, int delim);
diff --git a/main.c b/main.c
index 4ef0208d..9c6e66ef 100644
--- a/main.c
+++ b/main.c
@@ -546,6 +546,7 @@ main(int argc, char **argv)
                set_current_namespace(awk_namespace);
                dump_prog(code_block);
                dump_funcs();
+               close_prof_file();
        }
 
        if (do_dump_vars)
diff --git a/profile.c b/profile.c
index 256c641d..962b8cdc 100644
--- a/profile.c
+++ b/profile.c
@@ -67,6 +67,8 @@ static long indent_level = 0;
 static const char tabs[] = 
"\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t";
 static const size_t tabs_len = sizeof(tabs) - 1;
 
+static bool at_start = true;
+
 #define check_indent_level() \
        if (indent_level + 1 > tabs_len) \
                /* We're allowed to be snarky, occasionally. */ \
@@ -114,6 +116,17 @@ set_prof_file(const char *file)
        }
 }
 
+/* close_prof_file --- close the output file for profiling or pretty-printing 
*/
+
+void
+close_prof_file(void)
+{
+       if (prof_fp != NULL
+           && fileno(prof_fp) != fileno(stdout)
+           && fileno(prof_fp) != fileno(stderr))
+               (void) fclose(prof_fp);
+}
+
 /* init_profiling_signals --- set up signal handling for gawk --profile */
 
 void
@@ -269,7 +282,11 @@ pprint(INSTRUCTION *startp, INSTRUCTION *endp, int flags)
                                        if (! rule_count[rule]++)
                                                fprintf(prof_fp, _("\t# %s 
rule(s)\n\n"), ruletab[rule]);
                                        indent(0);
-                               }
+                               } else if (! at_start)
+                                       putc('\n', prof_fp);
+                               else
+                                       at_start = false;
+
                                fprintf(prof_fp, "%s {", ruletab[rule]);
                                end_line(pc);
                                skip_comment = true;
@@ -277,6 +294,10 @@ pprint(INSTRUCTION *startp, INSTRUCTION *endp, int flags)
                                if (do_profile && ! rule_count[rule]++)
                                        fprintf(prof_fp, _("\t# Rule(s)\n\n"));
                                ip1 = pc->nexti;
+                               if (! at_start)
+                                       putc('\n', prof_fp);
+                               else
+                                       at_start = false;
                                indent(ip1->exec_count);
                                if (ip1 != (pc + 1)->firsti) {          /* 
non-empty pattern */
                                        pprint(ip1->nexti, (pc + 1)->firsti, 
NO_PPRINT_FLAGS);
@@ -308,7 +329,7 @@ pprint(INSTRUCTION *startp, INSTRUCTION *endp, int flags)
                        indent_out();
                        if (do_profile)
                                indent(0);
-                       fprintf(prof_fp, "}\n\n");
+                       fprintf(prof_fp, "}\n");
                        pc = (pc + 1)->lasti;
                        break;
 
@@ -1338,7 +1359,7 @@ print_lib_list(FILE *prof_fp)
                }
        }
        if (found)      /* we found some */
-               fprintf(prof_fp, "\n");
+               at_start = false;
 }
 
 /* print_include_list --- print a list of all files included */
@@ -1369,7 +1390,7 @@ print_include_list(FILE *prof_fp)
                }
        }
        if (found)      /* we found some */
-               fprintf(prof_fp, "\n");
+               at_start = false;
 }
 
 /* print_comment --- print comment text with proper indentation */
@@ -1381,6 +1402,13 @@ print_comment(INSTRUCTION* pc, long in)
        size_t count;
        bool after_newline = false;
 
+       if (pc->memory->comment_type == BLOCK_COMMENT) {
+               if (! at_start && indent_level == 0)
+                       putc('\n', prof_fp);
+               else
+                       at_start = false;
+       }
+
        count = pc->memory->stlen;
        text = pc->memory->stptr;
 
@@ -2031,6 +2059,7 @@ pp_func(INSTRUCTION *pc, void *data ATTRIBUTE_UNUSED)
        if (do_profile)
                indent(0);
        fprintf(prof_fp, "}\n");
+       at_start = false;
        return 0;
 }
 
@@ -2071,8 +2100,8 @@ pp_namespace(const char *name, INSTRUCTION *comment)
        // info saved in Op_namespace instructions.
        current_namespace = name;
 
-       // force newline, could be after a comment
-       fprintf(prof_fp, "\n");
+       if (! at_start)
+               fprintf(prof_fp, "\n");
 
        if (do_profile)
                indent(SPACEOVER);
@@ -2082,9 +2111,11 @@ pp_namespace(const char *name, INSTRUCTION *comment)
        if (comment != NULL) {
                putc('\t', prof_fp);
                print_comment(comment, 0);
-               putc('\n', prof_fp);
+               // no newline here, print_comment puts one out
        } else
-               fprintf(prof_fp, "\n\n");
+               fprintf(prof_fp, "\n");
+
+       at_start = false;
 }
 
 /* pp_namespace_list --- print the list, back to front, using recursion */

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

Summary of changes:
 ChangeLog          |  18 ++-
 awk.h              |   1 +
 main.c             |   1 +
 profile.c          |  47 +++++--
 test/ChangeLog     |   8 ++
 test/lintplus2.ok  |   1 -
 test/mpfrmemok1.ok |   1 -
 test/nsprof1.ok    |   3 -
 test/nsprof2.ok    |   3 -
 test/nsprof3.ok    |   2 -
 test/profile0.ok   |   1 -
 test/profile11.ok  |  28 ++++
 test/profile13.ok  |   1 -
 test/profile14.ok  |   5 +-
 test/profile15.ok  |   2 -
 test/profile16.ok  |   2 -
 test/profile17.ok  |   1 -
 test/profile2.ok   |   1 -
 test/profile3.ok   |   1 -
 test/profile4.ok   |   1 -
 test/profile5.ok   | 386 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
 test/profile6.ok   |   1 -
 test/profile7.ok   |   1 -
 test/profile8.ok   |   1 -
 test/profile9.ok   |   3 +-
 25 files changed, 482 insertions(+), 38 deletions(-)


hooks/post-receive
-- 
gawk



reply via email to

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