diff options
author | Petr Mrázek <peterix@users.noreply.github.com> | 2021-12-30 20:00:45 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-12-30 20:00:45 +0100 |
commit | 3efcccf334e28d03605dd0597f53f900105cf04b (patch) | |
tree | ecafd89c7eb90d04f428c907da86c7d6b134c166 /launcher/minecraft/launch/PrintInstanceInfo.cpp | |
parent | 5e909a4e852a5bf3ba9dec9081b4839773bfc0ce (diff) | |
parent | f42c3a953c15b01632131435e4885f9acc3b1f1a (diff) | |
download | PrismLauncher-3efcccf334e28d03605dd0597f53f900105cf04b.tar.gz PrismLauncher-3efcccf334e28d03605dd0597f53f900105cf04b.tar.bz2 PrismLauncher-3efcccf334e28d03605dd0597f53f900105cf04b.zip |
Merge pull request #4345 from graemeg/freebsd-support
Adds FreeBSD support to MultiMC
Diffstat (limited to 'launcher/minecraft/launch/PrintInstanceInfo.cpp')
-rw-r--r-- | launcher/minecraft/launch/PrintInstanceInfo.cpp | 45 |
1 files changed, 43 insertions, 2 deletions
diff --git a/launcher/minecraft/launch/PrintInstanceInfo.cpp b/launcher/minecraft/launch/PrintInstanceInfo.cpp index 3da17902..e8fbcb9b 100644 --- a/launcher/minecraft/launch/PrintInstanceInfo.cpp +++ b/launcher/minecraft/launch/PrintInstanceInfo.cpp @@ -19,8 +19,9 @@ #include "PrintInstanceInfo.h" #include <launch/LaunchTask.h> -#ifdef Q_OS_LINUX +#if defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD) namespace { +#if defined(Q_OS_LINUX) void probeProcCpuinfo(QStringList &log) { std::ifstream cpuin("/proc/cpuinfo"); @@ -66,7 +67,43 @@ void runLspci(QStringList &log) } pclose(lspci); } +#elif defined(Q_OS_FREEBSD) +void runSysctlHwModel(QStringList &log) +{ + char buff[512]; + FILE *hwmodel = popen("sysctl hw.model", "r"); + while (fgets(buff, 512, hwmodel) != NULL) + { + log << QString::fromUtf8(buff); + break; + } + pclose(hwmodel); +} +void runPciconf(QStringList &log) +{ + char buff[512]; + std::string strcard; + FILE *pciconf = popen("pciconf -lv -a vgapci0", "r"); + while (fgets(buff, 512, pciconf) != NULL) + { + if (strncmp(buff, " vendor", 10) == 0) + { + std::string str(buff); + strcard.append(str.substr(str.find_first_of("'") + 1, str.find_last_not_of("'") - (str.find_first_of("'") + 2))); + strcard.append(" "); + } + else if (strncmp(buff, " device", 10) == 0) + { + std::string str2(buff); + strcard.append(str2.substr(str2.find_first_of("'") + 1, str2.find_last_not_of("'") - (str2.find_first_of("'") + 2))); + } + log << QString::fromStdString(strcard); + break; + } + pclose(pciconf); +} +#endif void runGlxinfo(QStringList & log) { // FIXME: fixed size buffers... @@ -94,10 +131,14 @@ void PrintInstanceInfo::executeTask() auto instance = m_parent->instance(); QStringList log; -#ifdef Q_OS_LINUX +#if defined(Q_OS_LINUX) ::probeProcCpuinfo(log); ::runLspci(log); ::runGlxinfo(log); +#elif defined(Q_OS_FREEBSD) + ::runSysctlHwModel(log); + ::runPciconf(log); + ::runGlxinfo(log); #endif logLines(log, MessageLevel::Launcher); |