1263 const char* envvar = std::getenv(
"USER");
1264 user = envvar ? string(envvar) :
"USER?";
1265 if (
user ==
"USER?")
1267 const char* envvar = std::getenv(
"USERNAME");
1268 user = envvar ? string(envvar) :
"USER?";
1273 SYSTEM_INFO siSysInfo;
1274 GetSystemInfo(&siSysInfo);
1275 switch (siSysInfo.wProcessorArchitecture)
1277 case PROCESSOR_ARCHITECTURE_AMD64:
arch =
"x64";
break;
1278 case PROCESSOR_ARCHITECTURE_ARM:
arch =
"ARM";
break;
1279 case 12:
arch =
"ARM64";
break;
1280 case PROCESSOR_ARCHITECTURE_IA64:
arch =
"IA64";
break;
1281 case PROCESSOR_ARCHITECTURE_INTEL:
arch =
"x86";
break;
1282 default:
arch =
"???";
1289 RTL_OSVERSIONINFOW osInfo;
1290 ZeroMemory(&osInfo,
sizeof(osInfo));
1291 osInfo.dwOSVersionInfoSize =
sizeof(osInfo);
1293 typedef LONG(WINAPI * RtlGetVersionPtr)(PRTL_OSVERSIONINFOW);
1294 if (HMODULE ntdll = GetModuleHandleW(L
"ntdll.dll"))
1296 auto rtlGetVersion =
reinterpret_cast<RtlGetVersionPtr
>(
1297 GetProcAddress(ntdll,
"RtlGetVersion"));
1299 rtlGetVersion(&osInfo);
1308 osInfo.dwMajorVersion,
1309 osInfo.dwMinorVersion,
1310 osInfo.dwBuildNumber);
1311 osVer = string(osVersion);
1317 #elif defined(__APPLE__)
1318 # if defined(TARGET_OS_IOS) && (TARGET_OS_IOS == 1)
1322 const char* envvar = std::getenv(
"USER");
1323 user = envvar ? string(envvar) :
"USER?";
1324 if (
user ==
"USER?")
1326 const char* envvar = std::getenv(
"USERNAME");
1327 user = envvar ? string(envvar) :
"USER?";
1332 const char* envvar = std::getenv(
"USER");
1333 user = envvar ? string(envvar) :
"USER?";
1335 if (
user ==
"USER?")
1337 const char* envvarUN = std::getenv(
"USERNAME");
1338 user = envvarUN ? string(envvarUN) :
"USER?";
1362 #elif defined(ANDROID)
1392 char hostC[PROP_VALUE_MAX];
1393 len = __system_property_get(
"ro.build.host", hostC);
1394 name = !string(hostC).empty() ? string(hostC) :
"NAME?";
1396 char userC[PROP_VALUE_MAX];
1397 len = __system_property_get(
"ro.build.user", userC);
1398 user = !string(userC).empty() ? string(userC) :
"USER?";
1400 char brandC[PROP_VALUE_MAX];
1401 len = __system_property_get(
"ro.product.brand", brandC);
1402 brand = string(brandC);
1404 char modelC[PROP_VALUE_MAX];
1405 len = __system_property_get(
"ro.product.model", modelC);
1406 model = string(modelC);
1408 char osVerC[PROP_VALUE_MAX];
1409 len = __system_property_get(
"ro.build.version.release", osVerC);
1410 osVer = string(osVerC);
1412 char archC[PROP_VALUE_MAX];
1413 len = __system_property_get(
"ro.product.cpu.abi", archC);
1414 arch = string(archC);
1416 #elif defined(linux) || defined(__linux) || defined(__linux__)
1429 if (
model.find(
"SM-") != string::npos)
1435 std::replace(
id.begin(),
id.end(),
'_',
'-');
string getHostName()
Returns the computer name.
string replaceNonFilenameChars(string src, const char replaceChar)
replaces non-filename characters: /|?%*:"<>'