xref: /freebsd/contrib/ntp/libntp/strdup.c (revision 276da39af92f48350aa01091a2b8b3e735217eea)
12b15cb3dSCy Schubert #include <config.h>
22b15cb3dSCy Schubert 
3*276da39aSCy Schubert #include <ntp_assert.h>
4ce265a54SOllivier Robert #include "ntp_malloc.h"
5*276da39aSCy Schubert #include <string.h>
6ce265a54SOllivier Robert 
72b15cb3dSCy Schubert #ifndef HAVE_STRDUP
8224ba2bdSOllivier Robert 
9ce265a54SOllivier Robert char *strdup(const char *s);
10ce265a54SOllivier Robert 
11224ba2bdSOllivier Robert char *
12224ba2bdSOllivier Robert strdup(
13224ba2bdSOllivier Robert 	const char *s
14224ba2bdSOllivier Robert 	)
15224ba2bdSOllivier Robert {
162b15cb3dSCy Schubert 	size_t	octets;
17224ba2bdSOllivier Robert 	char *	cp;
18224ba2bdSOllivier Robert 
19*276da39aSCy Schubert 	REQUIRE(s);
20*276da39aSCy Schubert 	octets = strlen(s) + 1;
21*276da39aSCy Schubert 	if ((cp = malloc(octets)) == NULL)
22*276da39aSCy Schubert 		return NULL;
232b15cb3dSCy Schubert 	memcpy(cp, s, octets);
242b15cb3dSCy Schubert 
25*276da39aSCy Schubert 	return cp;
26224ba2bdSOllivier Robert }
27ce265a54SOllivier Robert #else
282b15cb3dSCy Schubert int strdup_c_nonempty_compilation_unit;
29ce265a54SOllivier Robert #endif
30