9 |
|
|
10 |
*/ |
*/ |
11 |
|
|
12 |
|
#include <ansidecl.h> |
13 |
|
#ifdef ANSI_PROTOTYPES |
14 |
|
#include <stddef.h> |
15 |
|
#else |
16 |
|
#define size_t unsigned long |
17 |
|
#endif |
18 |
|
|
19 |
|
extern size_t strlen PARAMS ((const char*)); |
20 |
|
extern PTR malloc PARAMS ((size_t)); |
21 |
|
extern PTR memcpy PARAMS ((PTR, const PTR, size_t)); |
22 |
|
|
23 |
char * |
char * |
24 |
strdup(s) |
strdup(s) |
25 |
char *s; |
const char *s; |
26 |
{ |
{ |
27 |
char *result = (char*)malloc(strlen(s) + 1); |
size_t len = strlen (s) + 1; |
28 |
if (result == (char*)0) |
char *result = (char*) malloc (len); |
29 |
return (char*)0; |
if (result == (char*) 0) |
30 |
strcpy(result, s); |
return (char*) 0; |
31 |
return result; |
return (char*) memcpy (result, s, len); |
32 |
} |
} |