1*eda14cbcSMatt Macy /* 2*eda14cbcSMatt Macy * CDDL HEADER START 3*eda14cbcSMatt Macy * 4*eda14cbcSMatt Macy * The contents of this file are subject to the terms of the 5*eda14cbcSMatt Macy * Common Development and Distribution License (the "License"). 6*eda14cbcSMatt Macy * You may not use this file except in compliance with the License. 7*eda14cbcSMatt Macy * 8*eda14cbcSMatt Macy * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9*eda14cbcSMatt Macy * or http://www.opensolaris.org/os/licensing. 10*eda14cbcSMatt Macy * See the License for the specific language governing permissions 11*eda14cbcSMatt Macy * and limitations under the License. 12*eda14cbcSMatt Macy * 13*eda14cbcSMatt Macy * When distributing Covered Code, include this CDDL HEADER in each 14*eda14cbcSMatt Macy * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15*eda14cbcSMatt Macy * If applicable, add the following below this CDDL HEADER, with the 16*eda14cbcSMatt Macy * fields enclosed by brackets "[]" replaced with your own identifying 17*eda14cbcSMatt Macy * information: Portions Copyright [yyyy] [name of copyright owner] 18*eda14cbcSMatt Macy * 19*eda14cbcSMatt Macy * CDDL HEADER END 20*eda14cbcSMatt Macy */ 21*eda14cbcSMatt Macy 22*eda14cbcSMatt Macy /* 23*eda14cbcSMatt Macy * Copyright 2008 Sun Microsystems, Inc. All rights reserved. 24*eda14cbcSMatt Macy * Use is subject to license terms. 25*eda14cbcSMatt Macy */ 26*eda14cbcSMatt Macy 27*eda14cbcSMatt Macy #ifndef HAVE_STRLCPY 28*eda14cbcSMatt Macy 29*eda14cbcSMatt Macy #include <string.h> 30*eda14cbcSMatt Macy #include <sys/types.h> 31*eda14cbcSMatt Macy 32*eda14cbcSMatt Macy /* 33*eda14cbcSMatt Macy * Copies src to the dstsize buffer at dst. The copy will never 34*eda14cbcSMatt Macy * overflow the destination buffer and the buffer will always be null 35*eda14cbcSMatt Macy * terminated. 36*eda14cbcSMatt Macy */ 37*eda14cbcSMatt Macy 38*eda14cbcSMatt Macy size_t 39*eda14cbcSMatt Macy strlcpy(char *dst, const char *src, size_t len) 40*eda14cbcSMatt Macy { 41*eda14cbcSMatt Macy size_t slen = strlen(src); 42*eda14cbcSMatt Macy size_t copied; 43*eda14cbcSMatt Macy 44*eda14cbcSMatt Macy if (len == 0) 45*eda14cbcSMatt Macy return (slen); 46*eda14cbcSMatt Macy 47*eda14cbcSMatt Macy if (slen >= len) 48*eda14cbcSMatt Macy copied = len - 1; 49*eda14cbcSMatt Macy else 50*eda14cbcSMatt Macy copied = slen; 51*eda14cbcSMatt Macy (void) memcpy(dst, src, copied); 52*eda14cbcSMatt Macy dst[copied] = '\0'; 53*eda14cbcSMatt Macy return (slen); 54*eda14cbcSMatt Macy } 55*eda14cbcSMatt Macy 56*eda14cbcSMatt Macy #endif /* HAVE_STRLCPY */ 57