summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/replace/replace.h2
-rw-r--r--lib/replace/strptime.m45
-rw-r--r--lib/replace/wscript19
3 files changed, 16 insertions, 10 deletions
diff --git a/lib/replace/replace.h b/lib/replace/replace.h
index 776da8aa4a..bb271d45fa 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 b1a56b4aab..8ac22f6342 100644
--- a/lib/replace/strptime.m4
+++ b/lib/replace/strptime.m4
@@ -1,3 +1,5 @@
+AC_CHECK_FUNCS(strptime)
+AC_CHECK_DECLS(strptime, [], [], [#include <time.h>])
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 743b5fe632..7e4055ba9a 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()):