From 6f47ed234a743772e72fa7985f5fb8559f23dbb4 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Wed, 13 Sep 2006 09:32:24 +0000 Subject: r18449: Attempt to fix the build on non-linux platforms: Many of those don't have strtoull. This is a copy of the stuff in samba4 libreplace, which is GPL. I hope it is ok to copy&paste it into a GPL file. Tridge, we could also create a replace_lpgl.c if needed. Volker (This used to be commit f8346687d950ed643e8fa7d0b1a9c27f2880cc85) --- source3/configure.in | 2 +- source3/lib/replace.c | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) (limited to 'source3') diff --git a/source3/configure.in b/source3/configure.in index 160791eff7..fe994e2ece 100644 --- a/source3/configure.in +++ b/source3/configure.in @@ -1274,7 +1274,7 @@ if test x"$ac_cv_func_execl" = x"no"; then fi AC_CHECK_FUNCS(dlopen dlclose dlsym dlerror waitpid getcwd strdup strndup strnlen strerror chown fchown chmod fchmod chroot link mknod mknod64) -AC_CHECK_FUNCS(strtol strtoll strtoul strtoull) +AC_CHECK_FUNCS(strtol strtoll strtoul strtoull strtouq __strtoull) AC_CHECK_FUNCS(fstat strchr utime utimes getrlimit fsync memset strlcpy strlcat setpgid) AC_CHECK_FUNCS(memmove vsnprintf snprintf asprintf vasprintf setsid glob strpbrk pipe crypt16 getauthuid) AC_CHECK_FUNCS(strftime sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent) diff --git a/source3/lib/replace.c b/source3/lib/replace.c index 19b37af938..38f0af24d9 100644 --- a/source3/lib/replace.c +++ b/source3/lib/replace.c @@ -415,6 +415,21 @@ char *rep_inet_ntoa(struct in_addr ip) } #endif /* HAVE_STRTOUL */ +#ifndef HAVE_STRTOULL +unsigned long long int rep_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 + #ifndef HAVE_SETLINEBUF int setlinebuf(FILE *stream) { -- cgit