|
@@ -46,18 +46,18 @@ extern "C" unsigned SDL_TVOS_GetActiveProcessorCount();
|
|
|
#include <io.h>
|
|
#include <io.h>
|
|
|
#if defined(_MSC_VER)
|
|
#if defined(_MSC_VER)
|
|
|
#include <float.h>
|
|
#include <float.h>
|
|
|
-#include <Lmcons.h> // For UNLEN.
|
|
|
|
|
|
|
+#include <Lmcons.h> // For UNLEN.
|
|
|
#elif defined(__MINGW32__)
|
|
#elif defined(__MINGW32__)
|
|
|
-#include <lmcons.h> // For UNLEN. Apparently MSVC defines "<Lmcons.h>" (with an upperscore 'L' but MinGW uses an underscore 'l').
|
|
|
|
|
-#include <ntdef.h>
|
|
|
|
|
|
|
+#include <lmcons.h> // For UNLEN. Apparently MSVC defines "<Lmcons.h>" (with an upperscore 'L' but MinGW uses an underscore 'l').
|
|
|
|
|
+#include <ntdef.h>
|
|
|
#endif
|
|
#endif
|
|
|
-#elif defined(__linux__) && !defined(__ANDROID__)
|
|
|
|
|
-#include <pwd.h>
|
|
|
|
|
|
|
+#elif defined(__linux__) && !defined(__ANDROID__)
|
|
|
|
|
+#include <pwd.h>
|
|
|
#include <sys/sysinfo.h>
|
|
#include <sys/sysinfo.h>
|
|
|
#include <sys/utsname.h>
|
|
#include <sys/utsname.h>
|
|
|
#elif defined(__APPLE__)
|
|
#elif defined(__APPLE__)
|
|
|
#include <sys/sysctl.h>
|
|
#include <sys/sysctl.h>
|
|
|
-#include <SystemConfiguration/SystemConfiguration.h> // For the detection functions inside GetLoginName().
|
|
|
|
|
|
|
+#include <SystemConfiguration/SystemConfiguration.h> // For the detection functions inside GetLoginName().
|
|
|
#endif
|
|
#endif
|
|
|
#ifndef _WIN32
|
|
#ifndef _WIN32
|
|
|
#include <unistd.h>
|
|
#include <unistd.h>
|
|
@@ -518,16 +518,16 @@ unsigned long long GetTotalMemory()
|
|
|
#if defined(__linux__) && !defined(__ANDROID__)
|
|
#if defined(__linux__) && !defined(__ANDROID__)
|
|
|
struct sysinfo s;
|
|
struct sysinfo s;
|
|
|
if (sysinfo(&s) != -1)
|
|
if (sysinfo(&s) != -1)
|
|
|
- return s.totalram;
|
|
|
|
|
|
|
+ return s.totalram;
|
|
|
#elif defined(_WIN32)
|
|
#elif defined(_WIN32)
|
|
|
MEMORYSTATUSEX state;
|
|
MEMORYSTATUSEX state;
|
|
|
- state.dwLength = sizeof(state);
|
|
|
|
|
- if (GlobalMemoryStatusEx(&state))
|
|
|
|
|
- return state.ullTotalPhys;
|
|
|
|
|
|
|
+ state.dwLength = sizeof(state);
|
|
|
|
|
+ if (GlobalMemoryStatusEx(&state))
|
|
|
|
|
+ return state.ullTotalPhys;
|
|
|
#elif defined(__APPLE__)
|
|
#elif defined(__APPLE__)
|
|
|
unsigned long long memSize;
|
|
unsigned long long memSize;
|
|
|
size_t len = sizeof(memSize);
|
|
size_t len = sizeof(memSize);
|
|
|
- int mib[2];
|
|
|
|
|
|
|
+ int mib[2];
|
|
|
mib[0] = CTL_HW;
|
|
mib[0] = CTL_HW;
|
|
|
mib[1] = HW_MEMSIZE;
|
|
mib[1] = HW_MEMSIZE;
|
|
|
sysctl(mib, 2, &memSize, &len, NULL, 0);
|
|
sysctl(mib, 2, &memSize, &len, NULL, 0);
|
|
@@ -536,11 +536,11 @@ unsigned long long GetTotalMemory()
|
|
|
return 0ull;
|
|
return 0ull;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-String GetLoginName()
|
|
|
|
|
|
|
+String GetLoginName()
|
|
|
{
|
|
{
|
|
|
#if defined(__linux__) && !defined(__ANDROID__)
|
|
#if defined(__linux__) && !defined(__ANDROID__)
|
|
|
struct passwd *p = getpwuid(getuid());
|
|
struct passwd *p = getpwuid(getuid());
|
|
|
- if (p != NULL)
|
|
|
|
|
|
|
+ if (p != nullptr)
|
|
|
return p->pw_name;
|
|
return p->pw_name;
|
|
|
#elif defined(_WIN32)
|
|
#elif defined(_WIN32)
|
|
|
char name[UNLEN + 1];
|
|
char name[UNLEN + 1];
|
|
@@ -551,32 +551,32 @@ String GetLoginName()
|
|
|
SCDynamicStoreRef s = SCDynamicStoreCreate(NULL, CFSTR("GetConsoleUser"), NULL, NULL);
|
|
SCDynamicStoreRef s = SCDynamicStoreCreate(NULL, CFSTR("GetConsoleUser"), NULL, NULL);
|
|
|
if (s != NULL)
|
|
if (s != NULL)
|
|
|
{
|
|
{
|
|
|
- uid_t u;
|
|
|
|
|
|
|
+ uid_t u;
|
|
|
CFStringRef n = SCDynamicStoreCopyConsoleUser(s, &u, NULL);
|
|
CFStringRef n = SCDynamicStoreCopyConsoleUser(s, &u, NULL);
|
|
|
- CFRelease(s);
|
|
|
|
|
|
|
+ CFRelease(s);
|
|
|
if (n != NULL)
|
|
if (n != NULL)
|
|
|
{
|
|
{
|
|
|
- char name[256];
|
|
|
|
|
|
|
+ char name[256];
|
|
|
Boolean b = CFStringGetCString(n, name, 256, kCFStringEncodingUTF8);
|
|
Boolean b = CFStringGetCString(n, name, 256, kCFStringEncodingUTF8);
|
|
|
- CFRelease(n);
|
|
|
|
|
|
|
+ CFRelease(n);
|
|
|
|
|
|
|
|
if (b == true)
|
|
if (b == true)
|
|
|
- return name;
|
|
|
|
|
|
|
+ return name;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
#endif
|
|
#endif
|
|
|
return "(?)";
|
|
return "(?)";
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-String GetHostName()
|
|
|
|
|
|
|
+String GetHostName()
|
|
|
{
|
|
{
|
|
|
#if (defined(__linux__) || defined(__APPLE__)) && !defined(__ANDROID__)
|
|
#if (defined(__linux__) || defined(__APPLE__)) && !defined(__ANDROID__)
|
|
|
- char buffer[256];
|
|
|
|
|
- if (gethostname(buffer, 256) == 0)
|
|
|
|
|
- return buffer;
|
|
|
|
|
|
|
+ char buffer[256];
|
|
|
|
|
+ if (gethostname(buffer, 256) == 0)
|
|
|
|
|
+ return buffer;
|
|
|
#elif defined(_WIN32)
|
|
#elif defined(_WIN32)
|
|
|
- char buffer[MAX_COMPUTERNAME_LENGTH + 1];
|
|
|
|
|
- DWORD len = MAX_COMPUTERNAME_LENGTH + 1;
|
|
|
|
|
|
|
+ char buffer[MAX_COMPUTERNAME_LENGTH + 1];
|
|
|
|
|
+ DWORD len = MAX_COMPUTERNAME_LENGTH + 1;
|
|
|
if (GetComputerName(buffer, &len))
|
|
if (GetComputerName(buffer, &len))
|
|
|
return buffer;
|
|
return buffer;
|
|
|
#endif
|
|
#endif
|
|
@@ -594,59 +594,59 @@ static void GetOS(RTL_OSVERSIONINFOW *r)
|
|
|
{
|
|
{
|
|
|
RtlGetVersionPtr fPtr = (RtlGetVersionPtr) GetProcAddress(m, "RtlGetVersion");
|
|
RtlGetVersionPtr fPtr = (RtlGetVersionPtr) GetProcAddress(m, "RtlGetVersion");
|
|
|
if (r && fPtr && fPtr(r) == 0)
|
|
if (r && fPtr && fPtr(r) == 0)
|
|
|
- r->dwOSVersionInfoSize = sizeof *r;
|
|
|
|
|
|
|
+ r->dwOSVersionInfoSize = sizeof *r;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
-#endif
|
|
|
|
|
|
|
+#endif
|
|
|
|
|
|
|
|
-String GetOSVersion()
|
|
|
|
|
|
|
+String GetOSVersion()
|
|
|
{
|
|
{
|
|
|
#if defined(__linux__) && !defined(__ANDROID__)
|
|
#if defined(__linux__) && !defined(__ANDROID__)
|
|
|
struct utsname u;
|
|
struct utsname u;
|
|
|
if (uname(&u) == 0)
|
|
if (uname(&u) == 0)
|
|
|
- return String(u.sysname) + " " + u.release;
|
|
|
|
|
|
|
+ return String(u.sysname) + " " + u.release;
|
|
|
#elif defined(_WIN32) && defined(HAVE_RTL_OSVERSIONINFOW) && !defined(MINI_URHO)
|
|
#elif defined(_WIN32) && defined(HAVE_RTL_OSVERSIONINFOW) && !defined(MINI_URHO)
|
|
|
RTL_OSVERSIONINFOW r;
|
|
RTL_OSVERSIONINFOW r;
|
|
|
- GetOS(&r);
|
|
|
|
|
|
|
+ GetOS(&r);
|
|
|
// https://msdn.microsoft.com/en-us/library/windows/desktop/ms724832(v=vs.85).aspx
|
|
// https://msdn.microsoft.com/en-us/library/windows/desktop/ms724832(v=vs.85).aspx
|
|
|
- if (r.dwMajorVersion == 5 && r.dwMinorVersion == 0)
|
|
|
|
|
- return "Windows 2000";
|
|
|
|
|
- else if (r.dwMajorVersion == 5 && r.dwMinorVersion == 1)
|
|
|
|
|
- return "Windows XP";
|
|
|
|
|
- else if (r.dwMajorVersion == 5 && r.dwMinorVersion == 2)
|
|
|
|
|
- return "Windows XP 64-Bit Edition/Windows Server 2003/Windows Server 2003 R2";
|
|
|
|
|
- else if (r.dwMajorVersion == 6 && r.dwMinorVersion == 0)
|
|
|
|
|
- return "Windows Vista/Windows Server 2008";
|
|
|
|
|
- else if (r.dwMajorVersion == 6 && r.dwMinorVersion == 1)
|
|
|
|
|
- return "Windows 7/Windows Server 2008 R2";
|
|
|
|
|
- else if (r.dwMajorVersion == 6 && r.dwMinorVersion == 2)
|
|
|
|
|
|
|
+ if (r.dwMajorVersion == 5 && r.dwMinorVersion == 0)
|
|
|
|
|
+ return "Windows 2000";
|
|
|
|
|
+ else if (r.dwMajorVersion == 5 && r.dwMinorVersion == 1)
|
|
|
|
|
+ return "Windows XP";
|
|
|
|
|
+ else if (r.dwMajorVersion == 5 && r.dwMinorVersion == 2)
|
|
|
|
|
+ return "Windows XP 64-Bit Edition/Windows Server 2003/Windows Server 2003 R2";
|
|
|
|
|
+ else if (r.dwMajorVersion == 6 && r.dwMinorVersion == 0)
|
|
|
|
|
+ return "Windows Vista/Windows Server 2008";
|
|
|
|
|
+ else if (r.dwMajorVersion == 6 && r.dwMinorVersion == 1)
|
|
|
|
|
+ return "Windows 7/Windows Server 2008 R2";
|
|
|
|
|
+ else if (r.dwMajorVersion == 6 && r.dwMinorVersion == 2)
|
|
|
return "Windows 8/Windows Server 2012";
|
|
return "Windows 8/Windows Server 2012";
|
|
|
- else if (r.dwMajorVersion == 6 && r.dwMinorVersion == 3)
|
|
|
|
|
- return "Windows 8.1/Windows Server 2012 R2";
|
|
|
|
|
- else if (r.dwMajorVersion == 10 && r.dwMinorVersion == 0)
|
|
|
|
|
- return "Windows 10/Windows Server 2016";
|
|
|
|
|
- else
|
|
|
|
|
|
|
+ else if (r.dwMajorVersion == 6 && r.dwMinorVersion == 3)
|
|
|
|
|
+ return "Windows 8.1/Windows Server 2012 R2";
|
|
|
|
|
+ else if (r.dwMajorVersion == 10 && r.dwMinorVersion == 0)
|
|
|
|
|
+ return "Windows 10/Windows Server 2016";
|
|
|
|
|
+ else
|
|
|
return "Windows Unknown";
|
|
return "Windows Unknown";
|
|
|
#elif defined(__APPLE__)
|
|
#elif defined(__APPLE__)
|
|
|
- char kernel_r[256];
|
|
|
|
|
- size_t size = sizeof(kernel_r);
|
|
|
|
|
|
|
+ char kernel_r[256];
|
|
|
|
|
+ size_t size = sizeof(kernel_r);
|
|
|
|
|
|
|
|
if (sysctlbyname("kern.osrelease", &kernel_r, &size, NULL, 0) != -1)
|
|
if (sysctlbyname("kern.osrelease", &kernel_r, &size, NULL, 0) != -1)
|
|
|
{
|
|
{
|
|
|
- Vector<String> kernel_version = String(kernel_r).Split('.');
|
|
|
|
|
- String version = "macOS/Mac OS X ";
|
|
|
|
|
|
|
+ Vector<String> kernel_version = String(kernel_r).Split('.');
|
|
|
|
|
+ String version = "macOS/Mac OS X ";
|
|
|
int major = ToInt(kernel_version[0]);
|
|
int major = ToInt(kernel_version[0]);
|
|
|
int minor = ToInt(kernel_version[1]);
|
|
int minor = ToInt(kernel_version[1]);
|
|
|
|
|
|
|
|
// https://en.wikipedia.org/wiki/Darwin_(operating_system)
|
|
// https://en.wikipedia.org/wiki/Darwin_(operating_system)
|
|
|
- if (major == 16) // macOS Sierra
|
|
|
|
|
|
|
+ if (major == 16) // macOS Sierra
|
|
|
{
|
|
{
|
|
|
- version += "Sierra ";
|
|
|
|
|
|
|
+ version += "Sierra ";
|
|
|
switch(minor)
|
|
switch(minor)
|
|
|
{
|
|
{
|
|
|
- case 0: version += "10.12.0 "; break;
|
|
|
|
|
- case 1: version += "10.12.1 "; break;
|
|
|
|
|
- case 3: version += "10.12.2 "; break;
|
|
|
|
|
|
|
+ case 0: version += "10.12.0 "; break;
|
|
|
|
|
+ case 1: version += "10.12.1 "; break;
|
|
|
|
|
+ case 3: version += "10.12.2 "; break;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
else if (major == 15) // OS X El Capitan
|
|
else if (major == 15) // OS X El Capitan
|
|
@@ -654,17 +654,17 @@ String GetOSVersion()
|
|
|
version += "El Capitan ";
|
|
version += "El Capitan ";
|
|
|
switch(minor)
|
|
switch(minor)
|
|
|
{
|
|
{
|
|
|
- case 0: version += "10.11.0 "; break;
|
|
|
|
|
- case 6: version += "10.11.6 "; break;
|
|
|
|
|
|
|
+ case 0: version += "10.11.0 "; break;
|
|
|
|
|
+ case 6: version += "10.11.6 "; break;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- else if (major == 14) // OS X Yosemite
|
|
|
|
|
|
|
+ else if (major == 14) // OS X Yosemite
|
|
|
{
|
|
{
|
|
|
- version += "Yosemite ";
|
|
|
|
|
- switch(minor)
|
|
|
|
|
|
|
+ version += "Yosemite ";
|
|
|
|
|
+ switch(minor)
|
|
|
{
|
|
{
|
|
|
- case 0: version += "10.10.0 "; break;
|
|
|
|
|
- case 5: version += "10.10.5 "; break;
|
|
|
|
|
|
|
+ case 0: version += "10.10.0 "; break;
|
|
|
|
|
+ case 5: version += "10.10.5 "; break;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
else if (major == 13) // OS X Mavericks
|
|
else if (major == 13) // OS X Mavericks
|
|
@@ -672,17 +672,17 @@ String GetOSVersion()
|
|
|
version += "Mavericks ";
|
|
version += "Mavericks ";
|
|
|
switch(minor)
|
|
switch(minor)
|
|
|
{
|
|
{
|
|
|
- case 0: version += "10.9.0 "; break;
|
|
|
|
|
- case 4: version += "10.9.5 "; break;
|
|
|
|
|
|
|
+ case 0: version += "10.9.0 "; break;
|
|
|
|
|
+ case 4: version += "10.9.5 "; break;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
else if (major == 12) // OS X Mountain Lion
|
|
else if (major == 12) // OS X Mountain Lion
|
|
|
{
|
|
{
|
|
|
- version += "Mountain Lion ";
|
|
|
|
|
- switch(minor)
|
|
|
|
|
|
|
+ version += "Mountain Lion ";
|
|
|
|
|
+ switch(minor)
|
|
|
{
|
|
{
|
|
|
- case 0: version += "10.8.0 "; break;
|
|
|
|
|
- case 6: version += "10.8.5 "; break;
|
|
|
|
|
|
|
+ case 0: version += "10.8.0 "; break;
|
|
|
|
|
+ case 6: version += "10.8.5 "; break;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
else if (major == 11) // Mac OS X Lion
|
|
else if (major == 11) // Mac OS X Lion
|
|
@@ -690,16 +690,16 @@ String GetOSVersion()
|
|
|
version += "Lion ";
|
|
version += "Lion ";
|
|
|
switch(minor)
|
|
switch(minor)
|
|
|
{
|
|
{
|
|
|
- case 0: version += "10.7.0 "; break;
|
|
|
|
|
- case 4: version += "10.7.5 "; break;
|
|
|
|
|
|
|
+ case 0: version += "10.7.0 "; break;
|
|
|
|
|
+ case 4: version += "10.7.5 "; break;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- else
|
|
|
|
|
|
|
+ else
|
|
|
{
|
|
{
|
|
|
version += "Unknown ";
|
|
version += "Unknown ";
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- return version + " (Darwin kernel " + kernel_version[0] + "." + kernel_version[1] + "." + kernel_version[2] + ")";
|
|
|
|
|
|
|
+ return version + " (Darwin kernel " + kernel_version[0] + "." + kernel_version[1] + "." + kernel_version[2] + ")";
|
|
|
}
|
|
}
|
|
|
#endif
|
|
#endif
|
|
|
return "(?)";
|
|
return "(?)";
|