extern size_t strcspn __P ((const char *, const char *));
extern size_t strspn __P ((const char *, const char *));
+extern size_t strlcpy __P((char *, const char *, size_t));
+extern size_t strlcat __P((char *, const char *, size_t));
#ifdef z80
#pagma inline(memcpy)
#pagma inline(memset)
SRC_C += raise.c rand.c readdir.c readlink.c realloc.c regerror.c
SRC_C += regsub.c remove.c rewind.c rindex.c setbuffer.c setenv.c setjmp.c
SRC_C += setvbuf.c settimeofday.c sleep.c sprintf.c stat.c stdio0.c
-SRC_C += strcasecmp.c strdup.c stricmp.c strncasecmp.c
+SRC_C += strcasecmp.c strdup.c stricmp.c strlcpy.c strncasecmp.c
SRC_C += strnicmp.c strsep.c
SRC_C += strtod.c strtol.c system.c time.c tmpnam.c ttyname.c
SRC_C += tzset.c ungetc.c utent.c utsname.c
--- /dev/null
+#include <string.h>
+
+size_t strlcpy(char *dst, const char *src, size_t dstsize)
+{
+ size_t len = strlen(src);
+ size_t cp = len >= dstsize ? dstsize - 1 : len;
+ memcpy(dst, src, cp);
+ dst[cp] = 0;
+ return len;
+}
+
+size_t strlcat(char *dst, const char *src, size_t dstsize)
+{
+ size_t len = strlen(dst);
+ /* No room at all: existing string fills the buffer */
+ if (len >= dstsize - 1)
+ return len + strlen(src);
+ return strlcpy(dst + len, src, dstsize - len);
+}
+
+
\ No newline at end of file