bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

time: fix trouble with HAVE_TIMEZONE_T


From: Bruno Haible
Subject: time: fix trouble with HAVE_TIMEZONE_T
Date: Thu, 11 May 2017 01:08:50 +0200
User-agent: KMail/5.1.3 (Linux/4.4.0-75-generic; KDE/5.18.0; x86_64; ; )

On mingw, in a testdir for module 'stat', I see this error:

i686-w64-mingw32-gcc -DHAVE_CONFIG_H -I. -I../../gllib -I..  
-DGNULIB_STRICT_CHECKING=1 -I/usr/local/mingw32/include -Wall  -g -O2 -MT 
stat.o -MD -MP -MF .deps/stat.Tpo -c -o stat.o ../../gllib/stat.c
In file included from ./sys/stat.h:44:0,
                 from ../../gllib/stat.c:60:
./time.h:741:36: error: operator '!' has no right operand

This occurs because HAVE_TIMEZONE_T is not set by Autoconf, thus it expands
to empty in the Makefile snippet that substitutes it. But a value of 0 or 1
is required.

This bug dates back to 2015, but was hidden until 2017-05-01 through a
dependency chain  time -> gettimeofday -> sys_time.

This patch fixes it.


2017-05-10 Bruno Haible  <address@hidden>

        time: Fix missing initialization of HAVE_TIMEZONE_T.
        * m4/time_h.m4 (gl_HEADER_TIME_H_DEFAULTS): Initialize HAVE_TIMEZONE_T
        here...
        * m4/sys_time_h.m4 (gl_HEADER_SYS_TIME_H_DEFAULTS): ... not here.
        * m4/time_rz.m4 (gl_TIME_RZ): Require gl_HEADER_TIME_H_DEFAULTS, not
        gl_HEADER_SYS_TIME_H_DEFAULTS.
        * modules/time_rz (Depends-on): Add 'time'. Remove useless quoting.
        (configure.ac): Remove useless quoting.

diff --git a/m4/sys_time_h.m4 b/m4/sys_time_h.m4
index e622dbe..1c8c3cf 100644
--- a/m4/sys_time_h.m4
+++ b/m4/sys_time_h.m4
@@ -1,5 +1,5 @@
 # Configure a replacement for <sys/time.h>.
-# serial 8
+# serial 9
 
 # Copyright (C) 2007, 2009-2017 Free Software Foundation, Inc.
 # This file is free software; the Free Software Foundation
@@ -105,7 +105,6 @@ AC_DEFUN([gl_HEADER_SYS_TIME_H_DEFAULTS],
   HAVE_GETTIMEOFDAY=1;       AC_SUBST([HAVE_GETTIMEOFDAY])
   HAVE_STRUCT_TIMEVAL=1;     AC_SUBST([HAVE_STRUCT_TIMEVAL])
   HAVE_SYS_TIME_H=1;         AC_SUBST([HAVE_SYS_TIME_H])
-  HAVE_TIMEZONE_T=0;         AC_SUBST([HAVE_TIMEZONE_T])
   REPLACE_GETTIMEOFDAY=0;    AC_SUBST([REPLACE_GETTIMEOFDAY])
   REPLACE_STRUCT_TIMEVAL=0;  AC_SUBST([REPLACE_STRUCT_TIMEVAL])
 ])
diff --git a/m4/time_h.m4 b/m4/time_h.m4
index f52b601..28e2209 100644
--- a/m4/time_h.m4
+++ b/m4/time_h.m4
@@ -2,7 +2,7 @@
 
 # Copyright (C) 2000-2001, 2003-2007, 2009-2017 Free Software Foundation, Inc.
 
-# serial 10
+# serial 11
 
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -120,6 +120,8 @@ AC_DEFUN([gl_HEADER_TIME_H_DEFAULTS],
   HAVE_STRPTIME=1;                       AC_SUBST([HAVE_STRPTIME])
   HAVE_TIMEGM=1;                         AC_SUBST([HAVE_TIMEGM])
   HAVE_TZSET=1;                          AC_SUBST([HAVE_TZSET])
+  dnl Even GNU libc does not have timezone_t yet.
+  HAVE_TIMEZONE_T=0;                     AC_SUBST([HAVE_TIMEZONE_T])
   dnl If another module says to replace or to not replace, do that.
   dnl Otherwise, replace only if someone compiles with -DGNULIB_PORTCHECK;
   dnl this lets maintainers check for portability.
diff --git a/m4/time_rz.m4 b/m4/time_rz.m4
index 079e933..3991118 100644
--- a/m4/time_rz.m4
+++ b/m4/time_rz.m4
@@ -10,7 +10,7 @@ dnl Written by Paul Eggert.
 AC_DEFUN([gl_TIME_RZ],
 [
   AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
-  AC_REQUIRE([gl_HEADER_SYS_TIME_H_DEFAULTS])
+  AC_REQUIRE([gl_HEADER_TIME_H_DEFAULTS])
   AC_REQUIRE([AC_STRUCT_TIMEZONE])
 
   AC_CHECK_TYPES([timezone_t], [], [], [[#include <time.h>]])
diff --git a/modules/time_rz b/modules/time_rz
index 1bc29f4..0285add 100644
--- a/modules/time_rz
+++ b/modules/time_rz
@@ -19,17 +19,18 @@ m4/time_rz.m4
 
 Depends-on:
 extensions
-flexmember     [test "$HAVE_TIMEZONE_T" = 0]
-setenv         [test "$HAVE_TIMEZONE_T" = 0]
-stdbool        [test "$HAVE_TIMEZONE_T" = 0]
-time_r         [test "$HAVE_TIMEZONE_T" = 0]
-timegm         [test "$HAVE_TIMEZONE_T" = 0]
-tzset          [test "$HAVE_TIMEZONE_T" = 0]
-unsetenv       [test "$HAVE_TIMEZONE_T" = 0]
+time
+flexmember     [test $HAVE_TIMEZONE_T = 0]
+setenv         [test $HAVE_TIMEZONE_T = 0]
+stdbool        [test $HAVE_TIMEZONE_T = 0]
+time_r         [test $HAVE_TIMEZONE_T = 0]
+timegm         [test $HAVE_TIMEZONE_T = 0]
+tzset          [test $HAVE_TIMEZONE_T = 0]
+unsetenv       [test $HAVE_TIMEZONE_T = 0]
 
 configure.ac:
 gl_TIME_RZ
-if test "$HAVE_TIMEZONE_T" = 0; then
+if test $HAVE_TIMEZONE_T = 0; then
   AC_LIBOBJ([time_rz])
 fi
 gl_TIME_MODULE_INDICATOR([time_rz])




reply via email to

[Prev in Thread] Current Thread [Next in Thread]