xref: /dflybsd-src/lib/libc/string/stpncpy.c (revision 0d5acd7467c4e95f792ef49fceb3ab8e917ce86b)
1d8ee3b5dSSamuel J. Greear /*-
2d8ee3b5dSSamuel J. Greear  * Copyright (c) 2009 David Schultz <das@FreeBSD.org>
3d8ee3b5dSSamuel J. Greear  * All rights reserved.
4d8ee3b5dSSamuel J. Greear  *
5d8ee3b5dSSamuel J. Greear  * Redistribution and use in source and binary forms, with or without
6d8ee3b5dSSamuel J. Greear  * modification, are permitted provided that the following conditions
7d8ee3b5dSSamuel J. Greear  * are met:
8d8ee3b5dSSamuel J. Greear  * 1. Redistributions of source code must retain the above copyright
9d8ee3b5dSSamuel J. Greear  *    notice, this list of conditions and the following disclaimer.
10d8ee3b5dSSamuel J. Greear  * 2. Redistributions in binary form must reproduce the above copyright
11d8ee3b5dSSamuel J. Greear  *    notice, this list of conditions and the following disclaimer in the
12d8ee3b5dSSamuel J. Greear  *    documentation and/or other materials provided with the distribution.
13d8ee3b5dSSamuel J. Greear  *
14d8ee3b5dSSamuel J. Greear  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15d8ee3b5dSSamuel J. Greear  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16d8ee3b5dSSamuel J. Greear  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17d8ee3b5dSSamuel J. Greear  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18d8ee3b5dSSamuel J. Greear  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19d8ee3b5dSSamuel J. Greear  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20d8ee3b5dSSamuel J. Greear  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21d8ee3b5dSSamuel J. Greear  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22d8ee3b5dSSamuel J. Greear  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23d8ee3b5dSSamuel J. Greear  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24d8ee3b5dSSamuel J. Greear  * SUCH DAMAGE.
25d8ee3b5dSSamuel J. Greear  *
26*0d5acd74SJohn Marino  * $FreeBSD: head/lib/libc/string/stpncpy.c 189136 2009-02-28 06:00:58Z das $
27d8ee3b5dSSamuel J. Greear  */
28d8ee3b5dSSamuel J. Greear 
29d8ee3b5dSSamuel J. Greear #include <string.h>
30d8ee3b5dSSamuel J. Greear 
31d8ee3b5dSSamuel J. Greear char *
stpncpy(char * __restrict dst,const char * __restrict src,size_t n)32*0d5acd74SJohn Marino stpncpy(char * __restrict dst, const char * __restrict src, size_t n)
33d8ee3b5dSSamuel J. Greear {
34d8ee3b5dSSamuel J. Greear 
35*0d5acd74SJohn Marino 	for (; n--; dst++, src++) {
36d8ee3b5dSSamuel J. Greear 		if (!(*dst = *src)) {
37d8ee3b5dSSamuel J. Greear 			char *ret = dst;
38*0d5acd74SJohn Marino 			while (n--)
39d8ee3b5dSSamuel J. Greear 				*++dst = '\0';
40d8ee3b5dSSamuel J. Greear 			return (ret);
41d8ee3b5dSSamuel J. Greear 		}
42d8ee3b5dSSamuel J. Greear 	}
43d8ee3b5dSSamuel J. Greear 	return (dst);
44d8ee3b5dSSamuel J. Greear }
45