From: Eric Blake Date: Fri, 8 Oct 2010 23:15:47 +0000 (-0600) Subject: time: enforce recent POSIX ruling that time_t is integral X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3759a3c4cda4264ef43d31e6ebdfb22d6b9dcb87;p=pspp 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 index 472c671006..4817bf4be1 100644 --- 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 index 28e3f5ff30..f6bdad666a 100644 --- a/lib/time.in.h +++ b/lib/time.in.h @@ -84,6 +84,15 @@ struct timespec # 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 . */