The return code should always be strlen(src), and we should copy at most
size-1 bytes.
While we are there, make sure to null-terminate the dst buffer if we
copied something.
Signed-off-by: Rodrigo Campos <rodrigo@sdfg.com.ar>
Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
 size_t strlcpy(char *dst, const char *src, size_t size)
 {
        size_t len;
-       char c;
 
-       for (len = 0;;) {
-               c = src[len];
-               if (len < size)
-                       dst[len] = c;
-               if (!c)
-                       break;
-               len++;
+       for (len = 0; len < size; len++) {
+               dst[len] = src[len];
+               if (!dst[len])
+                       return len;
        }
+       if (size)
+               dst[size-1] = '\0';
+
+       while (src[len])
+               len++;
+
        return len;
 }