aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--builtin.c6
-rw-r--r--pc/ChangeLog4
-rw-r--r--pc/Makefile.tst95
4 files changed, 89 insertions, 21 deletions
diff --git a/ChangeLog b/ChangeLog
index b4b3ae2c..dbead39b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2011-10-27 Arnold D. Robbins <arnold@skeeve.com>
+
+ * builtin.c (do_strftime): Per Pat Rankin, instead of casting
+ fclock, use a long variable and check for negative or overflow.
+
2011-10-25 Arnold D. Robbins <arnold@skeeve.com>
Merge with gawk_performance branch done. Additionally:
diff --git a/builtin.c b/builtin.c
index 1fb107db..5bc1c023 100644
--- a/builtin.c
+++ b/builtin.c
@@ -1634,6 +1634,7 @@ do_strftime(int nargs)
NODE *t1, *t2, *t3, *ret;
struct tm *tm;
time_t fclock;
+ long clock_val;
char *bufp;
size_t buflen, bufsize;
char buf[BUFSIZ];
@@ -1680,9 +1681,10 @@ do_strftime(int nargs)
t2 = POP_SCALAR();
if (do_lint && (t2->flags & (NUMCUR|NUMBER)) == 0)
lintwarn(_("strftime: received non-numeric second argument"));
- fclock = (time_t) force_number(t2);
- if (((long int) fclock) < 0)
+ clock_val = (long) force_number(t2);
+ if (clock_val < 0)
fatal(_("strftime: second argument less than 0 or too big for time_t"));
+ fclock = (time_t) clock_val;
DEREF(t2);
}
diff --git a/pc/ChangeLog b/pc/ChangeLog
index ca1c15ea..9f56a20d 100644
--- a/pc/ChangeLog
+++ b/pc/ChangeLog
@@ -1,3 +1,7 @@
+2011-10-27 Scott Deifik <scottd.mail@sbcglobal.net>
+
+ * Makefile.tst: Sync with mainline version.
+
2011-10-24 Eli Zaretskii <eliz@gnu.org>
* gawkmisc.pc (wctob) [__MINGW32__]: A replacement for the
diff --git a/pc/Makefile.tst b/pc/Makefile.tst
index b932bd68..e63b8eb5 100644
--- a/pc/Makefile.tst
+++ b/pc/Makefile.tst
@@ -130,8 +130,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 \
@@ -150,17 +152,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
@@ -169,8 +176,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:
NEED_LINT = \
@@ -606,6 +612,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 >_$@
@@ -716,6 +738,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 $@
+ @-( cd $(srcdir) && AWK="$(abs_builddir)/$(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: $$? >>_$@
@@ -725,20 +752,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:
@@ -1067,6 +1099,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: $$? >>_$@
@@ -1102,6 +1139,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: $$? >>_$@
@@ -1343,11 +1390,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: $$? >>_$@
@@ -1676,6 +1718,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: $$? >>_$@
@@ -1701,6 +1748,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: $$? >>_$@
@@ -1822,6 +1874,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: $$? >>_$@