diff options
Diffstat (limited to 'source4/lib')
-rw-r--r-- | source4/lib/ldb/replace/config.m4 | 1 | ||||
-rw-r--r-- | source4/lib/ldb/replace/replace.c | 32 |
2 files changed, 33 insertions, 0 deletions
diff --git a/source4/lib/ldb/replace/config.m4 b/source4/lib/ldb/replace/config.m4 index 794618e62d..ebc2568658 100644 --- a/source4/lib/ldb/replace/config.m4 +++ b/source4/lib/ldb/replace/config.m4 @@ -6,6 +6,7 @@ AC_CHECK_TYPE(comparison_fn_t, [AC_DEFINE(HAVE_COMPARISON_FN_T, 1,[Whether or not we have comparison_fn_t])]) AC_CHECK_FUNCS(strerror timegm strnlen) +AC_CHECK_FUNCS(strtoull __strtoull strtouq strtoll __strtoll strtoq) AC_HAVE_DECL(errno, [#include <errno.h>]) AC_CHECK_HEADERS(strings.h) diff --git a/source4/lib/ldb/replace/replace.c b/source4/lib/ldb/replace/replace.c index 21d57605d0..2c2068f8f4 100644 --- a/source4/lib/ldb/replace/replace.c +++ b/source4/lib/ldb/replace/replace.c @@ -35,3 +35,35 @@ return i; } #endif + +#ifndef HAVE_STRTOLL + long long int strtoll(const char *str, char **endptr, int base) +{ +#ifdef HAVE_STRTOQ + return strtoq(str, endptr, base); +#elif defined(HAVE___STRTOLL) + return __strtoll(str, endptr, base); +#elif SIZEOF_LONG == SIZEOF_LONG_LONG + return (long long int) strtol(str, endptr, base); +#else +# error "You need a strtoll function" +#endif +} +#endif + + +#ifndef HAVE_STRTOULL + unsigned long long int strtoull(const char *str, char **endptr, int base) +{ +#ifdef HAVE_STRTOUQ + return strtouq(str, endptr, base); +#elif defined(HAVE___STRTOULL) + return __strtoull(str, endptr, base); +#elif SIZEOF_LONG == SIZEOF_LONG_LONG + return (unsigned long long int) strtoul(str, endptr, base); +#else +# error "You need a strtoull function" +#endif +} +#endif + |