diff --git a/Userspace/libc/src/std/sys/utsname.c b/Userspace/libc/src/std/sys/utsname.c index 832d8324..56dcb12b 100644 --- a/Userspace/libc/src/std/sys/utsname.c +++ b/Userspace/libc/src/std/sys/utsname.c @@ -20,19 +20,37 @@ #include #include #include +#include +#include export int uname(struct utsname *name) { if (name == NULL) + { + errno = EINVAL; return -1; + } + + struct kutsname kname; + int result = call_uname(&kname); + if (result == 0) + { + strcpy(name->sysname, kname.sysname); + strcpy(name->release, kname.release); + strcpy(name->version, kname.version); + strcpy(name->machine, kname.machine); + } + else + { + errno = result; + return -1; + } if (gethostname(name->nodename, sizeof(name->nodename)) != 0) + { + errno = EIO; return -1; - - strcpy(name->sysname, "Fennix"); - strcpy(name->release, "1.0.0"); - strcpy(name->version, "Fennix Version 1.0.0"); - strcpy(name->machine, "x86_64"); + } return 0; }