aboutsummaryrefslogtreecommitdiff
path: root/libraries
diff options
context:
space:
mode:
authorPetr Mrázek <peterix@gmail.com>2021-09-04 21:27:09 +0200
committerPetr Mrázek <peterix@gmail.com>2021-09-04 21:27:09 +0200
commit938f896bfa7775cf7dcf1ee6883572f514f53993 (patch)
treee95720f21a0e818e45659ce055b7306f81ee6919 /libraries
parentcd87029e6fc0c8d8b25c9162812ae066066ad11a (diff)
downloadPrismLauncher-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.h14
-rw-r--r--libraries/systeminfo/src/sys_apple.cpp22
-rw-r--r--libraries/systeminfo/src/sys_unix.cpp23
-rw-r--r--libraries/systeminfo/src/sys_win32.cpp4
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;
}