From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1791) id ED962393BC3D; Mon, 1 Mar 2021 17:37:23 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org ED962393BC3D Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Adhemerval Zanella To: glibc-cvs@sourceware.org Subject: [glibc/azanella/y2038] time: Add timegm basic tests X-Act-Checkin: glibc X-Git-Author: Adhemerval Zanella X-Git-Refname: refs/heads/azanella/y2038 X-Git-Oldrev: dad82921ca1d7a215e8b3d643b54a24324155c92 X-Git-Newrev: 35777039b3e9e38fa65081ab92a91662920fedd5 Message-Id: <20210301173723.ED962393BC3D@sourceware.org> Date: Mon, 1 Mar 2021 17:37:23 +0000 (GMT) X-BeenThere: glibc-cvs@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Glibc-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 01 Mar 2021 17:37:24 -0000 https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=35777039b3e9e38fa65081ab92a91662920fedd5 commit 35777039b3e9e38fa65081ab92a91662920fedd5 Author: Adhemerval Zanella Date: Mon Mar 1 11:36:56 2021 -0300 time: Add timegm basic tests Checked i686-linux-gnu and x86_64-linux-gnu. Diff: --- time/Makefile | 2 +- time/tst-timegm.c | 95 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 96 insertions(+), 1 deletion(-) diff --git a/time/Makefile b/time/Makefile index ed79f1cdb6..5d865a4054 100644 --- a/time/Makefile +++ b/time/Makefile @@ -49,7 +49,7 @@ tests := test_time clocktest tst-posixtz tst-strptime tst_wcsftime \ tst-tzname tst-y2039 bug-mktime4 tst-strftime2 tst-strftime3 \ tst-clock tst-clock2 tst-clock_nanosleep tst-cpuclock1 \ tst-adjtime tst-ctime tst-difftime tst-mktime4 tst-clock_settime \ - tst-itimer tst-gmtime + tst-itimer tst-gmtime tst-timegm include ../Rules diff --git a/time/tst-timegm.c b/time/tst-timegm.c new file mode 100644 index 0000000000..3f4d21951a --- /dev/null +++ b/time/tst-timegm.c @@ -0,0 +1,95 @@ +/* Basic tests for timegm. + Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#include +#include +#include + +static void +do_test_func (time_t (*func)(struct tm *)) +{ + { + struct tm tmg = + { + .tm_sec = 0, + .tm_min = 0, + .tm_hour = 0, + .tm_mday = 1, + .tm_mon = 0, + .tm_year = 70, + .tm_wday = 4, + .tm_yday = 0, + .tm_isdst = 0 + }; + time_t t = func (&tmg); + TEST_COMPARE (t, 0); + } + + { + struct tm tmg = + { + .tm_sec = 7, + .tm_min = 14, + .tm_hour = 3, + .tm_mday = 19, + .tm_mon = 0, + .tm_year = 138, + .tm_wday = 2, + .tm_yday = 18, + .tm_isdst = 0 + }; + time_t t = func (&tmg); + TEST_COMPARE (t, 0x7fffffff); + } + + if (sizeof (time_t) < 8) + return; + + { + struct tm tmg = + { + .tm_sec = 8, + .tm_min = 14, + .tm_hour = 3, + .tm_mday = 19, + .tm_mon = 0, + .tm_year = 138, + .tm_wday = 2, + .tm_yday = 18, + .tm_isdst = 0 + }; + time_t t = func (&tmg); + TEST_COMPARE (t, (time_t) 0x80000000ull); + } +} + +static int +do_test (void) +{ + do_test_func (timegm); + + /* timelocal is a alias to timegm with the only difference it takes local + timezone into account, while timegm takes the input value to be UTC. */ + TEST_VERIFY_EXIT (setenv ("TZ", ":", 1) == 0); + tzset (); + do_test_func (timelocal); + + return 0; +} + +#include