aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/ChangeLog43
-rw-r--r--test/Makefile.am83
-rw-r--r--test/Makefile.in118
-rw-r--r--test/Maketests35
-rw-r--r--test/backgsub.ok2
-rw-r--r--test/beginfile2.in242
-rw-r--r--test/beginfile2.ok90
-rwxr-xr-xtest/beginfile2.sh82
-rw-r--r--test/fpat3.awk10
-rw-r--r--test/fpat3.in1
-rw-r--r--test/fpat3.ok4
-rw-r--r--test/fwtest3.awk1
-rw-r--r--test/fwtest3.in1
-rw-r--r--test/fwtest3.ok1
-rw-r--r--test/getline4.awk1
-rw-r--r--test/getline4.in1
-rw-r--r--test/getline4.ok1
-rw-r--r--test/gsubtst7.awk92
-rw-r--r--test/gsubtst7.in1
-rw-r--r--test/gsubtst7.ok1
-rw-r--r--test/gsubtst8.awk5
-rw-r--r--test/gsubtst8.in2
-rw-r--r--test/gsubtst8.ok2
-rw-r--r--test/pty1.awk54
-rw-r--r--test/pty1.ok2
-rw-r--r--test/rtlen.ok3
-rwxr-xr-xtest/rtlen.sh5
-rw-r--r--test/rtlen01.ok3
-rwxr-xr-xtest/rtlen01.sh8
-rw-r--r--test/sortu.awk6
-rw-r--r--test/sortu.ok6
31 files changed, 865 insertions, 41 deletions
diff --git a/test/ChangeLog b/test/ChangeLog
index 2ae225be..21224fd7 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -1,3 +1,46 @@
+2011-10-02 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (rtlen, rtlen01, rtlenmb): New tests.
+ * rtlen.ok, rtlen.sh, rtlen01.ok, rtlen01.sh: New files.
+ Thanks to Rogier <rogier777@gmail.com> as forwarded by
+ Jeroen Schot <schot@A-Eskwadraat.nl>.
+
+2011-08-10 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (beginfile2, fpat3, fwtest3): New tests.
+ * beginfile2.awk, beginfile2.in, beginfile2.ok: New files.
+ * fpat3.awk, fpat3.in, fpat3.ok: New files.
+ * fwtest3.awk, fwtest3.in, fwtest3.ok: New files.
+
+2011-08-09 Arnold D. Robbins <arnold@skeeve.com>
+
+ * pty1.awk, pty1.ok: New files.
+ * Makefile.am (pty1): New test.
+ (profile1, profile2, profile3): Use unique names for the profile
+ files to avoid problems with parallel 'make check'
+
+2011-07-29 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (next): Redirect output to output file!
+
+2011-07-28 Arnold D. Robbins <arnold@skeeve.com>
+
+ * sortu.awk, sortu.ok: Modified to make numeric comparison do
+ a stable sort. Thanks to Peter Fales <Peter.Fales@alcatel-lucent.com>.
+ * backgsub.ok: Update for change in code.
+ * Makefile.am (posix2008sub): Add --posix to invocation.
+
+2011-07-26 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (getline4, gsubtst8): New tests.
+ * getline4.awk, getline4.in, getline4.ok: New files.
+ * gsubtst8.awk, gsubtst8.in, gsubtst8.ok: New files.
+
+2011-07-15 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (gsubtst7): New test.
+ * gsubtst7.awk, gsubtst7.in, gsubtst7.ok: New files.
+
2011-06-24 Arnold D. Robbins <arnold@skeeve.com>
* Makefile.am (EXTRA_DIST): Add ChangeLog.0.
diff --git a/test/Makefile.am b/test/Makefile.am
index 2d7bf34f..57d4d464 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -115,6 +115,9 @@ EXTRA_DIST = \
badargs.ok \
beginfile1.awk \
beginfile1.ok \
+ beginfile2.in \
+ beginfile2.ok \
+ beginfile2.sh \
binmode1.ok \
childin.awk \
childin.in \
@@ -231,6 +234,9 @@ EXTRA_DIST = \
fpat1.ok \
fpat2.awk \
fpat2.ok \
+ fpat3.awk \
+ fpat3.in \
+ fpat3.ok \
fpatnull.awk \
fpatnull.in \
fpatnull.ok \
@@ -271,6 +277,9 @@ EXTRA_DIST = \
fwtest2.awk \
fwtest2.in \
fwtest2.ok \
+ fwtest3.awk \
+ fwtest3.in \
+ fwtest3.ok \
gensub.awk \
gensub.in \
gensub.ok \
@@ -283,6 +292,9 @@ EXTRA_DIST = \
getline2.ok \
getline3.awk \
getline3.ok \
+ getline4.awk \
+ getline4.in \
+ getline4.ok \
getlnbuf.awk \
getlnbuf.in \
getlnbuf.ok \
@@ -318,6 +330,12 @@ EXTRA_DIST = \
gsubtst5.ok \
gsubtst6.awk \
gsubtst6.ok \
+ gsubtst7.awk \
+ gsubtst7.in \
+ gsubtst7.ok \
+ gsubtst8.awk \
+ gsubtst8.in \
+ gsubtst8.ok \
gtlnbufv.awk \
hex.awk \
hex.ok \
@@ -567,6 +585,8 @@ EXTRA_DIST = \
prt1eval.ok \
prtoeval.awk \
prtoeval.ok \
+ pty1.awk \
+ pty1.ok \
rand.awk \
rand.ok \
range1.awk \
@@ -635,6 +655,10 @@ EXTRA_DIST = \
rswhite.awk \
rswhite.in \
rswhite.ok \
+ rtlen.ok \
+ rtlen.sh \
+ rtlen01.ok \
+ rtlen01.sh \
scalar.awk \
scalar.ok \
sclforin.awk \
@@ -766,8 +790,10 @@ BASIC_TESTS = \
dfastress dynlj eofsplit exitval1 exitval2 fcall_exit fcall_exit2 \
fldchg fldchgnf fnamedat fnarray fnarray2 fnaryscl fnasgnm fnmisc \
fordel forref forsimp fsbs fsrs fsspcoln fstabplus funsemnl funsmnam \
- funstack getline getline2 getline3 getlnbuf getnr2tb getnr2tm \
+ funstack getline getline2 getline3 getline4 \
+ getlnbuf getnr2tb getnr2tm \
gsubasgn gsubtest gsubtst2 gsubtst3 gsubtst4 gsubtst5 gsubtst6 \
+ gsubtst7 gsubtst8 \
hex hsprint inputred intest intprec iobug1 leaddig leadnl litoct \
longsub longwrds manglprm math membug1 messages minusstr mmap8k \
mtchi18n nasty nasty2 negexp negrange nested nfldstr nfneg \
@@ -786,17 +812,22 @@ BASIC_TESTS = \
wjposer1 zero2 zeroe0 zeroflag
UNIX_TESTS = \
- fflush getlnhd localenl pid pipeio1 pipeio2 poundbang space strftlng
+ fflush getlnhd localenl pid pipeio1 pipeio2 poundbang rtlen rtlen01 \
+ space strftlng
GAWK_EXT_TESTS = \
aadelete1 aadelete2 aarray1 aasort aasorti argtest arraysort \
- backw badargs beginfile1 binmode1 clos1way delsub devfd devfd1 \
- devfd2 dumpvars exit fieldwdth fpat1 fpat2 fpatnull fsfwfs funlen \
- fwtest fwtest2 gensub gensub2 getlndir gnuops2 gnuops3 gnureops \
+ backw badargs beginfile1 beginfile2 \
+ binmode1 clos1way delsub devfd devfd1 \
+ devfd2 dumpvars exit fieldwdth fpat1 fpat2 fpat3 \
+ fpatnull fsfwfs funlen \
+ fwtest fwtest2 fwtest3 \
+ gensub gensub2 getlndir gnuops2 gnuops3 gnureops \
icasefs icasers igncdym igncfs ignrcas2 ignrcase indirectcall lint \
lintold lintwarn manyfiles match1 match2 match3 mbstr1 nastyparm \
next nondec nondec2 patsplit posix printfbad1 printfbad2 procinfs \
- profile1 profile2 profile3 rebuf regx8bit reint reint2 rsstart1 \
+ profile1 profile2 profile3 pty1 \
+ rebuf regx8bit reint reint2 rsstart1 \
rsstart2 rsstart3 rstest6 shadow sortfor sortu splitarg4 strftime \
strtonum switch2
@@ -808,7 +839,7 @@ MACHINE_TESTS = double1 double2 fmtspcl intformat
LOCALE_CHARSET_TESTS = \
asort asorti fmttest fnarydel fnparydl lc_num1 mbfw1 \
- mbprintf1 mbprintf2 mbprintf3 rebt8b2 sort1 sprintfc
+ mbprintf1 mbprintf2 mbprintf3 rebt8b2 rtlenmb sort1 sprintfc
# List of the tests which should be run with --lint option:
NEED_LINT = \
@@ -1238,6 +1269,22 @@ rsstart3::
@head $(srcdir)/rsstart1.in | $(AWK) -f $(srcdir)/rsstart2.awk >_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+rtlen::
+ @echo $@
+ @$(srcdir)/$@.sh >_$@ || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rtlen01::
+ @echo $@
+ @$(srcdir)/$@.sh >_$@ || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rtlenmb::
+ @echo $@
+ @GAWKLOCALE=en_US.UTF-8 ; export GAWKLOCALE ; \
+ $(srcdir)/rtlen.sh >_$@ || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/rtlen.ok _$@ && rm -f _$@
+
nondec2::
@echo $@
@$(AWK) --non-decimal-data -v a=0x1 -f $(srcdir)/$@.awk >_$@
@@ -1341,6 +1388,11 @@ beginfile1::
@AWKPATH=$(srcdir) $(AWK) -f $@.awk $(srcdir)/$@.awk . ./no/such/file Makefile >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+beginfile2:
+ @echo $@
+ @-AWK="$(AWKPROG)" $(srcdir)/$@.sh $(srcdir)/$@.in > _$@ 2>&1
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
dumpvars::
@echo $@
@AWKPATH=$(srcdir) $(AWK) --dump-variables 1 < $(srcdir)/$@.in >/dev/null 2>&1 || echo EXIT CODE: $$? >>_$@
@@ -1349,20 +1401,25 @@ dumpvars::
profile1:
@echo $@
- @$(AWK) --profile -f $(srcdir)/xref.awk $(srcdir)/dtdgport.awk > _$@.out1
- @$(AWK) -f awkprof.out $(srcdir)/dtdgport.awk > _$@.out2 ; rm awkprof.out
+ @$(AWK) --profile=ap-$@.out -f $(srcdir)/xref.awk $(srcdir)/dtdgport.awk > _$@.out1
+ @$(AWK) -f ap-$@.out $(srcdir)/dtdgport.awk > _$@.out2 ; rm ap-$@.out
@cmp _$@.out1 _$@.out2 && rm _$@.out[12] || echo EXIT CODE: $$? >>_$@
profile2:
@echo $@
- @$(PGAWK) -v sortcmd=sort -f $(srcdir)/xref.awk $(srcdir)/dtdgport.awk > /dev/null
- @sed 1,2d < awkprof.out > _$@; rm awkprof.out
+ @$(PGAWK) --profile=ap-$@.out -v sortcmd=sort -f $(srcdir)/xref.awk $(srcdir)/dtdgport.awk > /dev/null
+ @sed 1,2d < ap-$@.out > _$@; rm ap-$@.out
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
profile3:
@echo $@
- @$(PGAWK) -f $(srcdir)/$@.awk > /dev/null
- @sed 1,2d < awkprof.out > _$@; rm awkprof.out
+ @$(PGAWK) --profile=ap-$@.out -f $(srcdir)/$@.awk > /dev/null
+ @sed 1,2d < ap-$@.out > _$@; rm ap-$@.out
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+posix2008sub:
+ @echo $@
+ @$(AWK) --posix -f $(srcdir)/$@.awk > _$@ 2>&1
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
next:
diff --git a/test/Makefile.in b/test/Makefile.in
index 04ea041c..e5ff2005 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -300,6 +300,9 @@ EXTRA_DIST = \
badargs.ok \
beginfile1.awk \
beginfile1.ok \
+ beginfile2.in \
+ beginfile2.ok \
+ beginfile2.sh \
binmode1.ok \
childin.awk \
childin.in \
@@ -416,6 +419,9 @@ EXTRA_DIST = \
fpat1.ok \
fpat2.awk \
fpat2.ok \
+ fpat3.awk \
+ fpat3.in \
+ fpat3.ok \
fpatnull.awk \
fpatnull.in \
fpatnull.ok \
@@ -456,6 +462,9 @@ EXTRA_DIST = \
fwtest2.awk \
fwtest2.in \
fwtest2.ok \
+ fwtest3.awk \
+ fwtest3.in \
+ fwtest3.ok \
gensub.awk \
gensub.in \
gensub.ok \
@@ -468,6 +477,9 @@ EXTRA_DIST = \
getline2.ok \
getline3.awk \
getline3.ok \
+ getline4.awk \
+ getline4.in \
+ getline4.ok \
getlnbuf.awk \
getlnbuf.in \
getlnbuf.ok \
@@ -503,6 +515,12 @@ EXTRA_DIST = \
gsubtst5.ok \
gsubtst6.awk \
gsubtst6.ok \
+ gsubtst7.awk \
+ gsubtst7.in \
+ gsubtst7.ok \
+ gsubtst8.awk \
+ gsubtst8.in \
+ gsubtst8.ok \
gtlnbufv.awk \
hex.awk \
hex.ok \
@@ -752,6 +770,8 @@ EXTRA_DIST = \
prt1eval.ok \
prtoeval.awk \
prtoeval.ok \
+ pty1.awk \
+ pty1.ok \
rand.awk \
rand.ok \
range1.awk \
@@ -820,6 +840,10 @@ EXTRA_DIST = \
rswhite.awk \
rswhite.in \
rswhite.ok \
+ rtlen.ok \
+ rtlen.sh \
+ rtlen01.ok \
+ rtlen01.sh \
scalar.awk \
scalar.ok \
sclforin.awk \
@@ -951,8 +975,10 @@ BASIC_TESTS = \
dfastress dynlj eofsplit exitval1 exitval2 fcall_exit fcall_exit2 \
fldchg fldchgnf fnamedat fnarray fnarray2 fnaryscl fnasgnm fnmisc \
fordel forref forsimp fsbs fsrs fsspcoln fstabplus funsemnl funsmnam \
- funstack getline getline2 getline3 getlnbuf getnr2tb getnr2tm \
+ funstack getline getline2 getline3 getline4 \
+ getlnbuf getnr2tb getnr2tm \
gsubasgn gsubtest gsubtst2 gsubtst3 gsubtst4 gsubtst5 gsubtst6 \
+ gsubtst7 gsubtst8 \
hex hsprint inputred intest intprec iobug1 leaddig leadnl litoct \
longsub longwrds manglprm math membug1 messages minusstr mmap8k \
mtchi18n nasty nasty2 negexp negrange nested nfldstr nfneg \
@@ -971,17 +997,22 @@ BASIC_TESTS = \
wjposer1 zero2 zeroe0 zeroflag
UNIX_TESTS = \
- fflush getlnhd localenl pid pipeio1 pipeio2 poundbang space strftlng
+ fflush getlnhd localenl pid pipeio1 pipeio2 poundbang rtlen rtlen01 \
+ space strftlng
GAWK_EXT_TESTS = \
aadelete1 aadelete2 aarray1 aasort aasorti argtest arraysort \
- backw badargs beginfile1 binmode1 clos1way delsub devfd devfd1 \
- devfd2 dumpvars exit fieldwdth fpat1 fpat2 fpatnull fsfwfs funlen \
- fwtest fwtest2 gensub gensub2 getlndir gnuops2 gnuops3 gnureops \
+ backw badargs beginfile1 beginfile2 \
+ binmode1 clos1way delsub devfd devfd1 \
+ devfd2 dumpvars exit fieldwdth fpat1 fpat2 fpat3 \
+ fpatnull fsfwfs funlen \
+ fwtest fwtest2 fwtest3 \
+ gensub gensub2 getlndir gnuops2 gnuops3 gnureops \
icasefs icasers igncdym igncfs ignrcas2 ignrcase indirectcall lint \
lintold lintwarn manyfiles match1 match2 match3 mbstr1 nastyparm \
next nondec nondec2 patsplit posix printfbad1 printfbad2 procinfs \
- profile1 profile2 profile3 rebuf regx8bit reint reint2 rsstart1 \
+ profile1 profile2 profile3 pty1 \
+ rebuf regx8bit reint reint2 rsstart1 \
rsstart2 rsstart3 rstest6 shadow sortfor sortu splitarg4 strftime \
strtonum switch2
@@ -990,7 +1021,7 @@ INET_TESTS = inetdayu inetdayt inetechu inetecht
MACHINE_TESTS = double1 double2 fmtspcl intformat
LOCALE_CHARSET_TESTS = \
asort asorti fmttest fnarydel fnparydl lc_num1 mbfw1 \
- mbprintf1 mbprintf2 mbprintf3 rebt8b2 sort1 sprintfc
+ mbprintf1 mbprintf2 mbprintf3 rebt8b2 rtlenmb sort1 sprintfc
# List of the tests which should be run with --lint option:
@@ -1589,6 +1620,22 @@ rsstart3::
@head $(srcdir)/rsstart1.in | $(AWK) -f $(srcdir)/rsstart2.awk >_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+rtlen::
+ @echo $@
+ @$(srcdir)/$@.sh >_$@ || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rtlen01::
+ @echo $@
+ @$(srcdir)/$@.sh >_$@ || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rtlenmb::
+ @echo $@
+ @GAWKLOCALE=en_US.UTF-8 ; export GAWKLOCALE ; \
+ $(srcdir)/rtlen.sh >_$@ || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/rtlen.ok _$@ && rm -f _$@
+
nondec2::
@echo $@
@$(AWK) --non-decimal-data -v a=0x1 -f $(srcdir)/$@.awk >_$@
@@ -1692,6 +1739,11 @@ beginfile1::
@AWKPATH=$(srcdir) $(AWK) -f $@.awk $(srcdir)/$@.awk . ./no/such/file Makefile >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+beginfile2:
+ @echo $@
+ @-AWK="$(AWKPROG)" $(srcdir)/$@.sh $(srcdir)/$@.in > _$@ 2>&1
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
dumpvars::
@echo $@
@AWKPATH=$(srcdir) $(AWK) --dump-variables 1 < $(srcdir)/$@.in >/dev/null 2>&1 || echo EXIT CODE: $$? >>_$@
@@ -1700,20 +1752,25 @@ dumpvars::
profile1:
@echo $@
- @$(AWK) --profile -f $(srcdir)/xref.awk $(srcdir)/dtdgport.awk > _$@.out1
- @$(AWK) -f awkprof.out $(srcdir)/dtdgport.awk > _$@.out2 ; rm awkprof.out
+ @$(AWK) --profile=ap-$@.out -f $(srcdir)/xref.awk $(srcdir)/dtdgport.awk > _$@.out1
+ @$(AWK) -f ap-$@.out $(srcdir)/dtdgport.awk > _$@.out2 ; rm ap-$@.out
@cmp _$@.out1 _$@.out2 && rm _$@.out[12] || echo EXIT CODE: $$? >>_$@
profile2:
@echo $@
- @$(PGAWK) -v sortcmd=sort -f $(srcdir)/xref.awk $(srcdir)/dtdgport.awk > /dev/null
- @sed 1,2d < awkprof.out > _$@; rm awkprof.out
+ @$(PGAWK) --profile=ap-$@.out -v sortcmd=sort -f $(srcdir)/xref.awk $(srcdir)/dtdgport.awk > /dev/null
+ @sed 1,2d < ap-$@.out > _$@; rm ap-$@.out
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
profile3:
@echo $@
- @$(PGAWK) -f $(srcdir)/$@.awk > /dev/null
- @sed 1,2d < awkprof.out > _$@; rm awkprof.out
+ @$(PGAWK) --profile=ap-$@.out -f $(srcdir)/$@.awk > /dev/null
+ @sed 1,2d < ap-$@.out > _$@; rm ap-$@.out
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+posix2008sub:
+ @echo $@
+ @$(AWK) --posix -f $(srcdir)/$@.awk > _$@ 2>&1
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
next:
@@ -2042,6 +2099,11 @@ getline3:
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+getline4:
+ @echo getline4
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
getnr2tb:
@echo getnr2tb
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@@ -2077,6 +2139,16 @@ gsubtst5:
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+gsubtst7:
+ @echo gsubtst7
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+gsubtst8:
+ @echo gsubtst8
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
hex:
@echo hex
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@@ -2317,11 +2389,6 @@ pcntplus:
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-posix2008sub:
- @echo posix2008sub
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
prdupval:
@echo prdupval
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@@ -2647,6 +2714,11 @@ fpat2:
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+fpat3:
+ @echo fpat3
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
fpatnull:
@echo fpatnull
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@@ -2672,6 +2744,11 @@ fwtest2:
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+fwtest3:
+ @echo fwtest3
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
gensub:
@echo gensub
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@@ -2792,6 +2869,11 @@ procinfs:
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+pty1:
+ @echo pty1
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
rebuf:
@echo rebuf
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
diff --git a/test/Maketests b/test/Maketests
index 9a16eb7c..c76769f4 100644
--- a/test/Maketests
+++ b/test/Maketests
@@ -315,6 +315,11 @@ getline3:
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+getline4:
+ @echo getline4
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
getnr2tb:
@echo getnr2tb
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@@ -350,6 +355,16 @@ gsubtst5:
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+gsubtst7:
+ @echo gsubtst7
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+gsubtst8:
+ @echo gsubtst8
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
hex:
@echo hex
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@@ -590,11 +605,6 @@ pcntplus:
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-posix2008sub:
- @echo posix2008sub
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
prdupval:
@echo prdupval
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@@ -920,6 +930,11 @@ fpat2:
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+fpat3:
+ @echo fpat3
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
fpatnull:
@echo fpatnull
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@@ -945,6 +960,11 @@ fwtest2:
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+fwtest3:
+ @echo fwtest3
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
gensub:
@echo gensub
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@@ -1065,6 +1085,11 @@ procinfs:
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+pty1:
+ @echo pty1
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
rebuf:
@echo rebuf
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
diff --git a/test/backgsub.ok b/test/backgsub.ok
index 2d3f17f0..e2e265fa 100644
--- a/test/backgsub.ok
+++ b/test/backgsub.ok
@@ -1 +1 @@
-\x\y\z
+\\x\\y\\z
diff --git a/test/beginfile2.in b/test/beginfile2.in
new file mode 100644
index 00000000..5b7cc833
--- /dev/null
+++ b/test/beginfile2.in
@@ -0,0 +1,242 @@
+#TEST1#
+BEGINFILE {
+ print "In BEGINFILE:", FILENAME
+}
+BEGIN {
+ count = 0
+ print "In BEGIN"
+ while (getline > 0)
+ count++;
+ print count == NR
+}
+
+#TEST2#
+BEGINFILE {
+ print "In BEGINFILE:", FILENAME
+ nextfile
+}
+ENDFILE{
+ print "In ENDFILE:", FILENAME
+}
+
+
+#TEST3#
+BEGINFILE {
+ print "In BEGINFILE:", FILENAME
+}
+END {
+ print "executing END rule"
+ ARGV[ARGC++] = "beginfile.sh";
+ count = 0
+ while (getline> 0)
+ count++;
+ print count == FNR
+ print "Done executing END rule"
+}
+ENDFILE {
+ print "In ENDFILE:", FILENAME
+}
+
+#TEST4#
+BEGINFILE {
+ print "In BEGINFILE:", FILENAME
+ nextfile
+}
+END {
+ print "executing END rule"
+ ARGV[ARGC++] = "beginfile.sh";
+ getline
+ print $0
+ print "Done executing END rule"
+}
+ENDFILE {
+ print "ENDFILE:", FILENAME
+}
+
+
+#TEST5#
+BEGIN {
+ getline
+ count++
+ print NR, count
+}
+{
+ count++
+}
+END {
+ print NR == count
+}
+
+#TEST6#
+BEGINFILE {
+ print "In BEGINFILE:", FILENAME
+ count = 0
+}
+BEGIN {
+ getline
+ count++
+ print FNR, count
+}
+{
+ count++
+}
+ENDFILE {
+ print "In ENDFILE:", FILENAME
+ print count == FNR
+}
+
+#TEST7#
+BEGINFILE {
+ print "In BEGINFILE:", FILENAME
+ count = 0
+ if (ARGIND == 1)
+ nextfile
+}
+BEGIN {
+ getline
+ print "In BEGIN:", FILENAME
+}
+{ count++ }
+ENDFILE {
+ print "In ENDFILE:", FILENAME
+ print (FNR - count)
+}
+
+#TEST8#
+function f(a, b) {
+ getline
+ print FILENAME
+ print a, b
+}
+function g(x, y) {
+ return x
+}
+BEGINFILE { nextfile }
+BEGIN { g(3, f(1, 2)) }
+
+#TEST9#
+function f(a, b) {
+ b = b ":" a;
+ if (skip || ERRNO != "") {
+ print "Skipping:", b
+ nextfile
+ }
+ return b
+}
+BEGINFILE { print "In BEGINFILE:", f(FILENAME, ++i)}
+FNR == 1 { print "In Rule:", FILENAME }
+ENDFILE { print "In ENDFILE:", FILENAME }
+
+#TEST10#
+function f() {
+ nextfile
+}
+function g( cnt) {
+ cnt = 0
+ while (getline > 0)
+ cnt++;
+ return cnt
+}
+BEGINFILE { if (ARGIND == 1) f(); }
+BEGIN {
+ print g(), NR
+}
+
+#TEST11#
+function f(a, b) {
+ print a
+ nextfile
+ print b
+}
+function g(x, y) {
+ print x
+ getline
+ return y
+}
+BEGINFILE { ARGIND == 1 ? g(3, f(FILENAME, 2)) : f(3, g(FILENAME, 2)) }
+
+#TEST12#
+BEGINFILE {
+ print "In BEGINFILE:", FILENAME
+}
+function g() {
+ nextfile
+}
+function f( cnt) {
+ print cnt + 0
+ while (getline > 0) {
+ if (++cnt == 2) {
+ g()
+ print "shouldn't see this line"
+ }
+ }
+}
+{
+ print FNR
+ f()
+}
+ENDFILE {
+ print "In ENDFILE:", FILENAME
+}
+
+#TEST13#
+# exit in BEGINFILE
+BEGINFILE {
+ print "In BEGINFILE:", FILENAME
+ exit(0)
+}
+ENDFILE {
+ print "In ENDFILE:", FILENAME
+}
+END {
+ print "In END:", FILENAME
+ while (getline > 0)
+ ;
+ print "shouldn't see this line"
+}
+
+#TEST14#
+# exit in ENDFILE
+BEGINFILE {
+ print "In BEGINFILE:", FILENAME
+}
+ENDFILE {
+ print "In ENDFILE:", FILENAME
+ exit(0)
+}
+END {
+ print "In END:", FILENAME
+ while (getline > 0)
+ ;
+ print "shouldn't see this line"
+}
+
+#TEST15#
+BEGINFILE {
+ print "BEGINFILE:", FILENAME
+}
+{ nextfile }
+END {
+ print NR
+}
+
+#TEST16#
+BEGINFILE {
+ print "In BEGINFILE:", FILENAME
+}
+BEGIN {
+ getline
+ print "In BEGIN:", FILENAME
+}
+{
+ if (NR == FNR) {
+ print "In Rule:", FILENAME
+ nextfile
+ }
+ exit(0)
+}
+
+ENDFILE {
+ print "In ENDFILE: ", FILENAME
+}
+
diff --git a/test/beginfile2.ok b/test/beginfile2.ok
new file mode 100644
index 00000000..c3029c7c
--- /dev/null
+++ b/test/beginfile2.ok
@@ -0,0 +1,90 @@
+--Test 1a--
+In BEGIN
+In BEGINFILE: beginfile2.in
+1
+--Test 1b--
+In BEGIN
+In BEGINFILE: beginfile2.in
+In BEGINFILE: /file/does/not/exist
+gawk: cmd. line:3: fatal: cannot open file `/file/does/not/exist' for reading (No such file or directory)
+--Test 2--
+In BEGINFILE: beginfile2.in
+In ENDFILE: beginfile2.in
+In BEGINFILE: /file/does/not/exist
+--Test 3--
+In BEGINFILE: beginfile2.in
+In ENDFILE: beginfile2.in
+executing END rule
+In BEGINFILE: beginfile.sh
+gawk: cmd. line:3: fatal: cannot open file `beginfile.sh' for reading (No such file or directory)
+--Test 4--
+In BEGINFILE: beginfile2.in
+ENDFILE: beginfile2.in
+executing END rule
+In BEGINFILE: beginfile.sh
+
+Done executing END rule
+--Test 5--
+1 1
+1
+--Test 6--
+In BEGINFILE: beginfile2.in
+1 1
+In ENDFILE: beginfile2.in
+1
+--Test 7--
+In BEGINFILE: beginfile2.in
+In ENDFILE: beginfile2.in
+0
+In BEGINFILE: beginfile2.sh
+In BEGIN: beginfile2.sh
+In ENDFILE: beginfile2.sh
+1
+--Test 8--
+beginfile2.in
+1 2
+--Test 9a--
+Skipping: 1:/file/does/not/exist
+In BEGINFILE: 2:beginfile2.in
+In Rule: beginfile2.in
+In ENDFILE: beginfile2.in
+--Test 9b--
+Skipping: 1:/file/does/not/exist
+Skipping: 2:beginfile2.in
+In ENDFILE: beginfile2.in
+--Test 10--
+82 82
+--Test 11--
+beginfile2.in
+beginfile2.sh
+gawk: cmd. line:9: fatal: non-redirected `getline' invalid inside `BEGINFILE' rule
+--Test 12--
+In BEGINFILE: beginfile2.in
+1
+0
+In ENDFILE: beginfile2.in
+In BEGINFILE: beginfile2.sh
+1
+0
+In ENDFILE: beginfile2.sh
+--Test 13--
+In BEGINFILE: beginfile2.in
+In END: beginfile2.in
+In ENDFILE: beginfile2.in
+In BEGINFILE: beginfile2.sh
+--Test 14--
+In BEGINFILE: beginfile2.in
+In ENDFILE: beginfile2.in
+In END: beginfile2.in
+In BEGINFILE: beginfile2.sh
+In ENDFILE: beginfile2.sh
+--Test 15--
+BEGINFILE: beginfile2.in
+BEGINFILE: beginfile2.sh
+2
+--Test 16--
+In BEGINFILE: beginfile2.in
+In BEGIN: beginfile2.in
+In Rule: beginfile2.in
+In ENDFILE: beginfile2.in
+In BEGINFILE: beginfile2.sh
diff --git a/test/beginfile2.sh b/test/beginfile2.sh
new file mode 100755
index 00000000..19deef62
--- /dev/null
+++ b/test/beginfile2.sh
@@ -0,0 +1,82 @@
+#!/bin/sh
+
+# beginfile2.sh --- test BEGINFILE/ENDFILE/getline/nextfile/exit combinations
+
+AWK="../gawk"
+AWKPROG="beginfile2.in"
+SCRIPT=`basename $0`
+
+if [ "$AWK" = "" ]
+then
+ echo $0: You must set AWK >&2
+ exit 1
+fi
+
+echo "--Test 1a--"
+prog=$($AWK '/#TEST1#/, /#TEST2#/' $AWKPROG)
+$AWK "$prog" $AWKPROG
+echo "--Test 1b--"
+$AWK "$prog" $AWKPROG /file/does/not/exist
+
+echo "--Test 2--"
+prog=$($AWK '/#TEST2#/, /#TEST3#/' $AWKPROG)
+$AWK "$prog" $AWKPROG /file/does/not/exist
+
+echo "--Test 3--"
+prog=$($AWK '/#TEST3#/, /#TEST4#/' $AWKPROG)
+$AWK "$prog" $AWKPROG
+
+echo "--Test 4--"
+prog=$($AWK '/#TEST4#/, /#TEST5#/' $AWKPROG)
+$AWK "$prog" $AWKPROG
+
+echo "--Test 5--"
+prog=$($AWK '/#TEST5#/, /#TEST6#/' $AWKPROG)
+$AWK "$prog" $AWKPROG
+
+echo "--Test 6--"
+prog=$($AWK '/#TEST6#/, /#TEST7#/' $AWKPROG)
+$AWK "$prog" $AWKPROG
+
+echo "--Test 7--"
+prog=$($AWK '/#TEST7#/, /#TEST8#/' $AWKPROG)
+$AWK "$prog" $AWKPROG $SCRIPT
+
+echo "--Test 8--"
+prog=$($AWK '/#TEST8#/, /#TEST9#/' $AWKPROG)
+$AWK "$prog" $AWKPROG
+
+echo "--Test 9a--"
+prog=$($AWK '/#TEST9#/, /#TEST10#/' $AWKPROG)
+$AWK "$prog" /file/does/not/exist $AWKPROG
+echo "--Test 9b--"
+$AWK -vskip=1 "$prog" /file/does/not/exist $AWKPROG
+
+echo "--Test 10--"
+prog=$($AWK '/#TEST10#/, /#TEST11#/' $AWKPROG)
+$AWK "$prog" $AWKPROG $SCRIPT
+
+echo "--Test 11--"
+prog=$($AWK '/#TEST11#/, /#TEST12#/' $AWKPROG)
+$AWK "$prog" $AWKPROG $SCRIPT
+
+echo "--Test 12--"
+prog=$($AWK '/#TEST12#/, /#TEST13#/' $AWKPROG)
+$AWK "$prog" $AWKPROG $SCRIPT
+
+echo "--Test 13--"
+prog=$($AWK '/#TEST13#/, /#TEST14#/' $AWKPROG)
+$AWK "$prog" $AWKPROG $SCRIPT
+
+echo "--Test 14--"
+prog=$($AWK '/#TEST14#/, /#TEST15#/' $AWKPROG)
+$AWK "$prog" $AWKPROG $SCRIPT
+
+echo "--Test 15--"
+prog=$($AWK '/#TEST15#/, /#TEST16#/' $AWKPROG)
+$AWK "$prog" $AWKPROG $SCRIPT
+
+echo "--Test 16--"
+prog=$($AWK '/#TEST16#/, /#TEST17#/' $AWKPROG)
+$AWK "$prog" $AWKPROG $SCRIPT
+
diff --git a/test/fpat3.awk b/test/fpat3.awk
new file mode 100644
index 00000000..801bb58e
--- /dev/null
+++ b/test/fpat3.awk
@@ -0,0 +1,10 @@
+BEGIN {
+ FPAT = "[^,]*"
+
+}
+
+{
+ if (x) NF
+ for (i = 1; i <= 4; ++i)
+ print i, $i
+}
diff --git a/test/fpat3.in b/test/fpat3.in
new file mode 100644
index 00000000..28416a42
--- /dev/null
+++ b/test/fpat3.in
@@ -0,0 +1 @@
+a,b,,c
diff --git a/test/fpat3.ok b/test/fpat3.ok
new file mode 100644
index 00000000..543bb429
--- /dev/null
+++ b/test/fpat3.ok
@@ -0,0 +1,4 @@
+1 a
+2 b
+3
+4 c
diff --git a/test/fwtest3.awk b/test/fwtest3.awk
new file mode 100644
index 00000000..d1384eaf
--- /dev/null
+++ b/test/fwtest3.awk
@@ -0,0 +1 @@
+BEGIN { FIELDWIDTHS="5" } { print $1 }
diff --git a/test/fwtest3.in b/test/fwtest3.in
new file mode 100644
index 00000000..a32a4347
--- /dev/null
+++ b/test/fwtest3.in
@@ -0,0 +1 @@
+1234567890
diff --git a/test/fwtest3.ok b/test/fwtest3.ok
new file mode 100644
index 00000000..e56e15bb
--- /dev/null
+++ b/test/fwtest3.ok
@@ -0,0 +1 @@
+12345
diff --git a/test/getline4.awk b/test/getline4.awk
new file mode 100644
index 00000000..275faaab
--- /dev/null
+++ b/test/getline4.awk
@@ -0,0 +1 @@
+END { getline $2; print}
diff --git a/test/getline4.in b/test/getline4.in
new file mode 100644
index 00000000..42771a3c
--- /dev/null
+++ b/test/getline4.in
@@ -0,0 +1 @@
+ aaa bbb
diff --git a/test/getline4.ok b/test/getline4.ok
new file mode 100644
index 00000000..42771a3c
--- /dev/null
+++ b/test/getline4.ok
@@ -0,0 +1 @@
+ aaa bbb
diff --git a/test/gsubtst7.awk b/test/gsubtst7.awk
new file mode 100644
index 00000000..e649f46e
--- /dev/null
+++ b/test/gsubtst7.awk
@@ -0,0 +1,92 @@
+# From bug-gawk-bounces+arnold=skeeve.com@gnu.org Tue Jul 12 08:18:24 2011
+# Return-Path: <bug-gawk-bounces+arnold=skeeve.com@gnu.org>
+# Received: from localhost (localhost [127.0.0.1])
+# by skeeve.com (8.14.3/8.14.3) with ESMTP id p6C5HArm002260
+# for <arnold@localhost>; Tue, 12 Jul 2011 08:18:23 +0300
+# X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on sls-af11p1
+# X-Spam-Level:
+# X-Spam-Status: No, score=-5.5 required=5.0 tests=BAYES_00,DNS_FROM_OPENWHOIS,
+# RCVD_IN_DNSWL_MED autolearn=ham version=3.2.5
+# X-Envelope-From: bug-gawk-bounces+arnold=skeeve.com@gnu.org
+# Received: from server1.f7.net [66.148.120.132]
+# by localhost with IMAP (fetchmail-6.3.11)
+# for <arnold@localhost> (single-drop); Tue, 12 Jul 2011 08:18:23 +0300 (IDT)
+# Received: from lists.gnu.org (lists.gnu.org [140.186.70.17])
+# by freefriends.org (8.14.4/8.14.4) with ESMTP id p6BIYi4t032040;
+# Mon, 11 Jul 2011 14:34:48 -0400
+# Received: from localhost ([::1]:38787 helo=lists.gnu.org)
+# by lists.gnu.org with esmtp (Exim 4.71)
+# (envelope-from <bug-gawk-bounces+arnold=skeeve.com@gnu.org>)
+# id 1QgLJb-0004tM-Eg
+# for arnold@skeeve.com; Mon, 11 Jul 2011 14:34:43 -0400
+# Received: from eggs.gnu.org ([140.186.70.92]:54022)
+# by lists.gnu.org with esmtp (Exim 4.71)
+# (envelope-from <kornet@camk.edu.pl>) id 1QgD0R-0004Vi-HZ
+# for bug-gawk@gnu.org; Mon, 11 Jul 2011 05:42:24 -0400
+# Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
+# (envelope-from <kornet@camk.edu.pl>) id 1QgD0Q-0000SE-8u
+# for bug-gawk@gnu.org; Mon, 11 Jul 2011 05:42:23 -0400
+# Received: from moat.camk.edu.pl ([148.81.175.50]:34696)
+# by eggs.gnu.org with esmtp (Exim 4.71)
+# (envelope-from <kornet@camk.edu.pl>) id 1QgD0P-0000Px-V3
+# for bug-gawk@gnu.org; Mon, 11 Jul 2011 05:42:22 -0400
+# Received: from localhost (localhost.localdomain [127.0.0.1])
+# by moat.camk.edu.pl (Postfix) with ESMTP id 72C1D5F004C
+# for <bug-gawk@gnu.org>; Mon, 11 Jul 2011 11:42:13 +0200 (CEST)
+# X-Virus-Scanned: amavisd-new at camk.edu.pl
+# Received: from moat.camk.edu.pl ([127.0.0.1])
+# by localhost (liam.camk.edu.pl [127.0.0.1]) (amavisd-new, port 10024)
+# with LMTP id oh+-Yw+zHhK6 for <bug-gawk@gnu.org>;
+# Mon, 11 Jul 2011 11:42:07 +0200 (CEST)
+# Received: from gatekeeper.camk.edu.pl (gatekeeper.camk.edu.pl [192.168.1.23])
+# by moat.camk.edu.pl (Postfix) with ESMTP id 89AA55F0046
+# for <bug-gawk@gnu.org>; Mon, 11 Jul 2011 11:42:07 +0200 (CEST)
+# Received: by gatekeeper.camk.edu.pl (Postfix, from userid 1293)
+# id 796C8809FB; Mon, 11 Jul 2011 11:42:07 +0200 (CEST)
+# Date: Mon, 11 Jul 2011 11:42:07 +0200
+# From: Kacper Kornet <draenog@pld-linux.org>
+# To: bug-gawk@gnu.org
+# Message-ID: <20110711094207.GA2616@camk.edu.pl>
+# MIME-Version: 1.0
+# Content-Type: text/plain; charset=iso-8859-2
+# Content-Disposition: inline
+# User-Agent: Mutt/1.5.20 (2009-06-14)
+# X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3)
+# X-Received-From: 148.81.175.50
+# X-Mailman-Approved-At: Mon, 11 Jul 2011 14:34:26 -0400
+# Subject: [bug-gawk] Change in behavior of gsub inside loop
+# X-BeenThere: bug-gawk@gnu.org
+# X-Mailman-Version: 2.1.14
+# Precedence: list
+# List-Id: "Bug reports and all discussion about gawk." <bug-gawk.gnu.org>
+# List-Unsubscribe: <https://lists.gnu.org/mailman/options/bug-gawk>,
+# <mailto:bug-gawk-request@gnu.org?subject=unsubscribe>
+# List-Archive: </archive/html/bug-gawk>
+# List-Post: <mailto:bug-gawk@gnu.org>
+# List-Help: <mailto:bug-gawk-request@gnu.org?subject=help>
+# List-Subscribe: <https://lists.gnu.org/mailman/listinfo/bug-gawk>,
+# <mailto:bug-gawk-request@gnu.org?subject=subscribe>
+# Errors-To: bug-gawk-bounces+arnold=skeeve.com@gnu.org
+# Sender: bug-gawk-bounces+arnold=skeeve.com@gnu.org
+# Status: R
+#
+# Hi,
+#
+# I have observed the following changed behavior between gawk-3.8.1 and
+# gakw-4.0.0. While in the former
+#
+# echo -ne ' aaa' | gawk '{for (c = 1; c <= NF; c++) {gsub("foo", "bar", $c); print}}'
+#
+# prints:
+#
+# aaa
+#
+# the gawk-4.0.0 does not preserve the leading spaces and prints:
+#
+# aaa
+#
+# Best regards,
+# --
+# Kacper
+#
+{for (c = 1; c <= NF; c++) {gsub("foo", "bar", $c); print}}
diff --git a/test/gsubtst7.in b/test/gsubtst7.in
new file mode 100644
index 00000000..88069bf7
--- /dev/null
+++ b/test/gsubtst7.in
@@ -0,0 +1 @@
+ aaa \ No newline at end of file
diff --git a/test/gsubtst7.ok b/test/gsubtst7.ok
new file mode 100644
index 00000000..88f42c8c
--- /dev/null
+++ b/test/gsubtst7.ok
@@ -0,0 +1 @@
+ aaa
diff --git a/test/gsubtst8.awk b/test/gsubtst8.awk
new file mode 100644
index 00000000..818b0ea3
--- /dev/null
+++ b/test/gsubtst8.awk
@@ -0,0 +1,5 @@
+{
+ OFS = " " $2 " "
+ gsub("foo", "_", OFS)
+ print $1, $2
+}
diff --git a/test/gsubtst8.in b/test/gsubtst8.in
new file mode 100644
index 00000000..f2b45c7d
--- /dev/null
+++ b/test/gsubtst8.in
@@ -0,0 +1,2 @@
+a bar b
+c foo d
diff --git a/test/gsubtst8.ok b/test/gsubtst8.ok
new file mode 100644
index 00000000..d3b28cc0
--- /dev/null
+++ b/test/gsubtst8.ok
@@ -0,0 +1,2 @@
+a bar bar
+c _ foo
diff --git a/test/pty1.awk b/test/pty1.awk
new file mode 100644
index 00000000..77178d61
--- /dev/null
+++ b/test/pty1.awk
@@ -0,0 +1,54 @@
+# Message-ID: <1312419482.36133.YahooMailNeo@web110416.mail.gq1.yahoo.com>
+# Date: Wed, 3 Aug 2011 17:58:02 -0700 (PDT)
+# From: "T. X. G." <leopardie333@yahoo.com>
+# To: "bug-gawk@gnu.org" <bug-gawk@gnu.org>
+# Subject: [bug-gawk] two bugs in gawk 4.0.0 with FPAT and pty
+#
+# $ gawk --version
+# GNU Awk 4.0.0
+# Copyright (C) 1989, 1991-2011 Free Software Foundation.
+#
+# # bug due to trying to make field splitting more efficient by not parse all fields
+# $ echo a,b,,c |gawk '{for(i=1;i<=4;++i)print i, $i}' FPAT='[^,]*'
+# 1 a
+# 2
+# 3 b
+# 4
+#
+# # work around
+# $ echo a,b,,c |gawk '{NF;for(i=1;i<=4;++i)print i, $i}' FPAT='[^,]*'
+# 1 a
+# 2 b
+# 3
+# 4 c
+#
+# This bug, as you commented in function fpat_parse_field, is subtle. The null matches of previous call should be remembered across calls. You could make the auto variable non_empty static, but then any calls to patsplit between references of fields will cause it to be wrong. I guess you can either forgo the field splitting optimization by always parse all field in the case of FPAT or make a separate function for splitting $0 only (or pass an extra arg to it?) I am sure you will find the best fix.
+#
+#
+# The next bug is with pty:
+#
+# $ gawk 'BEGIN{
+# c = "echo 123 > /dev/tty; read x < /dev/tty; echo \"x is $x\""
+# PROCINFO[c, "pty"] = 1
+# c |& getline;print
+# print "abc" |& c
+# c |& getline;print
+# }'
+# 123
+# ^C
+#
+# Adding a call to setsid() in the function two_way_open right after fork in the child process seems to fix it.
+#
+# One request for feature:
+# Currently the format for mktime is not configurable. Could you please make it configurable just like strftime through PROCINFO["mktime"]? In fact I have already done it myself. But I don't think you would like my style. It should be pretty simple for you to implement.
+#
+# Thank you, Arnold. Again as I have said before, I enjoy your writings and appreciate your contributions to the FSF.
+# W. G.
+#
+BEGIN {
+ c = "echo 123 > /dev/tty; read x < /dev/tty; echo \"x is $x\""
+ PROCINFO[c, "pty"] = 1
+ c |& getline; print
+ print "abc" |& c
+ c |& getline; print
+}
diff --git a/test/pty1.ok b/test/pty1.ok
new file mode 100644
index 00000000..f06833f5
--- /dev/null
+++ b/test/pty1.ok
@@ -0,0 +1,2 @@
+123
+x is abc
diff --git a/test/rtlen.ok b/test/rtlen.ok
new file mode 100644
index 00000000..b8a484df
--- /dev/null
+++ b/test/rtlen.ok
@@ -0,0 +1,3 @@
+3
+5
+2
diff --git a/test/rtlen.sh b/test/rtlen.sh
new file mode 100755
index 00000000..4a740451
--- /dev/null
+++ b/test/rtlen.sh
@@ -0,0 +1,5 @@
+#! /bin/sh
+
+AWK=${AWK:-../gawk}
+
+$AWK 'BEGIN {printf "0\n\n\n1\n\n\n\n\n2\n\n"; exit}' | $AWK 'BEGIN {RS=""}; {print length(RT)}'
diff --git a/test/rtlen01.ok b/test/rtlen01.ok
new file mode 100644
index 00000000..4539bbf2
--- /dev/null
+++ b/test/rtlen01.ok
@@ -0,0 +1,3 @@
+0
+1
+2
diff --git a/test/rtlen01.sh b/test/rtlen01.sh
new file mode 100755
index 00000000..72156d9b
--- /dev/null
+++ b/test/rtlen01.sh
@@ -0,0 +1,8 @@
+#! /bin/sh
+
+AWK=${AWK:-../gawk}
+
+$AWK 'BEGIN {printf "0"; exit}' | $AWK 'BEGIN {RS=""}; {print length(RT)}'
+$AWK 'BEGIN {printf "0\n"; exit}' | $AWK 'BEGIN {RS=""}; {print length(RT)}'
+$AWK 'BEGIN {printf "0\n\n"; exit}' | $AWK 'BEGIN {RS=""}; {print length(RT)}'
+
diff --git a/test/sortu.awk b/test/sortu.awk
index b4d30138..508dc07f 100644
--- a/test/sortu.awk
+++ b/test/sortu.awk
@@ -16,8 +16,12 @@ function comp_idx_num(s1, v1, s2, v2)
}
# ascending value number
-function comp_val_num(s1, v1, s2, v2)
+function comp_val_num(s1, v1, s2, v2, num)
{
+ num = "^[-+]?([0-9]+[.]?[0-9]*|[.][0-9]+)([eE][-+]?[0-9]+)?$"
+ # force stable sort, compare as strings if not numeric
+ if ((v1 - v2) == 0 && (v1 !~ num || v2 !~ num))
+ return comp_val_str(s1, v1, s2, v2)
return (v1 - v2)
}
diff --git a/test/sortu.ok b/test/sortu.ok
index ba9ac997..06dcd94d 100644
--- a/test/sortu.ok
+++ b/test/sortu.ok
@@ -13,9 +13,9 @@ rat tar
100 5
4 1
--- asort(a, b, "comp_val_num"), IGNORECASE = 0---
-[1] :barz barz
-[2] :blattt blattt
-[3] :Zebra Zebra
+[1] :barz Zebra
+[2] :blattt barz
+[3] :Zebra blattt
[4] :1234 234
[5] :234 1234
--- asort(a, b, "comp_val_str"), IGNORECASE = 0---