1*716024cdSPeter Avalos /*- 2*716024cdSPeter Avalos * Copyright (c) 2005 Tim J. Robbins. 3*716024cdSPeter Avalos * All rights reserved. 4*716024cdSPeter Avalos * 5*716024cdSPeter Avalos * Redistribution and use in source and binary forms, with or without 6*716024cdSPeter Avalos * modification, are permitted provided that the following conditions 7*716024cdSPeter Avalos * are met: 8*716024cdSPeter Avalos * 1. Redistributions of source code must retain the above copyright 9*716024cdSPeter Avalos * notice, this list of conditions and the following disclaimer. 10*716024cdSPeter Avalos * 2. Redistributions in binary form must reproduce the above copyright 11*716024cdSPeter Avalos * notice, this list of conditions and the following disclaimer in the 12*716024cdSPeter Avalos * documentation and/or other materials provided with the distribution. 13*716024cdSPeter Avalos * 14*716024cdSPeter Avalos * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15*716024cdSPeter Avalos * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16*716024cdSPeter Avalos * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17*716024cdSPeter Avalos * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18*716024cdSPeter Avalos * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19*716024cdSPeter Avalos * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20*716024cdSPeter Avalos * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21*716024cdSPeter Avalos * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22*716024cdSPeter Avalos * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23*716024cdSPeter Avalos * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24*716024cdSPeter Avalos * SUCH DAMAGE. 25*716024cdSPeter Avalos * 26*716024cdSPeter Avalos * $FreeBSD: src/lib/libc/string/wcsdup.c,v 1.1 2005/08/13 05:54:33 tjr Exp $ 27*716024cdSPeter Avalos */ 28*716024cdSPeter Avalos 29*716024cdSPeter Avalos #include <stdlib.h> 30*716024cdSPeter Avalos #include <wchar.h> 31*716024cdSPeter Avalos 32*716024cdSPeter Avalos wchar_t * 33*716024cdSPeter Avalos wcsdup(const wchar_t *s) 34*716024cdSPeter Avalos { 35*716024cdSPeter Avalos wchar_t *copy; 36*716024cdSPeter Avalos size_t len; 37*716024cdSPeter Avalos 38*716024cdSPeter Avalos len = wcslen(s) + 1; 39*716024cdSPeter Avalos if ((copy = malloc(len * sizeof(wchar_t))) == NULL) 40*716024cdSPeter Avalos return (NULL); 41*716024cdSPeter Avalos return (wmemcpy(copy, s, len)); 42*716024cdSPeter Avalos } 43