/src/binutils-gdb/libiberty/xstrdup.c
Line | Count | Source |
1 | | /* xstrdup.c -- Duplicate a string in memory, using xmalloc. |
2 | | This trivial function is in the public domain. |
3 | | Ian Lance Taylor, Cygnus Support, December 1995. */ |
4 | | |
5 | | /* |
6 | | |
7 | | @deftypefn Replacement char* xstrdup (const char *@var{s}) |
8 | | |
9 | | Duplicates a character string without fail, using @code{xmalloc} to |
10 | | obtain memory. |
11 | | |
12 | | @end deftypefn |
13 | | |
14 | | */ |
15 | | |
16 | | #ifdef HAVE_CONFIG_H |
17 | | #include "config.h" |
18 | | #endif |
19 | | #include <sys/types.h> |
20 | | #ifdef HAVE_STRING_H |
21 | | #include <string.h> |
22 | | #else |
23 | | # ifdef HAVE_STRINGS_H |
24 | | # include <strings.h> |
25 | | # endif |
26 | | #endif |
27 | | #include "ansidecl.h" |
28 | | #include "libiberty.h" |
29 | | |
30 | | char * |
31 | | xstrdup (const char *s) |
32 | 452k | { |
33 | 452k | register size_t len = strlen (s) + 1; |
34 | 452k | register char *ret = XNEWVEC (char, len); |
35 | 452k | return (char *) memcpy (ret, s, len); |
36 | 452k | } |