Eli Zaretskii wrote:
gnulib ought to test unistd.h as one of the headers that could potentially define this structure
One would think the MinGW people would know better than to insert gratuitous incompatibilities like that, but nooooo.....
Anyway, I installed the attached.
>From d9fd725e4a01f13e440a152552e7b8ecc2f4e8cd Mon Sep 17 00:00:00 2001 From: Paul Eggert <[email protected]> Date: Thu, 15 Jan 2015 17:37:14 -0800 Subject: [PATCH] time: port to MinGW32 3.21 Problem reported by Eli Zaretskii in: http://lists.gnu.org/archive/html/bug-gnulib/2015-01/msg00042.html * lib/time.in.h: * m4/time_h.m4 (gl_CHECK_TYPE_STRUCT_TIMESPEC): * modules/time (Depends-on): Fall back on unistd.h if the other include files don't define struct timespec. --- ChangeLog | 9 +++++++++ lib/time.in.h | 2 ++ m4/time_h.m4 | 19 +++++++++++++++++-- modules/time | 1 + 4 files changed, 29 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index d1e878a..3a7ee14 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,14 @@ 2015-01-15 Paul Eggert <[email protected]> + time: port to MinGW32 3.21 + Problem reported by Eli Zaretskii in: + http://lists.gnu.org/archive/html/bug-gnulib/2015-01/msg00042.html + * lib/time.in.h: + * m4/time_h.m4 (gl_CHECK_TYPE_STRUCT_TIMESPEC): + * modules/time (Depends-on): + Fall back on unistd.h if the other include files don't define + struct timespec. + update-copyright: apply to self * build-aux/update-copyright: Fix copyright date. How ironic! diff --git a/lib/time.in.h b/lib/time.in.h index 74bc154..c374aeb 100644 --- a/lib/time.in.h +++ b/lib/time.in.h @@ -55,6 +55,8 @@ # include <sys/time.h> # elif @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@ # include <pthread.h> +# elif @UNISTD_H_DEFINES_STRUCT_TIMESPEC@ +# include <unistd.h> # else # ifdef __cplusplus diff --git a/m4/time_h.m4 b/m4/time_h.m4 index 0f0b7d9..d9c41a4 100644 --- a/m4/time_h.m4 +++ b/m4/time_h.m4 @@ -2,7 +2,7 @@ # Copyright (C) 2000-2001, 2003-2007, 2009-2015 Free Software Foundation, Inc. -# serial 8 +# serial 9 # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -26,7 +26,7 @@ AC_DEFUN([gl_HEADER_TIME_H_BODY], ]) dnl Check whether 'struct timespec' is declared -dnl in time.h, sys/time.h, or pthread.h. +dnl in time.h, sys/time.h, pthread.h, or unistd.h. AC_DEFUN([gl_CHECK_TYPE_STRUCT_TIMESPEC], [ @@ -44,6 +44,7 @@ AC_DEFUN([gl_CHECK_TYPE_STRUCT_TIMESPEC], TIME_H_DEFINES_STRUCT_TIMESPEC=0 SYS_TIME_H_DEFINES_STRUCT_TIMESPEC=0 PTHREAD_H_DEFINES_STRUCT_TIMESPEC=0 + UNISTD_H_DEFINES_STRUCT_TIMESPEC=0 if test $gl_cv_sys_struct_timespec_in_time_h = yes; then TIME_H_DEFINES_STRUCT_TIMESPEC=1 else @@ -70,12 +71,26 @@ AC_DEFUN([gl_CHECK_TYPE_STRUCT_TIMESPEC], [gl_cv_sys_struct_timespec_in_pthread_h=no])]) if test $gl_cv_sys_struct_timespec_in_pthread_h = yes; then PTHREAD_H_DEFINES_STRUCT_TIMESPEC=1 + else + AC_CACHE_CHECK([for struct timespec in <unistd.h>], + [gl_cv_sys_struct_timespec_in_unistd_h], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[#include <unistd.h> + ]], + [[static struct timespec x; x.tv_sec = x.tv_nsec;]])], + [gl_cv_sys_struct_timespec_in_unistd_h=yes], + [gl_cv_sys_struct_timespec_in_unistd_h=no])]) + if test $gl_cv_sys_struct_timespec_in_unistd_h = yes; then + UNISTD_H_DEFINES_STRUCT_TIMESPEC=1 + fi fi fi fi AC_SUBST([TIME_H_DEFINES_STRUCT_TIMESPEC]) AC_SUBST([SYS_TIME_H_DEFINES_STRUCT_TIMESPEC]) AC_SUBST([PTHREAD_H_DEFINES_STRUCT_TIMESPEC]) + AC_SUBST([UNISTD_H_DEFINES_STRUCT_TIMESPEC]) ]) AC_DEFUN([gl_TIME_MODULE_INDICATOR], diff --git a/modules/time b/modules/time index fd3c05d..55edc25 100644 --- a/modules/time +++ b/modules/time @@ -49,6 +49,7 @@ time.h: time.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $( -e 's|@''PTHREAD_H_DEFINES_STRUCT_TIMESPEC''@|$(PTHREAD_H_DEFINES_STRUCT_TIMESPEC)|g' \ -e 's|@''SYS_TIME_H_DEFINES_STRUCT_TIMESPEC''@|$(SYS_TIME_H_DEFINES_STRUCT_TIMESPEC)|g' \ -e 's|@''TIME_H_DEFINES_STRUCT_TIMESPEC''@|$(TIME_H_DEFINES_STRUCT_TIMESPEC)|g' \ + -e 's|@''UNISTD_H_DEFINES_STRUCT_TIMESPEC''@|$(UNISTD_H_DEFINES_STRUCT_TIMESPEC)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ -- 2.1.0
