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