X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=m4%2Fstrftime.m4;h=caeb21fb41be90bb3268c30309281f61a2d32050;hb=39e19caaa08908df9df2308c652296bad797419d;hp=91db2c36003182967ef982c245a55f024144fa79;hpb=c60e2ef8ab8f6f3484c42f5a757d2b296daedc12;p=gnulib.git diff --git a/m4/strftime.m4 b/m4/strftime.m4 index 91db2c360..caeb21fb4 100644 --- a/m4/strftime.m4 +++ b/m4/strftime.m4 @@ -1,31 +1,43 @@ -#serial 4 +#serial 15 -AC_DEFUN(jm_STRFTIME_PREREQS, +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) - dnl FIXME: add tests for everything in strftime.c: e.g., HAVE_BCOPY, - dnl HAVE_TZNAME, HAVE_TZSET, HAVE_TM_ZONE, etc. + dnl strftime.c uses localtime_r and the underyling system strftime + dnl if they exist. + AC_CHECK_FUNCS(localtime_r strftime) + + 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 ]) ]) +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 + _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 #endif @@ -65,6 +77,11 @@ main () time_t t = 738367; /* Fri Jan 9 13:06:07 1970 */ tm = gmtime (&t); + /* Undefine this in case the configure-time putenv test has defined it + to something else. The use we make of this function here doesn't + require the added functionality of the replacement one. */ +#undef putenv + /* This is necessary to make strftime give consistent zone strings and e.g., seconds since the epoch (%s). */ putenv ("TZ=GMT0"); @@ -79,6 +96,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"); @@ -102,7 +120,6 @@ main () CMP ("%^c", "FRI JAN 9 13:06:07 1970"); CMP ("%d", "09"); CMP ("%e", " 9"); /* POSIX.2 */ - CMP ("%f", "5"); /* POSIX.2 */ CMP ("%g", "70"); /* GNU */ CMP ("%h", "Jan"); /* POSIX.2 */ CMP ("%^h", "JAN"); @@ -122,22 +139,21 @@ 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_LIBOBJ(strftime) + 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 + _jm_STRFTIME_PREREQS AC_REPLACE_FUNCS(strftime) ])