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*1debfc3dSmrgxstrdup (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