xref: /openbsd-src/gnu/lib/libiberty/src/xstrdup.c (revision 20fce977aadac3358da45d5027d7d19cdc03b0fe)
100bf4279Sespie /* xstrdup.c -- Duplicate a string in memory, using xmalloc.
200bf4279Sespie    This trivial function is in the public domain.
300bf4279Sespie    Ian Lance Taylor, Cygnus Support, December 1995.  */
400bf4279Sespie 
59588ddcfSespie /*
69588ddcfSespie 
79588ddcfSespie @deftypefn Replacement char* xstrdup (const char *@var{s})
89588ddcfSespie 
99588ddcfSespie Duplicates a character string without fail, using @code{xmalloc} to
109588ddcfSespie obtain memory.
119588ddcfSespie 
129588ddcfSespie @end deftypefn
139588ddcfSespie 
149588ddcfSespie */
159588ddcfSespie 
1600bf4279Sespie #include <sys/types.h>
1700bf4279Sespie #ifdef HAVE_CONFIG_H
1800bf4279Sespie #include "config.h"
1900bf4279Sespie #endif
2000bf4279Sespie #ifdef HAVE_STRING_H
2100bf4279Sespie #include <string.h>
22*20fce977Smiod #else
23*20fce977Smiod # ifdef HAVE_STRINGS_H
24*20fce977Smiod #  include <strings.h>
25*20fce977Smiod # endif
2600bf4279Sespie #endif
2700bf4279Sespie #include "ansidecl.h"
2800bf4279Sespie #include "libiberty.h"
2900bf4279Sespie 
3000bf4279Sespie char *
xstrdup(const char * s)31*20fce977Smiod xstrdup (const char *s)
3200bf4279Sespie {
3300bf4279Sespie   register size_t len = strlen (s) + 1;
34*20fce977Smiod   register char *ret = XNEWVEC (char, len);
35*20fce977Smiod   return (char *) memcpy (ret, s, len);
3600bf4279Sespie }
37