diff options
author | Marcel Raad <raad@teamviewer.com> | 2016-10-01 17:55:37 +0200 |
---|---|---|
committer | Marcel Raad <raad@teamviewer.com> | 2016-10-16 12:09:12 +0200 |
commit | 422db18f15925b8ad7983329ca08041049783071 (patch) | |
tree | a8d0675abc5c8b0daf8e92c2285f6a607d41058f /lib | |
parent | 4ddc772b30db523742178c194b605572a0835698 (diff) |
win: fix Universal Windows Platform build
This fixes a merge error in commit 7f3df80 caused by commit 332e8d6.
Additionally, this changes Curl_verify_windows_version for Windows App
builds to assume to always be running on the target Windows version.
There seems to be no way to determine the Windows version from a
UWP app. Neither GetVersion(Ex), nor VerifyVersionInfo, nor the
Version Helper functions are supported.
Bug: https://github.com/curl/curl/pull/820#issuecomment-250889878
Reported-by: Paul Joyce
Closes https://github.com/curl/curl/pull/1048
Diffstat (limited to 'lib')
-rw-r--r-- | lib/connect.c | 3 | ||||
-rw-r--r-- | lib/system_win32.c | 34 |
2 files changed, 33 insertions, 4 deletions
diff --git a/lib/connect.c b/lib/connect.c index 3225d70cf..e2b34eb6a 100644 --- a/lib/connect.c +++ b/lib/connect.c @@ -130,9 +130,6 @@ tcpkeepalive(struct Curl_easy *data, infof(data, "Failed to set SIO_KEEPALIVE_VALS on fd %d: %d\n", (int)sockfd, WSAGetLastError()); } -#elif defined(CURL_WINDOWS_APP) - (void)majorVersion; - detectOsState = DETECT_OS_VISTA_OR_LATER; #else #ifdef TCP_KEEPIDLE optval = curlx_sltosi(data->set.tcp_keepidle); diff --git a/lib/system_win32.c b/lib/system_win32.c index effc3f2bc..78737593a 100644 --- a/lib/system_win32.c +++ b/lib/system_win32.c @@ -83,7 +83,39 @@ bool Curl_verify_windows_version(const unsigned int majorVersion, { bool matched = FALSE; -#if !defined(_WIN32_WINNT) || !defined(_WIN32_WINNT_WIN2K) || \ +#if defined(CURL_WINDOWS_APP) + /* We have no way to determine the Windows version from Windows apps, + so let's assume we're running on the target Windows version. */ + const WORD fullVersion = MAKEWORD(minorVersion, majorVersion); + const WORD targetVersion = (WORD)_WIN32_WINNT; + + switch(condition) { + case VERSION_LESS_THAN: + matched = targetVersion < fullVersion; + break; + + case VERSION_LESS_THAN_EQUAL: + matched = targetVersion <= fullVersion; + break; + + case VERSION_EQUAL: + matched = targetVersion == fullVersion; + break; + + case VERSION_GREATER_THAN_EQUAL: + matched = targetVersion >= fullVersion; + break; + + case VERSION_GREATER_THAN: + matched = targetVersion > fullVersion; + break; + } + + if(matched && (platform == PLATFORM_WINDOWS)) { + /* we're always running on PLATFORM_WINNT */ + matched = FALSE; + } +#elif !defined(_WIN32_WINNT) || !defined(_WIN32_WINNT_WIN2K) || \ (_WIN32_WINNT < _WIN32_WINNT_WIN2K) OSVERSIONINFO osver; |