Nucleus
Barry System headers (remove libc dependency) 18495cf (3 years, 2 months ago)
#include <stddef.h>
/* Compare two strings */
int
strcmp(const char *s1, const char *s2)
{
for (; *s1 == *s2 && *s1 && *s2; s1++, s2++);
return *(unsigned char *) s1 - *(unsigned char *) s2;
}
/* Compare two limited strings */
int
strncmp(const char *s1, const char *s2, size_t n)
{
if (!n--) return 0;
for (; *s1 == *s2 && *s1 && *s2 && n; s1++, s2++, n--);
return *(unsigned char *) s1 - *(unsigned char *) s2;
}
/* Copy a string */
char *
strcpy(char *dest, const char *src)
{
char *ret = dest;
while (*src)
*dest++ = *src++;
*dest = '\0';
return ret;
}
/* Copy a limited string */
char *
strncpy(char *dest, const char *src, size_t n)
{
char *ret = dest;
while (*src && n--)
*dest++ = *src++;
*dest = '\0';
return ret;
}
/* Find length of a string */
size_t
strlen(const char *str)
{
if (!str)
return 0;
size_t i;
for (i = 0; str[i]; i++);
return i;
}
/* Find length of a limited string */
size_t
strnlen(const char *str, size_t n)
{
if (!str)
return 0;
size_t i;
for (i = 0; str[i] && i <= n; i++);
return i;
}