Using strlcpy() is better; unlike strncpy(), it guarantees that it does '\0' terminate; and it doesn't waste time, when it does have enough space, filling all of the spare space with '\0' bytes.  (We should, of course, be checking the return value, whichever function we call; but that's a pre-existing condition.)