diff --git a/configure b/configure index 6acbc6e900..b244fc31d3 100755 --- a/configure +++ b/configure @@ -15710,7 +15710,7 @@ $as_echo "#define HAVE_INT_OPTRESET 1" >>confdefs.h fi -for ac_func in strtoll strtoq +for ac_func in strtoll __strtoll strtoq do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" @@ -15722,7 +15722,7 @@ _ACEOF fi done -for ac_func in strtoull strtouq +for ac_func in strtoull __strtoull strtouq do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" diff --git a/configure.in b/configure.in index 8ea521a217..8efcb89ada 100644 --- a/configure.in +++ b/configure.in @@ -1749,8 +1749,8 @@ if test x"$pgac_cv_var_int_optreset" = x"yes"; then AC_DEFINE(HAVE_INT_OPTRESET, 1, [Define to 1 if you have the global variable 'int optreset'.]) fi -AC_CHECK_FUNCS([strtoll strtoq], [break]) -AC_CHECK_FUNCS([strtoull strtouq], [break]) +AC_CHECK_FUNCS([strtoll __strtoll strtoq], [break]) +AC_CHECK_FUNCS([strtoull __strtoull strtouq], [break]) # strto[u]ll may exist but not be declared AC_CHECK_DECLS([strtoll, strtoull]) diff --git a/src/include/c.h b/src/include/c.h index d88db02c6d..1e50103095 100644 --- a/src/include/c.h +++ b/src/include/c.h @@ -1096,13 +1096,40 @@ extern int snprintf(char *str, size_t count, const char *fmt,...) pg_attribute_p extern int vsnprintf(char *str, size_t count, const char *fmt, va_list args); #endif -#if defined(HAVE_LONG_LONG_INT) && defined(HAVE_STRTOLL) && !HAVE_DECL_STRTOLL +#if defined(HAVE_FDATASYNC) && !HAVE_DECL_FDATASYNC +extern int fdatasync(int fildes); +#endif + +#ifdef HAVE_LONG_LONG_INT +/* Older platforms may provide strto[u]ll functionality under other names */ +#if !defined(HAVE_STRTOLL) && defined(HAVE___STRTOLL) +#define strtoll __strtoll +#define HAVE_STRTOLL 1 +#endif + +#if !defined(HAVE_STRTOLL) && defined(HAVE_STRTOQ) +#define strtoll strtoq +#define HAVE_STRTOLL 1 +#endif + +#if !defined(HAVE_STRTOULL) && defined(HAVE___STRTOULL) +#define strtoull __strtoull +#define HAVE_STRTOULL 1 +#endif + +#if !defined(HAVE_STRTOULL) && defined(HAVE_STRTOUQ) +#define strtoull strtouq +#define HAVE_STRTOULL 1 +#endif + +#if defined(HAVE_STRTOLL) && !HAVE_DECL_STRTOLL extern long long strtoll(const char *str, char **endptr, int base); #endif -#if defined(HAVE_LONG_LONG_INT) && defined(HAVE_STRTOULL) && !HAVE_DECL_STRTOULL +#if defined(HAVE_STRTOULL) && !HAVE_DECL_STRTOULL extern unsigned long long strtoull(const char *str, char **endptr, int base); #endif +#endif /* HAVE_LONG_LONG_INT */ #if !defined(HAVE_MEMMOVE) && !defined(memmove) #define memmove(d, s, c) bcopy(s, d, c) @@ -1140,22 +1167,6 @@ extern unsigned long long strtoull(const char *str, char **endptr, int base); #define siglongjmp longjmp #endif -#if defined(HAVE_FDATASYNC) && !HAVE_DECL_FDATASYNC -extern int fdatasync(int fildes); -#endif - -/* If strtoq() exists, rename it to the more standard strtoll() */ -#if defined(HAVE_LONG_LONG_INT_64) && !defined(HAVE_STRTOLL) && defined(HAVE_STRTOQ) -#define strtoll strtoq -#define HAVE_STRTOLL 1 -#endif - -/* If strtouq() exists, rename it to the more standard strtoull() */ -#if defined(HAVE_LONG_LONG_INT_64) && !defined(HAVE_STRTOULL) && defined(HAVE_STRTOUQ) -#define strtoull strtouq -#define HAVE_STRTOULL 1 -#endif - /* EXEC_BACKEND defines */ #ifdef EXEC_BACKEND #define NON_EXEC_STATIC diff --git a/src/include/pg_config.h.in b/src/include/pg_config.h.in index e2ffaa28a0..c3320f2c96 100644 --- a/src/include/pg_config.h.in +++ b/src/include/pg_config.h.in @@ -750,6 +750,12 @@ /* Define to 1 if your compiler understands __VA_ARGS__ in macros. */ #undef HAVE__VA_ARGS +/* Define to 1 if you have the `__strtoll' function. */ +#undef HAVE___STRTOLL + +/* Define to 1 if you have the `__strtoull' function. */ +#undef HAVE___STRTOULL + /* Define to the appropriate snprintf length modifier for 64-bit ints. */ #undef INT64_MODIFIER diff --git a/src/include/pg_config.h.win32 b/src/include/pg_config.h.win32 index 1a63dc4dc9..bf641e0c7d 100644 --- a/src/include/pg_config.h.win32 +++ b/src/include/pg_config.h.win32 @@ -401,9 +401,6 @@ #endif #endif -/* Define to 1 if you have the `strtoq' function. */ -/* #undef HAVE_STRTOQ */ - /* Define to 1 if you have the `strtoull' function. */ #ifdef HAVE_LONG_LONG_INT_64 #define HAVE_STRTOULL 1 @@ -413,9 +410,6 @@ #endif #endif -/* Define to 1 if you have the `strtouq' function. */ -/* #undef HAVE_STRTOUQ */ - /* Define to 1 if the system has the type `struct addrinfo'. */ #if (_MSC_VER > 1200) #define HAVE_STRUCT_ADDRINFO 1