diff options
Diffstat (limited to 'strndup.c')
-rw-r--r-- | strndup.c | 70 |
1 files changed, 0 insertions, 70 deletions
diff --git a/strndup.c b/strndup.c deleted file mode 100644 index d4c681f..0000000 --- a/strndup.c +++ /dev/null @@ -1,70 +0,0 @@ -/* See LICENSE file for copyright and license details. */ -#include "libsimple.h" -#ifndef TEST - - -char * -libsimple_strndup(const char *s, size_t n) -{ - char *ret; - size_t m = strlen(s); - n = MIN(n, m); - if (n == SIZE_MAX) { - errno = ENOMEM; - return NULL; - } - if (!(ret = aligned_alloc(1, n + 1))) - return NULL; - memcpy(ret, s, n); - ret[n] = '\0'; - return ret; -} - - -#else -#include "test.h" - -int -main(void) -{ - struct allocinfo *info; - const char *s = "test"; - void *p; - - p = libsimple_strndup(s, 5); - assert(p && p != s); - assert(!strcmpnul(p, "test")); - memset(p, 0, 5); - assert(!strcmpnul(s, "test")); - if (have_custom_malloc()) { - assert((info = get_allocinfo(p))); - assert(info->alignment == 1); - } - free(p); - - p = libsimple_strndup(s, 3); - assert(p && p != s); - assert(!strcmpnul(p, "tes")); - memset(p, 0, 4); - assert(!strcmpnul(s, "test")); - if (have_custom_malloc()) { - assert((info = get_allocinfo(p))); - assert(info->alignment == 1); - } - free(p); - - p = libsimple_strndup(s, 0); - assert(p && p != s); - assert(!strcmpnul(p, "")); - memset(p, 0, 1); - assert(!strcmpnul(s, "test")); - if (have_custom_malloc()) { - assert((info = get_allocinfo(p))); - assert(info->alignment == 1); - } - free(p); - - return 0; -} - -#endif |