diff options
author | Tavian Barnes <tavianator@tavianator.com> | 2019-09-03 17:07:58 -0400 |
---|---|---|
committer | Tavian Barnes <tavianator@tavianator.com> | 2019-09-03 17:11:12 -0400 |
commit | f7f1e3cfa25cf95e15bac30e6934d5a534ceca08 (patch) | |
tree | c5a15638ad3f26909114495bb43dcb62cf999ebd /dstring.c | |
parent | 325b37b290dda53392a22c7f2ef802f581e4232d (diff) | |
download | bfs-f7f1e3cfa25cf95e15bac30e6934d5a534ceca08.tar.xz |
dstring: New dstrndup() function
Diffstat (limited to 'dstring.c')
-rw-r--r-- | dstring.c | 10 |
1 files changed, 9 insertions, 1 deletions
@@ -49,7 +49,10 @@ static char *dstralloc_impl(size_t capacity, size_t length, const char *data) { header->capacity = capacity; header->length = length; - return memcpy(header->data, data, length + 1); + + memcpy(header->data, data, length); + header->data[length] = '\0'; + return header->data; } char *dstralloc(size_t capacity) { @@ -61,6 +64,11 @@ char *dstrdup(const char *str) { return dstralloc_impl(len, len, str); } +char *dstrndup(const char *str, size_t n) { + size_t len = strnlen(str, n); + return dstralloc_impl(len, len, str); +} + size_t dstrlen(const char *dstr) { return dstrheader(dstr)->length; } |