From 75a193b7611bade31a150dfcc528b973e3d46231 Mon Sep 17 00:00:00 2001 From: Adhemerval Zanella Date: Mon, 2 Nov 2020 16:18:29 -0300 Subject: linux: Allow adjtime with NULL argument [BZ #26833] The adjtime interface allows return the amount of time remaining from any previous adjustment that has not yet been completed by passing a NULL as first argument. This was introduced with y2038 support 0308077e3a. Checked on i686-linux-gnu. Reviewed-by: Lukasz Majewski --- time/Makefile | 3 ++- time/tst-adjtime.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 time/tst-adjtime.c (limited to 'time') diff --git a/time/Makefile b/time/Makefile index 26aa835166..f27a75a115 100644 --- a/time/Makefile +++ b/time/Makefile @@ -47,7 +47,8 @@ tests := test_time clocktest tst-posixtz tst-strptime tst_wcsftime \ tst-mktime3 tst-strptime2 bug-asctime bug-asctime_r bug-mktime1 \ tst-strptime3 bug-getdate1 tst-strptime-whitespace tst-ftime \ tst-tzname tst-y2039 bug-mktime4 tst-strftime2 tst-strftime3 \ - tst-clock tst-clock2 tst-clock_nanosleep tst-cpuclock1 + tst-clock tst-clock2 tst-clock_nanosleep tst-cpuclock1 \ + tst-adjtime include ../Rules diff --git a/time/tst-adjtime.c b/time/tst-adjtime.c new file mode 100644 index 0000000000..ae2b37cdab --- /dev/null +++ b/time/tst-adjtime.c @@ -0,0 +1,44 @@ +/* Basic tests for adjtime. + Copyright (C) 2020 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 +#include + + +static int +do_test (void) +{ + /* Check if the interface allows getting the amount of time remaining + from any previous adjustment that has not yet been completed. This + is a non-privileged function of adjtime. */ + struct timeval tv; + int r = adjtime (NULL, &tv); + if (r == -1) + { + if (errno == ENOSYS) + FAIL_UNSUPPORTED ("adjtime unsupported"); + FAIL_EXIT1 ("adjtime (NULL, ...) failed: %m"); + } + + return 0; +} + +#include -- cgit 1.4.1