19588ddcfSespie /* 29588ddcfSespie 39588ddcfSespie @deftypefn Supplemental char* strdup (const char *@var{s}) 49588ddcfSespie 59588ddcfSespie Returns a pointer to a copy of @var{s} in memory obtained from 69588ddcfSespie @code{malloc}, or @code{NULL} if insufficient memory was available. 79588ddcfSespie 89588ddcfSespie @end deftypefn 99588ddcfSespie 109588ddcfSespie */ 119588ddcfSespie 1225e200daSespie #include <ansidecl.h> 1325e200daSespie #include <stddef.h> 1425e200daSespie 15*150b7e42Smiod extern size_t strlen (const char*); 16*150b7e42Smiod extern PTR malloc (size_t); 17*150b7e42Smiod extern PTR memcpy (PTR, const PTR, size_t); 1825e200daSespie 1900bf4279Sespie char * strdup(const char * s)20*150b7e42Smiodstrdup(const char *s) 2100bf4279Sespie { 2225e200daSespie size_t len = strlen (s) + 1; 2325e200daSespie char *result = (char*) malloc (len); 2400bf4279Sespie if (result == (char*) 0) 2500bf4279Sespie return (char*) 0; 2625e200daSespie return (char*) memcpy (result, s, len); 2700bf4279Sespie } 28