diff options
Diffstat (limited to 'libraries/systeminfo/src')
-rw-r--r-- | libraries/systeminfo/src/distroutils.cpp | 166 | ||||
-rw-r--r-- | libraries/systeminfo/src/sys_apple.cpp | 19 | ||||
-rw-r--r-- | libraries/systeminfo/src/sys_test.cpp | 24 | ||||
-rw-r--r-- | libraries/systeminfo/src/sys_unix.cpp | 56 | ||||
-rw-r--r-- | libraries/systeminfo/src/sys_win32.cpp | 2 |
5 files changed, 100 insertions, 167 deletions
diff --git a/libraries/systeminfo/src/distroutils.cpp b/libraries/systeminfo/src/distroutils.cpp index 05e1bb8c..57e6c832 100644 --- a/libraries/systeminfo/src/distroutils.cpp +++ b/libraries/systeminfo/src/distroutils.cpp @@ -29,14 +29,14 @@ SOFTWARE. #include "distroutils.h" -#include <QStringList> -#include <QMap> -#include <QSettings> -#include <QFile> -#include <QProcess> #include <QDebug> #include <QDir> +#include <QFile> +#include <QMap> +#include <QProcess> #include <QRegularExpression> +#include <QSettings> +#include <QStringList> #include <functional> @@ -46,38 +46,27 @@ Sys::DistributionInfo Sys::read_os_release() QStringList files = { "/etc/os-release", "/usr/lib/os-release" }; QString name; QString version; - for (auto &file: files) - { - if(!QFile::exists(file)) - { + for (auto& file : files) { + if (!QFile::exists(file)) { continue; } QSettings settings(file, QSettings::IniFormat); - if(settings.contains("ID")) - { + if (settings.contains("ID")) { name = settings.value("ID").toString().toLower(); - } - else if (settings.contains("NAME")) - { + } else if (settings.contains("NAME")) { name = settings.value("NAME").toString().toLower(); - } - else - { + } else { continue; } - if(settings.contains("VERSION_ID")) - { + if (settings.contains("VERSION_ID")) { version = settings.value("VERSION_ID").toString().toLower(); - } - else if(settings.contains("VERSION")) - { + } else if (settings.contains("VERSION")) { version = settings.value("VERSION").toString().toLower(); } break; } - if(name.isEmpty()) - { + if (name.isEmpty()) { return out; } out.distributionName = name; @@ -85,33 +74,31 @@ Sys::DistributionInfo Sys::read_os_release() return out; } -bool Sys::main_lsb_info(Sys::LsbInfo & out) +bool Sys::main_lsb_info(Sys::LsbInfo& out) { - int status=0; + int status = 0; QProcess lsbProcess; QStringList arguments; arguments << "-a"; - lsbProcess.start("lsb_release", arguments); + lsbProcess.start("lsb_release", arguments); lsbProcess.waitForFinished(); status = lsbProcess.exitStatus(); QString output = lsbProcess.readAllStandardOutput(); qDebug() << output; lsbProcess.close(); - if(status == 0) - { + if (status == 0) { auto lines = output.split('\n'); - for(auto line:lines) - { + for (auto line : lines) { int index = line.indexOf(':'); auto key = line.left(index).trimmed(); auto value = line.mid(index + 1).toLower().trimmed(); - if(key == "Distributor ID") + if (key == "Distributor ID") out.distributor = value; - else if(key == "Release") + else if (key == "Release") out.version = value; - else if(key == "Description") + else if (key == "Description") out.description = value; - else if(key == "Codename") + else if (key == "Codename") out.codename = value; } return !out.distributor.isEmpty(); @@ -119,7 +106,7 @@ bool Sys::main_lsb_info(Sys::LsbInfo & out) return false; } -bool Sys::fallback_lsb_info(Sys::LsbInfo & out) +bool Sys::fallback_lsb_info(Sys::LsbInfo& out) { // running lsb_release failed, try to read the file instead // /etc/lsb-release format, if the file even exists, is non-standard. @@ -127,15 +114,12 @@ bool Sys::fallback_lsb_info(Sys::LsbInfo & out) // distributions install an /etc/lsb-release as part of the base // distribution, but `lsb_release` remains optional. QString file = "/etc/lsb-release"; - if (QFile::exists(file)) - { + if (QFile::exists(file)) { QSettings settings(file, QSettings::IniFormat); - if(settings.contains("DISTRIB_ID")) - { + if (settings.contains("DISTRIB_ID")) { out.distributor = settings.value("DISTRIB_ID").toString().toLower(); } - if(settings.contains("DISTRIB_RELEASE")) - { + if (settings.contains("DISTRIB_RELEASE")) { out.version = settings.value("DISTRIB_RELEASE").toString().toLower(); } return !out.distributor.isEmpty(); @@ -143,48 +127,34 @@ bool Sys::fallback_lsb_info(Sys::LsbInfo & out) return false; } -void Sys::lsb_postprocess(Sys::LsbInfo & lsb, Sys::DistributionInfo & out) +void Sys::lsb_postprocess(Sys::LsbInfo& lsb, Sys::DistributionInfo& out) { QString dist = lsb.distributor; QString vers = lsb.version; - if(dist.startsWith("redhatenterprise")) - { + if (dist.startsWith("redhatenterprise")) { dist = "rhel"; - } - else if(dist == "archlinux") - { + } else if (dist == "archlinux") { dist = "arch"; - } - else if (dist.startsWith("suse")) - { - if(lsb.description.startsWith("opensuse")) - { + } else if (dist.startsWith("suse")) { + if (lsb.description.startsWith("opensuse")) { dist = "opensuse"; - } - else if (lsb.description.startsWith("suse linux enterprise")) - { + } else if (lsb.description.startsWith("suse linux enterprise")) { dist = "sles"; } - } - else if (dist == "debian" and vers == "testing") - { + } else if (dist == "debian" and vers == "testing") { vers = lsb.codename; - } - else - { + } else { // ubuntu, debian, gentoo, scientific, slackware, ... ? #if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0) auto parts = dist.split(QRegularExpression("\\s+"), Qt::SkipEmptyParts); #else auto parts = dist.split(QRegularExpression("\\s+"), QString::SkipEmptyParts); #endif - if(parts.size()) - { + if (parts.size()) { dist = parts[0]; } } - if(!dist.isEmpty()) - { + if (!dist.isEmpty()) { out.distributionName = dist; out.distributionVersion = vers; } @@ -193,10 +163,8 @@ void Sys::lsb_postprocess(Sys::LsbInfo & lsb, Sys::DistributionInfo & out) Sys::DistributionInfo Sys::read_lsb_release() { LsbInfo lsb; - if(!main_lsb_info(lsb)) - { - if(!fallback_lsb_info(lsb)) - { + if (!main_lsb_info(lsb)) { + if (!fallback_lsb_info(lsb)) { return Sys::DistributionInfo(); } } @@ -205,15 +173,13 @@ Sys::DistributionInfo Sys::read_lsb_release() return out; } -QString Sys::_extract_distribution(const QString & x) +QString Sys::_extract_distribution(const QString& x) { QString release = x.toLower(); - if (release.startsWith("red hat enterprise")) - { + if (release.startsWith("red hat enterprise")) { return "rhel"; } - if (release.startsWith("suse linux enterprise")) - { + if (release.startsWith("suse linux enterprise")) { return "sles"; } #if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0) @@ -221,14 +187,13 @@ QString Sys::_extract_distribution(const QString & x) #else QStringList list = release.split(QRegularExpression("\\s+"), QString::SkipEmptyParts); #endif - if(list.size()) - { + if (list.size()) { return list[0]; } return QString(); } -QString Sys::_extract_version(const QString & x) +QString Sys::_extract_version(const QString& x) { QRegularExpression versionish_string(QRegularExpression::anchoredPattern("\\d+(?:\\.\\d+)*$")); #if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0) @@ -236,11 +201,9 @@ QString Sys::_extract_version(const QString & x) #else QStringList list = x.split(QRegularExpression("\\s+"), QString::SkipEmptyParts); #endif - for(int i = list.size() - 1; i >= 0; --i) - { + for (int i = list.size() - 1; i >= 0; --i) { QString chunk = list[i]; - if(versionish_string.match(chunk).hasMatch()) - { + if (versionish_string.match(chunk).hasMatch()) { return chunk; } } @@ -249,43 +212,35 @@ QString Sys::_extract_version(const QString & x) Sys::DistributionInfo Sys::read_legacy_release() { - struct checkEntry - { + struct checkEntry { QString file; - std::function<QString(const QString &)> extract_distro; - std::function<QString(const QString &)> extract_version; + std::function<QString(const QString&)> extract_distro; + std::function<QString(const QString&)> extract_version; }; - QList<checkEntry> checks = - { - {"/etc/arch-release", [](const QString &){ return "arch";}, [](const QString &){ return "rolling";}}, - {"/etc/slackware-version", &Sys::_extract_distribution, &Sys::_extract_version}, - {QString(), &Sys::_extract_distribution, &Sys::_extract_version}, - {"/etc/debian_version", [](const QString &){ return "debian";}, [](const QString & x){ return x;}}, + QList<checkEntry> checks = { + { "/etc/arch-release", [](const QString&) { return "arch"; }, [](const QString&) { return "rolling"; } }, + { "/etc/slackware-version", &Sys::_extract_distribution, &Sys::_extract_version }, + { QString(), &Sys::_extract_distribution, &Sys::_extract_version }, + { "/etc/debian_version", [](const QString&) { return "debian"; }, [](const QString& x) { return x; } }, }; - for(auto & check: checks) - { + for (auto& check : checks) { QStringList files; - if(check.file.isNull()) - { + if (check.file.isNull()) { QDir etcDir("/etc"); - etcDir.setNameFilters({"*-release"}); + etcDir.setNameFilters({ "*-release" }); etcDir.setFilter(QDir::Files | QDir::NoDot | QDir::NoDotDot | QDir::Readable | QDir::Hidden); files = etcDir.entryList(); - } - else - { + } else { files.append(check.file); } - for (auto file : files) - { + for (auto file : files) { QFile relfile(file); - if(!relfile.open(QIODevice::ReadOnly | QIODevice::Text)) + if (!relfile.open(QIODevice::ReadOnly | QIODevice::Text)) continue; QString contents = QString::fromUtf8(relfile.readLine()).trimmed(); QString dist = check.extract_distro(contents); QString vers = check.extract_version(contents); - if(!dist.isEmpty()) - { + if (!dist.isEmpty()) { Sys::DistributionInfo out; out.distributionName = dist; out.distributionVersion = vers; @@ -295,4 +250,3 @@ Sys::DistributionInfo Sys::read_legacy_release() } return Sys::DistributionInfo(); } - diff --git a/libraries/systeminfo/src/sys_apple.cpp b/libraries/systeminfo/src/sys_apple.cpp index b6d62c1a..5cf70f1a 100644 --- a/libraries/systeminfo/src/sys_apple.cpp +++ b/libraries/systeminfo/src/sys_apple.cpp @@ -2,9 +2,9 @@ #include <sys/utsname.h> +#include <QDebug> #include <QString> #include <QStringList> -#include <QDebug> Sys::KernelInfo Sys::getKernelInfo() { @@ -22,18 +22,16 @@ Sys::KernelInfo Sys::getKernelInfo() out.kernelMinor = 0; out.kernelPatch = 0; auto sections = release.split('-'); - if(sections.size() >= 1) { + if (sections.size() >= 1) { auto versionParts = sections[0].split('.'); - if(versionParts.size() >= 3) { + if (versionParts.size() >= 3) { out.kernelMajor = versionParts[0].toInt(); out.kernelMinor = versionParts[1].toInt(); out.kernelPatch = versionParts[2].toInt(); - } - else { + } else { qWarning() << "Not enough version numbers in " << sections[0] << " found " << versionParts.size(); } - } - else { + } else { qWarning() << "Not enough '-' sections in " << release << " found " << sections.size(); } return out; @@ -45,12 +43,9 @@ uint64_t Sys::getSystemRam() { uint64_t memsize; size_t memsizesize = sizeof(memsize); - if(!sysctlbyname("hw.memsize", &memsize, &memsizesize, NULL, 0)) - { + if (!sysctlbyname("hw.memsize", &memsize, &memsizesize, NULL, 0)) { return memsize; - } - else - { + } else { return 0; } } diff --git a/libraries/systeminfo/src/sys_test.cpp b/libraries/systeminfo/src/sys_test.cpp index 9a5f9dfa..50c75eb7 100644 --- a/libraries/systeminfo/src/sys_test.cpp +++ b/libraries/systeminfo/src/sys_test.cpp @@ -2,11 +2,9 @@ #include <sys.h> -class SysTest : public QObject -{ +class SysTest : public QObject { Q_OBJECT -private -slots: + private slots: void test_kernelNotNull() { @@ -14,15 +12,15 @@ slots: QVERIFY(!kinfo.kernelName.isEmpty()); QVERIFY(kinfo.kernelVersion != "0.0"); } -/* - void test_systemDistroNotNull() - { - auto kinfo = Sys::getDistributionInfo(); - QVERIFY(!kinfo.distributionName.isEmpty()); - QVERIFY(!kinfo.distributionVersion.isEmpty()); - qDebug() << "Distro: " << kinfo.distributionName << "version" << kinfo.distributionVersion; - } -*/ + /* + void test_systemDistroNotNull() + { + auto kinfo = Sys::getDistributionInfo(); + QVERIFY(!kinfo.distributionName.isEmpty()); + QVERIFY(!kinfo.distributionVersion.isEmpty()); + qDebug() << "Distro: " << kinfo.distributionName << "version" << kinfo.distributionVersion; + } + */ }; QTEST_GUILESS_MAIN(SysTest) diff --git a/libraries/systeminfo/src/sys_unix.cpp b/libraries/systeminfo/src/sys_unix.cpp index 3c63e73a..4e075959 100644 --- a/libraries/systeminfo/src/sys_unix.cpp +++ b/libraries/systeminfo/src/sys_unix.cpp @@ -6,9 +6,9 @@ #include <fstream> #include <limits> +#include <QDebug> #include <QString> #include <QStringList> -#include <QDebug> Sys::KernelInfo Sys::getKernelInfo() { @@ -27,18 +27,16 @@ Sys::KernelInfo Sys::getKernelInfo() out.kernelMinor = 0; out.kernelPatch = 0; auto sections = release.split('-'); - if(sections.size() >= 1) { + if (sections.size() >= 1) { auto versionParts = sections[0].split('.'); - if(versionParts.size() >= 3) { + if (versionParts.size() >= 3) { out.kernelMajor = versionParts[0].toInt(); out.kernelMinor = versionParts[1].toInt(); out.kernelPatch = versionParts[2].toInt(); - } - else { + } else { qWarning() << "Not enough version numbers in " << sections[0] << " found " << versionParts.size(); } - } - else { + } else { qWarning() << "Not enough '-' sections in " << release << " found " << sections.size(); } return out; @@ -49,17 +47,12 @@ uint64_t Sys::getSystemRam() std::string token; #ifdef Q_OS_LINUX std::ifstream file("/proc/meminfo"); - while(file >> token) - { - if(token == "MemTotal:") - { + while (file >> token) { + if (token == "MemTotal:") { uint64_t mem; - if(file >> mem) - { + if (file >> mem) { return mem * 1024ull; - } - else - { + } else { return 0; } } @@ -68,18 +61,16 @@ uint64_t Sys::getSystemRam() } #elif defined(Q_OS_FREEBSD) char buff[512]; - FILE *fp = popen("sysctl hw.physmem", "r"); - if (fp != NULL) - { - while(fgets(buff, 512, fp) != NULL) - { - std::string str(buff); - uint64_t mem = std::stoull(str.substr(12, std::string::npos)); - return mem * 1024ull; - } + FILE* fp = popen("sysctl hw.physmem", "r"); + if (fp != NULL) { + while (fgets(buff, 512, fp) != NULL) { + std::string str(buff); + uint64_t mem = std::stoull(str.substr(12, std::string::npos)); + return mem * 1024ull; + } } #endif - return 0; // nothing found + return 0; // nothing found } Sys::DistributionInfo Sys::getDistributionInfo() @@ -88,18 +79,13 @@ Sys::DistributionInfo Sys::getDistributionInfo() DistributionInfo lsb_info = read_lsb_release(); DistributionInfo legacy_info = read_legacy_release(); DistributionInfo result = systemd_info + lsb_info + legacy_info; - if(result.distributionName.isNull()) - { + if (result.distributionName.isNull()) { result.distributionName = "unknown"; } - if(result.distributionVersion.isNull()) - { - if(result.distributionName == "arch") - { + if (result.distributionVersion.isNull()) { + if (result.distributionName == "arch") { result.distributionVersion = "rolling"; - } - else - { + } else { result.distributionVersion = "unknown"; } } diff --git a/libraries/systeminfo/src/sys_win32.cpp b/libraries/systeminfo/src/sys_win32.cpp index 5bf510cf..2627761d 100644 --- a/libraries/systeminfo/src/sys_win32.cpp +++ b/libraries/systeminfo/src/sys_win32.cpp @@ -22,7 +22,7 @@ uint64_t Sys::getSystemRam() { MEMORYSTATUSEX status; status.dwLength = sizeof(status); - GlobalMemoryStatusEx( &status ); + GlobalMemoryStatusEx(&status); // bytes return (uint64_t)status.ullTotalPhys; } |