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 . |