aboutsummaryrefslogtreecommitdiff
path: root/lib/system_win32.c
diff options
context:
space:
mode:
authorMarcel Raad <raad@teamviewer.com>2016-10-01 17:55:37 +0200
committerMarcel Raad <raad@teamviewer.com>2016-10-16 12:09:12 +0200
commit422db18f15925b8ad7983329ca08041049783071 (patch)
treea8d0675abc5c8b0daf8e92c2285f6a607d41058f /lib/system_win32.c
parent4ddc772b30db523742178c194b605572a0835698 (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/system_win32.c')
-rw-r--r--lib/system_win32.c34
1 files changed, 33 insertions, 1 deletions
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;