NOISSUE tabs -> spaces

This commit is contained in:
Petr Mrázek
2018-07-15 14:51:05 +02:00
parent 03280cc62e
commit bbb3b3e6f6
577 changed files with 51938 additions and 51938 deletions

View File

@ -41,243 +41,243 @@ SOFTWARE.
Sys::DistributionInfo Sys::read_os_release()
{
Sys::DistributionInfo out;
QStringList files = { "/etc/os-release", "/usr/lib/os-release" };
QString name;
QString version;
for (auto &file: files)
{
if(!QFile::exists(file))
{
continue;
}
QSettings settings(file, QSettings::IniFormat);
if(settings.contains("ID"))
{
name = settings.value("ID").toString().toLower();
}
else if (settings.contains("NAME"))
{
name = settings.value("NAME").toString().toLower();
}
else
{
continue;
}
Sys::DistributionInfo out;
QStringList files = { "/etc/os-release", "/usr/lib/os-release" };
QString name;
QString version;
for (auto &file: files)
{
if(!QFile::exists(file))
{
continue;
}
QSettings settings(file, QSettings::IniFormat);
if(settings.contains("ID"))
{
name = settings.value("ID").toString().toLower();
}
else if (settings.contains("NAME"))
{
name = settings.value("NAME").toString().toLower();
}
else
{
continue;
}
if(settings.contains("VERSION_ID"))
{
version = settings.value("VERSION_ID").toString().toLower();
}
else if(settings.contains("VERSION"))
{
version = settings.value("VERSION").toString().toLower();
}
break;
}
if(name.isEmpty())
{
return out;
}
out.distributionName = name;
out.distributionVersion = version;
return out;
if(settings.contains("VERSION_ID"))
{
version = settings.value("VERSION_ID").toString().toLower();
}
else if(settings.contains("VERSION"))
{
version = settings.value("VERSION").toString().toLower();
}
break;
}
if(name.isEmpty())
{
return out;
}
out.distributionName = name;
out.distributionVersion = version;
return out;
}
bool Sys::main_lsb_info(Sys::LsbInfo & out)
{
int status=0;
QProcess lsbProcess;
lsbProcess.start("lsb_release -a");
lsbProcess.waitForFinished();
status = lsbProcess.exitStatus();
QString output = lsbProcess.readAllStandardOutput();
qDebug() << output;
lsbProcess.close();
if(status == 0)
{
auto lines = output.split('\n');
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")
out.distributor = value;
else if(key == "Release")
out.version = value;
else if(key == "Description")
out.description = value;
else if(key == "Codename")
out.codename = value;
}
return !out.distributor.isEmpty();
}
return false;
int status=0;
QProcess lsbProcess;
lsbProcess.start("lsb_release -a");
lsbProcess.waitForFinished();
status = lsbProcess.exitStatus();
QString output = lsbProcess.readAllStandardOutput();
qDebug() << output;
lsbProcess.close();
if(status == 0)
{
auto lines = output.split('\n');
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")
out.distributor = value;
else if(key == "Release")
out.version = value;
else if(key == "Description")
out.description = value;
else if(key == "Codename")
out.codename = value;
}
return !out.distributor.isEmpty();
}
return false;
}
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.
// Only the `lsb_release` command is specified by LSB. Nonetheless, some
// 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))
{
QSettings settings(file, QSettings::IniFormat);
if(settings.contains("DISTRIB_ID"))
{
out.distributor = settings.value("DISTRIB_ID").toString().toLower();
}
if(settings.contains("DISTRIB_RELEASE"))
{
out.version = settings.value("DISTRIB_RELEASE").toString().toLower();
}
return !out.distributor.isEmpty();
}
return false;
// running lsb_release failed, try to read the file instead
// /etc/lsb-release format, if the file even exists, is non-standard.
// Only the `lsb_release` command is specified by LSB. Nonetheless, some
// 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))
{
QSettings settings(file, QSettings::IniFormat);
if(settings.contains("DISTRIB_ID"))
{
out.distributor = settings.value("DISTRIB_ID").toString().toLower();
}
if(settings.contains("DISTRIB_RELEASE"))
{
out.version = settings.value("DISTRIB_RELEASE").toString().toLower();
}
return !out.distributor.isEmpty();
}
return false;
}
void Sys::lsb_postprocess(Sys::LsbInfo & lsb, Sys::DistributionInfo & out)
{
QString dist = lsb.distributor;
QString vers = lsb.version;
if(dist.startsWith("redhatenterprise"))
{
dist = "rhel";
}
else if(dist == "archlinux")
{
dist = "arch";
}
else if (dist.startsWith("suse"))
{
if(lsb.description.startsWith("opensuse"))
{
dist = "opensuse";
}
else if (lsb.description.startsWith("suse linux enterprise"))
{
dist = "sles";
}
}
else if (dist == "debian" and vers == "testing")
{
vers = lsb.codename;
}
else
{
// ubuntu, debian, gentoo, scientific, slackware, ... ?
auto parts = dist.split(QRegExp("\\s+"), QString::SkipEmptyParts);
if(parts.size())
{
dist = parts[0];
}
}
if(!dist.isEmpty())
{
out.distributionName = dist;
out.distributionVersion = vers;
}
QString dist = lsb.distributor;
QString vers = lsb.version;
if(dist.startsWith("redhatenterprise"))
{
dist = "rhel";
}
else if(dist == "archlinux")
{
dist = "arch";
}
else if (dist.startsWith("suse"))
{
if(lsb.description.startsWith("opensuse"))
{
dist = "opensuse";
}
else if (lsb.description.startsWith("suse linux enterprise"))
{
dist = "sles";
}
}
else if (dist == "debian" and vers == "testing")
{
vers = lsb.codename;
}
else
{
// ubuntu, debian, gentoo, scientific, slackware, ... ?
auto parts = dist.split(QRegExp("\\s+"), QString::SkipEmptyParts);
if(parts.size())
{
dist = parts[0];
}
}
if(!dist.isEmpty())
{
out.distributionName = dist;
out.distributionVersion = vers;
}
}
Sys::DistributionInfo Sys::read_lsb_release()
{
LsbInfo lsb;
if(!main_lsb_info(lsb))
{
if(!fallback_lsb_info(lsb))
{
return Sys::DistributionInfo();
}
}
Sys::DistributionInfo out;
lsb_postprocess(lsb, out);
return out;
LsbInfo lsb;
if(!main_lsb_info(lsb))
{
if(!fallback_lsb_info(lsb))
{
return Sys::DistributionInfo();
}
}
Sys::DistributionInfo out;
lsb_postprocess(lsb, out);
return out;
}
QString Sys::_extract_distribution(const QString & x)
{
QString release = x.toLower();
if (release.startsWith("red hat enterprise"))
{
return "rhel";
}
if (release.startsWith("suse linux enterprise"))
{
return "sles";
}
QStringList list = release.split(QRegExp("\\s+"), QString::SkipEmptyParts);
if(list.size())
{
return list[0];
}
return QString();
QString release = x.toLower();
if (release.startsWith("red hat enterprise"))
{
return "rhel";
}
if (release.startsWith("suse linux enterprise"))
{
return "sles";
}
QStringList list = release.split(QRegExp("\\s+"), QString::SkipEmptyParts);
if(list.size())
{
return list[0];
}
return QString();
}
QString Sys::_extract_version(const QString & x)
{
QRegExp versionish_string("\\d+(?:\\.\\d+)*$");
QStringList list = x.split(QRegExp("\\s+"), QString::SkipEmptyParts);
for(int i = list.size() - 1; i >= 0; --i)
{
QString chunk = list[i];
if(versionish_string.exactMatch(chunk))
{
return chunk;
}
}
return QString();
QRegExp versionish_string("\\d+(?:\\.\\d+)*$");
QStringList list = x.split(QRegExp("\\s+"), QString::SkipEmptyParts);
for(int i = list.size() - 1; i >= 0; --i)
{
QString chunk = list[i];
if(versionish_string.exactMatch(chunk))
{
return chunk;
}
}
return QString();
}
Sys::DistributionInfo Sys::read_legacy_release()
{
struct checkEntry
{
QString file;
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;}},
};
for(auto & check: checks)
{
QStringList files;
if(check.file.isNull())
{
QDir etcDir("/etc");
etcDir.setNameFilters({"*-release"});
etcDir.setFilter(QDir::Files | QDir::NoDot | QDir::NoDotDot | QDir::Readable | QDir::Hidden);
files = etcDir.entryList();
}
else
{
files.append(check.file);
}
for (auto file : files)
{
QFile relfile(file);
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())
{
Sys::DistributionInfo out;
out.distributionName = dist;
out.distributionVersion = vers;
return out;
}
}
}
return Sys::DistributionInfo();
struct checkEntry
{
QString file;
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;}},
};
for(auto & check: checks)
{
QStringList files;
if(check.file.isNull())
{
QDir etcDir("/etc");
etcDir.setNameFilters({"*-release"});
etcDir.setFilter(QDir::Files | QDir::NoDot | QDir::NoDotDot | QDir::Readable | QDir::Hidden);
files = etcDir.entryList();
}
else
{
files.append(check.file);
}
for (auto file : files)
{
QFile relfile(file);
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())
{
Sys::DistributionInfo out;
out.distributionName = dist;
out.distributionVersion = vers;
return out;
}
}
}
return Sys::DistributionInfo();
}

