summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2015-04-13 16:24:12 +0300
committerArnold D. Robbins <arnold@skeeve.com>2015-04-13 16:24:12 +0300
commit11692d41b177e93df106309cf2eda493350bee35 (patch)
tree063f34cc9c466b258a2744ff21aa1da52bfab73c
parent06a351f8774409db0d9c72ac4a51652f7c855c06 (diff)
parentf156eb53457a9e4e34c1b96f9e54eb130dffd8a3 (diff)
downloadgawk-11692d41b177e93df106309cf2eda493350bee35.tar.gz
Merge branch 'gawk-4.1-stable'
-rw-r--r--ChangeLog7
-rw-r--r--builtin.c12
-rw-r--r--test/ChangeLog5
-rw-r--r--test/Makefile.am10
-rw-r--r--test/Makefile.in9
-rw-r--r--test/negtime.awk4
-rw-r--r--test/negtime.ok1
7 files changed, 44 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index 1e697ec6..1832a9e4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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.
diff --git a/builtin.c b/builtin.c
index b70176dc..6658e750 100644
--- a/builtin.c
+++ b/builtin.c
@@ -1921,8 +1921,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 a04e4064..3f875522 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 d7e96353..9ec3fc6c 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -574,6 +574,8 @@ EXTRA_DIST = \
negexp.ok \
negrange.awk \
negrange.ok \
+ negtime.awk \
+ negtime.ok \
nested.awk \
nested.in \
nested.ok \
@@ -1067,7 +1069,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 \
nonfatal1 nonfatal2 nonfatal3 \
patsplit posix printfbad1 printfbad2 printfbad3 printfbad4 printhuge procinfs \
profile0 profile1 profile2 profile3 profile4 profile5 profile6 profile7 \
@@ -2095,6 +2097,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 5c7314f1..ea0a4a27 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -831,6 +831,8 @@ EXTRA_DIST = \
negexp.ok \
negrange.awk \
negrange.ok \
+ negtime.awk \
+ negtime.ok \
nested.awk \
nested.in \
nested.ok \
@@ -1323,7 +1325,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 \
nonfatal1 nonfatal2 nonfatal3 \
patsplit posix printfbad1 printfbad2 printfbad3 printfbad4 printhuge procinfs \
profile0 profile1 profile2 profile3 profile4 profile5 profile6 profile7 \
@@ -2530,6 +2532,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