summaryrefslogtreecommitdiff
path: root/src/lib/libc/string/strcat.3
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libc/string/strcat.3')
-rw-r--r--src/lib/libc/string/strcat.369
1 files changed, 55 insertions, 14 deletions
diff --git a/src/lib/libc/string/strcat.3 b/src/lib/libc/string/strcat.3
index 5357d65754..e9e5163bd3 100644
--- a/src/lib/libc/string/strcat.3
+++ b/src/lib/libc/string/strcat.3
@@ -33,14 +33,14 @@
33.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 33.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
34.\" SUCH DAMAGE. 34.\" SUCH DAMAGE.
35.\" 35.\"
36.\" from: @(#)strcat.3 5.6 (Berkeley) 6/29/91 36.\" $OpenBSD: strcat.3,v 1.8 2000/04/21 15:24:19 aaron Exp $
37.\" $Id: strcat.3,v 1.1.1.1 1995/10/18 08:42:22 deraadt Exp $
38.\" 37.\"
39.Dd June 29, 1991 38.Dd July 8, 1997
40.Dt STRCAT 3 39.Dt STRCAT 3
41.Os 40.Os
42.Sh NAME 41.Sh NAME
43.Nm strcat 42.Nm strcat ,
43.Nm strncat
44.Nd concatenate strings 44.Nd concatenate strings
45.Sh SYNOPSIS 45.Sh SYNOPSIS
46.Fd #include <string.h> 46.Fd #include <string.h>
@@ -53,8 +53,7 @@ The
53.Fn strcat 53.Fn strcat
54and 54and
55.Fn strncat 55.Fn strncat
56functions 56functions append a copy of the null-terminated string
57append a copy of the null-terminated string
58.Fa append 57.Fa append
59to the end of the null-terminated string 58to the end of the null-terminated string
60.Fa s , 59.Fa s ,
@@ -66,29 +65,71 @@ must have sufficient space to hold the result.
66.Pp 65.Pp
67The 66The
68.Fn strncat 67.Fn strncat
69function 68function appends not more than
70appends not more than
71.Fa count 69.Fa count
72characters. 70characters where space for the terminating
71.Ql \e0
72should not be included in
73.Fa count .
73.Sh RETURN VALUES 74.Sh RETURN VALUES
74The 75The
75.Fn strcat 76.Fn strcat
76and 77and
77.Fn strncat 78.Fn strncat
78functions 79functions return the pointer
79return the pointer
80.Fa s . 80.Fa s .
81.Sh EXAMPLES
82The following appends
83.Dq Li abc
84to
85.Dq Li chararray :
86.Bd -literal -offset indent
87char *letters = "abcdefghi";
88
89(void)strncat(chararray, letters, 3);
90.Ed
91.Pp
92The following example shows how to use
93.Fn strncat
94safely in conjunction with
95.Xr strncpy 3 .
96.Bd -literal -offset indent
97char buf[BUFSIZ];
98char *input, *suffix;
99
100(void)strncpy(buf, input, sizeof(buf) - 1);
101buf[sizeof(buf) - 1] = '\e0';
102(void)strncat(buf, suffix, sizeof(buf) - 1 - strlen(buf));
103.Ed
104.Pp
105The above will copy as many characters from
106.Dq Li input
107to
108.Dq Li buf
109as will fit.
110It then appends as many characters from suffix as will fit (or none
111if there is no space).
112For operations like this, the
113.Xr strlcpy 3
114and
115.Xr strlcat 3
116functions are a better choice, as shown below.
117.Bd -literal -offset indent
118(void)strlcpy(buf, input, sizeof(buf));
119(void)strlcat(buf, suffix, sizeof(buf));
120.Ed
81.Sh SEE ALSO 121.Sh SEE ALSO
82.Xr bcopy 3 , 122.Xr bcopy 3 ,
83.Xr memccpy 3 , 123.Xr memccpy 3 ,
84.Xr memcpy 3 , 124.Xr memcpy 3 ,
85.Xr memmove 3 , 125.Xr memmove 3 ,
86.Xr strcpy 3 126.Xr strcpy 3 ,
127.Xr strlcat 3 ,
128.Xr strlcpy 3
87.Sh STANDARDS 129.Sh STANDARDS
88The 130The
89.Fn strcat 131.Fn strcat
90and 132and
91.Fn strncat 133.Fn strncat
92functions 134functions conform to
93conform to
94.St -ansiC . 135.St -ansiC .