diff options
author | Nicolas Hillegeer <nicolas@hillegeer.com> | 2014-05-24 15:02:13 +0200 |
---|---|---|
committer | Thiago de Arruda <tpadilha84@gmail.com> | 2014-05-26 13:08:45 -0300 |
commit | a50a34f4723b23d1846f7b71c4584dbda7cf579a (patch) | |
tree | 7aaf37adb5ed2a33e958bae024fe9f8867ce4546 /src/nvim/memory.h | |
parent | 3a68a4861adcc950cdbde709d4841f8ea0c52b12 (diff) | |
download | rneovim-a50a34f4723b23d1846f7b71c4584dbda7cf579a.tar.gz rneovim-a50a34f4723b23d1846f7b71c4584dbda7cf579a.tar.bz2 rneovim-a50a34f4723b23d1846f7b71c4584dbda7cf579a.zip |
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).
Diffstat (limited to 'src/nvim/memory.h')
-rw-r--r-- | src/nvim/memory.h | 13 |
1 files changed, 13 insertions, 0 deletions
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} |