mirror of
https://github.com/WerWolv/ImHex.git
synced 2026-03-30 21:05:56 -05:00
feat: Added statistics and crash log uploading (#1149)
Co-authored-by: Justus Garbe <gihihoh@gmail.com>
This commit is contained in:
@@ -4,6 +4,9 @@
|
||||
#include <hex/api/event.hpp>
|
||||
#include <hex/api/task.hpp>
|
||||
#include <hex/providers/provider.hpp>
|
||||
#include <hex/helpers/fmt.hpp>
|
||||
|
||||
#include <wolv/io/file.hpp>
|
||||
|
||||
#include <utility>
|
||||
#include <unistd.h>
|
||||
@@ -16,6 +19,8 @@
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#include <windows.h>
|
||||
#include <shellapi.h>
|
||||
#else
|
||||
#include <sys/utsname.h>
|
||||
#endif
|
||||
|
||||
namespace hex {
|
||||
@@ -516,6 +521,71 @@ namespace hex {
|
||||
bool isPortableVersion() {
|
||||
return impl::s_portableVersion;
|
||||
}
|
||||
|
||||
std::string getOSName() {
|
||||
#if defined(OS_WINDOWS)
|
||||
return "Windows";
|
||||
#elif defined(OS_LINUX)
|
||||
return "Linux";
|
||||
#elif defined(OS_MACOS)
|
||||
return "macOS";
|
||||
#else
|
||||
return "Unknown";
|
||||
#endif
|
||||
}
|
||||
|
||||
std::string getOSVersion() {
|
||||
#if defined(OS_WINDOWS)
|
||||
OSVERSIONINFOA info;
|
||||
info.dwOSVersionInfoSize = sizeof(OSVERSIONINFOA);
|
||||
::GetVersionExA(&info);
|
||||
|
||||
return hex::format("{}.{}.{}", info.dwMajorVersion, info.dwMinorVersion, info.dwBuildNumber);
|
||||
#elif defined(OS_LINUX) || defined(OS_MACOS)
|
||||
struct utsname details;
|
||||
|
||||
if (uname(&details) != 0) {
|
||||
return "Unknown";
|
||||
}
|
||||
|
||||
return std::string(details.release) + " " + std::string(details.version);
|
||||
#else
|
||||
return "Unknown";
|
||||
#endif
|
||||
}
|
||||
|
||||
std::string getArchitecture() {
|
||||
#if defined(OS_WINDOWS)
|
||||
SYSTEM_INFO info;
|
||||
::GetNativeSystemInfo(&info);
|
||||
|
||||
switch (info.wProcessorArchitecture) {
|
||||
case PROCESSOR_ARCHITECTURE_AMD64:
|
||||
return "x86_64";
|
||||
case PROCESSOR_ARCHITECTURE_ARM:
|
||||
return "ARM";
|
||||
case PROCESSOR_ARCHITECTURE_ARM64:
|
||||
return "ARM64";
|
||||
case PROCESSOR_ARCHITECTURE_IA64:
|
||||
return "IA64";
|
||||
case PROCESSOR_ARCHITECTURE_INTEL:
|
||||
return "x86";
|
||||
default:
|
||||
return "Unknown";
|
||||
}
|
||||
#elif defined(OS_LINUX) || defined(OS_MACOS)
|
||||
struct utsname details;
|
||||
|
||||
if (uname(&details) != 0) {
|
||||
return "Unknown";
|
||||
}
|
||||
|
||||
return std::string(details.machine);
|
||||
#else
|
||||
return "Unknown";
|
||||
#endif
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user