mirror of
https://github.com/BoredDevNL/BoredOS.git
synced 2026-05-15 10:48:38 +00:00
78 lines
1.9 KiB
C
78 lines
1.9 KiB
C
#ifndef LWIP_STRING_H
|
|
#define LWIP_STRING_H
|
|
|
|
#include "kutils.h"
|
|
|
|
#define memcpy k_memcpy
|
|
#define memset k_memset
|
|
#define strlen k_strlen
|
|
#define strcmp k_strcmp
|
|
#define strcpy k_strcpy
|
|
|
|
static inline int memcmp(const void *s1, const void *s2, size_t n) {
|
|
const unsigned char *p1 = (const unsigned char *)s1;
|
|
const unsigned char *p2 = (const unsigned char *)s2;
|
|
while (n--) {
|
|
if (*p1 != *p2) return (int)*p1 - (int)*p2;
|
|
p1++; p2++;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static inline void *memmove(void *dest, const void *src, size_t n) {
|
|
unsigned char *d = (unsigned char *)dest;
|
|
const unsigned char *s = (const unsigned char *)src;
|
|
if (d < s) {
|
|
while (n--) *d++ = *s++;
|
|
} else {
|
|
d += n;
|
|
s += n;
|
|
while (n--) *--d = *--s;
|
|
}
|
|
return dest;
|
|
}
|
|
|
|
static inline char *strchr(const char *s, int c) {
|
|
while (*s) {
|
|
if (*s == (char)c) return (char *)s;
|
|
s++;
|
|
}
|
|
if (c == 0) return (char *)s;
|
|
return (void*)0;
|
|
}
|
|
|
|
static inline int strncmp(const char *s1, const char *s2, size_t n) {
|
|
while (n && *s1 && (*s1 == *s2)) {
|
|
s1++;
|
|
s2++;
|
|
n--;
|
|
}
|
|
if (n == 0) return 0;
|
|
return (int)*(const unsigned char *)s1 - (int)*(const unsigned char *)s2;
|
|
}
|
|
|
|
static inline char *strncpy(char *dest, const char *src, size_t n) {
|
|
size_t i;
|
|
for (i = 0; i < n && src[i] != '\0'; i++)
|
|
dest[i] = src[i];
|
|
for ( ; i < n; i++)
|
|
dest[i] = '\0';
|
|
return dest;
|
|
}
|
|
|
|
static inline char *strstr(const char *haystack, const char *needle) {
|
|
if (!*needle) return (char *)haystack;
|
|
for (; *haystack; haystack++) {
|
|
if (*haystack == *needle) {
|
|
const char *h = haystack;
|
|
const char *n = needle;
|
|
while (*h && *n && *h == *n) {
|
|
h++; n++;
|
|
}
|
|
if (!*n) return (char *)haystack;
|
|
}
|
|
}
|
|
return (void*)0;
|
|
}
|
|
|
|
#endif
|