Cloned SEACAS for EXODUS library with extra build files for internal package management.
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.
 
 
 
 
 
 

66 lines
2.0 KiB

// 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;
}