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