63 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
| /*
 | |
| 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 */
 |