You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
2.0 KiB
67 lines
2.0 KiB
2 years ago
|
// Copyright(C) 1999-2021 National Technology & Engineering Solutions
|
||
|
// of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
||
|
// NTESS, the U.S. Government retains certain rights in this software.
|
||
|
//
|
||
|
// See packages/seacas/LICENSE for details
|
||
|
|
||
|
#include <sys_info.h>
|
||
|
|
||
|
#if defined(WIN32) || defined(__WIN32__) || defined(_WIN32) || defined(_MSC_VER) || \
|
||
|
defined(__MINGW32__) || defined(_WIN64)
|
||
|
#define WIN32_LEAN_AND_MEAN
|
||
|
#ifndef NOMINMAX
|
||
|
#define NOMINMAX
|
||
|
#endif
|
||
|
#include <Windows.h>
|
||
|
#undef IN
|
||
|
#undef OUT
|
||
|
#include <fmt/ostream.h>
|
||
|
#include <sstream>
|
||
|
#else
|
||
|
#include <sys/utsname.h>
|
||
|
#endif
|
||
|
#include <fmt/format.h>
|
||
|
|
||
|
std::string sys_info(const std::string &codename)
|
||
|
{
|
||
|
// Return 'uname' output. This is used as information data records
|
||
|
// in output exodus files to help in tracking when/where/... the
|
||
|
// file was created
|
||
|
|
||
|
#if defined(WIN32) || defined(__WIN32__) || defined(_WIN32) || defined(_MSC_VER) || \
|
||
|
defined(__MINGW32__) || defined(_WIN64)
|
||
|
char machine_name[MAX_COMPUTERNAME_LENGTH + 1] = {0};
|
||
|
DWORD buf_len = MAX_COMPUTERNAME_LENGTH + 1;
|
||
|
::GetComputerName(machine_name, &buf_len);
|
||
|
|
||
|
std::string info = codename + ": ";
|
||
|
info += machine_name;
|
||
|
info += ", OS: ";
|
||
|
|
||
|
std::string os = "Microsoft Windows";
|
||
|
OSVERSIONINFO osvi;
|
||
|
|
||
|
ZeroMemory(&osvi, sizeof(OSVERSIONINFO));
|
||
|
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
|
||
|
|
||
|
if (GetVersionEx(&osvi)) {
|
||
|
DWORD build = osvi.dwBuildNumber & 0xFFFF;
|
||
|
std::stringstream str;
|
||
|
fmt::print(info, " {}.{} {} (Build {})", osvi.dwMajorVersion, osvi.dwMinorVersion,
|
||
|
osvi.szCSDVersion, build);
|
||
|
os += str.str();
|
||
|
}
|
||
|
info += os;
|
||
|
#else
|
||
|
struct utsname sys_info
|
||
|
{
|
||
|
};
|
||
|
uname(&sys_info);
|
||
|
|
||
|
std::string info =
|
||
|
fmt::format("{}: {}, OS: {} {}, {}, Machine: {}", codename, sys_info.nodename,
|
||
|
sys_info.sysname, sys_info.release, sys_info.version, sys_info.machine);
|
||
|
#endif
|
||
|
return info;
|
||
|
}
|