aboutsummaryrefslogtreecommitdiff
path: root/launcher/minecraft/launch/PrintInstanceInfo.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'launcher/minecraft/launch/PrintInstanceInfo.cpp')
-rw-r--r--launcher/minecraft/launch/PrintInstanceInfo.cpp45
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);