diff options
-rw-r--r-- | plugins/ddb_input_uade2/uade-2.13/src/ossupport.c | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/plugins/ddb_input_uade2/uade-2.13/src/ossupport.c b/plugins/ddb_input_uade2/uade-2.13/src/ossupport.c new file mode 100644 index 00000000..6ecfb53e --- /dev/null +++ b/plugins/ddb_input_uade2/uade-2.13/src/ossupport.c @@ -0,0 +1,48 @@ +#include "ossupport.h" + +#include "unixsupport.c" +/* This module was written by Heikki Orsila <heikki.orsila@iki.fi> 2000-2005. + * No copyrights claimed, so this module is in Public Domain (only this + * code module). See OpenBSD man pages for strlcat and strlcpy + */ + +#include <string.h> + +size_t strlcpy(char *dst, const char *src, size_t size) +{ + size_t slen = strlen(src); + if(slen < size) + strcpy(dst, src); + else if (size > 0) { + strncpy(dst, src, size-1); + dst[size-1] = 0; + } + return slen; +} + + +size_t strlcat(char *dst, const char *src, size_t size) +{ + size_t slen = strlen(src); + size_t dlen = 0; + while(dlen < size) { + if(dst[dlen] == 0) + break; + dlen++; + } + + if(dlen == size) { + return slen + dlen; + } + + if((dlen + slen) < size) + strcat(dst, src); + else { + int left = size - dlen - 1; + if(left > 0) { + strncat(dst, src, left); + } + dst[size-1] = 0; + } + return slen + dlen; +} |