diff options
author | Nico Weber <thakis@chromium.org> | 2016-11-08 04:36:32 (GMT) |
---|---|---|
committer | Nico Weber <thakis@chromium.org> | 2016-11-08 04:36:32 (GMT) |
commit | 32c82da13e2d16792c79507be3d875a6e4624423 (patch) | |
tree | 3f7d303c18a4cbe31732953328a41c46a8c0a933 /src | |
parent | 2263f82beab801f5d0235790e651142dba202ae8 (diff) | |
download | Ninja-32c82da13e2d16792c79507be3d875a6e4624423.zip Ninja-32c82da13e2d16792c79507be3d875a6e4624423.tar.gz Ninja-32c82da13e2d16792c79507be3d875a6e4624423.tar.bz2 |
windows: replace deprecated GetVersionEx with recommended replacement
The recommended replacement VerifyVersionInfo should work with the same
SDKs that GetVersionEx worked with (while the wrappers in
VersionHelpers.h require a recent SDK). This patch should not change
behavior, and it's not supposed to increase build requirements. If
this makes things harder to build, please let me know.
Diffstat (limited to 'src')
-rw-r--r-- | src/disk_interface.cc | 19 |
1 files changed, 7 insertions, 12 deletions
diff --git a/src/disk_interface.cc b/src/disk_interface.cc index 451a9b4..1b4135f 100644 --- a/src/disk_interface.cc +++ b/src/disk_interface.cc @@ -80,20 +80,15 @@ TimeStamp StatSingleFile(const string& path, string* err) { return TimeStampFromFileTime(attrs.ftLastWriteTime); } -#ifdef _MSC_VER -#pragma warning(push) -#pragma warning(disable: 4996) // GetVersionExA is deprecated post SDK 8.1. -#endif bool IsWindows7OrLater() { - OSVERSIONINFO version_info = { sizeof(version_info) }; - if (!GetVersionEx(&version_info)) - Fatal("GetVersionEx: %s", GetLastErrorString().c_str()); - return version_info.dwMajorVersion > 6 || - (version_info.dwMajorVersion == 6 && version_info.dwMinorVersion >= 1); + OSVERSIONINFOEX version_info = + { sizeof(OSVERSIONINFOEX), 6, 1, 0, 0, {0}, 0, 0, 0, 0, 0}; + DWORDLONG comparison = 0; + VER_SET_CONDITION(comparison, VER_MAJORVERSION, VER_GREATER_EQUAL); + VER_SET_CONDITION(comparison, VER_MINORVERSION, VER_GREATER_EQUAL); + return VerifyVersionInfo( + &version_info, VER_MAJORVERSION | VER_MINORVERSION, comparison); } -#ifdef _MSC_VER -#pragma warning(pop) -#endif bool StatAllFilesInDir(const string& dir, map<string, TimeStamp>* stamps, string* err) { |