BarryServer : Git

All the code for all my projects
// BarryServer : Git / Nucleus / blob / master / lib / string.c

// Related

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;
}