From 1f7da5379b80254d6c54b4ae5b7de4686af5bba5 Mon Sep 17 00:00:00 2001 From: Mattias Andrée Date: Sat, 27 Oct 2018 12:12:01 +0200 Subject: Remove strndup, it is in POSIX MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mattias Andrée --- Makefile | 1 - README | 3 --- libsimple/strndup.h | 6 ----- strndup.c | 70 ----------------------------------------------------- test.c | 11 +++++++-- 5 files changed, 9 insertions(+), 82 deletions(-) delete mode 100644 strndup.c diff --git a/Makefile b/Makefile index 575e689..3469282 100644 --- a/Makefile +++ b/Makefile @@ -102,7 +102,6 @@ OBJ =\ strncasestr.o\ strnchr.o\ strnchrnul.o\ - strndup.o\ strnend.o\ strnends.o\ strneqlen.o\ diff --git a/README b/README index 369307b..9044b87 100644 --- a/README +++ b/README @@ -106,9 +106,6 @@ The following functions are defined (some as inline functions): void *libsimple_memdup(const void *, size_t) Duplicate a memory segment. - char *libsimple_strndup(const char *, size_t) - Duplicate a substring. - void *libsimple_mempcpy(void *, const void *, size_t) Like memcpy, except returns the byte after the last written byte. diff --git a/libsimple/strndup.h b/libsimple/strndup.h index 28ec293..90fbfa1 100644 --- a/libsimple/strndup.h +++ b/libsimple/strndup.h @@ -18,12 +18,6 @@ # endif #endif -_LIBSIMPLE_GCC_ONLY(__attribute__((__malloc__, __assume_aligned__(1), __nonnull__, __warn_unused_result__))) -char *libsimple_strndup(const char *, size_t); -#ifndef strndup -# define strndup libsimple_strndup -#endif - _LIBSIMPLE_GCC_ONLY(__attribute__((__malloc__, __assume_aligned__(1), __nonnull__, __warn_unused_result__, __returns_nonnull__))) char *libsimple_enstrndup(int, const char *, size_t); #ifndef enstrndup 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 diff --git a/test.c b/test.c index b954ccd..80b7ad7 100644 --- a/test.c +++ b/test.c @@ -216,9 +216,16 @@ strdup(const char *s) char * -strndup(const char *s, size_t size) +strndup(const char *s, size_t n) { - return libsimple_strndup(s, size); + char *ret; + size_t m = strlen(s); + n = MIN(n, m); + if (!(ret = aligned_alloc(1, n + 1))) + return NULL; + memcpy(ret, s, n); + ret[n] = '\0'; + return ret; } -- cgit v1.2.3-70-g09d2