diff --git a/lib/replace/replace.h b/lib/replace/replace.h index 776da8aa4a1..bb271d45fab 100644 --- a/lib/replace/replace.h +++ b/lib/replace/replace.h @@ -451,7 +451,7 @@ void rep_vsyslog (int facility_priority, const char *format, va_list arglist) PR typedef int (*comparison_fn_t)(const void *, const void *); #endif -#ifdef REPLACE_STRPTIME +#ifndef HAVE_WORKING_STRPTIME #define strptime rep_strptime struct tm; char *rep_strptime(const char *buf, const char *format, struct tm *tm); diff --git a/lib/replace/strptime.m4 b/lib/replace/strptime.m4 index b1a56b4aab1..8ac22f63426 100644 --- a/lib/replace/strptime.m4 +++ b/lib/replace/strptime.m4 @@ -1,3 +1,5 @@ +AC_CHECK_FUNCS(strptime) +AC_CHECK_DECLS(strptime, [], [], [#include ]) AC_CACHE_CHECK([whether strptime is available and works],libreplace_cv_STRPTIME_OK,[ AC_TRY_RUN([ #define LIBREPLACE_CONFIGURE_TEST_STRPTIME @@ -8,6 +10,7 @@ AC_CACHE_CHECK([whether strptime is available and works],libreplace_cv_STRPTIME_ [libreplace_cv_STRPTIME_OK="assuming not"]) ]) if test x"$libreplace_cv_STRPTIME_OK" != x"yes"; then - AC_DEFINE(REPLACE_STRPTIME,1,[Whether strptime should be replaced]) LIBREPLACEOBJ="${LIBREPLACEOBJ} $libreplacedir/strptime.o" +else + AC_DEFINE(HAVE_WORKING_STRPTIME,1,[Whether strptime is working correct]) fi diff --git a/lib/replace/wscript b/lib/replace/wscript index 743b5fe6329..7e4055ba9ad 100644 --- a/lib/replace/wscript +++ b/lib/replace/wscript @@ -311,13 +311,14 @@ removeea setea conf.CHECK_HEADERS('poll.h') conf.CHECK_FUNCS('poll') - if not conf.CHECK_CODE('''#define LIBREPLACE_CONFIGURE_TEST_STRPTIME - #include "test/strptime.c"''', - define='HAVE_STRPTIME', - execute=True, - addmain=False, - msg='Checking for working strptime'): - conf.DEFINE('REPLACE_STRPTIME', 1) + conf.CHECK_FUNCS('strptime') + conf.CHECK_DECLS('strptime', headers='time.h') + conf.CHECK_CODE('''#define LIBREPLACE_CONFIGURE_TEST_STRPTIME + #include "test/strptime.c"''', + define='HAVE_WORKING_STRPTIME', + execute=True, + addmain=False, + msg='Checking for working strptime') conf.CHECK_CODE('gettimeofday(NULL, NULL)', 'HAVE_GETTIMEOFDAY_TZ', execute=False) @@ -460,6 +461,9 @@ REPLACEMENT_FUNCTIONS = { # Note: C99_VSNPRINTF is not a function, but a special condition # for replacement 'snprintf.c': ['C99_VSNPRINTF', 'snprintf', 'vsnprintf', 'asprintf', 'vasprintf'], + # Note: WORKING_STRPTIME is not a function, but a special condition + # for replacement + 'strptime.c': ['WORKING_STRPTIME', 'strptime'], } @@ -468,7 +472,6 @@ def build(bld): REPLACE_HOSTCC_SOURCE = '' - if bld.CONFIG_SET('REPLACE_STRPTIME'): REPLACE_HOSTCC_SOURCE += ' strptime.c' for filename, functions in REPLACEMENT_FUNCTIONS.iteritems(): for function in functions: if not bld.CONFIG_SET('HAVE_%s' % function.upper()):