php-internal-docs
8.4.8
Unofficial docs for php/php-src
Loading...
Searching...
No Matches
strlcpy.c
Go to the documentation of this file.
1
/*
2
+----------------------------------------------------------------------+
3
| Copyright (c) The PHP Group |
4
+----------------------------------------------------------------------+
5
| This source file is subject to version 3.01 of the PHP license, |
6
| that is bundled with this package in the file LICENSE, and is |
7
| available through the world-wide-web at the following url: |
8
| https://www.php.net/license/3_01.txt |
9
| If you did not receive a copy of the PHP license and are unable to |
10
| obtain it through the world-wide-web, please send a note to |
11
| license@php.net so we can mail you a copy immediately. |
12
+----------------------------------------------------------------------+
13
| Author: |
14
+----------------------------------------------------------------------+
15
*/
16
17
#include "
php.h
"
18
19
#ifdef USE_STRLCPY_PHP_IMPL
20
21
/* $OpenBSD: strlcpy.c,v 1.15 2016/10/16 17:37:39 dtucker Exp $ */
22
23
/*
24
* Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com>
25
* All rights reserved.
26
*
27
* Redistribution and use in source and binary forms, with or without
28
* modification, are permitted provided that the following conditions
29
* are met:
30
* 1. Redistributions of source code must retain the above copyright
31
* notice, this list of conditions and the following disclaimer.
32
* 2. Redistributions in binary form must reproduce the above copyright
33
* notice, this list of conditions and the following disclaimer in the
34
* documentation and/or other materials provided with the distribution.
35
* 3. The name of the author may not be used to endorse or promote products
36
* derived from this software without specific prior written permission.
37
*
38
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
39
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
40
* AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
41
* THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
42
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
43
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
44
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
45
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
46
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
47
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
48
*/
49
50
#if defined(LIBC_SCCS) && !defined(lint)
51
static
const
char
*rcsid =
"$OpenBSD: strlcpy.c,v 1.15 2016/10/16 17:37:39 dtucker Exp $"
;
52
#endif
/* LIBC_SCCS and not lint */
53
54
#include <sys/types.h>
55
#include <string.h>
56
57
/*
58
* Copy src to string dst of size siz. At most siz-1 characters
59
* will be copied. Always NUL terminates (unless siz == 0).
60
* Returns strlen(src); if retval >= siz, truncation occurred.
61
*/
62
PHPAPI
size_t
php_strlcpy
(
char
*dst,
const
char
*src,
size_t
siz)
63
{
64
const
char
*
s
= src;
65
size_t
n
= siz;
66
67
/* Copy as many bytes as will fit */
68
if
(
n
!= 0) {
69
while
(--
n
!= 0) {
70
if
((*dst++ = *src++) == 0)
71
break
;
72
}
73
}
74
75
/* Not enough room in dst, add NUL and traverse rest of src */
76
if
(
n
== 0) {
77
if
(siz != 0)
78
*dst =
'\0'
;
/* NUL-terminate dst */
79
while
(*src++)
80
;
81
}
82
83
return
(src -
s
- 1);
84
}
85
86
#endif
/* !HAVE_STRLCPY */
s
char s[4]
Definition
cdf.c:77
n
zend_long n
Definition
ffi.c:4979
php.h
PHPAPI
#define PHPAPI
Definition
php.h:71
php_strlcpy
PHPAPI size_t php_strlcpy(char *dst, const char *src, size_t siz)
Definition
strlcpy.c:62
main
strlcpy.c
Generated on Sat Aug 23 2025 01:46:13 for php-internal-docs by
1.13.2