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