strncat.c revision 103012
1155310Srwatson/*-
2155310Srwatson * Copyright (c) 1990, 1993
3155310Srwatson *	The Regents of the University of California.  All rights reserved.
4156288Srwatson *
5155310Srwatson * This code is derived from software contributed to Berkeley by
6156288Srwatson * Chris Torek.
7156288Srwatson *
8156288Srwatson * Redistribution and use in source and binary forms, with or without
9156288Srwatson * modification, are permitted provided that the following conditions
10156288Srwatson * are met:
11156288Srwatson * 1. Redistributions of source code must retain the above copyright
12156288Srwatson *    notice, this list of conditions and the following disclaimer.
13156288Srwatson * 2. Redistributions in binary form must reproduce the above copyright
14156288Srwatson *    notice, this list of conditions and the following disclaimer in the
15156310Srwatson *    documentation and/or other materials provided with the distribution.
16156288Srwatson * 3. All advertising materials mentioning features or use of this software
17156288Srwatson *    must display the following acknowledgement:
18156288Srwatson *	This product includes software developed by the University of
19156288Srwatson *	California, Berkeley and its contributors.
20156288Srwatson * 4. Neither the name of the University nor the names of its contributors
21156288Srwatson *    may be used to endorse or promote products derived from this software
22156288Srwatson *    without specific prior written permission.
23156288Srwatson *
24156288Srwatson * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
25156288Srwatson * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26156288Srwatson * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
27156288Srwatson * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
28156288Srwatson * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
29156288Srwatson * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
30156288Srwatson * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
31156288Srwatson * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
32155310Srwatson * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
33159984Srwatson * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
34159984Srwatson * SUCH DAMAGE.
35155310Srwatson */
36159984Srwatson
37159984Srwatson#if defined(LIBC_SCCS) && !defined(lint)
38155310Srwatsonstatic char sccsid[] = "@(#)strncat.c	8.1 (Berkeley) 6/4/93";
39156288Srwatson#endif /* LIBC_SCCS and not lint */
40156288Srwatson#include <sys/cdefs.h>
41156288Srwatson__FBSDID("$FreeBSD: head/lib/libc/string/strncat.c 103012 2002-09-06 11:24:06Z tjr $");
42156288Srwatson
43155310Srwatson#include <string.h>
44155310Srwatson
45/*
46 * Concatenate src on the end of dst.  At most strlen(dst)+n+1 bytes
47 * are written at dst (at most n+1 bytes being appended).  Return dst.
48 */
49char *
50strncat(char * __restrict dst, const char * __restrict src, size_t n)
51{
52	if (n != 0) {
53		char *d = dst;
54		const char *s = src;
55
56		while (*d != 0)
57			d++;
58		do {
59			if ((*d = *s++) == 0)
60				break;
61			d++;
62		} while (--n != 0);
63		*d = 0;
64	}
65	return (dst);
66}
67