189857Sobrien/* 289857Sobrien 389857Sobrien@deftypefn Supplemental char* strdup (const char *@var{s}) 489857Sobrien 589857SobrienReturns a pointer to a copy of @var{s} in memory obtained from 689857Sobrien@code{malloc}, or @code{NULL} if insufficient memory was available. 789857Sobrien 889857Sobrien@end deftypefn 989857Sobrien 1089857Sobrien*/ 1189857Sobrien 12130561Sobrien#include <ansidecl.h> 13130561Sobrien#include <stddef.h> 14130561Sobrien 15218822Sdimextern size_t strlen (const char*); 16218822Sdimextern PTR malloc (size_t); 17218822Sdimextern PTR memcpy (PTR, const PTR, size_t); 18130561Sobrien 1933965Sjdpchar * 20218822Sdimstrdup(const char *s) 2133965Sjdp{ 22130561Sobrien size_t len = strlen (s) + 1; 23130561Sobrien char *result = (char*) malloc (len); 24130561Sobrien if (result == (char*) 0) 25130561Sobrien return (char*) 0; 26130561Sobrien return (char*) memcpy (result, s, len); 2733965Sjdp} 28