View File

@ -4,44 +4,44 @@
Sys::KernelInfo Sys::getKernelInfo()
{
Sys::KernelInfo out;
struct utsname buf;
uname(&buf);
out.kernelName = buf.sysname;
out.kernelVersion = buf.release;
return out;
Sys::KernelInfo out;
struct utsname buf;
uname(&buf);
out.kernelName = buf.sysname;
out.kernelVersion = buf.release;
return out;
}
#include <sys/sysctl.h>
uint64_t Sys::getSystemRam()
{
uint64_t memsize;
size_t memsizesize = sizeof(memsize);
if(!sysctlbyname("hw.memsize", &memsize, &memsizesize, NULL, 0))
{
return memsize;
}
else
{
return 0;
}
uint64_t memsize;
size_t memsizesize = sizeof(memsize);
if(!sysctlbyname("hw.memsize", &memsize, &memsizesize, NULL, 0))
{
return memsize;
}
else
{
return 0;
}
}
bool Sys::isCPU64bit()
{
// not even going to pretend I'm going to support anything else
return true;
// not even going to pretend I'm going to support anything else
return true;
}
bool Sys::isSystem64bit()
{
// yep. maybe when we have 128bit CPUs on consumer devices.
return true;
// yep. maybe when we have 128bit CPUs on consumer devices.
return true;
}
Sys::DistributionInfo Sys::getDistributionInfo()
{
DistributionInfo result;
return result;
DistributionInfo result;
return result;
}

