1169695Skan/* xstrdup.c -- Duplicate a string in memory, using xmalloc.
2169695Skan   This trivial function is in the public domain.
3169695Skan   Ian Lance Taylor, Cygnus Support, December 1995.  */
4169695Skan
5169695Skan/*
6169695Skan
7169695Skan@deftypefn Replacement char* xstrdup (const char *@var{s})
8169695Skan
9169695SkanDuplicates a character string without fail, using @code{xmalloc} to
10169695Skanobtain memory.
11169695Skan
12169695Skan@end deftypefn
13169695Skan
14169695Skan*/
15169695Skan
16169695Skan#include <sys/types.h>
17169695Skan#ifdef HAVE_CONFIG_H
18169695Skan#include "config.h"
19169695Skan#endif
20169695Skan#ifdef HAVE_STRING_H
21169695Skan#include <string.h>
22169695Skan#else
23169695Skan# ifdef HAVE_STRINGS_H
24169695Skan#  include <strings.h>
25169695Skan# endif
26169695Skan#endif
27169695Skan#include "ansidecl.h"
28169695Skan#include "libiberty.h"
29169695Skan
30169695Skanchar *
31169695Skanxstrdup (const char *s)
32169695Skan{
33169695Skan  register size_t len = strlen (s) + 1;
34169695Skan  register char *ret = XNEWVEC (char, len);
35169695Skan  return (char *) memcpy (ret, s, len);
36169695Skan}
37