22 lines
704 B
C
22 lines
704 B
C
|
#include "rocklibc.h"
|
||
|
|
||
|
/* gcc is broken and has a non-SUSv2 compliant internal prototype.
|
||
|
* This causes it to warn about a type mismatch here. Ignore it. */
|
||
|
char *strncat(char *s, const char *t, size_t n) {
|
||
|
char *dest=s;
|
||
|
register char *max;
|
||
|
s+=strlen(s);
|
||
|
if (__unlikely((max=s+n)==s)) goto fini;
|
||
|
for (;;) {
|
||
|
if (__unlikely(!(*s = *t))) break; if (__unlikely(++s==max)) break; ++t;
|
||
|
#ifndef WANT_SMALL_STRING_ROUTINES
|
||
|
if (__unlikely(!(*s = *t))) break; if (__unlikely(++s==max)) break; ++t;
|
||
|
if (__unlikely(!(*s = *t))) break; if (__unlikely(++s==max)) break; ++t;
|
||
|
if (__unlikely(!(*s = *t))) break; if (__unlikely(++s==max)) break; ++t;
|
||
|
#endif
|
||
|
}
|
||
|
*s=0;
|
||
|
fini:
|
||
|
return dest;
|
||
|
}
|