]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - contrib/binutils/libiberty/strdup.c
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.git] / contrib / binutils / libiberty / strdup.c
1 /*
2
3 @deftypefn Supplemental char* strdup (const char *@var{s})
4
5 Returns 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
15 extern size_t   strlen (const char*);
16 extern PTR      malloc (size_t);
17 extern PTR      memcpy (PTR, const PTR, size_t);
18
19 char *
20 strdup(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 }