Re: msys inet_pton strangeness
Alexander Law <exclusion@gmail.com>
From: Alexander Lakhin <exclusion@gmail.com>
To: Thomas Munro <thomas.munro@gmail.com>,
Andrew Dunstan <andrew@dunslane.net>
Cc: Tom Lane <tgl@sss.pgh.pa.us>,
PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2024-09-29T05:00:00Z
Lists: pgsql-hackers
Hello Thomas and Andrew, 28.09.2024 23:52, Thomas Munro wrote: > On Sun, Sep 29, 2024 at 6:26 AM Andrew Dunstan <andrew@dunslane.net> wrote: >> We should have included ws2tcpip.h, which includes this: >> >> #define InetPtonA inet_pton >> WINSOCK_API_LINKAGE INT WSAAPI InetPtonA(INT Family, LPCSTR pStringBuf, PVOID pAddr); >> >> It's conditioned on (_WIN32_WINNT >= 0x0600), but that should be true. > Can you print out the value to be sure? I can't imagine they'd set it > lower themselves or make it go backwards in an upgrade, but perhaps > it's somehow not being set at all, and then we do: > > #if defined(_MSC_VER) && _MSC_VER >= 1900 > #define MIN_WINNT 0x0600 > #else > #define MIN_WINNT 0x0501 > #endif > > In 16 we don't do that anymore, we just always set it to 0x0A00 > (commit 495ed0ef2d72). And before 15, we didn't want that function > yet (commit c1932e542863). FWIW, I'm observing the same here. For a trivial test.c (compiled with the same command line as fe-secure-common.c) like: "===_WIN32" _WIN32; "===_WIN32_WINNT"; _WIN32_WINNT; with gcc -E (from mingw-w64-ucrt-x86_64-gcc 14.2.0-1), I get: "===_WIN32" 1; "===_WIN32_WINNT"; _WIN32_WINNT; That is, _WIN32_WINNT is not defined, but with #include <windows.h> above, I see: "===_WIN32_WINNT"; 0x603 With #include "postgres_fe.h" (as in fe-secure-common.c) I get: "===_WIN32_WINNT"; 0x0501; Best regards, Alexander
Commits
-
Bump MIN_WINNT for MINGW to clear a build error
- d700e8d75bc3 15.9 landed
-
Make Windows 10 the minimal runtime requirement for WIN32
- 495ed0ef2d72 16.0 cited
-
libpq: Allow IP address SANs in server certificates
- c1932e542863 15.0 cited