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 | 
