From 4e14f7d4835ad3e3518ad6a2fd0c8ab91753856b Mon Sep 17 00:00:00 2001 From: Bananymous Date: Thu, 6 Nov 2025 23:20:35 +0200 Subject: [PATCH] LibC: Implement {,l,ll}{abs,div} --- userspace/libraries/LibC/stdlib.cpp | 44 +++++++++++++++++++++++++---- 1 file changed, 39 insertions(+), 5 deletions(-) diff --git a/userspace/libraries/LibC/stdlib.cpp b/userspace/libraries/LibC/stdlib.cpp index 3a6d0c15..0d43c2ce 100644 --- a/userspace/libraries/LibC/stdlib.cpp +++ b/userspace/libraries/LibC/stdlib.cpp @@ -45,11 +45,6 @@ void _Exit(int status) _exit(status); } -int abs(int val) -{ - return val < 0 ? -val : val; -} - int atexit(void (*func)(void)) { void* func_addr = reinterpret_cast(func); @@ -367,6 +362,45 @@ unsigned long long strtoull(const char* __restrict str, char** __restrict endp, return strtoT(str, endp, base, errno); } +int abs(int val) +{ + return val < 0 ? -val : val; +} + +long labs(long val) +{ + return val < 0 ? -val : val; +} + +long long llabs(long long val) +{ + return val < 0 ? -val : val; +} + +div_t div(int numer, int denom) +{ + return { + .quot = numer / denom, + .rem = numer % denom, + }; +} + +ldiv_t ldiv(long numer, long denom) +{ + return { + .quot = numer / denom, + .rem = numer % denom, + }; +} + +lldiv_t lldiv(long long numer, long long denom) +{ + return { + .quot = numer / denom, + .rem = numer % denom, + }; +} + char* realpath(const char* __restrict file_name, char* __restrict resolved_name) { char buffer[PATH_MAX] {};