View File

@ -5,24 +5,24 @@
class SysTest : public QObject
{
Q_OBJECT
Q_OBJECT
private
slots:
void test_kernelNotNull()
{
auto kinfo = Sys::getKernelInfo();
QVERIFY(!kinfo.kernelName.isEmpty());
QVERIFY(kinfo.kernelVersion != "0.0");
}
void test_kernelNotNull()
{
auto kinfo = Sys::getKernelInfo();
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;
}
*/
};

View File

@ -7,69 +7,69 @@
Sys::KernelInfo Sys::getKernelInfo()
{
Sys::KernelInfo out;
struct utsname buf;
uname(&buf);
out.kernelName = buf.sysname;
out.kernelVersion = buf.release;
return out;
Sys::KernelInfo out;
struct utsname buf;
uname(&buf);
out.kernelName = buf.sysname;
out.kernelVersion = buf.release;
return out;
}
uint64_t Sys::getSystemRam()
{
std::string token;
std::ifstream file("/proc/meminfo");
while(file >> token)
{
if(token == "MemTotal:")
{
uint64_t mem;
if(file >> mem)
{
return mem * 1024ull;
}
else
{
return 0;
}
}
// ignore rest of the line
file.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}
return 0; // nothing found
std::string token;
std::ifstream file("/proc/meminfo");
while(file >> token)
{
if(token == "MemTotal:")
{
uint64_t mem;
if(file >> mem)
{
return mem * 1024ull;
}
else
{
return 0;
}
}
// ignore rest of the line
file.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}
return 0; // nothing found
}
bool Sys::isCPU64bit()
{
return isSystem64bit();
return isSystem64bit();
}
bool Sys::isSystem64bit()
{
// kernel build arch on linux
return QSysInfo::currentCpuArchitecture() == "x86_64";
// kernel build arch on linux
return QSysInfo::currentCpuArchitecture() == "x86_64";
}
Sys::DistributionInfo Sys::getDistributionInfo()
{
DistributionInfo systemd_info = read_os_release();
DistributionInfo lsb_info = read_lsb_release();
DistributionInfo legacy_info = read_legacy_release();
DistributionInfo result = systemd_info + lsb_info + legacy_info;
if(result.distributionName.isNull())
{
result.distributionName = "unknown";
}
if(result.distributionVersion.isNull())
{
if(result.distributionName == "arch")
{
result.distributionVersion = "rolling";
}
else
{
result.distributionVersion = "unknown";
}
}
return result;
DistributionInfo systemd_info = read_os_release();
DistributionInfo lsb_info = read_lsb_release();
DistributionInfo legacy_info = read_legacy_release();
DistributionInfo result = systemd_info + lsb_info + legacy_info;
if(result.distributionName.isNull())
{
result.distributionName = "unknown";
}
if(result.distributionVersion.isNull())
{
if(result.distributionName == "arch")
{
result.distributionVersion = "rolling";
}
else
{
result.distributionVersion = "unknown";
}
}
return result;
}

