Files
0ad/source/lib/sysdep/os/win/wposix/wutsname.cpp
T
janwas a3696c0b91 premake: detect processor architecture from script
lib/sysdep: clean up by moving OS and cpu-arch folders into "os" and
"arch" folders

This was SVN commit r6162.
2008-06-30 17:34:18 +00:00

47 lines
1.2 KiB
C++

#include "precompiled.h"
#include "wutsname.h"
#include "../wutil.h"
#include "wposix_internal.h"
int uname(struct utsname* un)
{
static OSVERSIONINFO vi;
vi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetVersionEx(&vi);
// OS implementation name
strcpy_s(un->sysname, ARRAY_SIZE(un->sysname), wutil_WindowsFamily());
// release info
const char* vs = vi.szCSDVersion;
int sp;
if(sscanf(vs, "Service Pack %d", &sp) == 1)
sprintf(un->release, "SP %d", sp);
// version
sprintf(un->version, "%s.%lu", wutil_WindowsVersionString(), vi.dwBuildNumber & 0xFFFF);
// node name
DWORD buf_size = sizeof(un->nodename);
DWORD last_err = GetLastError();
BOOL ok = GetComputerName(un->nodename, &buf_size);
// GetComputerName sets last error even on success - suppress.
if(ok)
SetLastError(last_err);
else
debug_assert(0); // GetComputerName failed
// hardware type
static SYSTEM_INFO si;
GetSystemInfo(&si);
if(si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64)
strcpy_s(un->machine, ARRAY_SIZE(un->machine), "AMD64");
else
strcpy_s(un->machine, ARRAY_SIZE(un->machine), "IA-32");
return 0;
}