aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/memory.h
diff options
context:
space:
mode:
authorNicolas Hillegeer <nicolas@hillegeer.com>2014-05-24 15:02:13 +0200
committerThiago de Arruda <tpadilha84@gmail.com>2014-05-26 13:08:45 -0300
commita50a34f4723b23d1846f7b71c4584dbda7cf579a (patch)
tree7aaf37adb5ed2a33e958bae024fe9f8867ce4546 /src/nvim/memory.h
parent3a68a4861adcc950cdbde709d4841f8ea0c52b12 (diff)
downloadrneovim-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.h13
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}