X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=m4%2Fgetdate.m4;h=5f98229f6a9306134f3fe197716f21c1d46c3c77;hb=22f1eb8bc17e5be72dd23d42d6aaa60196ac22e6;hp=d160329accde4bbb7da70c7f34037c3fde48ae1c;hpb=138fc7e67e3d9845cd7d81aad0e9c7724784f9b9;p=tar diff --git a/m4/getdate.m4 b/m4/getdate.m4 index d160329..5f98229 100644 --- a/m4/getdate.m4 +++ b/m4/getdate.m4 @@ -1,19 +1,25 @@ -# getdate.m4 serial 12 -dnl Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# getdate.m4 serial 16 +dnl Copyright (C) 2002-2006, 2008-2010 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. +dnl Define HAVE_COMPOUND_LITERALS if the C compiler supports compound literals +dnl as in ISO C99. +dnl Note that compound literals such as (struct s) { 3, 4 } can be used for +dnl initialization of stack-allocated variables, but are not constant +dnl expressions and therefore cannot be used as initializer for global or +dnl static variables (even though gcc supports this in pre-C99 mode). AC_DEFUN([gl_C_COMPOUND_LITERALS], [ - AC_CACHE_CHECK([for compound literals], gl_cv_compound_literals, - [AC_TRY_COMPILE([struct s { int i, j; }; struct s s = (struct s) { 1, 2 };], - [struct s t = (struct s) { 3, 4 }; - if (t.i != 0) return 0;], + AC_CACHE_CHECK([for compound literals], [gl_cv_compound_literals], + [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[struct s { int i, j; };]], + [[struct s t = (struct s) { 3, 4 }; + if (t.i != 0) return 0;]])], gl_cv_compound_literals=yes, gl_cv_compound_literals=no)]) if test $gl_cv_compound_literals = yes; then - AC_DEFINE(HAVE_COMPOUND_LITERALS, 1, + AC_DEFINE([HAVE_COMPOUND_LITERALS], [1], [Define if you have compound literals.]) fi ]) @@ -30,4 +36,18 @@ AC_DEFUN([gl_GETDATE], AC_STRUCT_TIMEZONE AC_REQUIRE([gl_CLOCK_TIME]) AC_REQUIRE([gl_TM_GMTOFF]) + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE([[ +#include /* for time_t */ +#include /* for CHAR_BIT, LONG_MIN, LONG_MAX */ +#define TYPE_MINIMUM(t) \ + ((t) ((t) 0 < (t) -1 ? (t) 0 : ~ (t) 0 << (sizeof (t) * CHAR_BIT - 1))) +#define TYPE_MAXIMUM(t) \ + ((t) ((t) 0 < (t) -1 ? (t) -1 : ~ (~ (t) 0 << (sizeof (t) * CHAR_BIT - 1)))) +typedef int verify_min[2 * (LONG_MIN <= TYPE_MINIMUM (time_t)) - 1]; +typedef int verify_max[2 * (TYPE_MAXIMUM (time_t) <= LONG_MAX) - 1]; + ]])], + [AC_DEFINE([TIME_T_FITS_IN_LONG_INT], [1], + [Define to 1 if all 'time_t' values fit in a 'long int'.]) + ]) ])