1*4fee23f9Smrg /* 2*4fee23f9Smrg 3*4fee23f9Smrg @deftypefn Supplemental char* strdup (const char *@var{s}) 4*4fee23f9Smrg 5*4fee23f9Smrg Returns a pointer to a copy of @var{s} in memory obtained from 6*4fee23f9Smrg @code{malloc}, or @code{NULL} if insufficient memory was available. 7*4fee23f9Smrg 8*4fee23f9Smrg @end deftypefn 9*4fee23f9Smrg 10*4fee23f9Smrg */ 11*4fee23f9Smrg 12*4fee23f9Smrg #include <ansidecl.h> 13*4fee23f9Smrg #include <stddef.h> 14*4fee23f9Smrg 15*4fee23f9Smrg extern size_t strlen (const char*); 16*4fee23f9Smrg extern PTR malloc (size_t); 17*4fee23f9Smrg extern PTR memcpy (PTR, const PTR, size_t); 18*4fee23f9Smrg 19*4fee23f9Smrg char * strdup(const char * s)20*4fee23f9Smrgstrdup(const char *s) 21*4fee23f9Smrg { 22*4fee23f9Smrg size_t len = strlen (s) + 1; 23*4fee23f9Smrg char *result = (char*) malloc (len); 24*4fee23f9Smrg if (result == (char*) 0) 25*4fee23f9Smrg return (char*) 0; 26*4fee23f9Smrg return (char*) memcpy (result, s, len); 27*4fee23f9Smrg } 28