diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2009-03-15 13:39:07 +0000 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2009-03-15 13:39:07 +0000 |
commit | 159a17c8c800f24e82ddd60ed103a76c6f275408 (patch) | |
tree | 0578786765c8c6f26eb85108b77bb9c0ba60880b /newlib/libc/string/wcsdup.c | |
parent | 7b011fb1927a9b0e2a33007a422d94929928f28a (diff) | |
download | cygnal-159a17c8c800f24e82ddd60ed103a76c6f275408.tar.gz cygnal-159a17c8c800f24e82ddd60ed103a76c6f275408.tar.bz2 cygnal-159a17c8c800f24e82ddd60ed103a76c6f275408.zip |
* libc/include/wchar.h (wcsdup, _wcsdup_r): Declare.
* libc/string/Makefile.am: Add wcsdup.c.
* libc/string/Makefile.in: Regenerate.
* libc/string/strings.tex: Add wcsdup documentation reference.
* libc/string/wcsdup.c: New file.
Diffstat (limited to 'newlib/libc/string/wcsdup.c')
-rw-r--r-- | newlib/libc/string/wcsdup.c | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/newlib/libc/string/wcsdup.c b/newlib/libc/string/wcsdup.c new file mode 100644 index 000000000..8462c0b09 --- /dev/null +++ b/newlib/libc/string/wcsdup.c @@ -0,0 +1,62 @@ +/* +FUNCTION + <<wcsdup>>---wide character string duplicate + +INDEX + wcsdup +INDEX + _wcsdup_r + +ANSI_SYNOPSIS + #include <wchar.h> + wchar_t *wcsdup(const wchar_t *<[str]>); + + #include <wchar.h> + wchar_t *_wcsdup_r(struct _reent *<ptr>, const wchar_t *<[str]>); + +TRAD_SYNOPSIS + #include <wchar.h> + wchar_t *wcsdup(<ptr>, <[str]>) + struct _reent *<ptr>; + wchar_t *<[str]>; + +DESCRIPTION + <<wcsdup>> allocates a new wide character string using <<malloc>, + and copies the content of the argument <[str]> into the newly + allocated string, thus making a copy of <[str]>. + +RETURNS + <<wcsdup>> returns a pointer to the copy of <[str]> if enough + memory for the copy was available. Otherwise it returns NULL + and errno is set to ENOMEM. + +PORTABILITY +POSIX-1.2008 + +QUICKREF + wcsdup +*/ + +#include <reent.h> +#include <stdlib.h> +#include <wchar.h> + +wchar_t * +_wcsdup_r (struct _reent *p, const wchar_t *str) +{ + size_t len = wcslen (str) + 1; + wchar_t *copy = _malloc_r (p, len * sizeof (wchar_t)); + if (copy) + wmemcpy (copy, str, len); + return copy; +} + +#ifndef _REENT_ONLY + +wchar_t * +wcsdup (const wchar_t *str) +{ + return _wcsdup_r (_REENT, str); +} + +#endif /* !_REENT_ONLY */ |