diff options
author | Yang Tse <yangsita@gmail.com> | 2011-03-23 20:53:28 +0100 |
---|---|---|
committer | Yang Tse <yangsita@gmail.com> | 2011-03-23 20:53:28 +0100 |
commit | bd066ab8efa0d43ef002954f4587a195a15ac460 (patch) | |
tree | 450f425d38f2c2d873e5cd8f1f829a957d1d4a4e /windows_port.c | |
parent | 822fd0f8771d3792da0a08276ab0400b2a68f07e (diff) | |
download | c-ares-bd066ab8efa0d43ef002954f4587a195a15ac460.tar.gz c-ares-bd066ab8efa0d43ef002954f4587a195a15ac460.tar.bz2 c-ares-bd066ab8efa0d43ef002954f4587a195a15ac460.zip |
build: find out windows platform using GetVersionEx()
Diffstat (limited to 'windows_port.c')
-rw-r--r-- | windows_port.c | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/windows_port.c b/windows_port.c index 03acd1c..6a48f08 100644 --- a/windows_port.c +++ b/windows_port.c @@ -1,5 +1,6 @@ #include "ares_setup.h" +#include "ares_private.h" /* only do the following on windows */ @@ -19,4 +20,42 @@ WINAPI DllMain (HINSTANCE hnd, DWORD reason, LPVOID reserved) } #endif +#define V_PLATFORM_WIN32s 0 +#define V_PLATFORM_WIN32_WINDOWS 1 +#define V_PLATFORM_WIN32_NT 2 +#define V_PLATFORM_WIN32_CE 3 + +win_platform getplatform(void) +{ + OSVERSIONINFOEX OsvEx; + + memset(&OsvEx, 0, sizeof(OsvEx)); + OsvEx.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX); + if (!GetVersionEx((void *)&OsvEx)) + { + memset(&OsvEx, 0, sizeof(OsvEx)); + OsvEx.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); + if (!GetVersionEx((void *)&OsvEx)) + return WIN_UNKNOWN; + } + + switch(OsvEx.dwPlatformId) + { + case V_PLATFORM_WIN32s: + return WIN_3X; + + case V_PLATFORM_WIN32_WINDOWS: + return WIN_9X; + + case V_PLATFORM_WIN32_NT: + return WIN_NT; + + case V_PLATFORM_WIN32_CE: + return WIN_CE; + + default: + return WIN_UNKNOWN; + } +} + #endif /* WIN32 builds only */ |