Requested by deraadt@OPENBSD_5_5
@ -0,0 +1,128 @@ | |||
.\" $OpenBSD: strncat.3,v 1.1 2013/12/19 20:52:37 millert Exp $ | |||
.\" | |||
.\" Copyright (c) 1990, 1991 The Regents of the University of California. | |||
.\" All rights reserved. | |||
.\" | |||
.\" This code is derived from software contributed to Berkeley by | |||
.\" Chris Torek and the American National Standards Committee X3, | |||
.\" on Information Processing Systems. | |||
.\" | |||
.\" Redistribution and use in source and binary forms, with or without | |||
.\" modification, are permitted provided that the following conditions | |||
.\" are met: | |||
.\" 1. Redistributions of source code must retain the above copyright | |||
.\" notice, this list of conditions and the following disclaimer. | |||
.\" 2. Redistributions in binary form must reproduce the above copyright | |||
.\" notice, this list of conditions and the following disclaimer in the | |||
.\" documentation and/or other materials provided with the distribution. | |||
.\" 3. Neither the name of the University nor the names of its contributors | |||
.\" may be used to endorse or promote products derived from this software | |||
.\" without specific prior written permission. | |||
.\" | |||
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND | |||
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | |||
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | |||
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE | |||
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |||
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | |||
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | |||
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | |||
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | |||
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |||
.\" SUCH DAMAGE. | |||
.\" | |||
.Dd $Mdocdate: December 19 2013 $ | |||
.Dt STRNCAT 3 | |||
.Os | |||
.Sh NAME | |||
.Nm strncat | |||
.Nd concatenate a string with part of another | |||
.Sh SYNOPSIS | |||
.In string.h | |||
.Ft char * | |||
.Fn strncat "char *s" "const char *append" "size_t count" | |||
.Sh DESCRIPTION | |||
The | |||
.Fn strncat | |||
function appends not more than | |||
.Fa count | |||
characters of the NUL-terminated string | |||
.Fa append | |||
to the end of the NUL-terminated string | |||
.Fa s . | |||
Space for the terminating | |||
.Ql \e0 | |||
should not be included in | |||
.Fa count . | |||
The string | |||
.Fa s | |||
must have sufficient space to hold the result. | |||
.Sh RETURN VALUES | |||
The | |||
.Fn strncat | |||
function returns the pointer | |||
.Fa s . | |||
.Sh EXAMPLES | |||
The following appends | |||
.Dq Li abc | |||
to | |||
.Va chararray : | |||
.Bd -literal -offset indent | |||
char *letters = "abcdefghi"; | |||
(void)strncat(chararray, letters, 3); | |||
.Ed | |||
.Pp | |||
The following example shows how to use | |||
.Fn strncat | |||
safely in conjunction with | |||
.Xr strncpy 3 . | |||
.Bd -literal -offset indent | |||
char buf[BUFSIZ]; | |||
char *input, *suffix; | |||
(void)strncpy(buf, input, sizeof(buf) - 1); | |||
buf[sizeof(buf) - 1] = '\e0'; | |||
(void)strncat(buf, suffix, sizeof(buf) - 1 - strlen(buf)); | |||
.Ed | |||
.Pp | |||
The above will copy as many characters from | |||
.Va input | |||
to | |||
.Va buf | |||
as will fit. | |||
It then appends as many characters from | |||
.Va suffix | |||
as will fit (or none | |||
if there is no space). | |||
For operations like this, the | |||
.Xr strlcpy 3 | |||
and | |||
.Xr strlcat 3 | |||
functions are a better choice, as shown below. | |||
.Bd -literal -offset indent | |||
(void)strlcpy(buf, input, sizeof(buf)); | |||
(void)strlcat(buf, suffix, sizeof(buf)); | |||
.Ed | |||
.Sh SEE ALSO | |||
.Xr bcopy 3 , | |||
.Xr memccpy 3 , | |||
.Xr memcpy 3 , | |||
.Xr memmove 3 , | |||
.Xr strcat 3 , | |||
.Xr strcpy 3 , | |||
.Xr strlcpy 3 , | |||
.Xr wcscat 3 , | |||
.Xr wcslcpy 3 | |||
.Sh STANDARDS | |||
The | |||
.Fn strcat | |||
and | |||
.Fn strncat | |||
functions conform to | |||
.St -ansiC . | |||
.Sh HISTORY | |||
The | |||
.Fn strncat | |||
function first first appeared in | |||
.At v7 . |
@ -0,0 +1,153 @@ | |||
.\" $OpenBSD: strncpy.3,v 1.1 2013/12/19 20:52:37 millert Exp $ | |||
.\" | |||
.\" Copyright (c) 1990, 1991 The Regents of the University of California. | |||
.\" All rights reserved. | |||
.\" | |||
.\" This code is derived from software contributed to Berkeley by | |||
.\" Chris Torek and the American National Standards Committee X3, | |||
.\" on Information Processing Systems. | |||
.\" | |||
.\" Redistribution and use in source and binary forms, with or without | |||
.\" modification, are permitted provided that the following conditions | |||
.\" are met: | |||
.\" 1. Redistributions of source code must retain the above copyright | |||
.\" notice, this list of conditions and the following disclaimer. | |||
.\" 2. Redistributions in binary form must reproduce the above copyright | |||
.\" notice, this list of conditions and the following disclaimer in the | |||
.\" documentation and/or other materials provided with the distribution. | |||
.\" 3. Neither the name of the University nor the names of its contributors | |||
.\" may be used to endorse or promote products derived from this software | |||
.\" without specific prior written permission. | |||
.\" | |||
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND | |||
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | |||
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | |||
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE | |||
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |||
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | |||
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | |||
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | |||
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | |||
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |||
.\" SUCH DAMAGE. | |||
.\" | |||
.Dd $Mdocdate: December 19 2013 $ | |||
.Dt STRNCPY 3 | |||
.Os | |||
.Sh NAME | |||
.Nm strncpy | |||
.Nd copy part of a string to another | |||
.Sh SYNOPSIS | |||
.In string.h | |||
.Ft char * | |||
.Fn strncpy "char *dst" "const char *src" "size_t len" | |||
.Sh DESCRIPTION | |||
The | |||
.Fn strncpy | |||
function copies not more than | |||
.Fa len | |||
characters from the string | |||
.Fa src | |||
to | |||
.Fa dst . | |||
If | |||
.Fa src | |||
is less than | |||
.Fa len | |||
characters long, | |||
it appends | |||
.Ql \e0 | |||
characters for the rest of | |||
.Fa len . | |||
If the length of | |||
.Fa src | |||
is greater than or equal to | |||
.Fa len , | |||
.Fa dst | |||
will | |||
.Em not | |||
be NUL-terminated. | |||
.Pp | |||
If the | |||
.Fa src | |||
and | |||
.Fa dst | |||
strings overlap, the behavior is undefined. | |||
.Sh RETURN VALUES | |||
The | |||
.Fn strncpy | |||
function returns | |||
.Fa dst . | |||
.Sh EXAMPLES | |||
The following sets | |||
.Va chararray | |||
to | |||
.Dq abc\e0\e0\e0 : | |||
.Bd -literal -offset indent | |||
(void)strncpy(chararray, "abc", 6); | |||
.Ed | |||
.Pp | |||
The following sets | |||
.Va chararray | |||
to | |||
.Dq abcdef | |||
and does | |||
.Em not | |||
NUL terminate | |||
.Va chararray | |||
because the length of the source string is greater than or equal to the | |||
length parameter. | |||
.Fn strncpy | |||
.Em only | |||
NUL terminates the destination string when the length of the source | |||
string is less than the length parameter. | |||
.Bd -literal -offset indent | |||
(void)strncpy(chararray, "abcdefgh", 6); | |||
.Ed | |||
.Pp | |||
The following copies as many characters from | |||
.Va input | |||
to | |||
.Va buf | |||
as will fit and NUL terminates the result. | |||
Because | |||
.Fn strncpy | |||
does | |||
.Em not | |||
guarantee to NUL terminate the string itself, it must be done by hand. | |||
.Bd -literal -offset indent | |||
char buf[BUFSIZ]; | |||
(void)strncpy(buf, input, sizeof(buf) - 1); | |||
buf[sizeof(buf) - 1] = '\e0'; | |||
.Ed | |||
.Pp | |||
Note that | |||
.Xr strlcpy 3 | |||
is a better choice for this kind of operation. | |||
The equivalent using | |||
.Xr strlcpy 3 | |||
is simply: | |||
.Bd -literal -offset indent | |||
(void)strlcpy(buf, input, sizeof(buf)); | |||
.Ed | |||
.Sh SEE ALSO | |||
.Xr bcopy 3 , | |||
.Xr memccpy 3 , | |||
.Xr memcpy 3 , | |||
.Xr memmove 3 , | |||
.Xr strcat 3 , | |||
.Xr strlcpy 3 , | |||
.Xr strncat 3 , | |||
.Xr wcscpy 3 , | |||
.Xr wcslcpy 3 | |||
.Sh STANDARDS | |||
The | |||
.Fn strncpy | |||
function conforms to | |||
.St -ansiC . | |||
.Sh HISTORY | |||
The | |||
.Fn strncpy | |||
function first appeared in | |||
.At v7 . |