diff options
author | Petr Mrázek <peterix@gmail.com> | 2021-09-04 21:27:09 +0200 |
---|---|---|
committer | Petr Mrázek <peterix@gmail.com> | 2021-09-04 21:27:09 +0200 |
commit | 938f896bfa7775cf7dcf1ee6883572f514f53993 (patch) | |
tree | e95720f21a0e818e45659ce055b7306f81ee6919 /libraries | |
parent | cd87029e6fc0c8d8b25c9162812ae066066ad11a (diff) | |
download | PrismLauncher-938f896bfa7775cf7dcf1ee6883572f514f53993.tar.gz PrismLauncher-938f896bfa7775cf7dcf1ee6883572f514f53993.tar.bz2 PrismLauncher-938f896bfa7775cf7dcf1ee6883572f514f53993.zip |
GH-4014 change updater to recognize new Qt 5.15.2 builds
Diffstat (limited to 'libraries')
-rw-r--r-- | libraries/systeminfo/include/sys.h | 14 | ||||
-rw-r--r-- | libraries/systeminfo/src/sys_apple.cpp | 22 | ||||
-rw-r--r-- | libraries/systeminfo/src/sys_unix.cpp | 23 | ||||
-rw-r--r-- | libraries/systeminfo/src/sys_win32.cpp | 4 |
4 files changed, 61 insertions, 2 deletions
diff --git a/libraries/systeminfo/include/sys.h b/libraries/systeminfo/include/sys.h index 914d2555..bd6e2486 100644 --- a/libraries/systeminfo/include/sys.h +++ b/libraries/systeminfo/include/sys.h @@ -4,10 +4,24 @@ namespace Sys { const uint64_t mebibyte = 1024ull * 1024ull; + +enum class KernelType { + Undetermined, + Windows, + Darwin, + Linux +}; + struct KernelInfo { QString kernelName; QString kernelVersion; + + KernelType kernelType = KernelType::Undetermined; + int kernelMajor = 0; + int kernelMinor = 0; + int kernelPatch = 0; + bool isCursed = false; }; KernelInfo getKernelInfo(); diff --git a/libraries/systeminfo/src/sys_apple.cpp b/libraries/systeminfo/src/sys_apple.cpp index 4bcffae4..2d7d6083 100644 --- a/libraries/systeminfo/src/sys_apple.cpp +++ b/libraries/systeminfo/src/sys_apple.cpp @@ -2,13 +2,33 @@ #include <sys/utsname.h> +#include <QString> +#include <QStringList> + Sys::KernelInfo Sys::getKernelInfo() { Sys::KernelInfo out; struct utsname buf; uname(&buf); + out.kernelType = KernelType::Darwin; out.kernelName = buf.sysname; - out.kernelVersion = buf.release; + QString release = out.kernelVersion = buf.release; + + // TODO: figure out how to detect cursed-ness (macOS emulated on linux via mad hacks and so on) + out.isCursed = false; + + out.kernelMajor = 0; + out.kernelMinor = 0; + out.kernelPatch = 0; + auto sections = release.split('-'); + if(sections.size() >= 1) { + auto versionParts = sections[0].split('.'); + if(sections.size() >= 3) { + out.kernelMajor = sections[0].toInt(); + out.kernelMinor = sections[1].toInt(); + out.kernelPatch = sections[2].toInt(); + } + } return out; } diff --git a/libraries/systeminfo/src/sys_unix.cpp b/libraries/systeminfo/src/sys_unix.cpp index 42c0d319..303ead1f 100644 --- a/libraries/systeminfo/src/sys_unix.cpp +++ b/libraries/systeminfo/src/sys_unix.cpp @@ -6,13 +6,34 @@ #include <fstream> #include <limits> +#include <QString> +#include <QStringList> + Sys::KernelInfo Sys::getKernelInfo() { Sys::KernelInfo out; struct utsname buf; uname(&buf); + // NOTE: we assume linux here. this needs further elaboration + out.kernelType = KernelType::Linux; out.kernelName = buf.sysname; - out.kernelVersion = buf.release; + QString release = out.kernelVersion = buf.release; + + // linux binary running on WSL is cursed. + out.isCursed = release.contains("WSL", Qt::CaseInsensitive) || release.contains("Microsoft", Qt::CaseInsensitive); + + out.kernelMajor = 0; + out.kernelMinor = 0; + out.kernelPatch = 0; + auto sections = release.split('-'); + if(sections.size() >= 1) { + auto versionParts = sections[0].split('.'); + if(sections.size() >= 3) { + out.kernelMajor = sections[0].toInt(); + out.kernelMinor = sections[1].toInt(); + out.kernelPatch = sections[2].toInt(); + } + } return out; } diff --git a/libraries/systeminfo/src/sys_win32.cpp b/libraries/systeminfo/src/sys_win32.cpp index a750b3a7..430b87e4 100644 --- a/libraries/systeminfo/src/sys_win32.cpp +++ b/libraries/systeminfo/src/sys_win32.cpp @@ -5,12 +5,16 @@ Sys::KernelInfo Sys::getKernelInfo() { Sys::KernelInfo out; + out.kernelType = KernelType::Windows; out.kernelName = "Windows"; OSVERSIONINFOW osvi; ZeroMemory(&osvi, sizeof(OSVERSIONINFOW)); osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOW); GetVersionExW(&osvi); out.kernelVersion = QString("%1.%2").arg(osvi.dwMajorVersion).arg(osvi.dwMinorVersion); + out.kernelMajor = osvi.dwMajorVersion; + out.kernelMinor = osvi.dwMinorVersion; + out.kernelPatch = osvi.dwBuildNumber; return out; } |