]> granicus.if.org Git - postgresql/commitdiff
Support platforms where strtoll/strtoull are spelled __strtoll/__strtoull.
authorTom Lane <tgl@sss.pgh.pa.us>
Sat, 19 May 2018 18:22:19 +0000 (14:22 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Sat, 19 May 2018 18:22:19 +0000 (14:22 -0400)
Ancient HPUX, for one, does this.  We hadn't noticed due to the lack
of regression tests that required a working strtoll.

(I was slightly tempted to remove the other historical spelling,
strto[u]q, since it seems we have no buildfarm members testing that case.
But I refrained.)

Discussion: https://postgr.es/m/151935568942.1461.14623890240535309745@wrigleys.postgresql.org

configure
configure.in
src/include/c.h
src/include/pg_config.h.in
src/include/pg_config.h.win32

index 48440ea3b57fe78201cfe91df3a54af8188177cd..928d7c696ddbfcda208dcdb3a989ae6b9f97cfc3 100755 (executable)
--- a/configure
+++ b/configure
@@ -23221,7 +23221,8 @@ 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`
 { $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
@@ -23323,7 +23324,8 @@ 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`
 { $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
index 7f11500e4f6972969fae002c48c42b6e605ec3f3..d434dec31abe5b00a1477550e6b554b1a531257c 100644 (file)
@@ -1507,8 +1507,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])
 
index 6dd2581f11e5e476d4dac371d83de53ed2f981d2..adfb9122a4891a3fecae2c8031345aee182d0243 100644 (file)
@@ -951,13 +951,40 @@ __attribute__((format(PG_PRINTF_ATTRIBUTE, 3, 4)));
 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)
@@ -995,22 +1022,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
-
 /*
  * We assume if we have these two functions, we have their friends too, and
  * can use the wide-character functions.
index c5885df54353756a8d23a0c0a933c010d6b3a335..0121ea80281eecc89d570b97c14bbf640d2e6b86 100644 (file)
 /* 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 format for 64-bit ints. */
 #undef INT64_FORMAT
 
index a678d5a5b0584d58b4d4e0259bd16bbd39c0dd8a..fb58bc505c2367119f1b0c751ce38cebde4d3484 100644 (file)
 #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
 #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