* time: Fix test failure on native Windows
@ 2023-03-17 12:36 Bruno Haible
0 siblings, 0 replies; only message in thread
From: Bruno Haible @ 2023-03-17 12:36 UTC (permalink / raw)
To: bug-gnulib
The recently added unit test that checks the consistency between time(NULL)
and gettimeofday() fails on native Windows. Both on mingw (which has a
gettimeofday function) and on MSVC (which does not have gettimeofday and
therefore uses gnulib's replacement).
Here, after gettimeofday() reports a new second, it takes about 5 msec
until time(NULL) reports that new second as well.
This patch fixes it, by implementing time(NULL) based on gettimeofday().
Note that the mingw gettimeofday() and the gnulib replacement are equivalent.
2023-03-17 Bruno Haible <bruno@clisp.org>
time: Fix test failure on native Windows.
* m4/time.m4 (gl_FUNC_TIME): Guess that it does not work on native
Windows.
* modules/time (Depends-on): Add gettimeofday.
* doc/posix-functions/time.texi: Mention the bug on Windows.
diff --git a/doc/posix-functions/time.texi b/doc/posix-functions/time.texi
index a8e9abcddf..5d7c719594 100644
--- a/doc/posix-functions/time.texi
+++ b/doc/posix-functions/time.texi
@@ -12,10 +12,11 @@
This function is not consistent with @code{gettimeofday} and @code{timespec_get}
on some platforms:
@c https://sourceware.org/bugzilla/show_bug.cgi?id=30200
-glibc 2.31 or newer on Linux.
-Namely, in the first 1 to 2.5 milliseconds of every second, @code{time}
-returns a value that is one less than the @code{tv_sec} part of the return
-value of @code{gettimeofday} or @code{timespec_get}.
+glibc 2.31 or newer on Linux, native Windows.
+Namely, in the first 1 to 2.5 milliseconds of every second (or, on Windows,
+in the first 5 milliseconds of every second), @code{time} returns a value
+that is one less than the @code{tv_sec} part of the return value of
+@code{gettimeofday} or @code{timespec_get}.
@end itemize
Portability problems not fixed by Gnulib:
diff --git a/m4/time.m4 b/m4/time.m4
index 0dbb6011ed..504ec77f88 100644
--- a/m4/time.m4
+++ b/m4/time.m4
@@ -1,4 +1,4 @@
-# time.m4 serial 1
+# time.m4 serial 2
dnl Copyright (C) 2023 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
@@ -12,9 +12,11 @@ AC_DEFUN([gl_FUNC_TIME]
dnl glibc has the bug https://sourceware.org/bugzilla/show_bug.cgi?id=30200 .
AC_CACHE_CHECK([whether time() works],
[gl_cv_func_time_works],
- [dnl Guess that it works except on glibc >= 2.31 with Linux.
- dnl And binaries produced on glibc < 2.31 need to run fine on newer
- dnl glibc versions as well; therefore ignore __GLIBC_MINOR__.
+ [dnl Guess that it works except on
+ dnl - glibc >= 2.31 with Linux. And binaries produced on glibc < 2.31
+ dnl need to run fine on newer glibc versions as well; therefore ignore
+ dnl __GLIBC_MINOR__.
+ dnl - native Windows.
case "$host_os" in
linux*-gnu*)
AC_EGREP_CPP([Unlucky], [
@@ -28,6 +30,7 @@ AC_DEFUN([gl_FUNC_TIME]
[gl_cv_func_time_works="guessing no"],
[gl_cv_func_time_works="guessing yes"])
;;
+ mingw*) gl_cv_func_time_works="guessing no";;
*) gl_cv_func_time_works="guessing yes";;
esac
])
diff --git a/modules/time b/modules/time
index 45f5ffd35f..2729ad06ea 100644
--- a/modules/time
+++ b/modules/time
@@ -7,6 +7,7 @@ m4/time.m4
Depends-on:
time-h
+gettimeofday [test $REPLACE_TIME = 1]
configure.ac:
gl_FUNC_TIME
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2023-03-17 12:37 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-03-17 12:36 time: Fix test failure on native Windows Bruno Haible
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).