BizHawk/waterbox/libc/functions/string/strdup.c

50 lines
994 B
C
Raw Normal View History

/* [XSI] char * strdup( const char * )
This file is part of the Public Domain C Library (PDCLib).
Permission is granted to use, modify, and / or redistribute at will.
*/
#ifdef REGTEST
#define _POSIX_C_SOURCE 200809L
#endif
#include <string.h>
#include <stdlib.h>
#ifndef REGTEST
char *strdup(const char *s)
{
char* ns = NULL;
if(s) {
size_t len = strlen(s) + 1;
ns = malloc(len);
if(ns)
strncpy(ns, s, len);
}
return ns;
}
#endif
#ifdef TEST
#include "_PDCLIB_test.h"
int main( void )
{
const char *teststr = "Hello, world";
const char *teststr2 = "An alternative test string with non-7-bit characters \xFE\x8C\n";
char *testres, *testres2;
TESTCASE((testres = strdup(teststr)) != NULL);
TESTCASE((testres2 = strdup(teststr2)) != NULL);
TESTCASE(strcmp(testres, teststr) == 0);
TESTCASE(strcmp(testres2, teststr2) == 0);
free(testres);
free(testres2);
return TEST_RESULTS;
}
#endif