56 lines
854 B
C
Raw Normal View History

#include <config.h>
2002-10-29 19:58:12 +00:00
#include <ntp_assert.h>
#include <string.h>
#include "ntp_malloc.h"
#include "l_stdlib.h"
2001-08-29 14:35:15 +00:00
#define STRDUP_EMPTY_UNIT
2001-08-29 14:35:15 +00:00
#ifndef HAVE_STRDUP
# undef STRDUP_EMPTY_UNIT
2002-10-29 19:58:12 +00:00
char *strdup(const char *s);
2001-08-29 14:35:15 +00:00
char *
strdup(
const char *s
)
{
size_t octets;
char * cp;
REQUIRE(s);
octets = strlen(s) + 1;
if ((cp = malloc(octets)) == NULL)
return NULL;
memcpy(cp, s, octets);
2001-08-29 14:35:15 +00:00
return cp;
2001-08-29 14:35:15 +00:00
}
#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;
2002-10-29 19:58:12 +00:00
#endif