From 6c3eefa85d3c91158becb619f21ce0949bd84528 Mon Sep 17 00:00:00 2001 From: EnderIce2 Date: Wed, 12 Feb 2025 02:53:44 +0200 Subject: [PATCH] userspace/libc: add stub uname function Signed-off-by: EnderIce2 --- Userspace/libc/include/sys/utsname.h | 33 ++++++++++++++++++++++++ Userspace/libc/src/std/sys/utsname.c | 38 ++++++++++++++++++++++++++++ 2 files changed, 71 insertions(+) create mode 100644 Userspace/libc/include/sys/utsname.h create mode 100644 Userspace/libc/src/std/sys/utsname.c diff --git a/Userspace/libc/include/sys/utsname.h b/Userspace/libc/include/sys/utsname.h new file mode 100644 index 00000000..59a7e3c3 --- /dev/null +++ b/Userspace/libc/include/sys/utsname.h @@ -0,0 +1,33 @@ +/* + This file is part of Fennix C Library. + + Fennix C Library is free software: you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation, either version 3 of + the License, or (at your option) any later version. + + Fennix C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Fennix C Library. If not, see . +*/ + +#ifndef _SYS_UTSNAME_H +#define _SYS_UTSNAME_H + +struct utsname +{ + char sysname[65]; + char nodename[65]; + char release[65]; + char version[65]; + char machine[65]; + char domainname[65]; +}; + +int uname(struct utsname *name); + +#endif // !_SYS_UTSNAME_H diff --git a/Userspace/libc/src/std/sys/utsname.c b/Userspace/libc/src/std/sys/utsname.c new file mode 100644 index 00000000..832d8324 --- /dev/null +++ b/Userspace/libc/src/std/sys/utsname.c @@ -0,0 +1,38 @@ +/* + This file is part of Fennix C Library. + + Fennix C Library is free software: you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation, either version 3 of + the License, or (at your option) any later version. + + Fennix C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Fennix C Library. If not, see . +*/ + +#include +#include +#include +#include +#include + +export int uname(struct utsname *name) +{ + if (name == NULL) + return -1; + + if (gethostname(name->nodename, sizeof(name->nodename)) != 0) + 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; +}