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; +}