diff options
Diffstat (limited to 'sysdeps/unix/sysv/linux/tst-futimens.c')
-rw-r--r-- | sysdeps/unix/sysv/linux/tst-futimens.c | 63 |
1 files changed, 9 insertions, 54 deletions
diff --git a/sysdeps/unix/sysv/linux/tst-futimens.c b/sysdeps/unix/sysv/linux/tst-futimens.c index 785cd87557..ac7a980017 100644 --- a/sysdeps/unix/sysv/linux/tst-futimens.c +++ b/sysdeps/unix/sysv/linux/tst-futimens.c @@ -16,57 +16,18 @@ License along with the GNU C Library; if not, see <https://www.gnu.org/licenses/>. */ -#include <time.h> -#include <stdio.h> -#include <stdlib.h> -#include <sys/stat.h> #include <support/check.h> -#include <support/support.h> #include <support/xunistd.h> -#include <support/temp_file.h> - -static int temp_fd = -1; -static char *testfile; - -/* struct timespec array with Y2038 threshold minus 2 and 1 seconds. */ -const struct timespec t1[2] = { { 0x7FFFFFFE, 0 }, { 0x7FFFFFFF, 0 } }; - -/* struct timespec array with Y2038 threshold plus 1 and 2 seconds. */ -const struct timespec t2[2] = { { 0x80000001ULL, 0 }, { 0x80000002ULL, 0 } }; - -/* struct timespec array around Y2038 threshold. */ -const struct timespec t3[2] = { { 0x7FFFFFFE, 0 }, { 0x80000002ULL, 0 } }; - -#define PREPARE do_prepare -static void -do_prepare (int argc, char *argv[]) -{ - temp_fd = create_temp_file ("futimensat", &testfile); - TEST_VERIFY_EXIT (temp_fd > 0); -} +#include <sys/stat.h> static int -test_futimens_helper (const struct timespec *ts) +test_futimens_helper (const char *file, int fd, const struct timespec *ts) { - if (!support_path_support_time64 (testfile)) - FAIL_UNSUPPORTED ("File %s does not support 64-bit timestamps", - testfile); - - struct stat64 st; - int result; - time_t t; - - /* Check if we run on port with 32 bit time_t size */ - if (__builtin_add_overflow (ts->tv_sec, 0, &t)) - { - printf("time_t overflow!"); - return 0; - } - - result = futimens (temp_fd, ts); + int result = futimens (fd, ts); TEST_VERIFY_EXIT (result == 0); - xfstat (temp_fd, &st); + struct stat64 st; + xfstat (fd, &st); /* Check if seconds for atime match */ TEST_COMPARE (st.st_atime, ts[0].tv_sec); @@ -77,14 +38,8 @@ test_futimens_helper (const struct timespec *ts) return 0; } -static int -do_test (void) -{ - test_futimens_helper (&t1[0]); - test_futimens_helper (&t2[0]); - test_futimens_helper (&t3[0]); - - return 0; -} +#define TEST_CALL(fname, fd, v1, v2) \ + test_futimens_helper (fname, fd, (struct timespec[]) { { v1, 0 }, \ + { v2, 0 } }) -#include <support/test-driver.c> +#include "tst-utimensat-skeleton.c" |