diff --git a/emulator/strl.c b/emulator/strl.c index b729892..6c87be9 100644 --- a/emulator/strl.c +++ b/emulator/strl.c @@ -18,27 +18,20 @@ */ #include "strl.h" +#include "util.h" #include size_t strlcpy(char *dst, const char *src, size_t size) { - if (size == 0) { - return strlen(src); + size_t ret = strlen(src); + + if (size) { + size_t len = MIN(ret, size - 1); + memcpy(dst, src, len); + dst[len] = '\0'; } - size_t i; - for (i = 0; i < size - 1; i++) { - dst[i] = src[i]; - - if (src[i] == '\0') { - return i - 1; - } - } - - dst[size - 1] = '\0'; - - while (src[i++] != '\0'); - return i - 1; + return ret; } size_t strlcat(char *dst, const char *src, size_t size) {