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