The FreeRADIUS server
$Id: 15bac2a4c627c01d1aa2047687b3418955ac7f00 $
src
lib
util
strlcat.c
Go to the documentation of this file.
1
/*
2
* Permission to use, copy, modify, and distribute this software for any
3
* purpose with or without fee is hereby granted, provided that the above
4
* copyright notice and this permission notice appear in all copies.
5
*
6
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
7
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
8
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
9
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
10
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
11
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
12
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
13
*/
14
15
/** Implementation of the strlcat function
16
*
17
* @file src/lib/util/strlcat.c
18
*
19
* @copyright (c) 1998 Todd C. Miller (Todd.Miller@courtesan.com)
20
*/
21
RCSID
(
"$Id: 6a548e0f447fc4406d898d489c336f05e6091412 $"
)
22
23
#ifndef HAVE_STRLCAT
24
25
#include <freeradius-devel/missing.h>
26
27
/*
28
* Appends src to string dst of size siz (unlike strncat, siz is the
29
* full size of dst, not space left). At most siz-1 characters
30
* will be copied. Always NUL terminates (unless siz <= strlen(dst)).
31
* Returns strlen(src) + MIN(siz, strlen(initial dst)).
32
* If retval >= siz, truncation occurred.
33
*/
34
size_t
35
strlcat
(
char
*dst,
char
const
*src,
size_t
siz)
36
{
37
char
*d = dst;
38
char
const
*s = src;
39
size_t
n
= siz;
40
size_t
dlen;
41
42
/* Find the end of dst and adjust bytes left but don't go past end */
43
while
(
n
-- != 0 && *d !=
'\0'
)
44
d++;
45
dlen = d - dst;
46
n
= siz - dlen;
47
48
if
(
n
== 0)
49
return
(dlen + strlen(s));
50
while
(*s !=
'\0'
) {
51
if
(
n
!= 1) {
52
*d++ = *s;
53
n
--;
54
}
55
s++;
56
}
57
*d =
'\0'
;
58
59
return
(dlen + (s - src));
/* count does not include NUL */
60
}
61
62
#endif
n
int n
Definition:
acutest.h:577
RCSID
#define RCSID(id)
Definition:
build.h:481
strlcat
size_t strlcat(char *dst, char const *src, size_t siz)
Definition:
strlcat.c:35
Generated by
1.9.1