#include	"stddef.h"
#include	"string.h"

/*
 *	Some helper string functions
 */

/*
 *	Same as Posix strrchr
 */
char *strrchr(const char *s, int c)
{
	const char *p;

	for (p = 0 ; *s != '\0'; s++) {
		if (*s == c)
			p = s;		/* remember it */
	}
	return ((char *)p);		/* suppress const loss warning */
}

/*
 *	Same as Posix strcpy
 */
char *strcpy(char *dest, const char *src)
{
	char *d = dest;

	while ((*d++ = *src++) != '\0')
		;
	return (dest);
}

/*
 *	Same as Posix strcat
 */
char *strcat(char *dest, const char *src)
{
	char *d = dest;

	while (*d != '\0')		/* find the end of dest str */
		d++;
	while ((*d = *src++) != '\0')	/* copy src string to dest str */
		d++;
	return (dest);
}

char *strncat(char *dest, const char *src, unsigned int maxlen)
{
	char *d = dest;

	while (*d != '\0')	/* find the end of dest str */
		d++;
	/* copy src string to dest str, until done or maxlen */
	while (((*d = *src++) != '\0') && (maxlen--))
		d++;
	*d = 0;
	return (dest);
}

#ifndef __HAVE_ARCH_MEMCMP
int memcmp(const void *s1, const void *s2, int n)
{
	int i;
	const unsigned char *src1 = s1, *src2 = s2;
	for(i = 0; i < n ; i++) {
		if (src1[i] != src2[i]) {
			return src1[i] - src2[i];
		}
	}
	return 0;
}
#endif


syntax highlighted by Code2HTML, v. 0.9.1