1 /**
2 * This file has no copyright assigned and is placed in the Public Domain.
3 * This file is part of the mingw-w64 runtime package.
4 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
5 */
6 #ifndef _INC_WCHAR_S
7 #define _INC_WCHAR_S
8
9 #include <wchar.h>
10
11 #if defined(__LIBMSVCRT__)
12 /* When building mingw-w64, this should be blank. */
13 #define _SECIMP
14 #else
15 #ifndef _SECIMP
16 #define _SECIMP __declspec(dllimport)
17 #endif /* _SECIMP */
18 #endif /* defined(_CRTBLD) || defined(__LIBMSVCRT__) */
19
20 #ifdef __cplusplus
21 extern "C" {
22 #endif
23
24 #ifndef _WIO_S_DEFINED
25 #define _WIO_S_DEFINED
26 _SECIMP errno_t __cdecl _waccess_s (const wchar_t *_Filename,int _AccessMode);
27 _SECIMP errno_t __cdecl _wmktemp_s (wchar_t *_TemplateName,size_t _SizeInWords);
28 #endif
29
30 #ifndef _WCONIO_S_DEFINED
31 #define _WCONIO_S_DEFINED
32 _SECIMP errno_t __cdecl _cgetws_s (wchar_t *_Buffer,size_t _SizeInWords,size_t *_SizeRead);
33 _SECIMP int __cdecl _cwprintf_s (const wchar_t *_Format,...);
34 _CRTIMP int __cdecl _cwscanf_s(const wchar_t *_Format,...);
35 _CRTIMP int __cdecl _cwscanf_s_l(const wchar_t *_Format,_locale_t _Locale,...);
36 _SECIMP int __cdecl _vcwprintf_s (const wchar_t *_Format,va_list _ArgList);
37 _SECIMP int __cdecl _cwprintf_s_l (const wchar_t *_Format,_locale_t _Locale,...);
38 _SECIMP int __cdecl _vcwprintf_s_l (const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
39 #endif
40
41 #ifndef _WSTDIO_S_DEFINED
42 #define _WSTDIO_S_DEFINED
43 _CRTIMP wchar_t *__cdecl _getws_s(wchar_t *_Str,size_t _SizeInWords);
44 __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_0(wchar_t*,_getws_s,wchar_t,_DstBuf)
45
46 #ifdef _UCRT
47 int __cdecl __stdio_common_vswprintf_s(unsigned __int64 _Options, wchar_t *_Str, size_t _Len, const wchar_t *_Format, _locale_t _Locale, va_list _ArgList);
48 int __cdecl __stdio_common_vsnwprintf_s(unsigned __int64 _Options, wchar_t *_Str, size_t _Len, size_t _MaxCount, const wchar_t *_Format, _locale_t _Locale, va_list _ArgList);
49 int __cdecl __stdio_common_vfwprintf_s(unsigned __int64 _Options, FILE *_File, const wchar_t *_Format, _locale_t _Locale, va_list _ArgList);
50
_vfwscanf_s_l(FILE * _File,const wchar_t * _Format,_locale_t _Locale,va_list _ArgList)51 __mingw_ovr int __cdecl _vfwscanf_s_l(FILE *_File, const wchar_t *_Format, _locale_t _Locale, va_list _ArgList)
52 {
53 return __stdio_common_vfwscanf(UCRTBASE_SCANF_DEFAULT_WIDE | UCRTBASE_SCANF_SECURECRT, _File, _Format, _Locale, _ArgList);
54 }
_fwscanf_s_l(FILE * _File,const wchar_t * _Format,_locale_t _Locale,...)55 __mingw_ovr int __cdecl _fwscanf_s_l(FILE *_File, const wchar_t *_Format, _locale_t _Locale, ...)
56 {
57 __builtin_va_list _ArgList;
58 int _Ret;
59 __builtin_va_start(_ArgList, _Locale);
60 _Ret = _vfwscanf_s_l(_File, _Format, _Locale, _ArgList);
61 __builtin_va_end(_ArgList);
62 return _Ret;
63 }
_wscanf_s_l(const wchar_t * _Format,_locale_t _Locale,...)64 __mingw_ovr int __cdecl _wscanf_s_l(const wchar_t *_Format, _locale_t _Locale, ...)
65 {
66 __builtin_va_list _ArgList;
67 int _Ret;
68 __builtin_va_start(_ArgList, _Locale);
69 _Ret = _vfwscanf_s_l(stdin, _Format, _Locale, _ArgList);
70 __builtin_va_end(_ArgList);
71 return _Ret;
72 }
73
_vswscanf_s_l(const wchar_t * _Src,const wchar_t * _Format,_locale_t _Locale,va_list _ArgList)74 __mingw_ovr int __cdecl _vswscanf_s_l(const wchar_t *_Src, const wchar_t *_Format, _locale_t _Locale, va_list _ArgList)
75 {
76 return __stdio_common_vswscanf(UCRTBASE_SCANF_DEFAULT_WIDE | UCRTBASE_SCANF_SECURECRT, _Src, (size_t)-1, _Format, _Locale, _ArgList);
77 }
_swscanf_s_l(const wchar_t * _Src,const wchar_t * _Format,_locale_t _Locale,...)78 __mingw_ovr int __cdecl _swscanf_s_l(const wchar_t *_Src, const wchar_t *_Format, _locale_t _Locale, ...)
79 {
80 __builtin_va_list _ArgList;
81 int _Ret;
82 __builtin_va_start(_ArgList, _Locale);
83 _Ret = _vswscanf_s_l(_Src, _Format, _Locale, _ArgList);
84 __builtin_va_end(_ArgList);
85 return _Ret;
86 }
swscanf_s(const wchar_t * _Src,const wchar_t * _Format,...)87 __mingw_ovr int __cdecl swscanf_s(const wchar_t *_Src, const wchar_t *_Format, ...)
88 {
89 __builtin_va_list _ArgList;
90 int _Ret;
91 __builtin_va_start(_ArgList, _Format);
92 _Ret = _vswscanf_s_l(_Src, _Format, NULL, _ArgList);
93 __builtin_va_end(_ArgList);
94 return _Ret;
95 }
96
_vsnwscanf_s_l(const wchar_t * _Src,size_t _MaxCount,const wchar_t * _Format,_locale_t _Locale,va_list _ArgList)97 __mingw_ovr int __cdecl _vsnwscanf_s_l(const wchar_t *_Src, size_t _MaxCount, const wchar_t *_Format, _locale_t _Locale, va_list _ArgList)
98 {
99 return __stdio_common_vswscanf(UCRTBASE_SCANF_DEFAULT_WIDE | UCRTBASE_SCANF_SECURECRT, _Src, _MaxCount, _Format, _Locale, _ArgList);
100 }
_snwscanf_s_l(const wchar_t * _Src,size_t _MaxCount,const wchar_t * _Format,_locale_t _Locale,...)101 __mingw_ovr int __cdecl _snwscanf_s_l(const wchar_t *_Src, size_t _MaxCount, const wchar_t *_Format, _locale_t _Locale, ...)
102 {
103 __builtin_va_list _ArgList;
104 int _Ret;
105 __builtin_va_start(_ArgList, _Locale);
106 _Ret = _vsnwscanf_s_l(_Src, _MaxCount, _Format, _Locale, _ArgList);
107 __builtin_va_end(_ArgList);
108 return _Ret;
109 }
_snwscanf_s(const wchar_t * _Src,size_t _MaxCount,const wchar_t * _Format,...)110 __mingw_ovr int __cdecl _snwscanf_s(const wchar_t *_Src, size_t _MaxCount, const wchar_t *_Format, ...)
111 {
112 __builtin_va_list _ArgList;
113 int _Ret;
114 __builtin_va_start(_ArgList, _Format);
115 _Ret = _vsnwscanf_s_l(_Src, _MaxCount, _Format, NULL, _ArgList);
116 __builtin_va_end(_ArgList);
117 return _Ret;
118 }
119
_vfwprintf_s_l(FILE * _File,const wchar_t * _Format,_locale_t _Locale,va_list _ArgList)120 __mingw_ovr int __cdecl _vfwprintf_s_l(FILE *_File, const wchar_t *_Format, _locale_t _Locale, va_list _ArgList)
121 {
122 return __stdio_common_vfwprintf_s(UCRTBASE_PRINTF_DEFAULT_WIDE, _File, _Format, _Locale, _ArgList);
123 }
_vwprintf_s_l(const wchar_t * _Format,_locale_t _Locale,va_list _ArgList)124 __mingw_ovr int __cdecl _vwprintf_s_l(const wchar_t *_Format, _locale_t _Locale, va_list _ArgList)
125 {
126 return _vfwprintf_s_l(stdout, _Format, _Locale, _ArgList);
127 }
vfwprintf_s(FILE * _File,const wchar_t * _Format,va_list _ArgList)128 __mingw_ovr int __cdecl vfwprintf_s(FILE *_File, const wchar_t *_Format, va_list _ArgList)
129 {
130 return _vfwprintf_s_l(_File, _Format, NULL, _ArgList);
131 }
vwprintf_s(const wchar_t * _Format,va_list _ArgList)132 __mingw_ovr int __cdecl vwprintf_s(const wchar_t *_Format, va_list _ArgList)
133 {
134 return _vfwprintf_s_l(stdout, _Format, NULL, _ArgList);
135 }
_fwprintf_s_l(FILE * _File,const wchar_t * _Format,_locale_t _Locale,...)136 __mingw_ovr int __cdecl _fwprintf_s_l(FILE *_File, const wchar_t *_Format, _locale_t _Locale, ...)
137 {
138 __builtin_va_list _ArgList;
139 int _Ret;
140 __builtin_va_start(_ArgList, _Locale);
141 _Ret = _vfwprintf_s_l(_File, _Format, _Locale, _ArgList);
142 __builtin_va_end(_ArgList);
143 return _Ret;
144 }
_wprintf_s_l(const wchar_t * _Format,_locale_t _Locale,...)145 __mingw_ovr int __cdecl _wprintf_s_l(const wchar_t *_Format, _locale_t _Locale, ...)
146 {
147 __builtin_va_list _ArgList;
148 int _Ret;
149 __builtin_va_start(_ArgList, _Locale);
150 _Ret = _vfwprintf_s_l(stdout, _Format, _Locale, _ArgList);
151 __builtin_va_end(_ArgList);
152 return _Ret;
153 }
fwprintf_s(FILE * _File,const wchar_t * _Format,...)154 __mingw_ovr int __cdecl fwprintf_s(FILE *_File, const wchar_t *_Format, ...)
155 {
156 __builtin_va_list _ArgList;
157 int _Ret;
158 __builtin_va_start(_ArgList, _Format);
159 _Ret = _vfwprintf_s_l(_File, _Format, NULL, _ArgList);
160 __builtin_va_end(_ArgList);
161 return _Ret;
162 }
wprintf_s(const wchar_t * _Format,...)163 __mingw_ovr int __cdecl wprintf_s(const wchar_t *_Format, ...)
164 {
165 __builtin_va_list _ArgList;
166 int _Ret;
167 __builtin_va_start(_ArgList, _Format);
168 _Ret = _vfwprintf_s_l(stdout, _Format, NULL, _ArgList);
169 __builtin_va_end(_ArgList);
170 return _Ret;
171 }
172
_vswprintf_s_l(wchar_t * _DstBuf,size_t _DstSize,const wchar_t * _Format,_locale_t _Locale,va_list _ArgList)173 __mingw_ovr int __cdecl _vswprintf_s_l(wchar_t *_DstBuf, size_t _DstSize, const wchar_t *_Format, _locale_t _Locale, va_list _ArgList)
174 {
175 return __stdio_common_vswprintf_s(UCRTBASE_PRINTF_DEFAULT_WIDE, _DstBuf, _DstSize, _Format, _Locale, _ArgList);
176 }
vswprintf_s(wchar_t * _DstBuf,size_t _DstSize,const wchar_t * _Format,va_list _ArgList)177 __mingw_ovr int __cdecl vswprintf_s(wchar_t *_DstBuf, size_t _DstSize, const wchar_t *_Format, va_list _ArgList)
178 {
179 return _vswprintf_s_l(_DstBuf, _DstSize, _Format, NULL, _ArgList);
180 }
_swprintf_s_l(wchar_t * _DstBuf,size_t _DstSize,const wchar_t * _Format,_locale_t _Locale,...)181 __mingw_ovr int __cdecl _swprintf_s_l(wchar_t *_DstBuf, size_t _DstSize, const wchar_t *_Format, _locale_t _Locale, ...)
182 {
183 __builtin_va_list _ArgList;
184 int _Ret;
185 __builtin_va_start(_ArgList, _Locale);
186 _Ret = _vswprintf_s_l(_DstBuf, _DstSize, _Format, _Locale, _ArgList);
187 __builtin_va_end(_ArgList);
188 return _Ret;
189 }
swprintf_s(wchar_t * _DstBuf,size_t _DstSize,const wchar_t * _Format,...)190 __mingw_ovr int __cdecl swprintf_s(wchar_t *_DstBuf, size_t _DstSize, const wchar_t *_Format, ...)
191 {
192 __builtin_va_list _ArgList;
193 int _Ret;
194 __builtin_va_start(_ArgList, _Format);
195 _Ret = _vswprintf_s_l(_DstBuf, _DstSize, _Format, NULL, _ArgList);
196 __builtin_va_end(_ArgList);
197 return _Ret;
198 }
199
_vsnwprintf_s_l(wchar_t * _DstBuf,size_t _DstSize,size_t _MaxCount,const wchar_t * _Format,_locale_t _Locale,va_list _ArgList)200 __mingw_ovr int __cdecl _vsnwprintf_s_l(wchar_t *_DstBuf, size_t _DstSize, size_t _MaxCount, const wchar_t *_Format, _locale_t _Locale, va_list _ArgList)
201 {
202 return __stdio_common_vsnwprintf_s(UCRTBASE_PRINTF_DEFAULT_WIDE, _DstBuf, _DstSize, _MaxCount, _Format, _Locale, _ArgList);
203 }
_vsnwprintf_s(wchar_t * _DstBuf,size_t _DstSize,size_t _MaxCount,const wchar_t * _Format,va_list _ArgList)204 __mingw_ovr int __cdecl _vsnwprintf_s(wchar_t *_DstBuf, size_t _DstSize, size_t _MaxCount, const wchar_t *_Format, va_list _ArgList)
205 {
206 return _vsnwprintf_s_l(_DstBuf, _DstSize, _MaxCount, _Format, NULL, _ArgList);
207 }
_snwprintf_s_l(wchar_t * _DstBuf,size_t _DstSize,size_t _MaxCount,const wchar_t * _Format,_locale_t _Locale,...)208 __mingw_ovr int __cdecl _snwprintf_s_l(wchar_t *_DstBuf, size_t _DstSize, size_t _MaxCount, const wchar_t *_Format, _locale_t _Locale, ...)
209 {
210 __builtin_va_list _ArgList;
211 int _Ret;
212 __builtin_va_start(_ArgList, _Locale);
213 _Ret = _vsnwprintf_s_l(_DstBuf, _DstSize, _MaxCount, _Format, _Locale, _ArgList);
214 __builtin_va_end(_ArgList);
215 return _Ret;
216 }
_snwprintf_s(wchar_t * _DstBuf,size_t _DstSize,size_t _MaxCount,const wchar_t * _Format,...)217 __mingw_ovr int __cdecl _snwprintf_s(wchar_t *_DstBuf, size_t _DstSize, size_t _MaxCount, const wchar_t *_Format, ...)
218 {
219 __builtin_va_list _ArgList;
220 int _Ret;
221 __builtin_va_start(_ArgList, _Format);
222 _Ret = _vsnwprintf_s_l(_DstBuf, _DstSize, _MaxCount, _Format, NULL, _ArgList);
223 __builtin_va_end(_ArgList);
224 return _Ret;
225 }
226 #else /* _UCRT */
227 int __cdecl fwprintf_s(FILE *_File,const wchar_t *_Format,...);
228 int __cdecl wprintf_s(const wchar_t *_Format,...);
229 int __cdecl vfwprintf_s(FILE *_File,const wchar_t *_Format,va_list _ArgList);
230 int __cdecl vwprintf_s(const wchar_t *_Format,va_list _ArgList);
231
232 int __cdecl vswprintf_s(wchar_t *_Dst,size_t _SizeInWords,const wchar_t *_Format,va_list _ArgList);
233
234 int __cdecl swprintf_s(wchar_t *_Dst,size_t _SizeInWords,const wchar_t *_Format,...);
235
236 _CRTIMP int __cdecl _vsnwprintf_s(wchar_t *_DstBuf,size_t _DstSizeInWords,size_t _MaxCount,const wchar_t *_Format,va_list _ArgList);
237
238 _CRTIMP int __cdecl _snwprintf_s(wchar_t *_DstBuf,size_t _DstSizeInWords,size_t _MaxCount,const wchar_t *_Format,...);
239
240
241 _CRTIMP int __cdecl _wprintf_s_l(const wchar_t *_Format,_locale_t _Locale,...);
242 _CRTIMP int __cdecl _vwprintf_s_l(const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
243 _CRTIMP int __cdecl _fwprintf_s_l(FILE *_File,const wchar_t *_Format,_locale_t _Locale,...);
244 _CRTIMP int __cdecl _vfwprintf_s_l(FILE *_File,const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
245 _CRTIMP int __cdecl _swprintf_s_l(wchar_t *_DstBuf,size_t _DstSize,const wchar_t *_Format,_locale_t _Locale,...);
246 _CRTIMP int __cdecl _vswprintf_s_l(wchar_t *_DstBuf,size_t _DstSize,const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
247 _CRTIMP int __cdecl _snwprintf_s_l(wchar_t *_DstBuf,size_t _DstSize,size_t _MaxCount,const wchar_t *_Format,_locale_t _Locale,...);
248 _CRTIMP int __cdecl _vsnwprintf_s_l(wchar_t *_DstBuf,size_t _DstSize,size_t _MaxCount,const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
249 _CRTIMP int __cdecl _fwscanf_s_l(FILE *_File,const wchar_t *_Format,_locale_t _Locale,...);
250 _CRTIMP int __cdecl _swscanf_s_l(const wchar_t *_Src,const wchar_t *_Format,_locale_t _Locale,...);
251 _CRTIMP int __cdecl swscanf_s(const wchar_t *_Src,const wchar_t *_Format,...);
252 _CRTIMP int __cdecl _snwscanf_s(const wchar_t *_Src,size_t _MaxCount,const wchar_t *_Format,...);
253 _CRTIMP int __cdecl _snwscanf_s_l(const wchar_t *_Src,size_t _MaxCount,const wchar_t *_Format,_locale_t _Locale,...);
254 _CRTIMP int __cdecl _wscanf_s_l(const wchar_t *_Format,_locale_t _Locale,...);
255 #endif /* !_UCRT */
256
257 __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2(int, vswprintf_s, wchar_t, _Dst, const wchar_t*, _Format, va_list, _ArgList)
258 __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1_ARGLIST(int,swprintf_s,vswprintf_s,wchar_t,_Dst,const wchar_t*,_Format)
259 __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_3(int,_vsnwprintf_s,wchar_t,_DstBuf,size_t,_MaxCount,const wchar_t*,_Format,va_list,_ArgList)
260 __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2_ARGLIST(int,_snwprintf_s,_vsnwprintf_s,wchar_t,_DstBuf,size_t,_MaxCount,const wchar_t*,_Format)
261
262 _CRTIMP errno_t __cdecl _wfopen_s(FILE **_File,const wchar_t *_Filename,const wchar_t *_Mode);
263 _CRTIMP errno_t __cdecl _wfreopen_s(FILE **_File,const wchar_t *_Filename,const wchar_t *_Mode,FILE *_OldFile);
264
265 _CRTIMP errno_t __cdecl _wtmpnam_s(wchar_t *_DstBuf,size_t _SizeInWords);
266 __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_0(errno_t,_wtmpnam_s,wchar_t,_DstBuf)
267 #endif /* _WSTDIO_S_DEFINED */
268
269 #ifndef _WSTRING_S_DEFINED
270 #define _WSTRING_S_DEFINED
271 _CRTIMP wchar_t *__cdecl wcstok_s(wchar_t *_Str,const wchar_t *_Delim,wchar_t **_Context);
272 _CRTIMP errno_t __cdecl _wcserror_s(wchar_t *_Buf,size_t _SizeInWords,int _ErrNum);
273 _CRTIMP errno_t __cdecl __wcserror_s(wchar_t *_Buffer,size_t _SizeInWords,const wchar_t *_ErrMsg);
274 _CRTIMP errno_t __cdecl _wcsnset_s(wchar_t *_Dst,size_t _DstSizeInWords,wchar_t _Val,size_t _MaxCount);
275 _CRTIMP errno_t __cdecl _wcsset_s(wchar_t *_Str,size_t _SizeInWords,wchar_t _Val);
276 _CRTIMP errno_t __cdecl _wcslwr_s(wchar_t *_Str,size_t _SizeInWords);
277 __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_0(errno_t, _wcslwr_s, wchar_t, _Str)
278 _CRTIMP errno_t __cdecl _wcslwr_s_l(wchar_t *_Str,size_t _SizeInWords,_locale_t _Locale);
279 __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1(errno_t, _wcslwr_s_l, wchar_t, _Str, _locale_t, _Locale)
280 _CRTIMP errno_t __cdecl _wcsupr_s(wchar_t *_Str,size_t _Size);
281 __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_0(errno_t, _wcsupr_s, wchar_t, _Str)
282 _CRTIMP errno_t __cdecl _wcsupr_s_l(wchar_t *_Str,size_t _Size,_locale_t _Locale);
283 __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1(errno_t, _wcsupr_s_l, wchar_t, _Str, _locale_t, _Locale)
284
285 _CRTIMP errno_t __cdecl wcscat_s(wchar_t *_Dst, rsize_t _DstSize, const wchar_t *_Src);
286 __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1(errno_t, wcscat_s, wchar_t, _Dest, const wchar_t *, _Source)
287 _CRTIMP errno_t __cdecl wcscpy_s(wchar_t *_Dst, rsize_t _DstSize, const wchar_t *_Src);
288 __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1(errno_t, wcscpy_s, wchar_t, _Dest, const wchar_t *, _Source)
289
290 _CRTIMP errno_t __cdecl wcsncat_s(wchar_t *_Dst,size_t _DstSizeInChars,const wchar_t *_Src,size_t _MaxCount);
291 _CRTIMP errno_t __cdecl _wcsncat_s_l(wchar_t *_Dst,size_t _DstSizeInChars,const wchar_t *_Src,size_t _MaxCount,_locale_t _Locale);
292 _CRTIMP errno_t __cdecl wcsncpy_s(wchar_t *_Dst,size_t _DstSizeInChars,const wchar_t *_Src,size_t _MaxCount);
293 _CRTIMP errno_t __cdecl _wcsncpy_s_l(wchar_t *_Dst,size_t _DstSizeInChars,const wchar_t *_Src,size_t _MaxCount,_locale_t _Locale);
294 _CRTIMP wchar_t *__cdecl _wcstok_s_l(wchar_t *_Str,const wchar_t *_Delim,wchar_t **_Context,_locale_t _Locale);
295 _CRTIMP errno_t __cdecl _wcsset_s_l(wchar_t *_Str,size_t _SizeInChars,unsigned int _Val,_locale_t _Locale);
296 _CRTIMP errno_t __cdecl _wcsnset_s_l(wchar_t *_Str,size_t _SizeInChars,unsigned int _Val, size_t _Count,_locale_t _Locale);
297
wcsnlen_s(const wchar_t * _src,size_t _count)298 __forceinline size_t __cdecl wcsnlen_s(const wchar_t * _src, size_t _count) {
299 return _src ? wcsnlen(_src, _count) : 0;
300 }
301 #endif
302
303 #ifndef _WTIME_S_DEFINED
304 #define _WTIME_S_DEFINED
305 _SECIMP errno_t __cdecl _wasctime_s (wchar_t *_Buf,size_t _SizeInWords,const struct tm *_Tm);
306 _SECIMP errno_t __cdecl _wctime32_s (wchar_t *_Buf,size_t _SizeInWords,const __time32_t *_Time);
307 _SECIMP errno_t __cdecl _wstrdate_s (wchar_t *_Buf,size_t _SizeInWords);
308 _SECIMP errno_t __cdecl _wstrtime_s (wchar_t *_Buf,size_t _SizeInWords);
309 _SECIMP errno_t __cdecl _wctime64_s (wchar_t *_Buf,size_t _SizeInWords,const __time64_t *_Time);
310
311 #if !defined (RC_INVOKED) && !defined (_INC_WTIME_S_INL)
312 #define _INC_WTIME_S_INL
313 errno_t __cdecl _wctime_s(wchar_t *, size_t, const time_t *);
314 #ifndef _USE_32BIT_TIME_T
_wctime_s(wchar_t * _Buffer,size_t _SizeInWords,const time_t * _Time)315 __CRT_INLINE errno_t __cdecl _wctime_s(wchar_t *_Buffer,size_t _SizeInWords,const time_t *_Time) { return _wctime64_s(_Buffer,_SizeInWords,_Time); }
316 #endif
317 #endif
318 #endif
319
320 _CRTIMP errno_t __cdecl mbsrtowcs_s(size_t *_Retval,wchar_t *_Dst,size_t _SizeInWords,const char **_PSrc,size_t _N,mbstate_t *_State);
321 __DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_3(errno_t,mbsrtowcs_s,size_t*,_Retval,wchar_t,_Dst,const char**,_PSrc,size_t,_N,mbstate_t,_State)
322
323 _CRTIMP errno_t __cdecl wcrtomb_s(size_t *_Retval,char *_Dst,size_t _SizeInBytes,wchar_t _Ch,mbstate_t *_State);
324 __DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_2(errno_t,wcrtomb_s,size_t*,_Retval,char,_Dst,wchar_t,_Ch,mbstate_t,_State)
325
326 _CRTIMP errno_t __cdecl wcsrtombs_s(size_t *_Retval,char *_Dst,size_t _SizeInBytes,const wchar_t **_Src,size_t _Size,mbstate_t *_State);
327 __DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_3(errno_t,wcsrtombs_s,size_t,_Retval,char,_Dst,const wchar_t**,_Src,size_t,_Size,mbstate_t,_State)
328
329 _SECIMP errno_t __cdecl wmemcpy_s (wchar_t *_dest,size_t _numberOfElements,const wchar_t *_src,size_t _count);
330 _SECIMP errno_t __cdecl wmemmove_s(wchar_t *_dest,size_t _numberOfElements,const wchar_t *_src,size_t _count);
331
332
333 #ifdef __cplusplus
334 }
335 #endif
336
337 #endif
338