From a5d3d3436b16bf6e1a92ed969e171ac812e8f906 Mon Sep 17 00:00:00 2001 From: Alexey Soloviev Date: Fri, 31 Dec 2010 05:21:51 +0100 Subject: [PATCH] date: preserve isdst value if date is in time_t (unix time) format Signed-off-by: Alexey Soloviev Signed-off-by: Denys Vlasenko --- coreutils/date.c | 4 +++- testsuite/date/date-@-works | 13 +++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 testsuite/date/date-@-works diff --git a/coreutils/date.c b/coreutils/date.c index c73fb5be6..6ad5f1bb6 100644 --- a/coreutils/date.c +++ b/coreutils/date.c @@ -282,7 +282,9 @@ int date_main(int argc UNUSED_PARAM, char **argv) } /* Correct any day of week and day of year etc. fields */ - tm_time.tm_isdst = -1; /* Be sure to recheck dst */ + /* Be sure to recheck dst (but not if date is time_t format) */ + if (date_str[0] != '@') + tm_time.tm_isdst = -1; ts.tv_sec = validate_tm_time(date_str, &tm_time); maybe_set_utc(opt); diff --git a/testsuite/date/date-@-works b/testsuite/date/date-@-works new file mode 100644 index 000000000..03b4c7f03 --- /dev/null +++ b/testsuite/date/date-@-works @@ -0,0 +1,13 @@ +# Tests for time_t value (unix time format) + +# Just before DST switched off +test x"Sun Oct 31 03:59:59 EEST 2010" = x"`TZ=EET-2EEST,M3.5.0/3,M10.5.0/4 busybox date -d @1288486799`" + +# Just after DST switched off +test x"Sun Oct 31 03:00:01 EET 2010" = x"`TZ=EET-2EEST,M3.5.0/3,M10.5.0/4 busybox date -d @1288486801`" + +# Just before DST switched on +test x"Sun Mar 28 02:59:59 EET 2010" = x"`TZ=EET-2EEST,M3.5.0/3,M10.5.0/4 busybox date -d @1269737999`" + +# Just after DST switched on +test x"Sun Mar 28 04:00:01 EEST 2010" = x"`TZ=EET-2EEST,M3.5.0/3,M10.5.0/4 busybox date -d @1269738001`" -- 2.25.1