hyperion.ng/include/utils/SysInfo.h

57 lines
1.2 KiB
C++

#pragma once
#include <QObject>
#include <QString>
#include <QByteArray>
class SysInfo : public QObject
{
public:
struct HyperionSysInfo
{
QString kernelType;
QString kernelVersion;
QString architecture;
QString wordSize;
QString productType;
QString productVersion;
QString prettyName;
QString hostName;
QString domainName;
};
~SysInfo();
static HyperionSysInfo get();
private:
SysInfo();
static SysInfo* _instance;
HyperionSysInfo _sysinfo;
struct QUnixOSVersion
{
QString productType;
QString productVersion;
QString prettyName;
};
QString machineHostName();
QString currentCpuArchitecture();
QString kernelType();
QString kernelVersion();
bool findUnixOsVersion(QUnixOSVersion &v);
QByteArray getEtcFileFirstLine(const char *fileName);
bool readEtcRedHatRelease(QUnixOSVersion &v);
bool readEtcDebianVersion(QUnixOSVersion &v);
bool readEtcOsRelease(SysInfo::QUnixOSVersion &v);
bool readEtcFile(SysInfo::QUnixOSVersion &v, const char *filename, const QByteArray &idKey, const QByteArray &versionKey, const QByteArray &prettyNameKey);
QByteArray getEtcFileContent(const char *filename);
QString unquote(const char *begin, const char *end);
bool readEtcLsbRelease(SysInfo::QUnixOSVersion &v);
};