X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=m4%2Fstrftime.m4;h=84a1996ae5446a689e94af52a9279810423a10d7;hb=02d97fa1f7a73756747951b74de8655d9f11b509;hp=974f2bf00b0c55cc93a613629c3ad8800acac216;hpb=7b2edcb74314450b75c275afa9dcbc154364276b;p=gnulib.git diff --git a/m4/strftime.m4 b/m4/strftime.m4 index 974f2bf00..84a1996ae 100644 --- a/m4/strftime.m4 +++ b/m4/strftime.m4 @@ -1,156 +1,41 @@ -#serial 10 +#serial 20 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, +AC_DEFUN([_jm_STRFTIME_PREREQS], [ - dnl strftime.c uses localtime_r if it exists. Check for it. - AC_CHECK_FUNCS(localtime_r) + dnl strftime.c uses the underyling system strftime if it exists. + AC_FUNC_STRFTIME - AC_CHECK_HEADERS(limits.h) - AC_CHECK_FUNCS(bcopy tzset mempcpy memcpy memset) + AC_CHECK_HEADERS_ONCE(limits.h) + AC_CHECK_FUNCS_ONCE(memcpy mempcpy) + AC_CHECK_FUNCS(tzset memset) # This defines (or not) HAVE_TZNAME and HAVE_TM_ZONE. AC_STRUCT_TIMEZONE AC_CHECK_FUNCS(mblen mbrlen) + AC_TYPE_MBSTATE_T - AC_CHECK_MEMBER(struct tm.tm_gmtoff, - [AC_DEFINE(HAVE_TM_GMTOFF, 1, - [Define if struct tm has the tm_gmtoff member.])], - , - [#include ]) + AC_REQUIRE([gl_TM_GMTOFF]) + AC_REQUIRE([gl_FUNC_TZSET_CLOBBER]) ]) -dnl Determine if the strftime function has all the features of the GNU one. -dnl dnl From Jim Meyering. dnl -AC_DEFUN(jm_FUNC_GNU_STRFTIME, +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, - [# Set TZ to GMT0 to make strftime give consistent results during the test. - ac_save_TZ="${TZ-GMT0}" - TZ=GMT0 - export TZ - AC_TRY_RUN( -[ /* Ulrich Drepper provided parts of the test program. */ -#if STDC_HEADERS -# include -#endif - -#if TIME_WITH_SYS_TIME -# include -# include -#else -# if HAVE_SYS_TIME_H -# include -# else -# include -# endif -#endif - -static int -compare (const char *fmt, const struct tm *tm, const char *expected) -{ - char buf[99]; - strftime (buf, 99, fmt, tm); - if (strcmp (buf, expected)) - { -#ifdef SHOW_FAILURES - printf ("fmt: \"%s\", expected \"%s\", got \"%s\"\n", - fmt, expected, buf); -#endif - return 1; - } - return 0; -} - -int -main () -{ - int n_fail = 0; - struct tm *tm; - time_t t = 738367; /* Fri Jan 9 13:06:07 1970 */ - tm = gmtime (&t); - -#undef CMP -#define CMP(Fmt, Expected) n_fail += compare ((Fmt), tm, (Expected)) - - CMP ("%-m", "1"); /* GNU */ - CMP ("%A", "Friday"); - CMP ("%^A", "FRIDAY"); /* The ^ is a GNU extension. */ - CMP ("%B", "January"); - 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"); - CMP ("%M", "06"); - CMP ("%M", "06"); - CMP ("%R", "13:06"); /* POSIX.2 */ - CMP ("%S", "07"); - CMP ("%T", "13:06:07"); /* POSIX.2 */ - CMP ("%U", "01"); - CMP ("%V", "02"); - CMP ("%W", "01"); - CMP ("%X", "13:06:07"); - CMP ("%Y", "1970"); - CMP ("%Z", "GMT"); - CMP ("%_m", " 1"); /* GNU */ - CMP ("%a", "Fri"); - CMP ("%^a", "FRI"); - CMP ("%b", "Jan"); - CMP ("%^b", "JAN"); - CMP ("%c", "Fri Jan 9 13:06:07 1970"); - CMP ("%^c", "FRI JAN 9 13:06:07 1970"); - CMP ("%d", "09"); - CMP ("%e", " 9"); /* POSIX.2 */ - CMP ("%g", "70"); /* GNU */ - CMP ("%h", "Jan"); /* POSIX.2 */ - CMP ("%^h", "JAN"); - CMP ("%j", "009"); - CMP ("%k", "13"); /* GNU */ - CMP ("%l", " 1"); /* GNU */ - CMP ("%m", "01"); - CMP ("%n", "\n"); /* POSIX.2 */ - CMP ("%p", "PM"); - CMP ("%r", "01:06:07 PM"); /* POSIX.2 */ - CMP ("%s", "738367"); /* GNU */ - CMP ("%t", "\t"); /* POSIX.2 */ - CMP ("%u", "5"); /* POSIX.2 */ - CMP ("%w", "5"); - CMP ("%x", "01/09/70"); - CMP ("%y", "70"); - CMP ("%z", "+0000"); /* GNU */ - - exit (n_fail ? 1 : 0); -}], - 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) - dnl If TZ wasn't set before, this sets it to GMT0. No real harm done. - TZ="$ac_save_TZ" - ]) - if test $jm_cv_func_working_gnu_strftime = no; then - 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_CHECK_HEADERS_ONCE(sys/time.h) + AC_DEFINE([my_strftime], [nstrftime], + [Define to the name of the strftime replacement function.]) ]) -AC_DEFUN(jm_FUNC_STRFTIME, +AC_DEFUN([jm_FUNC_STRFTIME], [ _jm_STRFTIME_PREREQS - AC_REPLACE_FUNCS(strftime) ])