From 25caeae8d2797ef70c3991b295039159c2a1be21 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Fri, 18 May 2018 12:52:28 -0400 Subject: [PATCH] Recognize that MSVC can support strtoll() and strtoull(). This is needed for full support of "long long" variables in ecpg, but the previous patch for bug #15080 (commits 51057feaa et al) missed it. In MSVC versions where the functions don't exist under those names, we can nonetheless use _strtoi64() and _strtoui64(). Like the previous patch, back-patch all the way. Dang Minh Huong Discussion: https://postgr.es/m/151935568942.1461.14623890240535309745@wrigleys.postgresql.org --- src/include/pg_config.h.win32 | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/include/pg_config.h.win32 b/src/include/pg_config.h.win32 index 83aea69754..97fc757b1e 100644 --- a/src/include/pg_config.h.win32 +++ b/src/include/pg_config.h.win32 @@ -354,13 +354,25 @@ #define HAVE_STRING_H 1 /* Define to 1 if you have the `strtoll' function. */ -//#define HAVE_STRTOLL 1 +#ifdef HAVE_LONG_LONG_INT_64 +#define HAVE_STRTOLL 1 +/* Before VS2013, use Microsoft's nonstandard equivalent function */ +#if (_MSC_VER < 1800) +#define strtoll _strtoi64 +#endif +#endif /* Define to 1 if you have the `strtoq' function. */ /* #undef HAVE_STRTOQ */ /* Define to 1 if you have the `strtoull' function. */ -//#define HAVE_STRTOULL 1 +#ifdef HAVE_LONG_LONG_INT_64 +#define HAVE_STRTOULL 1 +/* Before VS2013, use Microsoft's nonstandard equivalent function */ +#if (_MSC_VER < 1800) +#define strtoull _strtoui64 +#endif +#endif /* Define to 1 if you have the `strtouq' function. */ /* #undef HAVE_STRTOUQ */