# HG changeset patch # User Eric Blake # Date 1286579747 21600 # Node ID ff58e398c6aa425fa07f5a9458c925efdaf2784a # Parent 69ee8a8d4ebdda6f86431adced4da2d7ec69bd8e time: enforce recent POSIX ruling that time_t is integral * lib/time.in.h (__time_t_must_be_integral): Detect any problematic systems, allowing the rest of gnulib to assume POSIX. Signed-off-by: Eric Blake diff --git a/ChangeLog b/ChangeLog --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2010-10-08 Eric Blake + + time: enforce recent POSIX ruling that time_t is integral + * lib/time.in.h (__time_t_must_be_integral): Detect any + problematic systems, allowing the rest of gnulib to assume POSIX. + 2010-10-08 Jim Meyering fdopendir: fix a bug on systems lacking openat and /proc support diff --git a/lib/time.in.h b/lib/time.in.h --- a/lib/time.in.h +++ b/lib/time.in.h @@ -84,6 +84,15 @@ # endif # endif +/* Per http://austingroupbugs.net/view.php?id=327, POSIX requires + time_t to be an integer type, even though C99 permits floating + point. We don't know of any implementation that uses floating + point, and it is much easier to write code that doesn't have to + worry about that corner case, so we force the issue. */ +struct __time_t_must_be_integral { + unsigned int __floating_time_t_unsupported : 2 * ((time_t) 1 / 2 == 0) - 1; +}; + /* Sleep for at least RQTP seconds unless interrupted, If interrupted, return -1 and store the remaining time into RMTP. See . */