summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorEmīls <emils@mullvad.net>2021-02-04 22:07:52 +0000
committerEmīls <emils@mullvad.net>2021-02-04 22:07:52 +0000
commitf932f56dcf1b5023b5db1ec6a3cdd6812dcc797a (patch)
tree777b015e14582bfb5670a04118a301781fe95aed
parent00452fb6eadabc3b4ccb483718d18c87092ff543 (diff)
parentfbbd541ac374fd6f9f9b1356c35e74de3a3b44be (diff)
downloadmullvadvpn-f932f56dcf1b5023b5db1ec6a3cdd6812dcc797a.tar.xz
mullvadvpn-f932f56dcf1b5023b5db1ec6a3cdd6812dcc797a.zip
Merge branch 'win-add-minor-versino-to-version-check'
-rw-r--r--talpid-platform-metadata/src/windows.rs23
1 files changed, 17 insertions, 6 deletions
diff --git a/talpid-platform-metadata/src/windows.rs b/talpid-platform-metadata/src/windows.rs
index 0222f63221..016d71ed4c 100644
--- a/talpid-platform-metadata/src/windows.rs
+++ b/talpid-platform-metadata/src/windows.rs
@@ -11,22 +11,21 @@ use winapi::um::{
};
pub fn version() -> String {
- let (major, minor, build) = WindowsVersion::new()
+ let (major, build) = WindowsVersion::new()
.map(|version_info| {
(
- version_info.major_version().to_string(),
- version_info.minor_version().to_string(),
+ version_info.windows_version_string(),
version_info.build_number().to_string(),
)
})
- .unwrap_or_else(|_| ("N/A".to_string(), "N/A".to_string(), "N/A".to_string()));
+ .unwrap_or_else(|_| ("N/A".to_string(), "N/A".to_string()));
- format!("Windows {}.{} Build {}", major, minor, build)
+ format!("Windows {} Build {}", major, build)
}
pub fn short_version() -> String {
let version_string = WindowsVersion::new()
- .map(|version| version.major_version().to_string())
+ .map(|version| version.windows_version_string())
.unwrap_or("N/A".into());
format!("Windows {}", version_string)
}
@@ -75,6 +74,18 @@ impl WindowsVersion {
}
}
+ pub fn windows_version_string(&self) -> String {
+ // Check https://en.wikipedia.org/wiki/List_of_Microsoft_Windows_versions#Personal_computer_versions 'Release version' column
+ // for the correct NT versions for specific windows releases.
+ match (self.major_version(), self.minor_version()) {
+ (6, 1) => "7".into(),
+ (6, 2) => "8".into(),
+ (6, 3) => "8.1".into(),
+ (10, 0) => "10".into(),
+ (major, minor) => format!("{}.{}", major, minor),
+ }
+ }
+
pub fn major_version(&self) -> u32 {
self.inner.dwMajorVersion
}