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