view osdep/strl.c @ 14685:4b02f759f529

small reordering to make future 'multiple files' changes more modular, puts single file loading separate from global option loading in the begginning. patch by Oded Shimon
author reynaldo
date Sat, 12 Feb 2005 15:11:02 +0000
parents 9a495bdc3a1e
children f48dc20c9185
line wrap: on
line source

/* strl(cat|cpy) implementation for systems that do not have it in libc */
/* strl.c - strlcpy/strlcat implementation
 * Time-stamp: <2004-03-14 njk>
 * (C) 2003-2004 Nicholas J. Kain <njk@aerifal.cx>
 */

#include "../config.h"

#ifndef HAVE_STRLCPY
unsigned int strlcpy (char *dest, char *src, unsigned int size)
{
	register unsigned int i;

	for (i=0; size > 0 && src[i] != '\0'; ++i, size--)
		dest[i] = src[i];

	dest[i] = '\0';

	return i;
}
#endif

#ifndef HAVE_STRLCAT
unsigned int strlcat (char *dest, char *src, unsigned int size)
{
#if 0
	register unsigned int i, j;

	for(i=0; size > 0 && dest[i] != '\0'; size--, i++);
	for(j=0; size > 0 && src[j] != '\0'; size--, i++, j++)
		dest[i] = src[j];

	dest[i] = '\0';
	return i;
#else
	register char *d = dest, *s = src;

	for (; size > 0 && *d != '\0'; size--, d++);
	for (; size > 0 && *s != '\0'; size--, d++, s++)
		*d = *s;

	*d = '\0';
	return (d - dest) + (s - src);
#endif 
}
#endif