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*16dce513Schristosxstrdup (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