aboutsummaryrefslogtreecommitdiff
path: root/libraries/systeminfo/src/sys_unix.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/systeminfo/src/sys_unix.cpp')
-rw-r--r--libraries/systeminfo/src/sys_unix.cpp23
1 files changed, 22 insertions, 1 deletions
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;
}