Major restructure

This commit is contained in:
Imbus 2025-09-01 22:22:35 +02:00
parent 0562c2fe5a
commit c52e19de83
25 changed files with 574 additions and 188 deletions

View file

@ -114,14 +114,112 @@ void *memset(void *dest, int c, size_t n) {
return dest;
}
int memcmp(const void *s1, const void *s2, size_t n) {
if (n != 0) {
const unsigned char *p1 = s1, *p2 = s2;
// int memcmp(const void *s1, const void *s2, size_t n) {
// if (n != 0) {
// const unsigned char *p1 = s1, *p2 = s2;
//
// do {
// if (*p1++ != *p2++)
// return (*--p1 - *--p2);
// } while (--n != 0);
// }
// return (0);
// }
do {
if (*p1++ != *p2++)
return (*--p1 - *--p2);
} while (--n != 0);
char *itoa(int value, char *str, int base) {
char *p = str;
char *p1, *p2;
unsigned int uvalue = value;
int negative = 0;
if (base < 2 || base > 36) {
*str = '\0';
return str;
}
return (0);
if (value < 0 && base == 10) {
negative = 1;
uvalue = -value;
}
// Convert to string
do {
int digit = uvalue % base;
*p++ = (digit < 10) ? '0' + digit : 'a' + (digit - 10);
uvalue /= base;
} while (uvalue);
if (negative)
*p++ = '-';
*p = '\0';
// Reverse string
p1 = str;
p2 = p - 1;
while (p1 < p2) {
char tmp = *p1;
*p1++ = *p2;
*p2-- = tmp;
}
return str;
}
// void *memset(void *dst, int c, size_t length) {
// u8 *ptr = (u8 *)dst;
// const u8 value = (u8)c;
//
// while (length--) *(ptr++) = value;
//
// return dst;
// }
// void *memcpy(void *dst, const void *src, size_t len) {
// u8 *d = (u8 *)dst;
// const u8 *s = (const u8 *)src;
// for (size_t i = 0; i < len; i++) {
// d[i] = s[i];
// }
// return dst;
// }
// void *memmove(void *dst, const void *src, size_t len) {
// u8 *d = (u8 *)dst;
// const u8 *s = (const u8 *)src;
// if (d < s) {
// for (size_t i = 0; i < len; i++) {
// d[i] = s[i];
// }
// } else if (d > s) {
// for (size_t i = len; i > 0; i--) {
// d[i - 1] = s[i - 1];
// }
// }
// return dst;
// }
int memcmp(const void *s1, const void *s2, size_t len) {
const u8 *a = (const u8 *)s1;
const u8 *b = (const u8 *)s2;
for (size_t i = 0; i < len; i++) {
if (a[i] != b[i]) {
return (int)a[i] - (int)b[i];
}
}
return 0;
}
size_t strlen(const char *s) {
const char *p = s;
while (*p) ++p;
return (size_t)(p - s);
}
size_t strnlen(const char *s, size_t maxlen) {
size_t len = 0;
while (len < maxlen && s[len] != '\0') {
len++;
}
return len;
}