X-Git-Url: http://git.meshlink.io/?p=catta;a=blobdiff_plain;f=src%2Fcompat%2Fwindows%2Fwincompat.c;h=3aa2b2e5d9b00ec7615cc830b32cc2eb6683b65a;hp=985ca6d72c9cefd9029830aa3a5516cfb9441d6f;hb=f97dd32f0fdffd8570b711697b91f7af0342d96c;hpb=45fd76be0ef793b130720bb64b0356aa4e4566ec diff --git a/src/compat/windows/wincompat.c b/src/compat/windows/wincompat.c index 985ca6d..3aa2b2e 100644 --- a/src/compat/windows/wincompat.c +++ b/src/compat/windows/wincompat.c @@ -3,12 +3,32 @@ int uname(struct utsname *buf) { + SYSTEM_INFO si; + const char *arch = "unknown"; + memset(buf, 0, sizeof(struct utsname)); + + // operating system strncpy(buf->sysname, "Windows", sizeof(buf->sysname)-1); + strncpy(buf->release, "unknown", sizeof(buf->sysname)-1); // we don't need it + strncpy(buf->version, "unknown", sizeof(buf->sysname)-1); // we don't need it + + // computer (node) name if(GetComputerName(buf->nodename, sizeof(buf->nodename)-1) == 0) { errno = EFAULT; return -1; } + // hardware type + GetSystemInfo(&si); + switch(si.wProcessorArchitecture) { + case PROCESSOR_ARCHITECTURE_AMD64: arch = "amd64"; break; + case PROCESSOR_ARCHITECTURE_ARM: arch = "arm"; break; + case PROCESSOR_ARCHITECTURE_IA64: arch = "ia64"; break; + case PROCESSOR_ARCHITECTURE_INTEL: arch = "x86"; break; + default: arch = "unknown"; + } + strncpy(buf->machine, arch, sizeof(buf->machine)-1); + return 0; }