ReactOS
0.4.16-dev-1007-g2e85425
Toggle main menu visibility
Main Page
Related Pages
Modules
Namespaces
Namespace List
Namespace Members
All
_
a
b
c
d
e
f
g
h
i
l
m
n
o
p
r
s
t
u
v
w
x
Functions
_
a
b
c
d
e
f
g
h
i
l
m
o
p
r
s
t
u
v
w
Variables
_
c
d
e
f
g
h
i
l
m
n
o
p
s
t
u
x
Typedefs
_
a
b
c
d
e
f
g
h
i
l
m
o
p
r
s
t
u
v
w
x
Enumerations
_
a
b
c
d
f
i
l
m
o
p
s
t
w
x
Enumerator
a
b
c
d
e
f
g
h
i
m
n
o
p
r
s
t
u
v
w
x
Classes
Class List
Class Index
Class Hierarchy
Class Members
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
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Enumerations
_
a
b
c
d
e
f
h
i
k
l
m
n
o
p
r
s
t
u
v
w
z
Enumerator
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Properties
_
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
Related Functions
_
a
b
c
d
e
f
g
h
i
l
m
n
o
p
q
r
s
t
v
x
Files
File List
File Members
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
y
z
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
y
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
Examples
corecrt_internal_securecrt.h
Go to the documentation of this file.
1
/***
2
*corecrt_internal_securecrt.h - contains declarations of internal routines and variables for securecrt
3
*
4
* Copyright (c) Microsoft Corporation. All rights reserved.
5
*
6
*Purpose:
7
* Declares routines and variables used internally in the SecureCRT implementation.
8
* In this include file we define the macros needed to implement the secure functions
9
* inlined in the *.inl files like tcscpy_s.inl, etc.
10
*
11
* [Internal]
12
*
13
****/
14
15
#pragma once
16
17
#ifndef _INC_INTERNAL_SECURECRT
18
#define _INC_INTERNAL_SECURECRT
19
20
#include <
corecrt_internal.h
>
21
#include <errno.h>
22
23
/* string resetting */
24
#define _FILL_STRING _SECURECRT__FILL_STRING
25
26
#define _FILL_BYTE _SECURECRT__FILL_BYTE
27
28
#define _RESET_STRING(_String, _Size) \
29
*(_String) = 0; \
30
_FILL_STRING((_String), (_Size), 1);
31
32
/* validations */
33
#define _VALIDATE_STRING_ERROR(_String, _Size, _Ret) \
34
_VALIDATE_RETURN((_String) != NULL && (_Size) > 0, EINVAL, (_Ret))
35
36
#define _VALIDATE_STRING(_String, _Size) \
37
_VALIDATE_STRING_ERROR((_String), (_Size), EINVAL)
38
39
#define _VALIDATE_POINTER_ERROR_RETURN(_Pointer, _ErrorCode, _Ret) \
40
_VALIDATE_RETURN((_Pointer) != NULL, (_ErrorCode), (_Ret))
41
42
#define _VALIDATE_POINTER_ERROR(_Pointer, _Ret) \
43
_VALIDATE_POINTER_ERROR_RETURN((_Pointer), EINVAL, (_Ret))
44
45
#define _VALIDATE_POINTER(_Pointer) \
46
_VALIDATE_POINTER_ERROR((_Pointer), EINVAL)
47
48
#define _VALIDATE_CONDITION_ERROR_RETURN(_Condition, _ErrorCode, _Ret) \
49
_VALIDATE_RETURN((_Condition), (_ErrorCode), (_Ret))
50
51
#define _VALIDATE_CONDITION_ERROR(_Condition, _Ret) \
52
_VALIDATE_CONDITION_ERROR_RETURN((_Condition), EINVAL, (_Ret))
53
54
#define _VALIDATE_POINTER_RESET_STRING_ERROR(_Pointer, _String, _Size, _Ret) \
55
if ((_Pointer) == NULL) \
56
{ \
57
_RESET_STRING((_String), (_Size)); \
58
_VALIDATE_POINTER_ERROR_RETURN((_Pointer), EINVAL, (_Ret)) \
59
}
60
61
#define _VALIDATE_POINTER_RESET_STRING(_Pointer, _String, _Size) \
62
_VALIDATE_POINTER_RESET_STRING_ERROR((_Pointer), (_String), (_Size), EINVAL)
63
64
#define _RETURN_BUFFER_TOO_SMALL_ERROR(_String, _Size, _Ret) \
65
_VALIDATE_RETURN((L"Buffer is too small"
&& 0), ERANGE, _Ret)
66
67
#define _RETURN_BUFFER_TOO_SMALL(_String, _Size) \
68
_RETURN_BUFFER_TOO_SMALL_ERROR((_String), (_Size), ERANGE)
69
70
#define _RETURN_DEST_NOT_NULL_TERMINATED(_String, _Size) \
71
_VALIDATE_RETURN((L"String is not null terminated"
&& 0), EINVAL, EINVAL)
72
73
#define _RETURN_EINVAL \
74
_VALIDATE_RETURN((L"Invalid parameter"
, 0), EINVAL, EINVAL)
75
76
#define _RETURN_ERROR(_Msg, _Ret) \
77
_VALIDATE_RETURN(((_Msg), 0), EINVAL, _Ret)
78
79
/* returns without calling _invalid_parameter */
80
#define _RETURN_NO_ERROR \
81
return 0
82
83
/* Note that _RETURN_TRUNCATE does not set errno */
84
#define _RETURN_TRUNCATE \
85
return STRUNCATE
86
87
#define _SET_MBCS_ERROR \
88
(errno = EILSEQ)
89
90
#define _RETURN_MBCS_ERROR \
91
return _SET_MBCS_ERROR
92
93
/* locale dependent */
94
#define _LOCALE_ARG \
95
_LocInfo
96
97
#define _LOCALE_ARG_DECL \
98
_locale_t _LOCALE_ARG
99
100
#define _LOCALE_UPDATE \
101
_LocaleUpdate _LocUpdate(_LOCALE_ARG)
102
103
#define _ISMBBLEAD(_Character) \
104
_ismbblead_l((_Character), _LocUpdate.GetLocaleT())
105
106
#define _ISMBBLEADPREFIX(_Result, _StringStart, _BytePtr) \
107
{ \
108
unsigned char *_Tmp_VAR, *_StringStart_VAR, *_BytePtr_VAR; \
109
\
110
_StringStart_VAR = (_StringStart); \
111
_BytePtr_VAR = (_BytePtr); \
112
_Tmp_VAR = _BytePtr_VAR; \
113
while ((_Tmp_VAR >= _StringStart_VAR) && _ISMBBLEAD(*_Tmp_VAR)) \
114
{ \
115
_Tmp_VAR--; \
116
} \
117
(_Result) = ((_BytePtr_VAR - _Tmp_VAR) & 1) != 0; \
118
}
119
120
#define _LOCALE_SHORTCUT_TEST \
121
_LocUpdate.GetLocaleT()->mbcinfo->ismbcodepage == 0
122
123
/* misc */
124
#define _ASSIGN_IF_NOT_NULL(_Pointer, _Value) \
125
if ((_Pointer) != NULL) \
126
{ \
127
*(_Pointer) = (_Value); \
128
}
129
130
#endif
/* _INC_INTERNAL_SECURECRT */
corecrt_internal.h
sdk
lib
ucrt
inc
corecrt_internal_securecrt.h
Generated on Fri Apr 18 2025 06:16:47 for ReactOS by
1.9.6