diff options
Diffstat (limited to 'libntp/strdup.c')
-rw-r--r-- | libntp/strdup.c | 34 |
1 files changed, 30 insertions, 4 deletions
diff --git a/libntp/strdup.c b/libntp/strdup.c index 62d5a16d433c6..8af9ff81b39cb 100644 --- a/libntp/strdup.c +++ b/libntp/strdup.c @@ -1,13 +1,15 @@ #include <config.h> #include <ntp_assert.h> -#include "ntp_malloc.h" #include <string.h> +#include "ntp_malloc.h" +#include "l_stdlib.h" -#ifndef HAVE_STRDUP +#define STRDUP_EMPTY_UNIT +#ifndef HAVE_STRDUP +# undef STRDUP_EMPTY_UNIT char *strdup(const char *s); - char * strdup( const char *s @@ -24,6 +26,30 @@ strdup( return cp; } -#else +#endif + +#ifndef HAVE_MEMCHR +# undef STRDUP_EMPTY_UNIT +void *memchr(const void *s, int c, size_t n) +{ + const unsigned char *p = s; + while (n && *p != c) { + --n; + ++p; + } + return n ? (char*)p : NULL; +} +#endif + +#ifndef HAVE_STRNLEN +# undef STRDUP_EMPTY_UNIT +size_t strnlen(const char *s, size_t n) +{ + const char *e = memchr(s, 0, n); + return e ? (size_t)(e - s) : n; +} +#endif + +#ifdef STRDUP_EMPTY_UNIT int strdup_c_nonempty_compilation_unit; #endif |