View File

@ -4,49 +4,49 @@
Sys::KernelInfo Sys::getKernelInfo()
{
Sys::KernelInfo out;
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);
return out;
Sys::KernelInfo out;
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);
return out;
}
uint64_t Sys::getSystemRam()
{
MEMORYSTATUSEX status;
status.dwLength = sizeof(status);
GlobalMemoryStatusEx( &status );
// bytes
return (uint64_t)status.ullTotalPhys;
MEMORYSTATUSEX status;
status.dwLength = sizeof(status);
GlobalMemoryStatusEx( &status );
// bytes
return (uint64_t)status.ullTotalPhys;
}
bool Sys::isSystem64bit()
{
#if defined(_WIN64)
return true;
return true;
#elif defined(_WIN32)
BOOL f64 = false;
return IsWow64Process(GetCurrentProcess(), &f64) && f64;
BOOL f64 = false;
return IsWow64Process(GetCurrentProcess(), &f64) && f64;
#else
// it's some other kind of system...
return false;
// it's some other kind of system...
return false;
#endif
}
bool Sys::isCPU64bit()
{
SYSTEM_INFO info;
ZeroMemory(&info, sizeof(SYSTEM_INFO));
GetNativeSystemInfo(&info);
auto arch = info.wProcessorArchitecture;
return arch == PROCESSOR_ARCHITECTURE_AMD64 || arch == PROCESSOR_ARCHITECTURE_IA64;
SYSTEM_INFO info;
ZeroMemory(&info, sizeof(SYSTEM_INFO));
GetNativeSystemInfo(&info);
auto arch = info.wProcessorArchitecture;
return arch == PROCESSOR_ARCHITECTURE_AMD64 || arch == PROCESSOR_ARCHITECTURE_IA64;
}
Sys::DistributionInfo Sys::getDistributionInfo()
{
DistributionInfo result;
return result;
DistributionInfo result;
return result;
}