]> git.meshlink.io Git - catta/blob - src/compat/windows/wincompat.c
3aa2b2e5d9b00ec7615cc830b32cc2eb6683b65a
[catta] / src / compat / windows / wincompat.c
1 #include "wincompat.h"
2 #include <errno.h>
3
4 int uname(struct utsname *buf)
5 {
6     SYSTEM_INFO si;
7     const char *arch = "unknown";
8
9     memset(buf, 0, sizeof(struct utsname));
10
11     // operating system
12     strncpy(buf->sysname, "Windows", sizeof(buf->sysname)-1);
13     strncpy(buf->release, "unknown", sizeof(buf->sysname)-1);   // we don't need it
14     strncpy(buf->version, "unknown", sizeof(buf->sysname)-1);   // we don't need it
15
16     // computer (node) name
17     if(GetComputerName(buf->nodename, sizeof(buf->nodename)-1) == 0) {
18         errno = EFAULT;
19         return -1;
20     }
21
22     // hardware type
23     GetSystemInfo(&si);
24     switch(si.wProcessorArchitecture) {
25         case PROCESSOR_ARCHITECTURE_AMD64: arch = "amd64"; break;
26         case PROCESSOR_ARCHITECTURE_ARM:   arch = "arm";   break;
27         case PROCESSOR_ARCHITECTURE_IA64:  arch = "ia64";  break;
28         case PROCESSOR_ARCHITECTURE_INTEL: arch = "x86";   break;
29         default: arch = "unknown";
30     }
31     strncpy(buf->machine, arch, sizeof(buf->machine)-1);
32
33     return 0;
34 }