]> pd.if.org Git - pdclib/blob - functions/string/strdup.c
d8792f30b72a98af858720b3c9a7c93a89630226
[pdclib] / functions / string / strdup.c
1 /* [XSI] char* strdup(const char *)\r
2 \r
3    This file is part of the Public Domain C Library (PDCLib).\r
4    Permission is granted to use, modify, and / or redistribute at will.\r
5 */\r
6 \r
7 #include <string.h>\r
8 #include <stdlib.h>\r
9 \r
10 #ifndef REGTEST\r
11 \r
12 char *strdup(const char *s)\r
13 {\r
14     char* ns = NULL;\r
15     if(s) {\r
16         size_t len = strlen(s) + 1;\r
17         ns = malloc(len);\r
18         if(ns)\r
19             strncpy(ns, s, len);\r
20     }\r
21     return ns;\r
22 }\r
23 \r
24 #endif\r
25 \r
26 #ifdef TEST\r
27 #include <_PDCLIB_test.h>\r
28 \r
29 int main( void )\r
30 {\r
31     const char *teststr  = "Hello, world";\r
32     const char *teststr2 = "An alternative test string with non-7-bit characters \xFE\x8C\n";\r
33     char *testres, *testres2;\r
34 \r
35     TESTCASE((testres  = strdup(teststr)) != NULL);\r
36     TESTCASE((testres2 = strdup(teststr2)) != NULL);\r
37     TESTCASE(strcmp(testres, teststr) == 0);\r
38     TESTCASE(strcmp(testres2, teststr2) == 0);\r
39     free(testres);\r
40     free(testres2);\r
41 \r
42     return TEST_RESULTS;\r
43 }\r
44 \r
45 #endif\r