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