PatchworkOS
c9fea19
A non-POSIX operating system.
Theme:
Default
Round
Robot
Loading...
Searching...
No Matches
strcpy_s.c
Go to the documentation of this file.
1
#include "
common/use_annex_k.h
"
2
#include <
errno.h
>
3
#include <
stdint.h
>
4
#include <
stdlib.h
>
5
#include <
string.h
>
6
7
#include "
common/constraint_handler.h
"
8
9
errno_t
strcpy_s
(
char
*
_RESTRICT
s1,
rsize_t
s1max,
const
char
*
_RESTRICT
s2)
10
{
11
char
* dest = s1;
12
const
char
* src = s2;
13
14
if
(s1 !=
NULL
&& s2 !=
NULL
&& s1max <= RSIZE_MAX && s1max != 0)
15
{
16
while
(s1max--)
17
{
18
if
(dest == s2 || src == s1)
19
{
20
goto
runtime_constraint_violation;
21
}
22
23
if
((*dest++ = *src++) ==
'\0'
)
24
{
25
return
0;
26
}
27
}
28
}
29
30
runtime_constraint_violation:
31
32
if
(s1 !=
NULL
&& s1max > 0 && s1max <= RSIZE_MAX)
33
{
34
s1[0] =
'\0'
;
35
}
36
37
_constraintHandler
(
_CONSTRAINT_VIOLATION
(
EINVAL
));
38
return
EINVAL
;
39
}
_constraintHandler
constraint_handler_t _constraintHandler
Definition
constraint_handler.c:3
constraint_handler.h
_CONSTRAINT_VIOLATION
#define _CONSTRAINT_VIOLATION(e)
Definition
constraint_handler.h:10
errno.h
errno_t
int errno_t
Definition
errno_t.h:4
EINVAL
#define EINVAL
Invalid argument.
Definition
errno.h:142
NULL
#define NULL
Pointer error value.
Definition
NULL.h:23
_RESTRICT
#define _RESTRICT
Definition
config.h:17
rsize_t
__SIZE_TYPE__ rsize_t
Definition
rsize_t.h:4
stdint.h
stdlib.h
strcpy_s
errno_t strcpy_s(char *_RESTRICT s1, rsize_t s1max, const char *_RESTRICT s2)
Definition
strcpy_s.c:9
string.h
use_annex_k.h
src
libstd
functions
string
strcpy_s.c
Generated on Mon Dec 15 2025 05:10:35 for PatchworkOS by
1.9.8