On Mon, Sep 04, 2017 at 02:49:20PM +0000, David Laight wrote: > From: Phil Sutter > > Sent: 01 September 2017 17:53 > > By making use of strncpy(), both implementations are really simple so > > there is no need to add libbsd as additional dependency. > > > ... > > + > > +size_t strlcpy(char *dst, const char *src, size_t size) > > +{ > > + if (size) { > > + strncpy(dst, src, size - 1); > > + dst[size - 1] = '\0'; > > + } > > + return strlen(src); > > +} > > Except that isn't really strlcpy(). > Better would be: > len = strlen(src) + 1; > if (len <= size) > memcpy(dst, src, len); > else if (size) { > dst[size - 1] = 0; > memcpy(dst, src, size - 1); > } > return len - 1;
Please elaborate: Why isn't my version "really" strlcpy()? Why is your proposed version better? Thanks, Phil