size_t cdecl__strlcpy(char *dst, const char *src, size_t dstlen)
{
- if (dst)
- snprintf(dst, dstlen, "%s", src);
- return strlen(src);
+ size_t srclen = strlen(src);
+
+ if (dstlen > 0) {
+ memcpy(dst, src, MIN(dstlen, srclen+1));
+ if (dstlen <= srclen)
+ dst[dstlen-1] = 0;
+ }
+
+ return srclen;
}
size_t cdecl__emit(struct output_state *dst, const char *src)