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.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'src/nvim/memory.c') diff --git a/src/nvim/memory.c b/src/nvim/memory.c index b6990890a6..238a6791c0 100644 --- a/src/nvim/memory.c +++ b/src/nvim/memory.c @@ -183,6 +183,19 @@ char *xstpncpy(char *restrict dst, const char *restrict src, size_t maxlen) } } +size_t xstrlcpy(char *restrict dst, const char *restrict src, size_t size) +{ + size_t ret = strlen(src); + + if (size) { + size_t len = (ret >= size) ? size - 1 : ret; + memcpy(dst, src, len); + dst[len] = '\0'; + } + + return ret; +} + char *xstrdup(const char *str) { char *ret = strdup(str); -- cgit