(jm_CHECK_ALL_TYPES): Include <sys/stat.h>
[gnulib.git] / m4 / strftime.m4
index 904f2d7..5275694 100644 (file)
@@ -1,20 +1,42 @@
-#serial 2
+#serial 9
 
+dnl This macro is intended to be used solely in this file.
+dnl These are the prerequisite macros for GNU's strftime.c replacement.
+AC_DEFUN(_jm_STRFTIME_PREREQS,
+[
+ dnl strftime.c uses localtime_r if it exists.  Check for it.
+ AC_CHECK_FUNCS(localtime_r)
+
+ AC_CHECK_HEADERS(limits.h)
+ AC_CHECK_FUNCS(bcopy tzset mempcpy memcpy memset)
+
+ # This defines (or not) HAVE_TZNAME and HAVE_TM_ZONE.
+ AC_STRUCT_TIMEZONE
+
+ AC_CHECK_FUNCS(mblen mbrlen)
+
+ AC_CHECK_MEMBER(struct tm.tm_gmtoff,
+                 [AC_DEFINE(HAVE_TM_GMTOFF, 1,
+                            [Define if struct tm has the tm_gmtoff member.])],
+                 ,
+                 [#include <time.h>])
+])
+
+dnl Determine if the strftime function has all the features of the GNU one.
+dnl
 dnl From Jim Meyering.
-dnl If you use this macro in a package, you should
-dnl add the following two lines to acconfig.h:
-dnl   /* Define to gnu_strftime if the replacement function should be used.  */
-dnl   #undef strftime
 dnl
 AC_DEFUN(jm_FUNC_GNU_STRFTIME,
 [AC_REQUIRE([AC_HEADER_TIME])dnl
+
+ _jm_STRFTIME_PREREQS
+
  AC_REQUIRE([AC_C_CONST])dnl
  AC_REQUIRE([AC_HEADER_STDC])dnl
  AC_CHECK_HEADERS(sys/time.h)
  AC_CACHE_CHECK([for working GNU strftime], jm_cv_func_working_gnu_strftime,
   [AC_TRY_RUN(
-changequote(<<, >>)dnl
-<< /* Ulrich Drepper provided parts of the test program.  */
+[ /* Ulrich Drepper provided parts of the test program.  */
 #if STDC_HEADERS
 # include <stdlib.h>
 #endif
@@ -68,6 +90,7 @@ main ()
   CMP ("%^B", "JANUARY");
   CMP ("%C", "19");            /* POSIX.2 */
   CMP ("%D", "01/09/70");      /* POSIX.2 */
+  CMP ("%F", "1970-01-09");
   CMP ("%G", "1970");          /* GNU */
   CMP ("%H", "13");
   CMP ("%I", "01");
@@ -110,16 +133,22 @@ main ()
   CMP ("%z", "+0000");         /* GNU */
 
   exit (n_fail ? 1 : 0);
-}
-             >>,
-changequote([, ])dnl
+}],
             jm_cv_func_working_gnu_strftime=yes,
              jm_cv_func_working_gnu_strftime=no,
             dnl When crosscompiling, assume strftime is missing or broken.
             jm_cv_func_working_gnu_strftime=no)
   ])
   if test $jm_cv_func_working_gnu_strftime = no; then
-    LIBOBJS="$LIBOBJS strftime.o"
-    AC_DEFINE_UNQUOTED(strftime, gnu_strftime)
+    AC_SUBST(LIBOBJS)
+    LIBOBJS="$LIBOBJS strftime.$ac_objext"
+    AC_DEFINE_UNQUOTED(strftime, gnu_strftime,
+      [Define to gnu_strftime if the replacement function should be used.])
   fi
 ])
+
+AC_DEFUN(jm_FUNC_STRFTIME,
+[
+  _jm_STRFTIME_PREREQS
+  AC_REPLACE_FUNCS(strftime)
+])