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
This commit is contained in:
Marcel Raad 2016-10-01 17:55:37 +02:00
Родитель 4ddc772b30
Коммит 422db18f15
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: B7F13D981BBF1607
2 изменённых файлов: 33 добавлений и 4 удалений

Просмотреть файл

@ -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);

Просмотреть файл

@ -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;