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