Thread (15 messages) flat view 15 messages, 4 authors, 2017-09-06

Re: [iproute PATCH 1/6] utils: Implement strlcpy() and strlcat()

From: Phil Sutter <phil@nwl.cc>
Date: 2017-09-04 15:00:16

On Mon, Sep 04, 2017 at 02:49:20PM +0000, David Laight wrote:
From: Phil Sutter
quoted
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.
...
quoted
+
+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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help