From: Viktor Szakats Date: Tue, 7 Jan 2025 09:48:57 +0000 (+0100) Subject: msvc: fix building with `HAVE_INET_NTOP` and MSVC <=1900 X-Git-Tag: curl-8_12_0~191 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=08ff33e483e15b003de169cef33ca7cb6b6a32c0;p=thirdparty%2Fcurl.git msvc: fix building with `HAVE_INET_NTOP` and MSVC <=1900 MSVC 1900 and older is missing a `const` specifier in the `inet_ntop()` declaration for the second argument. A workaround was in place for it in cmake, but it didn't cover all necessary versions. Replace the workaround with a different one, move it to `lib/inet_ntop.c` and extend to all necessary MSVC versions. Also add CI jobs for the older MSVC versions: 2013, 2015, 2017. Closes #15923 --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 84252a3109..1ede5306fe 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1703,9 +1703,6 @@ if(APPLE) check_function_exists("mach_absolute_time" HAVE_MACH_ABSOLUTE_TIME) endif() check_symbol_exists("inet_ntop" "${CURL_INCLUDES};stdlib.h;string.h" HAVE_INET_NTOP) # arpa/inet.h -if(MSVC AND (MSVC_VERSION LESS_EQUAL 1600)) - set(HAVE_INET_NTOP OFF) -endif() check_symbol_exists("inet_pton" "${CURL_INCLUDES};stdlib.h;string.h" HAVE_INET_PTON) # arpa/inet.h check_symbol_exists("fsetxattr" "sys/xattr.h" HAVE_FSETXATTR) diff --git a/appveyor.yml b/appveyor.yml index 8209cd119b..4e4be0b516 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -61,6 +61,39 @@ environment: ENABLE_UNICODE: 'OFF' SHARED: 'ON' EXAMPLES: 'ON' + - job_name: 'CMake, VS2013, Debug, x64, OpenSSL 1.1.1, Build-only' + APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2015' + BUILD_SYSTEM: CMake + PRJ_GEN: 'Visual Studio 12 2013' + TARGET: '-A x64' + PRJ_CFG: Debug + OPENSSL: 'ON' + SCHANNEL: 'OFF' + ENABLE_UNICODE: 'OFF' + SHARED: 'ON' + TFLAGS: 'skipall' + - job_name: 'CMake, VS2015, Debug, x64, OpenSSL 1.1.1, Build-only' + APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2015' + BUILD_SYSTEM: CMake + PRJ_GEN: 'Visual Studio 14 2015' + TARGET: '-A x64' + PRJ_CFG: Debug + OPENSSL: 'ON' + SCHANNEL: 'OFF' + ENABLE_UNICODE: 'OFF' + SHARED: 'ON' + TFLAGS: 'skipall' + - job_name: 'CMake, VS2017, Debug, x64, OpenSSL 1.1.1, Build-only' + APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2017' + BUILD_SYSTEM: CMake + PRJ_GEN: 'Visual Studio 15 2017' + TARGET: '-A x64' + PRJ_CFG: Debug + OPENSSL: 'ON' + SCHANNEL: 'OFF' + ENABLE_UNICODE: 'OFF' + SHARED: 'ON' + TFLAGS: 'skipall' - job_name: 'CMake, VS2022, Release, x64, OpenSSL 3.3, Shared, Build-tests' APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2022' BUILD_SYSTEM: CMake diff --git a/lib/inet_ntop.h b/lib/inet_ntop.h index 206d79c866..3b90ed3b47 100644 --- a/lib/inet_ntop.h +++ b/lib/inet_ntop.h @@ -33,8 +33,11 @@ char *Curl_inet_ntop(int af, const void *addr, char *buf, size_t size); #include #endif #ifdef _WIN32 -#define Curl_inet_ntop(af,addr,buf,size) \ - inet_ntop(af, addr, buf, size) +#if defined(_MSC_VER) && (_MSC_VER <= 1900) +#define Curl_inet_ntop(af,addr,buf,size) inet_ntop(af, (void *)addr, buf, size) +#else +#define Curl_inet_ntop(af,addr,buf,size) inet_ntop(af, addr, buf, size) +#endif #elif defined(__AMIGA__) #define Curl_inet_ntop(af,addr,buf,size) \ (char *)inet_ntop(af, (void *)addr, (unsigned char *)buf, \