PostgreSQL Source Code
git master
Toggle main menu visibility
Main Page
Related Pages
Namespaces
Namespace List
Namespace Members
All
Functions
Variables
Data Structures
Data Structures
Data Structure Index
Class Hierarchy
Data Fields
All
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Functions
_
a
f
h
i
n
o
p
r
s
~
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Enumerations
Files
File List
Globals
All
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Functions
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Typedefs
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Enumerations
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
Enumerator
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
z
Macros
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
•
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Pages
strlcpy.c
Go to the documentation of this file.
1
/*-------------------------------------------------------------------------
2
*
3
* strlcpy.c
4
* strncpy done right
5
*
6
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
7
*
8
*
9
* IDENTIFICATION
10
* src/port/strlcpy.c
11
*
12
* This file was taken from OpenBSD and is used on platforms that don't
13
* provide strlcpy(). The OpenBSD copyright terms follow.
14
*-------------------------------------------------------------------------
15
*/
16
17
/* $OpenBSD: strlcpy.c,v 1.11 2006/05/05 15:27:38 millert Exp $ */
18
19
/*
20
* Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com>
21
*
22
* Permission to use, copy, modify, and distribute this software for any
23
* purpose with or without fee is hereby granted, provided that the above
24
* copyright notice and this permission notice appear in all copies.
25
*
26
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
27
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
28
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
29
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
30
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
31
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
32
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
33
*/
34
35
#include "
c.h
"
36
37
38
/*
39
* Copy src to string dst of size siz. At most siz-1 characters
40
* will be copied. Always NUL terminates (unless siz == 0).
41
* Returns strlen(src); if retval >= siz, truncation occurred.
42
* Function creation history: http://www.gratisoft.us/todd/papers/strlcpy.html
43
*/
44
size_t
45
strlcpy
(
char
*dst,
const
char
*src,
size_t
siz)
46
{
47
char
*d = dst;
48
const
char
*s = src;
49
size_t
n = siz;
50
51
/* Copy as many bytes as will fit */
52
if
(n != 0)
53
{
54
while
(--n != 0)
55
{
56
if
((*d++ = *s++) ==
'\0'
)
57
break
;
58
}
59
}
60
61
/* Not enough room in dst, add NUL and traverse rest of src */
62
if
(n == 0)
63
{
64
if
(siz != 0)
65
*d =
'\0'
;
/* NUL-terminate dst */
66
while
(*s++)
67
;
68
}
69
70
return
(s - src - 1);
/* count does not include NUL */
71
}
c.h
strlcpy
size_t strlcpy(char *dst, const char *src, size_t siz)
Definition:
strlcpy.c:45
src
port
strlcpy.c
Generated on Mon Dec 30 2024 00:13:26 for PostgreSQL Source Code by
1.9.4