diff options
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | builtin.c | 12 | ||||
-rw-r--r-- | test/ChangeLog | 5 | ||||
-rw-r--r-- | test/Makefile.am | 10 | ||||
-rw-r--r-- | test/Makefile.in | 9 | ||||
-rw-r--r-- | test/negtime.awk | 4 | ||||
-rw-r--r-- | test/negtime.ok | 1 |
7 files changed, 44 insertions, 4 deletions
@@ -7,6 +7,13 @@ * regexec.c (buid_trtable, match_ctx_clean): Replace malloc/free with re_malloc/re_free. + Unrelated: + + * builtin.c (do_strftime): Disable checking timestamp value for less + than zero. Allows times before the epoch to work with strftime. + Thanks to Glaudiston Gomes da Silva <glaudistong@gmail.com> + for raising the issue. + 2015-04-12 Arnold D. Robbins <arnold@skeeve.com> * Makefile.am (efence): Make this link again. @@ -1913,8 +1913,16 @@ do_strftime(int nargs) lintwarn(_("strftime: received non-numeric second argument")); (void) force_number(t2); clock_val = get_number_si(t2); - if (clock_val < 0) - fatal(_("strftime: second argument less than 0 or too big for time_t")); + /* + * 4/2015: This used to be here: + * + * if (clock_val < 0) + * fatal(_("strftime: second argument less than 0 or too big for time_t")); + * + * It is now disabled since some systems have strftime that works + * on times before the epoch. No arbritrary limits comes into + * play at this point. + */ fclock = (time_t) clock_val; DEREF(t2); } diff --git a/test/ChangeLog b/test/ChangeLog index 10d707cd..0092932f 100644 --- a/test/ChangeLog +++ b/test/ChangeLog @@ -1,3 +1,8 @@ +2015-04-13 Arnold D. Robbins <arnold@skeeve.com> + + * Makefile.am (negtime): New test. + * negtime.awk, negtime.ok: New files. + 2015-04-09 Arnold D. Robbins <arnold@skeeve.com> * fts.awk: Skip atime to avoid spurious timestamp diff --git a/test/Makefile.am b/test/Makefile.am index 3973c666..e2ccdc56 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -569,6 +569,8 @@ EXTRA_DIST = \ negexp.ok \ negrange.awk \ negrange.ok \ + negtime.awk \ + negtime.ok \ nested.awk \ nested.in \ nested.ok \ @@ -1050,7 +1052,7 @@ GAWK_EXT_TESTS = \ include include2 indirectbuiltin indirectcall indirectcall2 \ lint lintold lintwarn \ manyfiles match1 match2 match3 mbstr1 \ - nastyparm next nondec nondec2 \ + nastyparm negtime next nondec nondec2 \ patsplit posix printfbad1 printfbad2 printfbad3 printfbad4 printhuge procinfs \ profile0 profile1 profile2 profile3 profile4 profile5 profile6 profile7 pty1 \ rebuf regnul1 regnul2 regx8bit reginttrad reint reint2 rsgetline rsglstdin rsstart1 \ @@ -2055,6 +2057,12 @@ paramasfunc2:: @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --posix >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +negtime:: + @echo $@ + @TZ=GMT AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + + # Targets generated for other tests: include Maketests diff --git a/test/Makefile.in b/test/Makefile.in index c1b691e7..6ed035fd 100644 --- a/test/Makefile.in +++ b/test/Makefile.in @@ -826,6 +826,8 @@ EXTRA_DIST = \ negexp.ok \ negrange.awk \ negrange.ok \ + negtime.awk \ + negtime.ok \ nested.awk \ nested.in \ nested.ok \ @@ -1306,7 +1308,7 @@ GAWK_EXT_TESTS = \ include include2 indirectbuiltin indirectcall indirectcall2 \ lint lintold lintwarn \ manyfiles match1 match2 match3 mbstr1 \ - nastyparm next nondec nondec2 \ + nastyparm negtime next nondec nondec2 \ patsplit posix printfbad1 printfbad2 printfbad3 printfbad4 printhuge procinfs \ profile0 profile1 profile2 profile3 profile4 profile5 profile6 profile7 pty1 \ rebuf regnul1 regnul2 regx8bit reginttrad reint reint2 rsgetline rsglstdin rsstart1 \ @@ -2491,6 +2493,11 @@ paramasfunc2:: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --posix >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + +negtime:: + @echo $@ + @TZ=GMT AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ Gt-dummy: # file Maketests, generated from Makefile.am by the Gentests program addcomma: diff --git a/test/negtime.awk b/test/negtime.awk new file mode 100644 index 00000000..743c6d05 --- /dev/null +++ b/test/negtime.awk @@ -0,0 +1,4 @@ +BEGIN { +then = mktime("1959 12 15 7 00 00") +print strftime(PROCINFO["strftime"], then) +} diff --git a/test/negtime.ok b/test/negtime.ok new file mode 100644 index 00000000..aa2ae694 --- /dev/null +++ b/test/negtime.ok @@ -0,0 +1 @@ +Tue Dec 15 07:00:00 GMT 1959 |