Major restructure
This commit is contained in:
parent
0562c2fe5a
commit
c52e19de83
25 changed files with 574 additions and 188 deletions
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue