xstring: renamed strlcpy into xstring to add further related string functions
[netsniff-ng.git] / src / xstring.c
blobb845128cd04b4e9abebb7ad30c3cb6dac4623549
1 /*
2 * netsniff-ng - the packet sniffing beast
3 * By Daniel Borkmann <daniel@netsniff-ng.org>
4 * Copyright 2009, 2010, 2011, 2012 Daniel Borkmann.
5 * Copyright 2009, 2010, 2011, 2012 Emmanuel Roullit.
6 * strlcpy, Copyright 1991, 1992 Linus Torvalds.
7 * Subject to the GPL, version 2.
8 */
10 #define _BSD_SOURCE
11 #include <string.h>
12 #include <stdio.h>
13 #include <stdarg.h>
15 #include "xstring.h"
17 size_t strlcpy(char *dest, const char *src, size_t size)
19 size_t ret = strlen(src);
20 if (size) {
21 size_t len = (ret >= size) ? size - 1 : ret;
22 memcpy(dest, src, len);
23 dest[len] = '\0';
25 return ret;
28 int slprintf(char *dst, size_t size, const char *fmt, ...)
30 int ret;
31 va_list ap;
32 va_start(ap, fmt);
33 ret = vsnprintf(dst, size, fmt, ap);
34 dst[size - 1] = '\0';
35 va_end(ap);
36 return ret;