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