Mercurial > dovecot > original-hg > dovecot-1.2
changeset 7847:35877d1131db HEAD
Added more fallbacks if strtoll() or strtoull() isn't implemented
(e.g. HP-UX).
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Thu, 12 Jun 2008 23:31:51 +0300 |
parents | f4c53ad3610f |
children | a1fd8b29f629 |
files | configure.in src/lib/compat.c src/lib/compat.h |
diffstat | 3 files changed, 27 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/configure.in Thu Jun 12 23:16:46 2008 +0300 +++ b/configure.in Thu Jun 12 23:31:51 2008 +0300 @@ -15,7 +15,7 @@ AC_PROG_LIBTOOL AM_ICONV -AC_CHECK_HEADERS(strings.h stdint.h unistd.h dirent.h malloc.h \ +AC_CHECK_HEADERS(strings.h stdint.h unistd.h dirent.h malloc.h inttypes.h \ sys/uio.h sys/sysmacros.h sys/resource.h sys/select.h libgen.h \ sys/quota.h sys/fs/ufs_quota.h ufs/ufs/quota.h jfs/quota.h \ mntent.h sys/mnttab.h sys/event.h sys/time.h sys/mkdev.h linux/dqblk_xfs.h \ @@ -429,9 +429,9 @@ AC_CHECK_FUNCS(fcntl flock lockf inet_aton sigaction getpagesize madvise \ strcasecmp stricmp vsyslog writev pread \ setrlimit setproctitle seteuid setreuid setegid setresgid \ - strtoull strtouq setpriority quotactl getmntent kqueue kevent \ - backtrace_symbols walkcontext dirfd clearenv \ - malloc_usable_size) + strtoull strtoll strtoumax strtoimax strtouq strtoq \ + setpriority quotactl getmntent kqueue kevent backtrace_symbols \ + walkcontext dirfd clearenv malloc_usable_size) dnl * I/O loop function have_ioloop=no
--- a/src/lib/compat.c Thu Jun 12 23:16:46 2008 +0300 +++ b/src/lib/compat.c Thu Jun 12 23:31:51 2008 +0300 @@ -17,6 +17,9 @@ #include <ctype.h> #include <unistd.h> #include <syslog.h> +#ifdef HAVE_INTTYPES_H +# include <inttypes.h> /* for strtoimax() and strtoumax() */ +#endif #ifndef INADDR_NONE # define INADDR_NONE INADDR_BROADCAST @@ -201,7 +204,9 @@ #ifndef HAVE_STRTOULL unsigned long long int my_strtoull(const char *nptr, char **endptr, int base) { -#ifdef HAVE_STRTOUQ +#ifdef HAVE_STRTOUMAX + return strtoumax(nptr, endptr, base); +#elif defined(HAVE_STRTOUQ) return strtouq(nptr, endptr, base); #else unsigned long ret = 0; @@ -220,3 +225,16 @@ #endif } #endif + +#ifndef HAVE_STRTOLL +unsigned long long int my_strtoll(const char *nptr, char **endptr, int base) +{ +#ifdef HAVE_STRTOIMAX + return strtoimax(nptr, endptr, base); +#elif defined (HAVE_STRTOQ) + return strtoq(nptr, endptr, base); +#else + i_panic("strtoll() not implemented"); +#endif +} +#endif
--- a/src/lib/compat.h Thu Jun 12 23:16:46 2008 +0300 +++ b/src/lib/compat.h Thu Jun 12 23:31:51 2008 +0300 @@ -188,6 +188,10 @@ # define strtoull my_strtoull unsigned long long int my_strtoull(const char *nptr, char **endptr, int base); #endif +#ifndef HAVE_STRTOLL +# define strtoll my_strtoll +unsigned long long int my_strtoll(const char *nptr, char **endptr, int base); +#endif /* ctype.h isn't safe with signed chars, use our own instead if really needed */