From a50a34f4723b23d1846f7b71c4584dbda7cf579a Mon Sep 17 00:00:00 2001 From: Nicolas Hillegeer Date: Sat, 24 May 2014 15:02:13 +0200 Subject: memory: add xstrlcpy Less "blow a hole in your foot" than strncpy. As also indicated by coverity. Implementation inspired by the linux kernel (very similar to OSX's Libc implementation as well). --- src/nvim/memory.h | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'src/nvim/memory.h') diff --git a/src/nvim/memory.h b/src/nvim/memory.h index 2723a7ba80..accf293176 100644 --- a/src/nvim/memory.h +++ b/src/nvim/memory.h @@ -125,6 +125,19 @@ char *xstpcpy(char *restrict dst, const char *restrict src); /// @param maxlen char *xstpncpy(char *restrict dst, const char *restrict src, size_t maxlen); +/// xstrlcpy - Copy a %NUL terminated string into a sized buffer +/// +/// Compatible with *BSD strlcpy: the result is always a valid +/// NUL-terminated string that fits in the buffer (unless, +/// of course, the buffer size is zero). It does not pad +/// out the result like strncpy() does. +/// +/// @param dst Where to copy the string to +/// @param src Where to copy the string from +/// @param size Size of destination buffer +/// @return Length of the source string (i.e.: strlen(src)) +size_t xstrlcpy(char *restrict dst, const char *restrict src, size_t size); + /// Duplicates a chunk of memory using xmalloc /// /// @see {xmalloc} -- cgit