1 /***
2 *tchar.h - definitions for generic international text functions
3 *
4 * Copyright (c) Microsoft Corporation. All rights reserved.
5 *
6 *Purpose:
7 * Definitions for generic international functions, mostly defines
8 * which map string/formatted-io/ctype functions to char, wchar_t, or
9 * MBCS versions. To be used for compatibility between single-byte,
10 * multi-byte and Unicode text models.
11 *
12 * [Public]
13 *
14 ****/
15
16 #pragma once
17 #ifndef _INC_TCHAR // include guard for 3rd party interop
18 #define _INC_TCHAR
19
20 #include <corecrt.h>
21
22 #pragma warning(push)
23 #pragma warning(disable: _UCRT_DISABLED_WARNINGS)
24 _UCRT_DISABLE_CLANG_WARNINGS
25
26 /* Notes */
27
28 /* There is no:
29 * _tcscat_l
30 * _tcscpy_l
31 * because mbscat and mbscpy just behave like strcat and strcpy,
32 * so no special locale-specific behavior is needed.
33 */
34
35 /* Functions like:
36 * _strncat_l
37 * _strncat_s_l
38 * are only available if ANSI is defined (i.e. no _UNICODE nor _MBCS),
39 * because these functions are only accessible through the _tcs macros.
40 */
41
42 #ifdef __cplusplus
43 extern "C" {
44 #endif /* __cplusplus */
45
46 #ifndef _CRT_FAR_MAPPINGS_NO_DEPRECATE
47 /*
48 Long ago, these f prefix text functions referred to handling of text in segmented architectures. Ever since the move
49 to Win32 they have been obsolete names, but we kept them around as aliases. Now that we have a deprecation
50 mechanism we can warn about them. You should switch to the identical function without the f prefix.
51 */
52 #pragma deprecated("_ftcscat")
53 #pragma deprecated("_ftcschr")
54 #pragma deprecated("_ftcscpy")
55 #pragma deprecated("_ftcscspn")
56 #pragma deprecated("_ftcslen")
57 #pragma deprecated("_ftcsncat")
58 #pragma deprecated("_ftcsncpy")
59 #pragma deprecated("_ftcspbrk")
60 #pragma deprecated("_ftcsrchr")
61 #pragma deprecated("_ftcsspn")
62 #pragma deprecated("_ftcsstr")
63 #pragma deprecated("_ftcstok")
64 #pragma deprecated("_ftcsdup")
65 #pragma deprecated("_ftcsnset")
66 #pragma deprecated("_ftcsrev")
67 #pragma deprecated("_ftcsset")
68 #pragma deprecated("_ftcscmp")
69 #pragma deprecated("_ftcsicmp")
70 #pragma deprecated("_ftcsnccmp")
71 #pragma deprecated("_ftcsncmp")
72 #pragma deprecated("_ftcsncicmp")
73 #pragma deprecated("_ftcsnicmp")
74 #pragma deprecated("_ftcscoll")
75 #pragma deprecated("_ftcsicoll")
76 #pragma deprecated("_ftcsnccoll")
77 #pragma deprecated("_ftcsncoll")
78 #pragma deprecated("_ftcsncicoll")
79 #pragma deprecated("_ftcsnicoll")
80 #pragma deprecated("_ftcsclen")
81 #pragma deprecated("_ftcsnccat")
82 #pragma deprecated("_ftcsnccpy")
83 #pragma deprecated("_ftcsncset")
84 #pragma deprecated("_ftcsdec")
85 #pragma deprecated("_ftcsinc")
86 #pragma deprecated("_ftcsnbcnt")
87 #pragma deprecated("_ftcsnccnt")
88 #pragma deprecated("_ftcsnextc")
89 #pragma deprecated("_ftcsninc")
90 #pragma deprecated("_ftcsspnp")
91 #pragma deprecated("_ftcslwr")
92 #pragma deprecated("_ftcsupr")
93 #pragma deprecated("_ftclen")
94 #pragma deprecated("_ftccpy")
95 #pragma deprecated("_ftccmp")
96 #endif /* _CRT_FAR_MAPPINGS_NO_DEPRECATE */
97
98 #define _ftcscat _tcscat
99 #define _ftcschr _tcschr
100 #define _ftcscpy _tcscpy
101 #define _ftcscspn _tcscspn
102 #define _ftcslen _tcslen
103 #define _ftcsncat _tcsncat
104 #define _ftcsncpy _tcsncpy
105 #define _ftcspbrk _tcspbrk
106 #define _ftcsrchr _tcsrchr
107 #define _ftcsspn _tcsspn
108 #define _ftcsstr _tcsstr
109 #define _ftcstok _tcstok
110
111 #define _ftcsdup _tcsdup
112 #define _ftcsnset _tcsnset
113 #define _ftcsrev _tcsrev
114 #define _ftcsset _tcsset
115
116 #define _ftcscmp _tcscmp
117 #define _ftcsicmp _tcsicmp
118 #define _ftcsnccmp _tcsnccmp
119 #define _ftcsncmp _tcsncmp
120 #define _ftcsncicmp _tcsncicmp
121 #define _ftcsnicmp _tcsnicmp
122
123 #define _ftcscoll _tcscoll
124 #define _ftcsicoll _tcsicoll
125 #define _ftcsnccoll _tcsnccoll
126 #define _ftcsncoll _tcsncoll
127 #define _ftcsncicoll _tcsncicoll
128 #define _ftcsnicoll _tcsnicoll
129
130 /* Redundant "logical-character" mappings */
131
132 #define _ftcsclen _tcsclen
133 #define _ftcsnccat _tcsnccat
134 #define _ftcsnccpy _tcsnccpy
135 #define _ftcsncset _tcsncset
136
137 #define _ftcsdec _tcsdec
138 #define _ftcsinc _tcsinc
139 #define _ftcsnbcnt _tcsnbcnt
140 #define _ftcsnccnt _tcsnccnt
141 #define _ftcsnextc _tcsnextc
142 #define _ftcsninc _tcsninc
143 #define _ftcsspnp _tcsspnp
144
145 #define _ftcslwr _tcslwr
146 #define _ftcsupr _tcsupr
147
148 #define _ftclen _tclen
149 #define _ftccpy _tccpy
150 #define _ftccmp _tccmp
151
152 #ifdef _UNICODE
153
154 #ifdef __cplusplus
155 } /* ... extern "C" */
156 #endif /* __cplusplus */
157
158 /* ++++++++++++++++++++ UNICODE ++++++++++++++++++++ */
159
160 #include <wchar.h>
161
162 #ifdef __cplusplus
163 extern "C" {
164 #endif /* __cplusplus */
165
166 #ifndef __TCHAR_DEFINED
167 typedef wchar_t _TCHAR;
168 typedef wchar_t _TSCHAR;
169 typedef wchar_t _TUCHAR;
170 typedef wchar_t _TXCHAR;
171 typedef wint_t _TINT;
172 #define __TCHAR_DEFINED
173 #endif /* __TCHAR_DEFINED */
174
175 #if defined(_CRT_INTERNAL_NONSTDC_NAMES) && _CRT_INTERNAL_NONSTDC_NAMES
176 #ifndef _TCHAR_DEFINED
177 typedef wchar_t TCHAR;
178 typedef wchar_t * PTCHAR;
179 typedef wchar_t TBYTE;
180 typedef wchar_t * PTBYTE;
181 #define _TCHAR_DEFINED
182 #endif /* _TCHAR_DEFINED */
183 #endif /* _CRT_INTERNAL_NONSTDC_NAMES */
184
185 #define _TEOF WEOF
186
187 #define __T(x) L ## x
188
189
190 /* Program */
191
192 #define _tmain wmain
193 #define _tWinMain wWinMain
194 #define _tenviron _wenviron
195 #define __targv __wargv
196
197 /* Formatted i/o */
198
199 #define _tprintf wprintf
200 #define _tprintf_l _wprintf_l
201 #define _tprintf_s wprintf_s
202 #define _tprintf_s_l _wprintf_s_l
203 #define _tprintf_p _wprintf_p
204 #define _tprintf_p_l _wprintf_p_l
205 #define _tcprintf _cwprintf
206 #define _tcprintf_l _cwprintf_l
207 #define _tcprintf_s _cwprintf_s
208 #define _tcprintf_s_l _cwprintf_s_l
209 #define _tcprintf_p _cwprintf_p
210 #define _tcprintf_p_l _cwprintf_p_l
211 #define _vtcprintf _vcwprintf
212 #define _vtcprintf_l _vcwprintf_l
213 #define _vtcprintf_s _vcwprintf_s
214 #define _vtcprintf_s_l _vcwprintf_s_l
215 #define _vtcprintf_p _vcwprintf_p
216 #define _vtcprintf_p_l _vcwprintf_p_l
217 #define _ftprintf fwprintf
218 #define _ftprintf_l _fwprintf_l
219 #define _ftprintf_s fwprintf_s
220 #define _ftprintf_s_l _fwprintf_s_l
221 #define _ftprintf_p _fwprintf_p
222 #define _ftprintf_p_l _fwprintf_p_l
223 #define _stprintf _swprintf
224 #define _stprintf_l __swprintf_l
225 #define _stprintf_s swprintf_s
226 #define _stprintf_s_l _swprintf_s_l
227 #define _stprintf_p _swprintf_p
228 #define _stprintf_p_l _swprintf_p_l
229 #define _sctprintf _scwprintf
230 #define _sctprintf_l _scwprintf_l
231 #define _sctprintf_p _scwprintf_p
232 #define _sctprintf_p_l _scwprintf_p_l
233 #define _sntprintf _snwprintf
234 #define _sntprintf_l _snwprintf_l
235 #define _sntprintf_s _snwprintf_s
236 #define _sntprintf_s_l _snwprintf_s_l
237 #define _vtprintf vwprintf
238 #define _vtprintf_l _vwprintf_l
239 #define _vtprintf_s vwprintf_s
240 #define _vtprintf_s_l _vwprintf_s_l
241 #define _vtprintf_p _vwprintf_p
242 #define _vtprintf_p_l _vwprintf_p_l
243 #define _vftprintf vfwprintf
244 #define _vftprintf_l _vfwprintf_l
245 #define _vftprintf_s vfwprintf_s
246 #define _vftprintf_s_l _vfwprintf_s_l
247 #define _vftprintf_p _vfwprintf_p
248 #define _vftprintf_p_l _vfwprintf_p_l
249 #define _vstprintf vswprintf
250 #define _vstprintf_l _vswprintf_l
251 #define _vstprintf_s vswprintf_s
252 #define _vstprintf_s_l _vswprintf_s_l
253 #define _vstprintf_p _vswprintf_p
254 #define _vstprintf_p_l _vswprintf_p_l
255 #define _vsctprintf _vscwprintf
256 #define _vsctprintf_l _vscwprintf_l
257 #define _vsctprintf_p _vscwprintf_p
258 #define _vsctprintf_p_l _vscwprintf_p_l
259 #define _vsntprintf _vsnwprintf
260 #define _vsntprintf_l _vsnwprintf_l
261 #define _vsntprintf_s _vsnwprintf_s
262 #define _vsntprintf_s_l _vsnwprintf_s_l
263
264 #define _tscanf wscanf
265 #define _tscanf_l _wscanf_l
266 #define _tscanf_s wscanf_s
267 #define _tscanf_s_l _wscanf_s_l
268 #define _tcscanf _cwscanf
269 #define _tcscanf_l _cwscanf_l
270 #define _tcscanf_s _cwscanf_s
271 #define _tcscanf_s_l _cwscanf_s_l
272 #define _ftscanf fwscanf
273 #define _ftscanf_l _fwscanf_l
274 #define _ftscanf_s fwscanf_s
275 #define _ftscanf_s_l _fwscanf_s_l
276 #define _stscanf swscanf
277 #define _stscanf_l _swscanf_l
278 #define _stscanf_s swscanf_s
279 #define _stscanf_s_l _swscanf_s_l
280 #define _sntscanf _snwscanf
281 #define _sntscanf_l _snwscanf_l
282 #define _sntscanf_s _snwscanf_s
283 #define _sntscanf_s_l _snwscanf_s_l
284 #define _vtscanf vwscanf
285 #define _vtscanf_s vwscanf_s
286 #define _vftscanf vfwscanf
287 #define _vftscanf_s vfwscanf_s
288 #define _vstscanf vswscanf
289 #define _vstscanf_s vswscanf_s
290
291
292 /* Unformatted i/o */
293
294 #define _fgettc fgetwc
295 #define _fgettc_nolock _fgetwc_nolock
296 #define _fgettchar _fgetwchar
297 #define _fgetts fgetws
298 #define _fputtc fputwc
299 #define _fputtc_nolock _fputwc_nolock
300 #define _fputtchar _fputwchar
301 #define _fputts fputws
302 #define _cputts _cputws
303 #define _cgetts_s _cgetws_s
304 #define _gettc getwc
305 #define _gettc_nolock _getwc_nolock
306 #define _gettch _getwch
307 #define _gettch_nolock _getwch_nolock
308 #define _gettche _getwche
309 #define _gettche_nolock _getwche_nolock
310 #define _gettchar getwchar
311 #define _gettchar_nolock _getwchar_nolock
312 #define _getts_s _getws_s
313 #define _puttc putwc
314 #define _puttc_nolock _fputwc_nolock
315 #define _puttchar putwchar
316 #define _puttchar_nolock _putwchar_nolock
317 #define _puttch _putwch
318 #define _puttch_nolock _putwch_nolock
319 #define _putts _putws
320 #define _ungettc ungetwc
321 #define _ungettc_nolock _ungetwc_nolock
322 #define _ungettch _ungetwch
323 #define _ungettch_nolock _ungetwch_nolock
324
325
326 /* String conversion functions */
327
328 #define _tcstod wcstod
329 #define _tcstof wcstof
330 #define _tcstol wcstol
331 #define _tcstold wcstold
332 #define _tcstoll wcstoll
333 #define _tcstoul wcstoul
334 #define _tcstoull wcstoull
335 #define _tcstoimax wcstoimax
336 #define _tcstoumax wcstoumax
337 #define _tcstoi64 _wcstoi64
338 #define _tcstoui64 _wcstoui64
339 #define _ttof _wtof
340 #define _tstof _wtof
341 #define _tstol _wtol
342 #define _tstoll _wtoll
343 #define _tstoi _wtoi
344 #define _tstoi64 _wtoi64
345 #define _tcstod_l _wcstod_l
346 #define _tcstof_l _wcstof_l
347 #define _tcstol_l _wcstol_l
348 #define _tcstold_l _wcstold_l
349 #define _tcstoll_l _wcstoll_l
350 #define _tcstoul_l _wcstoul_l
351 #define _tcstoull_l _wcstoull_l
352 #define _tcstoi64_l _wcstoi64_l
353 #define _tcstoui64_l _wcstoui64_l
354 #define _tcstoimax_l _wcstoimax_l
355 #define _tcstoumax_l _wcstoumax_l
356 #define _tstof_l _wtof_l
357 #define _tstol_l _wtol_l
358 #define _tstoll_l _wtoll_l
359 #define _tstoi_l _wtoi_l
360 #define _tstoi64_l _wtoi64_l
361
362 #define _itot_s _itow_s
363 #define _ltot_s _ltow_s
364 #define _ultot_s _ultow_s
365 #define _itot _itow
366 #define _ltot _ltow
367 #define _ultot _ultow
368 #define _ttoi _wtoi
369 #define _ttol _wtol
370 #define _ttoll _wtoll
371
372 #define _ttoi64 _wtoi64
373 #define _i64tot_s _i64tow_s
374 #define _ui64tot_s _ui64tow_s
375 #define _i64tot _i64tow
376 #define _ui64tot _ui64tow
377
378 /* String functions */
379
380 #define _tcscat wcscat
381 #define _tcscat_s wcscat_s
382 #define _tcschr wcschr
383 #define _tcscpy wcscpy
384 #define _tcscpy_s wcscpy_s
385 #define _tcscspn wcscspn
386 #define _tcslen wcslen
387 #define _tcsnlen wcsnlen
388 #define _tcsncat wcsncat
389 #define _tcsncat_s wcsncat_s
390 #define _tcsncat_l _wcsncat_l
391 #define _tcsncat_s_l _wcsncat_s_l
392 #define _tcsncpy wcsncpy
393 #define _tcsncpy_s wcsncpy_s
394 #define _tcsncpy_l _wcsncpy_l
395 #define _tcsncpy_s_l _wcsncpy_s_l
396 #define _tcspbrk wcspbrk
397 #define _tcsrchr wcsrchr
398 #define _tcsspn wcsspn
399 #define _tcsstr wcsstr
400 #define _tcstok _wcstok
401 #define _tcstok_s wcstok_s
402 #define _tcstok_l _wcstok_l
403 #define _tcstok_s_l _wcstok_s_l
404 #define _tcserror _wcserror
405 #define _tcserror_s _wcserror_s
406 #define __tcserror __wcserror
407 #define __tcserror_s __wcserror_s
408
409 #define _tcsdup _wcsdup
410 #define _tcsnset _wcsnset
411 #define _tcsnset_s _wcsnset_s
412 #define _tcsnset_l _wcsnset_l
413 #define _tcsnset_s_l _wcsnset_s_l
414 #define _tcsrev _wcsrev
415 #define _tcsset _wcsset
416 #define _tcsset_s _wcsset_s
417 #define _tcsset_l _wcsset_l
418 #define _tcsset_s_l _wcsset_s_l
419
420 #define _tcscmp wcscmp
421 #define _tcsicmp _wcsicmp
422 #define _tcsicmp_l _wcsicmp_l
423 #define _tcsnccmp wcsncmp
424 #define _tcsncmp wcsncmp
425 #define _tcsncicmp _wcsnicmp
426 #define _tcsncicmp_l _wcsnicmp_l
427 #define _tcsnicmp _wcsnicmp
428 #define _tcsnicmp_l _wcsnicmp_l
429
430 #define _tcscoll wcscoll
431 #define _tcscoll_l _wcscoll_l
432 #define _tcsicoll _wcsicoll
433 #define _tcsicoll_l _wcsicoll_l
434 #define _tcsnccoll _wcsncoll
435 #define _tcsnccoll_l _wcsncoll_l
436 #define _tcsncoll _wcsncoll
437 #define _tcsncoll_l _wcsncoll_l
438 #define _tcsncicoll _wcsnicoll
439 #define _tcsncicoll_l _wcsnicoll_l
440 #define _tcsnicoll _wcsnicoll
441 #define _tcsnicoll_l _wcsnicoll_l
442
443 #ifdef _DEBUG
444 #define _tcsdup_dbg _wcsdup_dbg
445 #endif /* _DEBUG */
446
447 /* Execute functions */
448
449 #define _texecl _wexecl
450 #define _texecle _wexecle
451 #define _texeclp _wexeclp
452 #define _texeclpe _wexeclpe
453 #define _texecv _wexecv
454 #define _texecve _wexecve
455 #define _texecvp _wexecvp
456 #define _texecvpe _wexecvpe
457
458 #define _tspawnl _wspawnl
459 #define _tspawnle _wspawnle
460 #define _tspawnlp _wspawnlp
461 #define _tspawnlpe _wspawnlpe
462 #define _tspawnv _wspawnv
463 #define _tspawnve _wspawnve
464 #define _tspawnvp _wspawnvp
465 #define _tspawnvp _wspawnvp
466 #define _tspawnvpe _wspawnvpe
467
468 #define _tsystem _wsystem
469
470
471 /* Time functions */
472
473 #define _tasctime _wasctime
474 #define _tctime _wctime
475 #define _tctime32 _wctime32
476 #define _tctime64 _wctime64
477 #define _tstrdate _wstrdate
478 #define _tstrtime _wstrtime
479 #define _tutime _wutime
480 #define _tutime32 _wutime32
481 #define _tutime64 _wutime64
482 #define _tcsftime wcsftime
483 #define _tcsftime_l _wcsftime_l
484
485 #define _tasctime_s _wasctime_s
486 #define _tctime_s _wctime_s
487 #define _tctime32_s _wctime32_s
488 #define _tctime64_s _wctime64_s
489 #define _tstrdate_s _wstrdate_s
490 #define _tstrtime_s _wstrtime_s
491
492 /* Directory functions */
493
494 #define _tchdir _wchdir
495 #define _tgetcwd _wgetcwd
496 #define _tgetdcwd _wgetdcwd
497 #define _tgetdcwd_nolock _wgetdcwd_nolock
498 #define _tmkdir _wmkdir
499 #define _trmdir _wrmdir
500
501 #ifdef _DEBUG
502 #define _tgetcwd_dbg _wgetcwd_dbg
503 #define _tgetdcwd_dbg _wgetdcwd_dbg
504 #define _tgetdcwd_lk_dbg _wgetdcwd_lk_dbg
505 #endif /* _DEBUG */
506
507 /* Environment/Path functions */
508
509 #define _tfullpath _wfullpath
510 #define _tgetenv _wgetenv
511 #define _tgetenv_s _wgetenv_s
512 #define _tdupenv_s _wdupenv_s
513 #define _tmakepath _wmakepath
514 #define _tmakepath_s _wmakepath_s
515 #define _tpgmptr _wpgmptr
516 #define _get_tpgmptr _get_wpgmptr
517 #define _tputenv _wputenv
518 #define _tputenv_s _wputenv_s
519 #define _tsearchenv _wsearchenv
520 #define _tsearchenv_s _wsearchenv_s
521 #define _tsplitpath _wsplitpath
522 #define _tsplitpath_s _wsplitpath_s
523
524 #ifdef _DEBUG
525 #define _tfullpath_dbg _wfullpath_dbg
526 #define _tdupenv_s_dbg _wdupenv_s_dbg
527 #endif /* _DEBUG */
528
529 /* Stdio functions */
530
531 #define _tfdopen _wfdopen
532 #define _tfsopen _wfsopen
533 #define _tfopen _wfopen
534 #define _tfopen_s _wfopen_s
535 #define _tfreopen _wfreopen
536 #define _tfreopen_s _wfreopen_s
537 #define _tperror _wperror
538 #define _tpopen _wpopen
539 #define _ttempnam _wtempnam
540 #define _ttmpnam _wtmpnam
541 #define _ttmpnam_s _wtmpnam_s
542
543 #ifdef _DEBUG
544 #define _ttempnam_dbg _wtempnam_dbg
545 #endif /* _DEBUG */
546
547
548 /* Io functions */
549
550 #define _taccess _waccess
551 #define _taccess_s _waccess_s
552 #define _tchmod _wchmod
553 #define _tcreat _wcreat
554 #define _tfindfirst _wfindfirst
555 #define _tfindfirst32 _wfindfirst32
556 #define _tfindfirst64 _wfindfirst64
557 #define _tfindfirsti64 _wfindfirsti64
558 #define _tfindfirst32i64 _wfindfirst32i64
559 #define _tfindfirst64i32 _wfindfirst64i32
560 #define _tfindnext _wfindnext
561 #define _tfindnext32 _wfindnext32
562 #define _tfindnext64 _wfindnext64
563 #define _tfindnexti64 _wfindnexti64
564 #define _tfindnext32i64 _wfindnext32i64
565 #define _tfindnext64i32 _wfindnext64i32
566 #define _tmktemp _wmktemp
567 #define _tmktemp_s _wmktemp_s
568 #define _topen _wopen
569 #define _tremove _wremove
570 #define _trename _wrename
571 #define _tsopen _wsopen
572 #define _tsopen_s _wsopen_s
573 #define _tunlink _wunlink
574
575 #define _tfinddata_t _wfinddata_t
576 #define _tfinddata32_t _wfinddata32_t
577 #define _tfinddata64_t _wfinddata64_t
578 #define _tfinddatai64_t _wfinddatai64_t
579 #define _tfinddata32i64_t _wfinddata32i64_t
580 #define _tfinddata64i32_t _wfinddata64i32_t
581
582
583 /* Stat functions */
584
585 #define _tstat _wstat
586 #define _tstat32 _wstat32
587 #define _tstat32i64 _wstat32i64
588 #define _tstat64 _wstat64
589 #define _tstat64i32 _wstat64i32
590 #define _tstati64 _wstati64
591
592
593 /* Setlocale functions */
594
595 #define _tsetlocale _wsetlocale
596
597
598 /* Redundant "logical-character" mappings */
599
600 #define _tcsclen wcslen
601 #define _tcscnlen wcsnlen
602 #define _tcsclen_l(_String, _Locale) wcslen(_String)
603 #define _tcscnlen_l(_String, _Max_count, _Locale) wcsnlen((_String), (_Max_count))
604 #define _tcsnccat wcsncat
605 #define _tcsnccat_s wcsncat_s
606 #define _tcsnccat_l _wcsncat_l
607 #define _tcsnccat_s_l _wcsncat_s_l
608 #define _tcsnccpy wcsncpy
609 #define _tcsnccpy_s wcsncpy_s
610 #define _tcsnccpy_l _wcsncpy_l
611 #define _tcsnccpy_s_l _wcsncpy_s_l
612 #define _tcsncset _wcsnset
613 #define _tcsncset_s _wcsnset_s
614 #define _tcsncset_l _wcsnset_l
615 #define _tcsncset_s_l _wcsnset_s_l
616
617 #define _tcsdec _wcsdec
618 #define _tcsinc _wcsinc
619 #define _tcsnbcnt _wcsncnt
620 #define _tcsnccnt _wcsncnt
621 #define _tcsnextc _wcsnextc
622 #define _tcsninc _wcsninc
623 #define _tcsspnp _wcsspnp
624
625 #define _tcslwr _wcslwr
626 #define _tcslwr_l _wcslwr_l
627 #define _tcslwr_s _wcslwr_s
628 #define _tcslwr_s_l _wcslwr_s_l
629 #define _tcsupr _wcsupr
630 #define _tcsupr_l _wcsupr_l
631 #define _tcsupr_s _wcsupr_s
632 #define _tcsupr_s_l _wcsupr_s_l
633 #define _tcsxfrm wcsxfrm
634 #define _tcsxfrm_l _wcsxfrm_l
635
636
637 #if __STDC__ || defined (_NO_INLINING)
638 #define _tclen(_pc) (1)
639 #define _tccpy(_pc1,_cpc2) ((*(_pc1) = *(_cpc2)))
640 #define _tccpy_l(_pc1,_cpc2,_locale) _tccpy((_pc1),(_cpc2))
641 #define _tccmp(_cpc1,_cpc2) ((*(_cpc1))-(*(_cpc2)))
642 #else /* __STDC__ || defined (_NO_INLINING) */
_tclen(_In_z_ const wchar_t * _Cpc)643 _Check_return_ __inline size_t __CRTDECL _tclen(_In_z_ const wchar_t *_Cpc)
644 {
645 /* avoid compiler warning */
646 (void)_Cpc;
647 return 1;
648 }
_tccpy(_Out_ wchar_t * _Pc1,_In_z_ const wchar_t * _Cpc2)649 __inline void __CRTDECL _tccpy(_Out_ wchar_t *_Pc1, _In_z_ const wchar_t *_Cpc2) { *_Pc1 = (wchar_t)*_Cpc2; }
_tccpy_l(_Out_ wchar_t * _Pc1,_In_z_ const wchar_t * _Cpc2,_In_opt_ _locale_t _Locale)650 __inline void __CRTDECL _tccpy_l(_Out_ wchar_t *_Pc1, _In_z_ const wchar_t *_Cpc2, _In_opt_ _locale_t _Locale)
651 {
652 _CRT_UNUSED(_Locale);
653 _tccpy(_Pc1, _Cpc2);
654 }
_tccmp(_In_z_ const wchar_t * _Cpc1,_In_z_ const wchar_t * _Cpc2)655 _Check_return_ __inline int __CRTDECL _tccmp(_In_z_ const wchar_t *_Cpc1, _In_z_ const wchar_t *_Cpc2) { return (int) ((*_Cpc1)-(*_Cpc2)); }
656 #endif /* __STDC__ || defined (_NO_INLINING) */
657
658 /* ctype functions */
659
660 #define _istalnum iswalnum
661 #define _istalnum_l _iswalnum_l
662 #define _istalpha iswalpha
663 #define _istalpha_l _iswalpha_l
664 #define _istascii iswascii
665 #define _istcntrl iswcntrl
666 #define _istcntrl_l _iswcntrl_l
667 #define _istdigit iswdigit
668 #define _istdigit_l _iswdigit_l
669 #define _istgraph iswgraph
670 #define _istgraph_l _iswgraph_l
671 #define _istlower iswlower
672 #define _istlower_l _iswlower_l
673 #define _istprint iswprint
674 #define _istprint_l _iswprint_l
675 #define _istpunct iswpunct
676 #define _istpunct_l _iswpunct_l
677 #define _istblank iswblank
678 #define _istblank_l _iswblank_l
679 #define _istspace iswspace
680 #define _istspace_l _iswspace_l
681 #define _istupper iswupper
682 #define _istupper_l _iswupper_l
683 #define _istxdigit iswxdigit
684 #define _istxdigit_l _iswxdigit_l
685
686 #define _totupper towupper
687 #define _totupper_l _towupper_l
688 #define _totlower towlower
689 #define _totlower_l _towlower_l
690
691 #define _istlegal(_Char) (1)
692 #define _istlead(_Char) (0)
693 #define _istleadbyte(_Char) (0)
694 #define _istleadbyte_l(_Char, _Locale) (0)
695
696
697 #if __STDC__ || defined _NO_INLINING
698 #define _wcsdec(_cpc1, _cpc2) ((_cpc1)>=(_cpc2) ? NULL : (_cpc2)-1)
699 #define _wcsinc(_pc) ((_pc)+1)
700 #define _wcsnextc(_cpc) ((unsigned int) *(_cpc))
701 #define _wcsninc(_pc, _sz) (((_pc)+(_sz)))
702 _Check_return_ _ACRTIMP size_t __cdecl __wcsncnt(_In_reads_or_z_(_MaxCount) const wchar_t * _Str, _In_ size_t _MaxCount);
703 #define _wcsncnt(_cpc, _sz) (__wcsncnt(_cpc,_sz))
704 #define _wcsspnp(_cpc1, _cpc2) (_cpc1==NULL ? NULL : ((*((_cpc1)+wcsspn(_cpc1,_cpc2))) ? ((_cpc1)+wcsspn(_cpc1,_cpc2)) : NULL))
705 #define _wcsncpy_l(_Destination, _Source, _Count, _Locale) (wcsncpy(_Destination, _Source, _Count))
706 #if __STDC_WANT_SECURE_LIB__
707 #define _wcsncpy_s_l(_Destination, _Destination_size_chars, _Source, _Count, _Locale) (wcsncpy_s(_Destination, _Destination_size_chars, _Source, _Count))
708 #endif /* __STDC_WANT_SECURE_LIB__ */
709 #define _wcsncat_l(_Destination, _Source, _Count, _Locale) (wcsncat(_Destination, _Source, _Count))
710 #if __STDC_WANT_SECURE_LIB__
711 #define _wcsncat_s_l(_Destination, _Destination_size_chars, _Source, _Count, _Locale) (wcsncat_s(_Destination, _Destination_size_chars, _Source, _Count))
712 #endif /* __STDC_WANT_SECURE_LIB__ */
713 #define _wcstok_l(_String, _Delimiters, _Locale) (_wcstok(_String, _Delimiters))
714 #define _wcstok_s_l(_String, _Delimiters, _Current_position, _Locale) (wcstok_s(_String, _Delimiters, _Current_position))
715 #define _wcsnset_l(_Destination, _Value, _Count, _Locale) (_wcsnset(_Destination, _Value, _Count))
716 #define _wcsnset_s_l(_Destination, _Destination_size_chars, _Value, _Count, _Locale) (_wcsnset_s(_Destination, _Destination_size_chars, _Value, _Count))
717 #define _wcsset_l(_Destination, _Value, _Locale) (_wcsset(_Destination, _Value))
718 #define _wcsset_s_l(_Destination, _Destination_size_chars, _Value, _Locale) (_wcsset_s(_Destination, _Destination_size_chars, _Value))
719 #else /* __STDC__ || defined (_NO_INLINING) */
_wcsdec(_In_z_ const wchar_t * _Cpc1,_In_z_ const wchar_t * _Cpc2)720 _Check_return_ __inline wchar_t * __CRTDECL _wcsdec(_In_z_ const wchar_t * _Cpc1, _In_z_ const wchar_t * _Cpc2) { return (wchar_t *)((_Cpc1)>=(_Cpc2) ? NULL : ((_Cpc2)-1)); }
_wcsinc(_In_z_ const wchar_t * _Pc)721 _Check_return_ __inline wchar_t * __CRTDECL _wcsinc(_In_z_ const wchar_t * _Pc) { return (wchar_t *)(_Pc+1); }
_wcsnextc(_In_z_ const wchar_t * _Cpc)722 _Check_return_ __inline unsigned int __CRTDECL _wcsnextc(_In_z_ const wchar_t * _Cpc) { return (unsigned int)*_Cpc; }
_wcsninc(_In_z_ const wchar_t * _Pc,_In_ size_t _Sz)723 _Check_return_ __inline wchar_t * __CRTDECL _wcsninc(_In_z_ const wchar_t * _Pc, _In_ size_t _Sz) { return (wchar_t *)(_Pc+_Sz); }
_wcsncnt(_In_reads_or_z_ (_Cnt)const wchar_t * _String,_In_ size_t _Cnt)724 _Check_return_ __inline size_t __CRTDECL _wcsncnt( _In_reads_or_z_(_Cnt) const wchar_t * _String, _In_ size_t _Cnt)
725 {
726 size_t n = _Cnt;
727 wchar_t *cp = (wchar_t *)_String;
728 while (n-- && *cp)
729 cp++;
730 return _Cnt - n - 1;
731 }
_wcsspnp(_In_z_ const wchar_t * _Cpc1,_In_z_ const wchar_t * _Cpc2)732 _Check_return_ __inline wchar_t * __CRTDECL _wcsspnp
733 (
734 _In_z_ const wchar_t * _Cpc1,
735 _In_z_ const wchar_t * _Cpc2
736 )
737 {
738 return _Cpc1==NULL ? NULL : ((*(_Cpc1 += wcsspn(_Cpc1,_Cpc2))!='\0') ? (wchar_t*)_Cpc1 : NULL);
739 }
740
741 #if __STDC_WANT_SECURE_LIB__
_wcsncpy_s_l(_Out_writes_z_ (_Destination_size_chars)wchar_t * _Destination,_In_ size_t _Destination_size_chars,_In_z_ const wchar_t * _Source,_In_ size_t _Count,_In_opt_ _locale_t _Locale)742 _Check_return_wat_ __inline errno_t __CRTDECL _wcsncpy_s_l(_Out_writes_z_(_Destination_size_chars) wchar_t *_Destination, _In_ size_t _Destination_size_chars, _In_z_ const wchar_t *_Source, _In_ size_t _Count, _In_opt_ _locale_t _Locale)
743 {
744 _CRT_UNUSED(_Locale);
745 return wcsncpy_s(_Destination, _Destination_size_chars, _Source, _Count);
746 }
747 #endif /* __STDC_WANT_SECURE_LIB__ */
748
__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_3(errno_t,_wcsncpy_s_l,wchar_t,_Dest,_In_z_ const wchar_t *,_Source,_In_ size_t,_Count,_In_opt_ _locale_t,_Locale)749 __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_3(errno_t, _wcsncpy_s_l, wchar_t, _Dest, _In_z_ const wchar_t *, _Source, _In_ size_t, _Count, _In_opt_ _locale_t, _Locale)
750
751 __DECLARE_CPP_OVERLOAD_INLINE_NFUNC_0_3_EX(wchar_t *, __RETURN_POLICY_DST, _wcsncpy_l, _wcsncpy_s_l, _Out_writes_z_(_Size) wchar_t, _Out_writes_(_Count) wchar_t, _Dst, _In_z_ const wchar_t *, _Source, _In_ size_t, _Count, _In_opt_ _locale_t, _Locale)
752 {
753 _CRT_UNUSED(_Locale);
754 #pragma warning(suppress: 6054) // String may not be zero-terminated
755 return wcsncpy(_Dst, _Source, _Count);
756 }
757
__DEFINE_CPP_OVERLOAD_INLINE_NFUNC_0_3_EX(wchar_t *,__RETURN_POLICY_DST,_wcsncpy_l,_wcsncpy_s_l,_Out_writes_z_ (_Size)wchar_t,_Out_writes_ (_Count),wchar_t,_Dst,_In_z_ const wchar_t *,_Source,_In_ size_t,_Count,_In_opt_ _locale_t,_Locale)758 __DEFINE_CPP_OVERLOAD_INLINE_NFUNC_0_3_EX(wchar_t *, __RETURN_POLICY_DST, _wcsncpy_l, _wcsncpy_s_l, _Out_writes_z_(_Size) wchar_t, _Out_writes_(_Count), wchar_t, _Dst, _In_z_ const wchar_t *, _Source, _In_ size_t, _Count, _In_opt_ _locale_t, _Locale)
759
760 #if __STDC_WANT_SECURE_LIB__
761 _Check_return_wat_ __inline errno_t __CRTDECL _wcsncat_s_l(_Inout_updates_z_(_Destination_size_chars) wchar_t *_Destination, _In_ size_t _Destination_size_chars, _In_z_ const wchar_t *_Source, _In_ size_t _Count, _In_opt_ _locale_t _Locale)
762 {
763 _CRT_UNUSED(_Locale);
764 return wcsncat_s(_Destination, _Destination_size_chars, _Source, _Count);
765 }
766 #endif /* __STDC_WANT_SECURE_LIB__ */
767
__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_3(errno_t,_wcsncat_s_l,wchar_t,_Dest,_In_z_ const wchar_t *,_Source,_In_ size_t,_Count,_In_opt_ _locale_t,_Locale)768 __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_3(errno_t, _wcsncat_s_l, wchar_t, _Dest, _In_z_ const wchar_t *, _Source, _In_ size_t, _Count, _In_opt_ _locale_t, _Locale)
769
770 __DECLARE_CPP_OVERLOAD_INLINE_NFUNC_0_3_EX(wchar_t *, __RETURN_POLICY_DST, _wcsncat_l, _wcsncat_s_l, _Inout_updates_z_(_Size) wchar_t, _Inout_z_ wchar_t, _Dst, _In_z_ const wchar_t *, _Source, _In_ size_t, _Count, _In_opt_ _locale_t, _Locale)
771 {
772 _CRT_UNUSED(_Locale);
773 // C6054: String may not be zero-terminated
774 // C6059: Incorrect length parameter in call
775 #pragma warning(suppress: 6054 6059)
776 return wcsncat(_Dst, _Source, _Count);
777 }
778
__DEFINE_CPP_OVERLOAD_INLINE_NFUNC_0_3_EX(wchar_t *,__RETURN_POLICY_DST,_wcsncat_l,_wcsncat_s_l,_Inout_updates_z_ (_Size)wchar_t,_Inout_z_,wchar_t,_Dst,_In_z_ const wchar_t *,_Source,_In_ size_t,_Count,_In_opt_ _locale_t,_Locale)779 __DEFINE_CPP_OVERLOAD_INLINE_NFUNC_0_3_EX(wchar_t *, __RETURN_POLICY_DST, _wcsncat_l, _wcsncat_s_l, _Inout_updates_z_(_Size) wchar_t, _Inout_z_, wchar_t, _Dst, _In_z_ const wchar_t *, _Source, _In_ size_t, _Count, _In_opt_ _locale_t, _Locale)
780
781 _CRT_INSECURE_DEPRECATE(_wcstok_s_l) __inline wchar_t * _wcstok_l(_Inout_opt_z_ wchar_t * _String, _In_z_ const wchar_t * _Delimiters, _In_opt_ _locale_t _Locale)
782 {
783 _CRT_UNUSED(_Locale);
784 #ifdef _CRT_NON_CONFORMING_WCSTOK
785 return wcstok(_String,_Delimiters);
786 #else
787 return wcstok(_String,_Delimiters,0);
788 #endif
789 }
790
791 #if __STDC_WANT_SECURE_LIB__
_wcstok_s_l(_Inout_opt_z_ wchar_t * _String,_In_z_ const wchar_t * _Delimiters,_Inout_ _Deref_prepost_opt_z_ wchar_t ** _Current_position,_In_opt_ _locale_t _Locale)792 __inline wchar_t * _wcstok_s_l(_Inout_opt_z_ wchar_t * _String, _In_z_ const wchar_t * _Delimiters, _Inout_ _Deref_prepost_opt_z_ wchar_t **_Current_position, _In_opt_ _locale_t _Locale)
793 {
794 _CRT_UNUSED(_Locale);
795 return wcstok_s(_String, _Delimiters, _Current_position);
796 }
797 #endif /* __STDC_WANT_SECURE_LIB__ */
798
_wcsnset_s_l(_Inout_updates_z_ (_Destination_size_chars)wchar_t * _Destination,_In_ size_t _Destination_size_chars,_In_ wchar_t _Value,_In_ size_t _Count,_In_opt_ _locale_t _Locale)799 _Check_return_wat_ __inline errno_t _wcsnset_s_l(_Inout_updates_z_(_Destination_size_chars) wchar_t * _Destination, _In_ size_t _Destination_size_chars, _In_ wchar_t _Value, _In_ size_t _Count, _In_opt_ _locale_t _Locale)
800 {
801 _CRT_UNUSED(_Locale);
802 return _wcsnset_s(_Destination, _Destination_size_chars, _Value, _Count);
803 }
804
__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_3(errno_t,_wcsnset_s_l,_Prepost_z_ wchar_t,_Dest,_In_ wchar_t,_Value,_In_ size_t,_Count,_In_opt_ _locale_t,_Locale)805 __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_3(errno_t, _wcsnset_s_l, _Prepost_z_ wchar_t, _Dest, _In_ wchar_t, _Value, _In_ size_t, _Count, _In_opt_ _locale_t, _Locale)
806
807 __DECLARE_CPP_OVERLOAD_INLINE_NFUNC_0_3_EX(wchar_t *, __RETURN_POLICY_DST, _wcsnset_l, _wcsnset_s_l, _Inout_updates_z_(_Size) wchar_t, _Inout_updates_z_(_MaxCount) wchar_t, _Dst, _In_ wchar_t, _Value, _In_ size_t, _MaxCount, _In_opt_ _locale_t, _Locale)
808 {
809 _CRT_UNUSED(_Locale);
810 return _wcsnset(_Dst, _Value, _MaxCount);
811 }
812
__DEFINE_CPP_OVERLOAD_INLINE_NFUNC_0_3_EX(wchar_t *,__RETURN_POLICY_DST,_wcsnset_l,_wcsnset_s_l,_Inout_updates_z_ (_Size)wchar_t,_Inout_updates_z_ (_MaxCount),wchar_t,_Dst,_In_ wchar_t,_Value,_In_ size_t,_MaxCount,_In_opt_ _locale_t,_Locale)813 __DEFINE_CPP_OVERLOAD_INLINE_NFUNC_0_3_EX(wchar_t *, __RETURN_POLICY_DST, _wcsnset_l, _wcsnset_s_l, _Inout_updates_z_(_Size) wchar_t, _Inout_updates_z_(_MaxCount), wchar_t, _Dst, _In_ wchar_t, _Value, _In_ size_t, _MaxCount, _In_opt_ _locale_t, _Locale)
814
815 _Check_return_wat_ __inline errno_t _wcsset_s_l(_Inout_updates_z_(_Destination_size_chars) wchar_t * _Destination, _In_ size_t _Destination_size_chars, _In_ wchar_t _Value, _In_opt_ _locale_t _Locale)
816 {
817 _CRT_UNUSED(_Locale);
818 return _wcsset_s(_Destination, _Destination_size_chars, _Value);
819 }
820
__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2(errno_t,_wcsset_s_l,_Prepost_z_ wchar_t,_Dest,_In_ wchar_t,_Value,_In_opt_ _locale_t,_Locale)821 __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2(errno_t, _wcsset_s_l, _Prepost_z_ wchar_t, _Dest, _In_ wchar_t, _Value, _In_opt_ _locale_t, _Locale)
822
823 __DECLARE_CPP_OVERLOAD_INLINE_FUNC_0_2_EX(wchar_t *, __RETURN_POLICY_DST, _wcsset_l, _wcsset_s_l, _Inout_updates_z_(_Size) wchar_t, _Inout_z_ wchar_t, _Dst, _In_ wchar_t, _Value, _In_opt_ _locale_t, _Locale)
824 {
825 _CRT_UNUSED(_Locale);
826 return _wcsset(_Dst, _Value);
827 }
828
829 __DEFINE_CPP_OVERLOAD_INLINE_FUNC_0_2_EX(wchar_t *, __RETURN_POLICY_DST, _wcsset_l, _wcsset_s_l, _Inout_updates_z_(_Size) wchar_t, _Inout_z_, wchar_t, _Dst, _In_ wchar_t, _Value, _In_opt_ _locale_t, _Locale)
830
831 #endif /* __STDC__ || defined (_NO_INLINING) */
832
833 #else /* _UNICODE */
834
835 /* ++++++++++++++++++++ SBCS and MBCS ++++++++++++++++++++ */
836
837 #ifdef __cplusplus
838 } /* ... extern "C" */
839 #endif /* __cplusplus */
840
841 #include <string.h>
842
843 #ifdef __cplusplus
844 extern "C" {
845 #endif /* __cplusplus */
846
847
848 #define _TEOF EOF
849
850 #define __T(x) x
851
852
853 /* Program */
854
855 #define _tmain main
856 #define _tWinMain WinMain
857 #define _tenviron _environ
858 #define __targv __argv
859
860
861 /* Formatted i/o */
862
863 #define _tprintf printf
864 #define _tprintf_l _printf_l
865 #define _tprintf_s printf_s
866 #define _tprintf_s_l _printf_s_l
867 #define _tprintf_p _printf_p
868 #define _tprintf_p_l _printf_p_l
869 #define _tcprintf _cprintf
870 #define _tcprintf_l _cprintf_l
871 #define _tcprintf_s _cprintf_s
872 #define _tcprintf_s_l _cprintf_s_l
873 #define _tcprintf_p _cprintf_p
874 #define _tcprintf_p_l _cprintf_p_l
875 #define _vtcprintf _vcprintf
876 #define _vtcprintf_l _vcprintf_l
877 #define _vtcprintf_s _vcprintf_s
878 #define _vtcprintf_s_l _vcprintf_s_l
879 #define _vtcprintf_p _vcprintf_p
880 #define _vtcprintf_p_l _vcprintf_p_l
881 #define _ftprintf fprintf
882 #define _ftprintf_l _fprintf_l
883 #define _ftprintf_s fprintf_s
884 #define _ftprintf_s_l _fprintf_s_l
885 #define _ftprintf_p _fprintf_p
886 #define _ftprintf_p_l _fprintf_p_l
887 #define _stprintf sprintf
888 #define _stprintf_l _sprintf_l
889 #define _stprintf_s sprintf_s
890 #define _stprintf_s_l _sprintf_s_l
891 #define _stprintf_p _sprintf_p
892 #define _stprintf_p_l _sprintf_p_l
893 #define _sctprintf _scprintf
894 #define _sctprintf_l _scprintf_l
895 #define _sctprintf_p _scprintf_p
896 #define _sctprintf_p_l _scprintf_p_l
897 #define _sntprintf _snprintf
898 #define _sntprintf_l _snprintf_l
899 #define _sntprintf_s _snprintf_s
900 #define _sntprintf_s_l _snprintf_s_l
901 #define _vtprintf vprintf
902 #define _vtprintf_l _vprintf_l
903 #define _vtprintf_s vprintf_s
904 #define _vtprintf_s_l _vprintf_s_l
905 #define _vtprintf_p _vprintf_p
906 #define _vtprintf_p_l _vprintf_p_l
907 #define _vftprintf vfprintf
908 #define _vftprintf_l _vfprintf_l
909 #define _vftprintf_s vfprintf_s
910 #define _vftprintf_s_l _vfprintf_s_l
911 #define _vftprintf_p _vfprintf_p
912 #define _vftprintf_p_l _vfprintf_p_l
913 #define _vstprintf vsprintf
914 #define _vstprintf_l _vsprintf_l
915 #define _vstprintf_s vsprintf_s
916 #define _vstprintf_s_l _vsprintf_s_l
917 #define _vstprintf_p _vsprintf_p
918 #define _vstprintf_p_l _vsprintf_p_l
919 #define _vsctprintf _vscprintf
920 #define _vsctprintf_l _vscprintf_l
921 #define _vsctprintf_p _vscprintf_p
922 #define _vsctprintf_p_l _vscprintf_p_l
923 #define _vsntprintf _vsnprintf
924 #define _vsntprintf_l _vsnprintf_l
925 #define _vsntprintf_s _vsnprintf_s
926 #define _vsntprintf_s_l _vsnprintf_s_l
927
928 #define _tscanf scanf
929 #define _tscanf_l _scanf_l
930 #define _tscanf_s scanf_s
931 #define _tscanf_s_l _scanf_s_l
932 #define _tcscanf _cscanf
933 #define _tcscanf_l _cscanf_l
934 #define _tcscanf_s _cscanf_s
935 #define _tcscanf_s_l _cscanf_s_l
936 #define _ftscanf fscanf
937 #define _ftscanf_l _fscanf_l
938 #define _ftscanf_s fscanf_s
939 #define _ftscanf_s_l _fscanf_s_l
940 #define _stscanf sscanf
941 #define _stscanf_l _sscanf_l
942 #define _stscanf_s sscanf_s
943 #define _stscanf_s_l _sscanf_s_l
944 #define _sntscanf _snscanf
945 #define _sntscanf_l _snscanf_l
946 #define _sntscanf_s _snscanf_s
947 #define _sntscanf_s_l _snscanf_s_l
948 #define _vtscanf vscanf
949 #define _vtscanf_s vscanf_s
950 #define _vftscanf vfscanf
951 #define _vftscanf_s vfscanf_s
952 #define _vstscanf vsscanf
953 #define _vstscanf_s vsscanf_s
954
955
956 /* Unformatted i/o */
957
958 #define _fgettc fgetc
959 #define _fgettc_nolock _fgetc_nolock
960 #define _fgettchar _fgetchar
961 #define _fgetts fgets
962 #define _fputtc fputc
963 #define _fputtc_nolock _fputc_nolock
964 #define _fputtchar _fputchar
965 #define _fputts fputs
966 #define _cputts _cputs
967 #define _gettc getc
968 #define _gettc_nolock _getc_nolock
969 #define _gettch _getch
970 #define _gettch_nolock _getch_nolock
971 #define _gettche _getche
972 #define _gettche_nolock _getche_nolock
973 #define _gettchar getchar
974 #define _gettchar_nolock _getchar_nolock
975 #define _getts_s gets_s
976 #define _cgetts_s _cgets_s
977 #define _puttc putc
978 #define _puttc_nolock _fputc_nolock
979 #define _puttchar putchar
980 #define _puttchar_nolock _putchar_nolock
981 #define _puttch _putch
982 #define _puttch_nolock _putch_nolock
983 #define _putts puts
984 #define _ungettc ungetc
985 #define _ungettc_nolock _ungetc_nolock
986 #define _ungettch _ungetch
987 #define _ungettch_nolock _ungetch_nolock
988
989 /* String conversion functions */
990
991 #define _tcstod strtod
992 #define _tcstof strtof
993 #define _tcstol strtol
994 #define _tcstold strtold
995 #define _tcstoll strtoll
996 #define _tcstoul strtoul
997 #define _tcstoull strtoull
998 #define _tcstoimax strtoimax
999 #define _tcstoumax strtoumax
1000 #define _ttof atof
1001 #define _tstof atof
1002 #define _tstol atol
1003 #define _tstoll atoll
1004 #define _tstoi atoi
1005 #define _tstoi64 _atoi64
1006 #define _tcstod_l _strtod_l
1007 #define _tcstof_l _strtof_l
1008 #define _tcstol_l _strtol_l
1009 #define _tcstold_l _strtold_l
1010 #define _tcstoll_l _strtoll_l
1011 #define _tcstoul_l _strtoul_l
1012 #define _tcstoull_l _strtoull_l
1013 #define _tcstoimax_l _strtoimax_l
1014 #define _tcstoumax_l _strtoumax_l
1015 #define _tstof_l _atof_l
1016 #define _tstol_l _atol_l
1017 #define _tstoll_l _atoll_l
1018 #define _tstoi_l _atoi_l
1019 #define _tstoi64_l _atoi64_l
1020
1021 #define _itot_s _itoa_s
1022 #define _ltot_s _ltoa_s
1023 #define _ultot_s _ultoa_s
1024 #define _itot _itoa
1025 #define _ltot _ltoa
1026 #define _ultot _ultoa
1027 #define _ttoi atoi
1028 #define _ttol atol
1029 #define _ttoll atoll
1030
1031 #define _ttoi64 _atoi64
1032 #define _tcstoi64 _strtoi64
1033 #define _tcstoi64_l _strtoi64_l
1034 #define _tcstoui64 _strtoui64
1035 #define _tcstoui64_l _strtoui64_l
1036 #define _i64tot_s _i64toa_s
1037 #define _ui64tot_s _ui64toa_s
1038 #define _i64tot _i64toa
1039 #define _ui64tot _ui64toa
1040
1041 /* String functions */
1042
1043 /* Note that _mbscat, _mbscpy and _mbsdup are functionally equivalent to
1044 strcat, strcpy and strdup, respectively. */
1045
1046 #define _tcscat strcat
1047 #define _tcscat_s strcat_s
1048 #define _tcscpy strcpy
1049 #define _tcscpy_s strcpy_s
1050 #define _tcsdup _strdup
1051 #define _tcslen strlen
1052 #define _tcsnlen strnlen
1053 #define _tcsxfrm strxfrm
1054 #define _tcsxfrm_l _strxfrm_l
1055 #define _tcserror strerror
1056 #define _tcserror_s strerror_s
1057 #define __tcserror _strerror
1058 #define __tcserror_s _strerror_s
1059
1060 #ifdef _DEBUG
1061 #define _tcsdup_dbg _strdup_dbg
1062 #endif /* _DEBUG */
1063
1064 /* Execute functions */
1065
1066 #define _texecl _execl
1067 #define _texecle _execle
1068 #define _texeclp _execlp
1069 #define _texeclpe _execlpe
1070 #define _texecv _execv
1071 #define _texecve _execve
1072 #define _texecvp _execvp
1073 #define _texecvpe _execvpe
1074
1075 #define _tspawnl _spawnl
1076 #define _tspawnle _spawnle
1077 #define _tspawnlp _spawnlp
1078 #define _tspawnlpe _spawnlpe
1079 #define _tspawnv _spawnv
1080 #define _tspawnve _spawnve
1081 #define _tspawnvp _spawnvp
1082 #define _tspawnvpe _spawnvpe
1083
1084 #define _tsystem system
1085
1086
1087 /* Time functions */
1088
1089 #define _tasctime asctime
1090 #define _tctime ctime
1091 #define _tctime32 _ctime32
1092 #define _tctime64 _ctime64
1093 #define _tstrdate _strdate
1094 #define _tstrtime _strtime
1095 #define _tutime _utime
1096 #define _tutime32 _utime32
1097 #define _tutime64 _utime64
1098 #define _tcsftime strftime
1099 #define _tcsftime_l _strftime_l
1100
1101 #define _tasctime_s asctime_s
1102 #define _tctime_s ctime_s
1103 #define _tctime32_s _ctime32_s
1104 #define _tctime64_s _ctime64_s
1105 #define _tstrdate_s _strdate_s
1106 #define _tstrtime_s _strtime_s
1107
1108 /* Directory functions */
1109
1110 #define _tchdir _chdir
1111 #define _tgetcwd _getcwd
1112 #define _tgetdcwd _getdcwd
1113 #define _tgetdcwd_nolock _getdcwd_nolock
1114 #define _tmkdir _mkdir
1115 #define _trmdir _rmdir
1116
1117 #ifdef _DEBUG
1118 #define _tgetcwd_dbg _getcwd_dbg
1119 #define _tgetdcwd_dbg _getdcwd_dbg
1120 #define _tgetdcwd_lk_dbg _getdcwd_lk_dbg
1121 #endif /* _DEBUG */
1122
1123 /* Environment/Path functions */
1124
1125 #define _tfullpath _fullpath
1126 #define _tgetenv getenv
1127 #define _tgetenv_s getenv_s
1128 #define _tdupenv_s _dupenv_s
1129 #define _tmakepath _makepath
1130 #define _tmakepath_s _makepath_s
1131 #define _tpgmptr _pgmptr
1132 #define _get_tpgmptr _get_pgmptr
1133 #define _tputenv _putenv
1134 #define _tputenv_s _putenv_s
1135 #define _tsearchenv _searchenv
1136 #define _tsearchenv_s _searchenv_s
1137 #define _tsplitpath _splitpath
1138 #define _tsplitpath_s _splitpath_s
1139
1140 #ifdef _DEBUG
1141 #define _tfullpath_dbg _fullpath_dbg
1142 #define _tdupenv_s_dbg _dupenv_s_dbg
1143 #endif /* _DEBUG */
1144
1145 /* Stdio functions */
1146
1147 #define _tfdopen _fdopen
1148 #define _tfsopen _fsopen
1149 #define _tfopen fopen
1150 #define _tfopen_s fopen_s
1151 #define _tfreopen freopen
1152 #define _tfreopen_s freopen_s
1153 #define _tperror perror
1154 #define _tpopen _popen
1155 #define _ttempnam _tempnam
1156 #define _ttmpnam tmpnam
1157 #define _ttmpnam_s tmpnam_s
1158
1159 #ifdef _DEBUG
1160 #define _ttempnam_dbg _tempnam_dbg
1161 #endif /* _DEBUG */
1162
1163
1164 /* Io functions */
1165
1166 #define _tchmod _chmod
1167 #define _tcreat _creat
1168 #define _tfindfirst _findfirst
1169 #define _tfindfirst32 _findfirst32
1170 #define _tfindfirst64 _findfirst64
1171 #define _tfindfirsti64 _findfirsti64
1172 #define _tfindfirst32i64 _findfirst32i64
1173 #define _tfindfirst64i32 _findfirst64i32
1174 #define _tfindnext _findnext
1175 #define _tfindnext32 _findnext32
1176 #define _tfindnext64 _findnext64
1177 #define _tfindnexti64 _findnexti64
1178 #define _tfindnext32i64 _findnext32i64
1179 #define _tfindnext64i32 _findnext64i32
1180 #define _tmktemp _mktemp
1181 #define _tmktemp_s _mktemp_s
1182
1183 #define _topen _open
1184 #define _taccess _access
1185 #define _taccess_s _access_s
1186
1187 #define _tremove remove
1188 #define _trename rename
1189 #define _tsopen _sopen
1190 #define _tsopen_s _sopen_s
1191 #define _tunlink _unlink
1192
1193 #define _tfinddata_t _finddata_t
1194 #define _tfinddata32_t _finddata32_t
1195 #define _tfinddata64_t __finddata64_t
1196 #define _tfinddatai64_t _finddatai64_t
1197 #define _tfinddata32i64_t _finddata32i64_t
1198 #define _tfinddata64i32_t _finddata64i32_t
1199
1200 /* ctype functions */
1201 #define _istascii __isascii
1202 #define _istcntrl iscntrl
1203 #define _istcntrl_l _iscntrl_l
1204 #define _istxdigit isxdigit
1205 #define _istxdigit_l _isxdigit_l
1206
1207 /* Stat functions */
1208 #define _tstat _stat
1209 #define _tstat32 _stat32
1210 #define _tstat32i64 _stat32i64
1211 #define _tstat64 _stat64
1212 #define _tstat64i32 _stat64i32
1213 #define _tstati64 _stati64
1214
1215
1216 /* Setlocale functions */
1217
1218 #define _tsetlocale setlocale
1219
1220
1221 #ifdef _MBCS
1222
1223 #ifndef _CRT_USE_WINAPI_FAMILY_DESKTOP_APP
1224 #error Multibyte Character Set (MBCS) not supported for the current WINAPI_FAMILY.
1225 #endif /* _CRT_USE_WINAPI_FAMILY_DESKTOP_APP */
1226
1227 /* ++++++++++++++++++++ MBCS ++++++++++++++++++++ */
1228
1229 #ifdef __cplusplus
1230 } /* ... extern "C" */
1231 #endif /* __cplusplus */
1232
1233 #include <mbstring.h>
1234
1235 #ifdef __cplusplus
1236 extern "C" {
1237 #endif /* __cplusplus */
1238
1239
1240 #ifndef __TCHAR_DEFINED
1241 typedef char _TCHAR;
1242 typedef signed char _TSCHAR;
1243 typedef unsigned char _TUCHAR;
1244 typedef unsigned char _TXCHAR;
1245 typedef unsigned int _TINT;
1246 #define __TCHAR_DEFINED
1247 #endif /* __TCHAR_DEFINED */
1248
1249 #if defined(_CRT_INTERNAL_NONSTDC_NAMES) && _CRT_INTERNAL_NONSTDC_NAMES
1250 #ifndef _TCHAR_DEFINED
1251 typedef char TCHAR;
1252 typedef char * PTCHAR;
1253 typedef unsigned char TBYTE;
1254 typedef unsigned char * PTBYTE;
1255 #define _TCHAR_DEFINED
1256 #endif /* _TCHAR_DEFINED */
1257 #endif /* _CRT_INTERNAL_NONSTDC_NAMES */
1258
1259
1260 #ifdef _MB_MAP_DIRECT
1261
1262 /* use mb functions directly - types must match */
1263
1264 /* String functions */
1265
1266 #define _tcschr _mbschr
1267 #define _tcscspn _mbscspn
1268 #define _tcsncat _mbsnbcat
1269 #define _tcsncat_s _mbsnbcat_s
1270 #define _tcsncat_l _mbsnbcat_l
1271 #define _tcsncat_s_l _mbsnbcat_s_l
1272 #define _tcsncpy _mbsnbcpy
1273 #define _tcsncpy_s _mbsnbcpy_s
1274 #define _tcsncpy_l _mbsnbcpy_l
1275 #define _tcsncpy_s_l _mbsnbcpy_s_l
1276 #define _tcspbrk _mbspbrk
1277 #define _tcsrchr _mbsrchr
1278 #define _tcsspn _mbsspn
1279 #define _tcsstr _mbsstr
1280 #define _tcstok _mbstok
1281 #define _tcstok_s _mbstok_s
1282 #define _tcstok_l _mbstok_l
1283 #define _tcstok_s_l _mbstok_s_l
1284
1285 #define _tcsnset _mbsnbset
1286 #define _tcsnset_l _mbsnbset_l
1287 #define _tcsnset_s _mbsnbset_s
1288 #define _tcsnset_s_l _mbsnbset_s_l
1289 #define _tcsrev _mbsrev
1290 #define _tcsset _mbsset
1291 #define _tcsset_s _mbsset_s
1292 #define _tcsset_l _mbsset_l
1293 #define _tcsset_s_l _mbsset_s_l
1294
1295 #define _tcscmp _mbscmp
1296 #define _tcsicmp _mbsicmp
1297 #define _tcsicmp_l _mbsicmp_l
1298 #define _tcsnccmp _mbsncmp
1299 #define _tcsncmp _mbsnbcmp
1300 #define _tcsncicmp _mbsnicmp
1301 #define _tcsncicmp_l _mbsnicmp_l
1302 #define _tcsnicmp _mbsnbicmp
1303 #define _tcsnicmp_l _mbsnbicmp_l
1304
1305 #define _tcscoll _mbscoll
1306 #define _tcscoll_l _mbscoll_l
1307 #define _tcsicoll _mbsicoll
1308 #define _tcsicoll_l _mbsicoll_l
1309 #define _tcsnccoll _mbsncoll
1310 #define _tcsnccoll_l _mbsncoll_l
1311 #define _tcsncoll _mbsnbcoll
1312 #define _tcsncoll_l _mbsnbcoll_l
1313 #define _tcsncicoll _mbsnicoll
1314 #define _tcsncicoll_l _mbsnicoll_l
1315 #define _tcsnicoll _mbsnbicoll
1316 #define _tcsnicoll_l _mbsnbicoll_l
1317
1318 /* "logical-character" mappings */
1319
1320 #define _tcsclen _mbslen
1321 #define _tcscnlen _mbsnlen
1322 #define _tcsclen_l _mbslen_l
1323 #define _tcscnlen_l _mbsnlen_l
1324 #define _tcsnccat _mbsncat
1325 #define _tcsnccat_s _mbsncat_s
1326 #define _tcsnccat_l _mbsncat_l
1327 #define _tcsnccat_s_l _mbsncat_s_l
1328 #define _tcsnccpy _mbsncpy
1329 #define _tcsnccpy_s _mbsncpy_s
1330 #define _tcsnccpy_l _mbsncpy_l
1331 #define _tcsnccpy_s_l _mbsncpy_s_l
1332 #define _tcsncset _mbsnset
1333 #define _tcsncset_s _mbsnset_s
1334 #define _tcsncset_l _mbsnset_l
1335 #define _tcsncset_s_l _mbsnset_s_l
1336
1337 /* MBCS-specific mappings */
1338
1339 #define _tcsdec _mbsdec
1340 #define _tcsinc _mbsinc
1341 #define _tcsnbcnt _mbsnbcnt
1342 #define _tcsnccnt _mbsnccnt
1343 #define _tcsnextc _mbsnextc
1344 #define _tcsninc _mbsninc
1345 #define _tcsspnp _mbsspnp
1346
1347 #define _tcslwr _mbslwr
1348 #define _tcslwr_l _mbslwr_l
1349 #define _tcslwr_s _mbslwr_s
1350 #define _tcslwr_s_l _mbslwr_s_l
1351 #define _tcsupr _mbsupr
1352 #define _tcsupr_l _mbsupr_l
1353 #define _tcsupr_s _mbsupr_s
1354 #define _tcsupr_s_l _mbsupr_s_l
1355
1356 #define _tclen _mbclen
1357 #define _tccpy _mbccpy
1358 #define _tccpy_l _mbccpy_l
1359 #define _tccpy_s _mbccpy_s
1360 #define _tccpy_s_l _mbccpy_s_l
1361
1362 #else /* _MB_MAP_DIRECT */
1363
1364 #if __STDC__ || defined _NO_INLINING
1365
1366 /* use type-safe linked-in function thunks */
1367
1368 /* String functions */
1369
1370 _Check_return_ _ACRTIMP _CONST_RETURN char * __cdecl _tcschr(_In_z_ const char * _Str, _In_ unsigned int _Val);
1371 _Check_return_ _ACRTIMP size_t __cdecl _tcscspn(_In_z_ const char * _Str, _In_z_ const char * _Control);
1372 _CRT_INSECURE_DEPRECATE(_tcsncat_s) _ACRTIMP char * __cdecl _tcsncat(_Inout_updates_z_(_MaxCount) char *_Dst, _In_z_ const char *_Src, _In_ size_t _MaxCount);
1373 _ACRTIMP char * __cdecl _tcsncat_s(_Inout_updates_z_(_DstSizeInChars) char *_Dst, _In_ size_t _DstSizeInChars, _In_z_ const char *_Src, size_t _MaxCount);
1374 _CRT_INSECURE_DEPRECATE(_tcsncat_s_l) _ACRTIMP char * __cdecl _tcsncat_l(_Inout_updates_z_(_MaxCount) char *_Dst, _In_z_ const char *_Src, _In_ size_t _MaxCount, _In_opt_ _locale_t _Locale);
1375 _ACRTIMP char * __cdecl _tcsncat_s_l(_Inout_updates_z_(_DstSizeInChars) char *_Dst, _In_ size_t _DstSizeInChars, _In_z_ const char *_Src, _In_ size_t _MaxCount, _In_opt_ _locale_t _Locale);
1376 _CRT_INSECURE_DEPRECATE(_tcsncpy_s) _ACRTIMP char * __cdecl _tcsncpy(_Out_writes_(_MaxCount) _Post_maybez_ char *_Dst, _In_z_ const char *_Src, size_t _MaxCount);
1377 _ACRTIMP char * __cdecl _tcsncpy_s(_Out_writes_(_DstSizeInChars) char *_Dst, _In_ size_t _DstSizeInChars, _In_z_ const char *_Src, size_t _MaxCount);
1378 _CRT_INSECURE_DEPRECATE(_tcsncpy_s_l) _ACRTIMP char * __cdecl _tcsncpy_l(_Out_writes_(_MaxCount) _Post_maybez_ char *_Dst, _In_z_ const char *_Src, _In_ size_t _MaxCount, _In_opt_ _locale_t _Locale);
1379 _ACRTIMP char * __cdecl _tcsncpy_s_l(_Out_writes_(_DstSizeInChars) char *_Dst, _In_ size_t _DstSizeInChars, _In_z_ const char *_Src, _In_ size_t _MaxCount, _In_opt_ _locale_t _Locale);
1380 _Check_return_ _ACRTIMP _CONST_RETURN char * __cdecl _tcspbrk(_In_z_ const char * _Str, _In_z_ const char * _Control);
1381 _Check_return_ _ACRTIMP _CONST_RETURN char * __cdecl _tcsrchr(_In_z_ const char * _Str, _In_ unsigned int _Ch);
1382 _Check_return_ _ACRTIMP size_t __cdecl _tcsspn(_In_z_ const char * _Str, _In_z_ const char * _Control);
1383 _Check_return_ _ACRTIMP _CONST_RETURN char * __cdecl _tcsstr(_In_z_ const char * _Str, _In_z_ const char * _Substr);
1384 _Check_return_ _CRT_INSECURE_DEPRECATE(_tcstok_s) _ACRTIMP char * __cdecl _tcstok(_Inout_opt_ char *_Str, _In_z_ const char *_Delim);
1385 _Check_return_ _ACRTIMP char * __cdecl _tcstok_s(_Inout_opt_ char *_Str, _In_z_ const char *_Delim, _Inout_ _Deref_prepost_opt_z_ char **_Context);
1386 _Check_return_ _CRT_INSECURE_DEPRECATE(_tcstok_s_l) _ACRTIMP char * __cdecl _tcstok_l(_Inout_opt_ char *_Str, _In_z_ const char *_Delim, _In_opt_ _locale_t _Locale);
1387 _Check_return_ _ACRTIMP char * __cdecl _tcstok_s_l(_Inout_opt_ char *_Str, _In_z_ const char *_Delim, _Inout_ _Deref_prepost_opt_z_ char **_Context, _In_opt_ _locale_t _Locale);
1388
1389 _CRT_INSECURE_DEPRECATE(_tcsnset_s) _ACRTIMP char * __cdecl _tcsnset(_Inout_z_ char * _Str, _In_ unsigned int _Val, _In_ size_t _MaxCount);
1390 _Check_return_wat_ _ACRTIMP errno_t __cdecl _tcsnset_s(_Inout_updates_z_(_SizeInChars) char * _Str, _In_ size_t _SizeInChars, _In_ unsigned int _Val , _In_ size_t _MaxCount);
1391 _CRT_INSECURE_DEPRECATE(_tcsnset_s_l) _ACRTIMP char * __cdecl _tcsnset_l(_Inout_z_ char * _Str, _In_ unsigned int _Val, _In_ size_t _MaxCount, _In_opt_ _locale_t _Locale);
1392 _Check_return_wat_ _ACRTIMP errno_t __cdecl _tcsnset_s_l(_Inout_updates_z_(_SizeInChars) char * _Str, _In_ size_t _SizeInChars, _In_ unsigned int _Val , _In_ size_t _MaxCount, _In_opt_ _locale_t _Locale);
1393 _ACRTIMP char * __cdecl _tcsrev(_Inout_z_ char * _Str);
1394 _CRT_INSECURE_DEPRECATE(_tcsset_s) _ACRTIMP char * __cdecl _tcsset(_Inout_z_ char * _Str, _In_ unsigned int _Val);
1395 _CRT_INSECURE_DEPRECATE(_tcsset_s_l) _ACRTIMP char * __cdecl _tcsset_l(_Inout_z_ char * _Str, _In_ unsigned int _Val, _In_opt_ _locale_t _Locale);
1396 _Check_return_wat_ _ACRTIMP errno_t __cdecl _tcsset_s(_Inout_updates_z_(_SizeInChars) char * _Str, _In_ size_t _SizeInChars, _In_ unsigned int _Val);
1397 _Check_return_wat_ _ACRTIMP errno_t __cdecl _tcsset_s_l(_Inout_updates_z_(_SizeInChars) char * _Str, _In_ size_t _SizeInChars, _In_ unsigned int, _In_opt_ _locale_t _Locale);
1398
1399 _Check_return_ _ACRTIMP int __cdecl _tcscmp(_In_z_ const char *_Str1, _In_z_ const char * _Str);
1400 _Check_return_ _ACRTIMP int __cdecl _tcsicmp(_In_z_ const char *_Str1, _In_z_ const char *_Str2);
1401 _Check_return_ _ACRTIMP int __cdecl _tcsicmp_l(_In_z_ const char *_Str1, _In_z_ const char *_Str2, _In_opt_ _locale_t _Locale);
1402 _Check_return_ _ACRTIMP int __cdecl _tcsnccmp(_In_z_ const char * _Str1, _In_z_ const char * _Str2, _In_ size_t _MaxCount);
1403 _Check_return_ _ACRTIMP int __cdecl _tcsncmp(_In_z_ const char * _Str1, _In_z_ const char * _Str2, _In_ size_t _MaxCount);
1404 _Check_return_ _ACRTIMP int __cdecl _tcsncicmp(_In_z_ const char * _Str1, _In_z_ const char * _Str2, _In_ size_t _MaxCount);
1405 _Check_return_ _ACRTIMP int __cdecl _tcsncicmp_l(_In_z_ const char *_Str1, _In_z_ const char *_Str2, _In_ size_t _MaxCount, _In_opt_ _locale_t _Locale);
1406 _Check_return_ _ACRTIMP int __cdecl _tcsnicmp(_In_z_ const char * _Str1, _In_z_ const char * _Str2, _In_ size_t _MaxCount);
1407 _Check_return_ _ACRTIMP int __cdecl _tcsnicmp_l(_In_z_ const char *_Str1, _In_z_ const char *_Str2, size_t _MaxCount, _In_opt_ _locale_t _Locale);
1408
1409 _Check_return_ _ACRTIMP int __cdecl _tcscoll(_In_z_ const char * _Str1, _In_z_ const char * _Str2);
1410 _Check_return_ _ACRTIMP int __cdecl _tcscoll_l(_In_z_ const char *_Str1, _In_z_ const char *_Str2, _In_opt_ _locale_t _Locale);
1411 _Check_return_ _ACRTIMP int __cdecl _tcsicoll(_In_z_ const char * _Str1, _In_z_ const char * _Str2);
1412 _Check_return_ _ACRTIMP int __cdecl _tcsicoll_l(_In_z_ const char *_Str1, _In_z_ const char *_Str2, _In_opt_ _locale_t _Locale);
1413 _Check_return_ _ACRTIMP int __cdecl _tcsnccoll(_In_z_ const char * _Str1, _In_z_ const char * _Str2, _In_ size_t _MaxCount);
1414 _Check_return_ _ACRTIMP int __cdecl _tcsnccoll_l(_In_z_ const char *_Str1, _In_z_ const char *_Str2, _In_ size_t _MaxCount, _In_opt_ _locale_t _Locale);
1415 _Check_return_ _ACRTIMP int __cdecl _tcsncoll(_In_z_ const char *_Str1, _In_z_ const char * _Str2, _In_ size_t _MaxCount);
1416 _Check_return_ _ACRTIMP int __cdecl _tcsncoll_l(_In_z_ const char *_Str1, _In_z_ const char *_Str2, size_t _MaxCount, _In_opt_ _locale_t _Locale);
1417 _Check_return_ _ACRTIMP int __cdecl _tcsncicoll(_In_z_ const char * _Str1, _In_z_ const char * _Str2, _In_ size_t _MaxCount);
1418 _Check_return_ _ACRTIMP int __cdecl _tcsncicoll_l(_In_z_ const char *_Str1, _In_z_ const char *_Str2, _In_ size_t _MaxCount, _In_opt_ _locale_t _Locale);
1419 _Check_return_ _ACRTIMP int __cdecl _tcsnicoll(_In_z_ const char * _Str1, _In_z_ const char * _Str2, _In_ size_t _MaxCount);
1420 _Check_return_ _ACRTIMP int __cdecl _tcsnicoll_l(_In_z_ const char *_Str1, _In_z_ const char *_Str2, _In_ size_t _MaxCount, _In_opt_ _locale_t _Locale);
1421
1422 /* "logical-character" mappings */
1423
1424 _Post_satisfies_(return <= _String_length_(_Str))
1425 _Check_return_ _ACRTIMP size_t __cdecl _tcsclen(_In_z_ const char *_Str);
1426
1427 _Post_satisfies_(return <= _String_length_(_Str) && return <= _MaxCount)
1428 _Check_return_ _ACRTIMP size_t __cdecl _tcscnlen(_In_z_ const char *_Str, _In_ size_t _MaxCount);
1429
1430 _Post_satisfies_(return <= _String_length_(_Str))
1431 _Check_return_ _ACRTIMP size_t __cdecl _tcsclen_l(_In_z_ const char *_Str, _In_opt_ _locale_t _Locale);
1432
1433 _Post_satisfies_(return <= _String_length_(_Str) && return <= _MaxCount)
1434 _Check_return_ _ACRTIMP size_t __cdecl _tcscnlen_l(_In_z_ const char *_Str, _In_ size_t _MaxCount, _In_opt_ _locale_t _Locale);
1435
1436 _CRT_INSECURE_DEPRECATE(_tcsnccat_s) _ACRTIMP char * __cdecl _tcsnccat(_Inout_ char *_Dst, _In_z_ const char *_Src, _In_ size_t _MaxCount);
1437 _ACRTIMP char * __cdecl _tcsnccat_s(_Inout_updates_z_(_DstSizeInChars) char *_Dst, _In_ size_t _DstSizeInChars, _In_z_ const char *_Src, _In_ size_t _MaxCount);
1438 _CRT_INSECURE_DEPRECATE(_tcsnccat_s_l) _ACRTIMP char * __cdecl _tcsnccat_l(_Inout_ char *_Dst, _In_z_ const char *_Src, _In_ size_t _MaxCount, _In_opt_ _locale_t _Locale);
1439 _ACRTIMP char * __cdecl _tcsnccat_s_l(_Inout_updates_z_(_DstSizeInChars) char *_Dst, _In_ size_t _DstSizeInChars, _In_z_ const char *_Src, _In_ size_t _MaxCount, _In_opt_ _locale_t _Locale);
1440 _CRT_INSECURE_DEPRECATE(_tcsnccpy_s) _ACRTIMP char * __cdecl _tcsnccpy(_Out_writes_(_MaxCount) _Post_maybez_ char *_Dst, _In_z_ const char *_Src, _In_ size_t _MaxCount);
1441 _ACRTIMP char * __cdecl _tcsnccpy_s(_Out_writes_(_DstSizeInChars) char *_Dst, _In_ size_t _DstSizeInChars, _In_z_ const char *_Src, _In_ size_t _MaxCount);
1442 _CRT_INSECURE_DEPRECATE(_tcsnccpy_s_l) _ACRTIMP char * __cdecl _tcsnccpy_l(_Out_writes_(_MaxCount) _Post_maybez_ char *_Dst, _In_z_ const char *_Src, _In_ size_t _MaxCount, _In_opt_ _locale_t _Locale);
1443 _ACRTIMP char * __cdecl _tcsnccpy_s_l(_Out_writes_(_DstSizeInChars) char *_Dst, _In_ size_t _DstSizeInChars, _In_z_ const char *_Src, _In_ size_t _MaxCount, _In_opt_ _locale_t _Locale);
1444 _CRT_INSECURE_DEPRECATE(_tcsncset_s) _ACRTIMP char * __cdecl _tcsncset(_Inout_updates_z_(_MaxCount) char * _Str, _In_ unsigned int _Val, _In_ size_t _MaxCount);
1445 _ACRTIMP char * __cdecl _tcsncset_s(_Inout_updates_z_(_SizeInChars) char * _Str, _In_ size_t _SizeInChars, _In_ unsigned int _Val, _In_ size_t _MaxCount);
1446 _CRT_INSECURE_DEPRECATE(_tcsncset_s_l) _ACRTIMP char * __cdecl _tcsncset_l(_Inout_updates_z_(_MaxCount) char * _Str, _In_ unsigned int _Val, _In_ size_t _MaxCount, _In_opt_ _locale_t _Locale);
1447 _ACRTIMP char * __cdecl _tcsncset_s_l(_Inout_updates_z_(_SizeInChars) char * _Str, _In_ size_t _SizeInChars, _In_ unsigned int _Val, _In_ size_t _MaxCount, _In_opt_ _locale_t _Locale);
1448
1449 /* MBCS-specific mappings */
1450
1451 _ACRTIMP char * __cdecl _tcsdec(_In_reads_z_(_Pos-_Start+1) const char * _Start, _In_z_ const char * _Pos);
1452 _ACRTIMP char * __cdecl _tcsinc(_In_z_ const char * _Ptr);
1453 _ACRTIMP size_t __cdecl _tcsnbcnt(_In_reads_or_z_(_MaxCount) const char * _Str, _In_ size_t _MaxCount);
1454 _ACRTIMP size_t __cdecl _tcsnccnt(_In_reads_or_z_(_MaxCount) const char * _Str, _In_ size_t _MaxCount);
1455 _ACRTIMP unsigned int __cdecl _tcsnextc (_In_z_ const char * _Str);
1456 _ACRTIMP char * __cdecl _tcsninc(_In_reads_or_z_(_Count) const char * _Ptr, _In_ size_t _Count);
1457 _ACRTIMP char * __cdecl _tcsspnp(_In_z_ const char * _Str1, _In_z_ const char * _Str2);
1458
1459 _CRT_INSECURE_DEPRECATE(_tcslwr_s) _ACRTIMP char * __cdecl _tcslwr(_Inout_ char *_Str);
1460 _CRT_INSECURE_DEPRECATE(_tcslwr_s_l) _ACRTIMP char * __cdecl _tcslwr_l(_Inout_ char *_Str, _In_opt_ _locale_t _Locale);
1461 _ACRTIMP char * __cdecl _tcslwr_s(_Inout_updates_z_(_SizeInChars) char *_Str, _In_ size_t _SizeInChars);
1462 _ACRTIMP char * __cdecl _tcslwr_s_l(_Inout_updates_z_(_SizeInChars) char *_Str, _In_ size_t _SizeInChars, _In_opt_ _locale_t _Locale);
1463 _CRT_INSECURE_DEPRECATE(_tcsupr_s) _ACRTIMP char * __cdecl _tcsupr(_Inout_ char *_Str);
1464 _CRT_INSECURE_DEPRECATE(_tcsupr_s_l) _ACRTIMP char * __cdecl _tcsupr_l(_Inout_ char *_Str, _In_opt_ _locale_t _Locale);
1465 _ACRTIMP char * __cdecl _tcsupr_s(_Inout_updates_z_(_SizeInChars) char *_Str, _In_ size_t _SizeInChars);
1466 _ACRTIMP char * __cdecl _tcsupr_s_l(_Inout_updates_z_(_SizeInChars) char *_Str, _In_ size_t _SizeInChars, _In_opt_ _locale_t _Locale);
1467
1468 _Check_return_ _ACRTIMP size_t __cdecl _tclen(_In_z_ const char * _Str);
1469 _CRT_INSECURE_DEPRECATE(_tccpy_s) _ACRTIMP void __cdecl _tccpy(_Pre_notnull_ _Post_z_ char * _DstCh, _In_z_ const char * _SrcCh);
1470 _CRT_INSECURE_DEPRECATE(_tccpy_s_l) _ACRTIMP void __cdecl _tccpy_l(_Pre_notnull_ _Post_z_ char * _DstCh, _In_z_ const char * _SrcCh, _In_opt_ _locale_t _Locale);
1471 _Check_return_wat_ _ACRTIMP errno_t __cdecl _tccpy_s(_Out_writes_z_(_SizeInBytes) char * _DstCh, size_t _SizeInBytes, _Out_opt_ int *_PCopied, _In_z_ const char * _SrcCh);
1472 _Check_return_wat_ _ACRTIMP errno_t __cdecl _tccpy_s_l(_Out_writes_z_(_SizeInBytes) char * _DstCh, size_t _SizeInBytes, _Out_opt_ int *_PCopied, _In_z_ const char * _SrcCh, _In_opt_ _locale_t _Locale);
1473
1474 #else /* __STDC__ || defined (_NO_INLINING) */
1475
1476 /* the default: use type-safe inline function thunks */
1477
1478 #define _PUC unsigned char *
1479 #define _CPUC const unsigned char *
1480 #define _PC char *
1481 #define _CRPC _CONST_RETURN char *
1482 #define _CPC const char *
1483 #define _UI unsigned int
1484
1485
1486 /* String functions */
1487
1488 __inline _CRPC _tcschr(_In_z_ _CPC _s1,_In_ _UI _c) {return (_CRPC)_mbschr((_CPUC)_s1,_c);}
1489 __inline size_t _tcscspn(_In_z_ _CPC _s1,_In_z_ _CPC _s2) {return _mbscspn((_CPUC)_s1,(_CPUC)_s2);}
1490
1491 _Check_return_wat_ __inline errno_t _tcsncat_s(_Inout_updates_z_(_Destination_size_chars) char *_Destination, _In_ size_t _Destination_size_chars, _In_z_ const char *_Source, _In_ size_t _Count)
1492 {
1493 return _mbsnbcat_s((unsigned char *)_Destination, _Destination_size_chars, (const unsigned char *)_Source,_Count);
1494 }
1495
1496 __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2(errno_t, _tcsncat_s, _Prepost_z_ char, _Dest, _In_z_ const char *, _Source, _In_ size_t, _Count)
1497
1498 __DECLARE_CPP_OVERLOAD_INLINE_NFUNC_0_2_EX(char *, __RETURN_POLICY_DST, _tcsncat, _tcsncat_s, _Inout_updates_z_(_Size) char, _Inout_z_ char, _Dst, _In_z_ const char *, _Source, _In_ size_t, _Count)
1499 {
1500 return (char *)_mbsnbcat((unsigned char *)_Dst,(const unsigned char *)_Source,_Count);
1501 }
1502
1503 __DEFINE_CPP_OVERLOAD_INLINE_NFUNC_0_2_EX(char *, __RETURN_POLICY_DST, _tcsncat, _tcsncat_s, _Inout_updates_z_(_Size) char, _Inout_z_, char, _Dst, _In_z_ const char *, _Source, _In_ size_t, _Count)
1504
1505 _Check_return_wat_ __inline errno_t _tcsncat_s_l(_Inout_updates_z_(_Destination_size_chars) char *_Destination, _In_ size_t _Destination_size_chars, _In_z_ const char *_Source, _In_ size_t _Count, _In_opt_ _locale_t _Locale)
1506 {
1507 return _mbsnbcat_s_l((unsigned char *)_Destination, _Destination_size_chars, (const unsigned char *)_Source,_Count, _Locale);
1508 }
1509
1510 __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_3(errno_t, _tcsncat_s_l, _Prepost_z_ char, _Dest, _In_z_ const char *, _Source, _In_ size_t, _Count, _In_opt_ _locale_t, _Locale)
1511
1512 __DECLARE_CPP_OVERLOAD_INLINE_NFUNC_0_3_EX(char *, __RETURN_POLICY_DST, _tcsncat_l, _tcsncat_s_l, _Inout_updates_z_(_Size) char, _Inout_z_ char, _Dst, _In_z_ const char *, _Source, _In_ size_t, _Count, _In_opt_ _locale_t, _Locale)
1513 {
1514 return (char *)_mbsnbcat_l((unsigned char *)_Dst,(const unsigned char *)_Source,_Count, _Locale);
1515 }
1516
1517 __DEFINE_CPP_OVERLOAD_INLINE_NFUNC_0_3_EX(char *, __RETURN_POLICY_DST, _tcsncat_l, _tcsncat_s_l, _Inout_updates_z_(_Size) char, _Inout_z_, char, _Dst, _In_z_ const char *, _Source, _In_ size_t, _Count, _In_opt_ _locale_t, _Locale)
1518
1519 _Check_return_wat_ __inline errno_t _tcsncpy_s(_Out_writes_z_(_Destination_size_chars) char * _Destination, _In_ size_t _Destination_size_chars, _In_z_ const char * _Source,_In_ size_t _Count)
1520 {
1521 return _mbsnbcpy_s((unsigned char *)_Destination, _Destination_size_chars, (const unsigned char *)_Source,_Count);
1522 }
1523
1524 __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2(errno_t, _tcsncpy_s, _Post_z_ char, _Dest, _In_z_ const char *, _Source, _In_ size_t, _Count)
1525
1526 __DECLARE_CPP_OVERLOAD_INLINE_NFUNC_0_2_EX(_Success_(return != 0) char *, __RETURN_POLICY_DST, _tcsncpy, _tcsncpy_s, _Out_writes_bytes_(_Count) _Post_maybez_ char, _Out_writes_bytes_(_Count) _Post_maybez_ char, _Dst, _In_z_ const char *, _Source, _In_ size_t, _Count)
1527 {
1528 return (char *)_mbsnbcpy((unsigned char *)_Dst,(const unsigned char *)_Source,_Count);
1529 }
1530
1531 __DEFINE_CPP_OVERLOAD_INLINE_NFUNC_0_2_EX(char *, __RETURN_POLICY_DST, _tcsncpy, _tcsncpy_s, _Out_writes_z_(_Size) char, _Inout_z_, char, _Dst, _In_z_ const char *, _Source, _In_ size_t, _Count)
1532
1533 _Check_return_wat_ __inline errno_t _tcsncpy_s_l(_Out_writes_z_(_Destination_size_chars) char * _Destination, _In_ size_t _Destination_size_chars, _In_z_ const char * _Source,_In_ size_t _Count, _In_opt_ _locale_t _Locale)
1534 {
1535 return _mbsnbcpy_s_l((unsigned char *)_Destination, _Destination_size_chars, (const unsigned char *)_Source,_Count, _Locale);
1536 }
1537
1538 __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_3(errno_t, _tcsncpy_s_l, _Post_z_ char, _Dest, _In_z_ const char *, _Source, _In_ size_t, _Count, _In_opt_ _locale_t, _Locale)
1539
1540 __DECLARE_CPP_OVERLOAD_INLINE_NFUNC_0_3_EX(char *, __RETURN_POLICY_DST, _tcsncpy_l, _tcsncpy_s_l, _Out_writes_z_(_Size) char, _Out_writes_bytes_(_Count) _Post_maybez_ char, _Dst, _In_z_ const char *, _Source, _In_ size_t, _Count, _In_opt_ _locale_t, _Locale)
1541 {
1542 return (char *)_mbsnbcpy_l((unsigned char *)_Dst,(const unsigned char *)_Source,_Count, _Locale);
1543 }
1544
1545 __DEFINE_CPP_OVERLOAD_INLINE_NFUNC_0_3_EX(char *, __RETURN_POLICY_DST, _tcsncpy_l, _tcsncpy_s_l, _Out_writes_z_(_Size) char, _Out_writes_z_(_Count), char, _Dst, _In_z_ const char *, _Source, _In_ size_t, _Count, _In_opt_ _locale_t, _Locale)
1546
1547 _Check_return_ __inline _CRPC _tcspbrk(_In_z_ _CPC _s1,_In_z_ _CPC _s2) {return (_CRPC)_mbspbrk((_CPUC)_s1,(_CPUC)_s2);}
1548 _Check_return_ __inline _CRPC _tcsrchr(_In_z_ _CPC _s1,_In_ _UI _c) {return (_CRPC)_mbsrchr((_CPUC)_s1,_c);}
1549 _Check_return_ __inline size_t _tcsspn(_In_z_ _CPC _s1,_In_z_ _CPC _s2) {return _mbsspn((_CPUC)_s1,(_CPUC)_s2);}
1550 _Check_return_ __inline _CRPC _tcsstr(_In_z_ _CPC _s1,_In_z_ _CPC _s2) {return (_CRPC)_mbsstr((_CPUC)_s1,(_CPUC)_s2);}
1551
1552 _Check_return_ _CRT_INSECURE_DEPRECATE(_tcstok_s) __inline char * _tcstok(_Inout_opt_z_ char * _String,_In_z_ const char * _Delimiters)
1553 {
1554 return (char * )_mbstok((unsigned char *)_String,(const unsigned char *)_Delimiters);
1555 }
1556
1557 _Check_return_ __inline char * _tcstok_s(_Inout_opt_z_ char * _String,_In_z_ const char * _Delimiters, _Inout_ _Deref_prepost_opt_z_ char **_Current_position)
1558 {
1559 return (char * )_mbstok_s((unsigned char *)_String,(const unsigned char *)_Delimiters, (unsigned char **)_Current_position);
1560 }
1561
1562 _Check_return_ _CRT_INSECURE_DEPRECATE(_tcstok_s_l) __inline char * _tcstok_l(_Inout_opt_z_ char * _String,_In_z_ const char * _Delimiters, _In_opt_ _locale_t _Locale)
1563 {
1564 return (char * )_mbstok_l((unsigned char *)_String,(const unsigned char *)_Delimiters, _Locale);
1565 }
1566
1567 _Check_return_ __inline char * _tcstok_s_l(_Inout_opt_z_ char * _String,_In_z_ const char * _Delimiters, _Inout_ _Deref_prepost_opt_z_ char **_Current_position, _In_opt_ _locale_t _Locale)
1568 {
1569 return (char * )_mbstok_s_l((unsigned char *)_String,(const unsigned char *)_Delimiters, (unsigned char **)_Current_position, _Locale);
1570 }
1571
1572 _Check_return_wat_ __inline errno_t _tcsnset_s(_Inout_updates_z_(_SizeInBytes) char * _Dst, _In_ size_t _SizeInBytes, _In_ unsigned int _Value , _In_ size_t _Count)
1573 {
1574 return _mbsnbset_s((unsigned char *)_Dst, _SizeInBytes, _Value, _Count);
1575 }
1576
1577 __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2(errno_t, _tcsnset_s, _Prepost_z_ char, _Dest, _In_ unsigned int, _Value , _In_ size_t, _Count)
1578
1579 __DECLARE_CPP_OVERLOAD_INLINE_NFUNC_0_2_EX(char *, __RETURN_POLICY_DST, _tcsnset, _tcsnset_s, _Inout_updates_z_(_Size) char, _Inout_updates_z_(_Count) char, _Dst, _In_ unsigned int, _Value , _In_ size_t, _Count)
1580 {
1581 return (char *)_mbsnbset((unsigned char *)_Dst, _Value, _Count);
1582 }
1583
1584 __DEFINE_CPP_OVERLOAD_INLINE_NFUNC_0_2_EX(char *, __RETURN_POLICY_DST, _tcsnset, _tcsnset_s, _Inout_updates_z_(_Size) char, _Inout_updates_z_(_Count), char, _Dst, _In_ unsigned int, _Value , _In_ size_t, _Count)
1585
1586 _Check_return_wat_ __inline errno_t _tcsnset_s_l(_Inout_updates_z_(_SizeInBytes) char * _Dst, _In_ size_t _SizeInBytes, _In_ unsigned int _Value , _In_ size_t _Count, _In_opt_ _locale_t _Locale)
1587 {
1588 return _mbsnbset_s_l((unsigned char *)_Dst, _SizeInBytes, _Value, _Count, _Locale);
1589 }
1590
1591 __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_3(errno_t, _tcsnset_s_l, _Prepost_z_ char, _Dest, _In_ unsigned int, _Value , _In_ size_t, _Count, _In_opt_ _locale_t, _Locale)
1592
1593 __DECLARE_CPP_OVERLOAD_INLINE_NFUNC_0_3_EX(char *, __RETURN_POLICY_DST, _tcsnset_l, _tcsnset_s_l, _Inout_updates_z_(_Size) char, _Inout_updates_z_(_Count) char, _Dst, _In_ unsigned int, _Value , _In_ size_t, _Count, _In_opt_ _locale_t, _Locale)
1594 {
1595 return (char *)_mbsnbset_l((unsigned char *)_Dst, _Value, _Count, _Locale);
1596 }
1597
1598 __DEFINE_CPP_OVERLOAD_INLINE_NFUNC_0_3_EX(char *, __RETURN_POLICY_DST, _tcsnset_l, _tcsnset_s_l, _Inout_updates_z_(_Size) char, _Inout_updates_z_(_Count), char, _Dst, _In_ unsigned int, _Value , _In_ size_t, _Count, _In_opt_ _locale_t, _Locale)
1599
1600 __inline _PC _tcsrev(_Inout_z_ _PC _s1) {return (_PC)_mbsrev((_PUC)_s1);}
1601
1602 _Check_return_wat_ __inline errno_t _tcsset_s(_Inout_updates_z_(_SizeInBytes) char * _Dst, _In_ size_t _SizeInBytes, _In_ unsigned int _Value)
1603 {
1604 return _mbsset_s((unsigned char *)_Dst, _SizeInBytes, _Value);
1605 }
1606
1607 __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1(errno_t, _tcsset_s, _Prepost_z_ char, _Dest, _In_ unsigned int, _Value)
1608
1609 __DECLARE_CPP_OVERLOAD_INLINE_FUNC_0_1_EX(char *, __RETURN_POLICY_DST, _tcsset, _tcsset_s, _Inout_updates_z_(_Size) char, _Inout_z_ char, _Dst, _In_ unsigned int, _Value)
1610 {
1611 return (char *)_mbsset((unsigned char *)_Dst, _Value);
1612 }
1613
1614 __DEFINE_CPP_OVERLOAD_INLINE_FUNC_0_1_EX(char *, __RETURN_POLICY_DST, _tcsset, _tcsset_s, _Inout_updates_z_(_Size) char, _Inout_z_ char, _Dst, _In_ unsigned int, _Value)
1615
1616 _Check_return_wat_ __inline errno_t _tcsset_s_l(_Inout_updates_z_(_SizeInBytes) char * _Dst, _In_ size_t _SizeInBytes, _In_ unsigned int _Value, _In_opt_ _locale_t _Locale)
1617 {
1618 return _mbsset_s_l((unsigned char *)_Dst, _SizeInBytes, _Value, _Locale);
1619 }
1620
1621 __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2(errno_t, _tcsset_s_l, _Prepost_z_ char, _Dest, _In_ unsigned int, _Value, _In_opt_ _locale_t, _Locale)
1622
1623 __DECLARE_CPP_OVERLOAD_INLINE_FUNC_0_2_EX(char *, __RETURN_POLICY_DST, _tcsset_l, _tcsset_s_l, _Inout_updates_z_(_Size) char, _Inout_z_ char, _Dst, _In_ unsigned int, _Value, _In_opt_ _locale_t, _Locale)
1624 {
1625 return (char *)_mbsset_l((unsigned char *)_Dst, _Value, _Locale);
1626 }
1627
1628 __DEFINE_CPP_OVERLOAD_INLINE_FUNC_0_2_EX(char *, __RETURN_POLICY_DST, _tcsset_l, _tcsset_s_l, _Inout_updates_z_(_Size) char, _Inout_z_, char, _Dst, _In_ unsigned int, _Value, _In_opt_ _locale_t, _Locale)
1629
1630 _Check_return_ __inline int _tcscmp(_In_z_ _CPC _s1,_In_z_ _CPC _s2) {return _mbscmp((_CPUC)_s1,(_CPUC)_s2);}
1631
1632 _Check_return_ __inline int _tcsicmp(_In_z_ const char * _String1, _In_z_ const char * _String2)
1633 {
1634 return _mbsicmp((const unsigned char *)_String1,(const unsigned char *)_String2);
1635 }
1636
1637 _Check_return_ __inline int _tcsicmp_l(_In_z_ const char * _String1, _In_z_ const char * _String2, _In_opt_ _locale_t _Locale)
1638 {
1639 return _mbsicmp_l((const unsigned char *)_String1,(const unsigned char *)_String2, _Locale);
1640 }
1641
1642 _Check_return_ __inline int _tcsnccmp(_In_reads_or_z_(_n) _CPC _s1,_In_z_ _CPC _s2,_In_ size_t _n) {return _mbsncmp((_CPUC)_s1,(_CPUC)_s2,_n);}
1643 __inline int _tcsncmp(_In_z_ _CPC _s1,_In_z_ _CPC _s2,_In_ size_t _n) {return _mbsnbcmp((_CPUC)_s1,(_CPUC)_s2,_n);}
1644
1645 _Check_return_ __inline int _tcsncicmp(_In_z_ const char * _String1, _In_z_ const char * _String2, _In_ size_t _Char_count)
1646 {
1647 return _mbsnicmp((const unsigned char *)_String1,(const unsigned char *)_String2,_Char_count);
1648 }
1649
1650 _Check_return_ __inline int _tcsncicmp_l(_In_z_ const char * _String1, _In_z_ const char * _String2, _In_ size_t _Char_count, _In_opt_ _locale_t _Locale)
1651 {
1652 return _mbsnicmp_l((const unsigned char *)_String1,(const unsigned char *)_String2,_Char_count, _Locale);
1653 }
1654
1655 _Check_return_ __inline int _tcsnicmp(_In_z_ const char * _String1, _In_z_ const char * _String2, _In_ size_t _Char_count)
1656 {
1657 return _mbsnbicmp((const unsigned char *)_String1,(const unsigned char *)_String2,_Char_count);
1658 }
1659
1660 _Check_return_ __inline int _tcsnicmp_l(_In_z_ const char * _String1, _In_z_ const char * _String2, _In_ size_t _Char_count, _In_opt_ _locale_t _Locale)
1661 {
1662 return _mbsnbicmp_l((const unsigned char *)_String1,(const unsigned char *)_String2,_Char_count, _Locale);
1663 }
1664
1665 _Check_return_ __inline int _tcscoll(_In_z_ const char * _String1, _In_z_ const char * _String2)
1666 {
1667 return _mbscoll((const unsigned char *)_String1,(const unsigned char *)_String2);
1668 }
1669
1670 _Check_return_ __inline int _tcscoll_l(_In_z_ const char * _String1, _In_z_ const char * _String2, _In_opt_ _locale_t _Locale)
1671 {
1672 return _mbscoll_l((const unsigned char *)_String1,(const unsigned char *)_String2, _Locale);
1673 }
1674
1675 _Check_return_ __inline int _tcsicoll(_In_z_ const char * _String1, _In_z_ const char * _String2)
1676 {
1677 return _mbsicoll((const unsigned char *)_String1,(const unsigned char *)_String2);
1678 }
1679
1680 _Check_return_ __inline int _tcsicoll_l(_In_z_ const char * _String1, _In_z_ const char * _String2, _In_opt_ _locale_t _Locale)
1681 {
1682 return _mbsicoll_l((const unsigned char *)_String1,(const unsigned char *)_String2, _Locale);
1683 }
1684
1685 _Check_return_ __inline int _tcsnccoll(_In_z_ const char * _String1, _In_z_ const char * _String2, _In_ size_t _Count)
1686 {
1687 return _mbsncoll((const unsigned char *)_String1,(const unsigned char *)_String2, _Count);
1688 }
1689
1690 _Check_return_ __inline int _tcsnccoll_l(_In_z_ const char * _String1, _In_z_ const char * _String2, _In_ size_t _Count, _In_opt_ _locale_t _Locale)
1691 {
1692 return _mbsncoll_l((const unsigned char *)_String1,(const unsigned char *)_String2, _Count, _Locale);
1693 }
1694
1695 _Check_return_ __inline int _tcsncoll(_In_z_ const char * _String1, _In_z_ const char * _String2, _In_ size_t _Count)
1696 {
1697 return _mbsnbcoll((const unsigned char *)_String1,(const unsigned char *)_String2, _Count);
1698 }
1699
1700 _Check_return_ __inline int _tcsncoll_l(_In_z_ const char * _String1, _In_z_ const char * _String2, _In_ size_t _Count, _In_opt_ _locale_t _Locale)
1701 {
1702 return _mbsnbcoll_l((const unsigned char *)_String1,(const unsigned char *)_String2, _Count, _Locale);
1703 }
1704
1705 _Check_return_ __inline int _tcsncicoll(_In_z_ const char * _String1, _In_z_ const char * _String2, _In_ size_t _Count)
1706 {
1707 return _mbsnicoll((const unsigned char *)_String1,(const unsigned char *)_String2, _Count);
1708 }
1709
1710 _Check_return_ __inline int _tcsncicoll_l(_In_z_ const char * _String1, _In_z_ const char * _String2, _In_ size_t _Count, _In_opt_ _locale_t _Locale)
1711 {
1712 return _mbsnicoll_l((const unsigned char *)_String1,(const unsigned char *)_String2, _Count, _Locale);
1713 }
1714
1715 _Check_return_ __inline int _tcsnicoll(_In_z_ const char * _String1, _In_z_ const char * _String2, _In_ size_t _Count)
1716 {
1717 return _mbsnbicoll((const unsigned char *)_String1,(const unsigned char *)_String2, _Count);
1718 }
1719
1720 _Check_return_ __inline int _tcsnicoll_l(_In_z_ const char * _String1, _In_z_ const char * _String2, _In_ size_t _Count, _In_opt_ _locale_t _Locale)
1721 {
1722 return _mbsnbicoll_l((const unsigned char *)_String1,(const unsigned char *)_String2, _Count, _Locale);
1723 }
1724
1725 /* "logical-character" mappings */
1726 _Check_return_ __inline size_t _tcsclen(_In_z_ const char * _String)
1727 {
1728 return _mbslen((const unsigned char *)_String);
1729 }
1730
1731 _Check_return_ __inline size_t _tcscnlen(_In_z_ const char * _String, _In_ size_t _Maximum)
1732 {
1733 return _mbsnlen((const unsigned char *)_String, _Maximum);
1734 }
1735
1736 _Check_return_ __inline size_t _tcsclen_l(_In_z_ const char * _String, _In_opt_ _locale_t _Locale)
1737 {
1738 return _mbslen_l((const unsigned char *)_String, _Locale);
1739 }
1740
1741 _Check_return_ __inline size_t _tcscnlen_l(_In_z_ const char * _String, _In_ size_t _Maximum, _In_opt_ _locale_t _Locale)
1742 {
1743 return _mbsnlen_l((const unsigned char *)_String, _Maximum, _Locale);
1744 }
1745
1746 _Check_return_wat_ __inline errno_t _tcsnccat_s(_Inout_updates_z_(_Destination_size_chars) char * _Destination, _In_ size_t _Destination_size_chars, _In_z_ const char * _Source, _In_ size_t _Count)
1747 {
1748 return _mbsncat_s((unsigned char *)_Destination, _Destination_size_chars, (const unsigned char *)_Source, _Count);
1749 }
1750
1751 __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2(errno_t, _tcsnccat_s, _Prepost_z_ char, _Dest, _In_z_ const char *, _Source, _In_ size_t, _Count)
1752
1753 __DECLARE_CPP_OVERLOAD_INLINE_NFUNC_0_2_EX(char *, __RETURN_POLICY_DST, _tcsnccat, _tcsnccat_s, _Inout_updates_z_(_Size) char, _Inout_z_ char, _Dst, _In_z_ const char *, _Source, _In_ size_t, _Count)
1754 {
1755 return (char *)_mbsncat((unsigned char *)_Dst,(const unsigned char *)_Source, _Count);
1756 }
1757
1758 __DEFINE_CPP_OVERLOAD_INLINE_NFUNC_0_2_EX(char *, __RETURN_POLICY_DST, _tcsnccat, _tcsnccat_s, _Inout_updates_z_(_Size) char, _Inout_z_, char, _Dst, _In_z_ const char *, _Source, _In_ size_t, _Count)
1759
1760 _Check_return_wat_ __inline errno_t _tcsnccat_s_l(_Inout_updates_z_(_Destination_size_chars) char * _Destination, _In_ size_t _Destination_size_chars, _In_z_ const char * _Source, _In_ size_t _Count, _In_opt_ _locale_t _Locale)
1761 {
1762 return _mbsncat_s_l((unsigned char *)_Destination, _Destination_size_chars, (const unsigned char *)_Source, _Count, _Locale);
1763 }
1764
1765 __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_3(errno_t, _tcsnccat_s_l, _Prepost_z_ char, _Dest, _In_z_ const char *, _Source, _In_ size_t, _Count, _In_opt_ _locale_t, _Locale)
1766
1767 __DECLARE_CPP_OVERLOAD_INLINE_NFUNC_0_3_EX(char *, __RETURN_POLICY_DST, _tcsnccat_l, _tcsnccat_s_l, _Inout_updates_z_(_Size) char, _Inout_z_ char, _Dst, _In_z_ const char *, _Source, _In_ size_t, _Count, _In_opt_ _locale_t, _Locale)
1768 {
1769 return (char *)_mbsncat_l((unsigned char *)_Dst,(const unsigned char *)_Source, _Count, _Locale);
1770 }
1771
1772 __DEFINE_CPP_OVERLOAD_INLINE_NFUNC_0_3_EX(char *, __RETURN_POLICY_DST, _tcsnccat_l, _tcsnccat_s_l, _Inout_updates_z_(_Size) char, _Inout_z_, char, _Dst, _In_z_ const char *, _Source, _In_ size_t, _Count, _In_opt_ _locale_t, _Locale)
1773
1774 _Check_return_wat_ __inline errno_t _tcsnccpy_s(_Out_writes_z_(_Destination_size_chars) char * _Destination, _In_ size_t _Destination_size_chars, _In_z_ const char * _Source, _In_ size_t _Count)
1775 {
1776 return _mbsncpy_s((unsigned char *)_Destination, _Destination_size_chars, (const unsigned char *)_Source, _Count);
1777 }
1778
1779 __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2(errno_t, _tcsnccpy_s, _Post_z_ char, _Dest, _In_z_ const char *, _Source, _In_ size_t, _Count)
1780
1781 __DECLARE_CPP_OVERLOAD_INLINE_NFUNC_0_2_EX(char *, __RETURN_POLICY_DST, _tcsnccpy, _tcsnccpy_s, _Out_writes_bytes_(_Size) _Post_maybez_ char, _Pre_notnull_ _Post_maybez_ char, _Dst, _In_z_ const char *, _Source, _In_ size_t, _Count)
1782 {
1783 return (char *)_mbsncpy((unsigned char *)_Dst,(const unsigned char *)_Source, _Count);
1784 }
1785
1786 __DEFINE_CPP_OVERLOAD_INLINE_NFUNC_0_2_EX(char *, __RETURN_POLICY_DST, _tcsnccpy, _tcsnccpy_s, _Out_writes_z_(_Size) char, _Pre_notnull_ _Post_z_, char, _Dst, _In_z_ const char *, _Source, _In_ size_t, _Count)
1787
1788 _Check_return_wat_ __inline errno_t _tcsnccpy_s_l(_Out_writes_z_(_Destination_size_chars) char * _Destination, _In_ size_t _Destination_size_chars, _In_z_ const char * _Source, _In_ size_t _Count, _In_opt_ _locale_t _Locale)
1789 {
1790 return _mbsncpy_s_l((unsigned char *)_Destination, _Destination_size_chars, (const unsigned char *)_Source, _Count, _Locale);
1791 }
1792
1793 __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_3(errno_t, _tcsnccpy_s_l, _Post_z_ char, _Dest, _In_z_ const char *, _Source, _In_ size_t, _Count, _In_opt_ _locale_t, _Locale)
1794
1795 __DECLARE_CPP_OVERLOAD_INLINE_NFUNC_0_3_EX(char *, __RETURN_POLICY_DST, _tcsnccpy_l, _tcsnccpy_s_l, _Out_writes_z_(_Size) char, _Out_writes_bytes_(_Count) _Post_maybez_ char, _Dst, _In_z_ const char *, _Source, _In_ size_t, _Count, _In_opt_ _locale_t, _Locale)
1796 {
1797 return (char *)_mbsncpy_l((unsigned char *)_Dst,(const unsigned char *)_Source, _Count, _Locale);
1798 }
1799
1800 __DEFINE_CPP_OVERLOAD_INLINE_NFUNC_0_3_EX(char *, __RETURN_POLICY_DST, _tcsnccpy_l, _tcsnccpy_s_l, _Out_writes_z_(_Size) char, _Out_writes_bytes_(_Count) _Post_maybez_, char, _Dst, _In_z_ const char *, _Source, _In_ size_t, _Count, _In_opt_ _locale_t, _Locale)
1801
1802 _Check_return_wat_ __inline errno_t _tcsncset_s(_Inout_updates_bytes_(_SizeInBytes) char *_Destination, _In_ size_t _SizeInBytes, _In_ unsigned int _Value, _In_ size_t _Count)
1803 {
1804 return _mbsnset_s((unsigned char *)_Destination, _SizeInBytes, _Value, _Count);
1805 }
1806
1807 __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2(errno_t, _tcsncset_s, char, _Dest, _In_ unsigned int, _Value, _In_ size_t, _Count)
1808
1809 __DECLARE_CPP_OVERLOAD_INLINE_NFUNC_0_2_EX(char *, __RETURN_POLICY_DST, _tcsncset, _tcsncset_s, _Inout_updates_z_(_Size) char, _Inout_updates_bytes_(_Count) char, _Dst, _In_ unsigned int, _Value, _In_ size_t, _Count)
1810 {
1811 return (char *)_mbsnset((unsigned char *)_Dst, _Value, _Count);
1812 }
1813
1814 __DEFINE_CPP_OVERLOAD_INLINE_NFUNC_0_2_EX(char *, __RETURN_POLICY_DST, _tcsncset, _tcsncset_s, _Inout_updates_z_(_Size) char, _Inout_updates_bytes_(_Count), char, _Dst, _In_ unsigned int, _Value, _In_ size_t, _Count)
1815
1816 _Check_return_wat_ __inline errno_t _tcsncset_s_l(_Inout_updates_bytes_(_SizeInBytes) char *_Destination, _In_ size_t _SizeInBytes, _In_ unsigned int _Value, _In_ size_t _Count, _In_opt_ _locale_t _Locale)
1817 {
1818 return _mbsnset_s_l((unsigned char *)_Destination, _SizeInBytes, _Value, _Count, _Locale);
1819 }
1820
1821 __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_3(errno_t, _tcsncset_s_l, char, _Dest, _In_ unsigned int, _Value, _In_ size_t, _Count, _In_opt_ _locale_t, _Locale)
1822
1823 __DECLARE_CPP_OVERLOAD_INLINE_NFUNC_0_3_EX(char *, __RETURN_POLICY_DST, _tcsncset_l, _tcsncset_s_l, _Inout_updates_z_(_Size) char, _Inout_updates_bytes_(_Count) char, _Dst, _In_ unsigned int, _Value, _In_ size_t, _Count, _In_opt_ _locale_t, _Locale)
1824 {
1825 return (char *)_mbsnset_l((unsigned char *)_Dst, _Value, _Count, _Locale);
1826 }
1827
1828 __DEFINE_CPP_OVERLOAD_INLINE_NFUNC_0_3_EX(char *, __RETURN_POLICY_DST, _tcsncset_l, _tcsncset_s_l, _Inout_updates_z_(_Size) char, _Inout_updates_bytes_(_Count), char, _Dst, _In_ unsigned int, _Value, _In_ size_t, _Count, _In_opt_ _locale_t, _Locale)
1829
1830 /* MBCS-specific mappings */
1831
1832 _Check_return_ __inline _PC _tcsdec(_In_reads_z_(_s2 - _s1 + 1) _CPC _s1,_In_z_ _CPC _s2) {return (_PC)_mbsdec((_CPUC)_s1,(_CPUC)_s2);}
1833 _Check_return_ __inline _PC _tcsinc(_In_z_ _CPC _s1) {return (_PC)_mbsinc((_CPUC)_s1);}
1834 _Check_return_ __inline size_t _tcsnbcnt(_In_reads_or_z_(_n) _CPC _s1,_In_ size_t _n) {return _mbsnbcnt((_CPUC)_s1,_n);}
1835 _Check_return_ __inline size_t _tcsnccnt(_In_reads_or_z_(_n) _CPC _s1,_In_ size_t _n) {return _mbsnccnt((_CPUC)_s1,_n);}
1836 _Check_return_ __inline _PC _tcsninc(_In_reads_or_z_(_n) _CPC _s1,_In_ size_t _n) {return (_PC)_mbsninc((_CPUC)_s1,_n);}
1837 _Check_return_ __inline _PC _tcsspnp(_In_z_ _CPC _s1,_In_z_ _CPC _s2) {return (_PC)_mbsspnp((_CPUC)_s1,(_CPUC)_s2);}
1838
1839 _Check_return_wat_ __inline errno_t _tcslwr_s(_Inout_updates_z_(_SizeInBytes) char * _String, size_t _SizeInBytes)
1840 {
1841 return _mbslwr_s((unsigned char *)_String, _SizeInBytes);
1842 }
1843
1844 __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_0(errno_t, _tcslwr_s, _Prepost_z_ char, _String)
1845
1846 __DECLARE_CPP_OVERLOAD_INLINE_FUNC_0_0_EX(char *, __RETURN_POLICY_DST, _tcslwr, _tcslwr_s, _Inout_updates_z_(_Size) char, _Inout_z_ char, _String)
1847 {
1848 return (char *)_mbslwr((unsigned char *)_String);
1849 }
1850
1851 __DEFINE_CPP_OVERLOAD_INLINE_FUNC_0_0_EX(char *, __RETURN_POLICY_DST, _tcslwr, _tcslwr_s, _Inout_updates_z_(_Size) char, _Inout_z_ char, _String)
1852
1853 _Check_return_wat_ __inline errno_t _tcslwr_s_l(_Inout_updates_z_(_SizeInBytes) char * _String, _In_ size_t _SizeInBytes, _In_opt_ _locale_t _Locale)
1854 {
1855 return _mbslwr_s_l((unsigned char *)_String, _SizeInBytes, _Locale);
1856 }
1857
1858 __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1(errno_t, _tcslwr_s_l, _Prepost_z_ char, _String, _In_opt_ _locale_t, _Locale)
1859
1860 __DECLARE_CPP_OVERLOAD_INLINE_FUNC_0_1_EX(char *, __RETURN_POLICY_DST, _tcslwr_l, _tcslwr_s_l, _Inout_updates_z_(_Size) char, _Inout_z_ char, _String, _In_opt_ _locale_t, _Locale)
1861 {
1862 return (char *)_mbslwr_l((unsigned char *)_String, _Locale);
1863 }
1864
1865 __DEFINE_CPP_OVERLOAD_INLINE_FUNC_0_1_EX(char *, __RETURN_POLICY_DST, _tcslwr_l, _tcslwr_s_l, _Inout_updates_z_(_Size) char, _Inout_z_ char, _String, _In_opt_ _locale_t, _Locale)
1866
1867 _Check_return_wat_ __inline errno_t _tcsupr_s(_Inout_updates_z_(_Count) char * _String, _In_ size_t _Count)
1868 {
1869 return _mbsupr_s((unsigned char *)_String, _Count);
1870 }
1871
1872 __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_0(errno_t, _tcsupr_s, _Prepost_z_ char, _String)
1873
1874 __DECLARE_CPP_OVERLOAD_INLINE_FUNC_0_0_EX(char *, __RETURN_POLICY_DST, _tcsupr, _tcsupr_s, _Inout_updates_z_(_Size) char, _Inout_z_ char, _String)
1875 {
1876 return (char *)_mbsupr((unsigned char *)_String);
1877 }
1878
1879 __DEFINE_CPP_OVERLOAD_INLINE_FUNC_0_0_EX(char *, __RETURN_POLICY_DST, _tcsupr, _tcsupr_s, _Inout_updates_z_(_Size) char, _Inout_z_ char, _String)
1880
1881 _Check_return_wat_ __inline errno_t _tcsupr_s_l(_Inout_updates_z_(_Count) char * _String, _In_ size_t _Count, _In_opt_ _locale_t _Locale)
1882 {
1883 return _mbsupr_s_l((unsigned char *)_String, _Count, _Locale);
1884 }
1885
1886 __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1(errno_t, _tcsupr_s_l, _Prepost_z_ char, _String, _In_opt_ _locale_t, _Locale)
1887
1888 __DECLARE_CPP_OVERLOAD_INLINE_FUNC_0_1_EX(char *, __RETURN_POLICY_DST, _tcsupr_l, _tcsupr_s_l, _Inout_updates_z_(_Size) char, _Inout_z_ char, _String, _In_opt_ _locale_t, _Locale)
1889 {
1890 return (char *)_mbsupr_l((unsigned char *)_String, _Locale);
1891 }
1892
1893 __DEFINE_CPP_OVERLOAD_INLINE_FUNC_0_1_EX(char *, __RETURN_POLICY_DST, _tcsupr_l, _tcsupr_s_l, _Inout_updates_z_(_Size) char, _Inout_z_ char, _String, _In_opt_ _locale_t, _Locale)
1894
1895 _Check_return_ __inline size_t _tclen(_In_z_ _CPC _s1) {return _mbclen((_CPUC)_s1);}
1896
1897 _Check_return_wat_ __inline errno_t _tccpy_s(_Out_writes_z_(_SizeInBytes) char * _Destination, size_t _SizeInBytes, _Out_opt_ int *_PCopied, _In_z_ const char * _Source)
1898 {
1899 return _mbccpy_s((unsigned char *)_Destination, _SizeInBytes, _PCopied, (const unsigned char *)_Source);
1900 }
1901
1902 __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2(errno_t, _tccpy_s, _Post_z_ char, _Dest, _Out_opt_ int *, _PCopied, _In_z_ const char *, _Source)
1903
1904 _CRT_INSECURE_DEPRECATE(_tccpy_s) __inline void _tccpy(_Out_writes_z_(2) char * _Destination, _In_z_ const char * _Source)
1905 {
1906 _mbccpy((unsigned char *)_Destination, (const unsigned char *)_Source);
1907 }
1908
1909 _Check_return_wat_ __inline errno_t _tccpy_s_l(_Out_writes_z_(_SizeInBytes) char * _Destination, _In_ size_t _SizeInBytes, _Out_opt_ int *_PCopied, _In_z_ const char * _Source, _In_opt_ _locale_t _Locale)
1910 {
1911 return _mbccpy_s_l((unsigned char *)_Destination, _SizeInBytes, _PCopied, (const unsigned char *)_Source, _Locale);
1912 }
1913
1914 __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_3(errno_t, _tccpy_s_l, _Post_z_ char, _Dest, _Out_opt_ int *, _PCopied, _In_z_ const char *, _Source, _In_opt_ _locale_t, _Locale)
1915
1916 _CRT_INSECURE_DEPRECATE(_tccpy_s_l) __inline void _tccpy_l(_Out_writes_z_(2) char * _Destination, _In_z_ const char * _Source, _In_opt_ _locale_t _Locale)
1917 {
1918 _mbccpy_l((unsigned char *)_Destination,( const unsigned char *)_Source, _Locale);
1919 }
1920
1921 /* inline helper */
1922 _Check_return_ __inline _UI _tcsnextc(_In_z_ _CPC _s1)
1923 {
1924 _UI _n=0;
1925 if (_ismbblead((_UI)*(_PUC)_s1))
1926 {
1927 /* for a dud MBCS string (leadbyte, EOS), we don't move forward 2
1928 We do not assert here because this routine is too low-level
1929 */
1930 if(_s1[1]!='\0')
1931 {
1932 _n=((_UI)*(_PUC)_s1)<<8;
1933 _s1++;
1934 }
1935 }
1936 _n+=(_UI)*(_PUC)_s1;
1937
1938 return(_n);
1939 }
1940
1941 #endif /* __STDC__ || defined (_NO_INLINING) */
1942
1943 #ifdef __cplusplus
1944 #ifndef _CPP_TCHAR_INLINES_DEFINED
1945 #define _CPP_TCHAR_INLINES_DEFINED
1946 extern "C++" {
1947 _Check_return_ inline char * __CRTDECL _tcschr(_In_z_ char *_S, _In_ unsigned int _C)
1948 {return ((char *)_tcschr((const char *)_S, _C)); }
1949 _Check_return_ inline char * __CRTDECL _tcspbrk(_In_z_ char *_S, _In_z_ const char *_P)
1950 {return ((char *)_tcspbrk((const char *)_S, _P)); }
1951 _Check_return_ inline char * __CRTDECL _tcsrchr(_In_z_ char *_S, _In_ unsigned int _C)
1952 {return ((char *)_tcsrchr((const char *)_S, _C)); }
1953 _Check_return_ inline char * __CRTDECL _tcsstr(_In_z_ char *_S, _In_z_ const char *_P)
1954 {return ((char *)_tcsstr((const char *)_S, _P)); }
1955 }
1956 #endif /* _CPP_TCHAR_INLINES_DEFINED */
1957 #endif /* __cplusplus */
1958
1959 #endif /* _MB_MAP_DIRECT */
1960
1961
1962 /* MBCS-specific mappings */
1963
1964 #define _tccmp(_cp1,_cp2) _tcsnccmp(_cp1,_cp2,1)
1965
1966
1967 /* ctype functions */
1968
1969 #define _istalnum _ismbcalnum
1970 #define _istalnum_l _ismbcalnum_l
1971 #define _istalpha _ismbcalpha
1972 #define _istalpha_l _ismbcalpha_l
1973 #define _istdigit _ismbcdigit
1974 #define _istdigit_l _ismbcdigit_l
1975 #define _istgraph _ismbcgraph
1976 #define _istgraph_l _ismbcgraph_l
1977 #define _istlegal _ismbclegal
1978 #define _istlegal_l _ismbclegal_l
1979 #define _istlower _ismbclower
1980 #define _istlower_l _ismbclower_l
1981 #define _istprint _ismbcprint
1982 #define _istprint_l _ismbcprint_l
1983 #define _istpunct _ismbcpunct
1984 #define _istpunct_l _ismbcpunct_l
1985 #define _istblank _ismbcblank
1986 #define _istblank_l _ismbcblank_l
1987 #define _istspace _ismbcspace
1988 #define _istspace_l _ismbcspace_l
1989 #define _istupper _ismbcupper
1990 #define _istupper_l _ismbcupper_l
1991
1992 #define _totupper _mbctoupper
1993 #define _totupper_l _mbctoupper_l
1994 #define _totlower _mbctolower
1995 #define _totlower_l _mbctolower_l
1996
1997 #define _istlead _ismbblead
1998 #define _istleadbyte isleadbyte
1999 #define _istleadbyte_l _isleadbyte_l
2000
2001 #else /* _MBCS */
2002
2003 /* ++++++++++++++++++++ SBCS ++++++++++++++++++++ */
2004
2005
2006 #ifndef __TCHAR_DEFINED
2007 typedef char _TCHAR;
2008 typedef signed char _TSCHAR;
2009 typedef unsigned char _TUCHAR;
2010 typedef char _TXCHAR;
2011 typedef int _TINT;
2012 #define __TCHAR_DEFINED
2013 #endif /* __TCHAR_DEFINED */
2014
2015 #if defined(_CRT_INTERNAL_NONSTDC_NAMES) && _CRT_INTERNAL_NONSTDC_NAMES
2016 #ifndef _TCHAR_DEFINED
2017 typedef char TCHAR;
2018 typedef char * PTCHAR;
2019 typedef unsigned char TBYTE;
2020 typedef unsigned char * PTBYTE;
2021 #define _TCHAR_DEFINED
2022 #endif /* _TCHAR_DEFINED */
2023 #endif /* _CRT_INTERNAL_NONSTDC_NAMES */
2024
2025
2026 /* String functions */
2027
2028 #define _tcschr strchr
2029 #define _tcscspn strcspn
2030 #define _tcsncat strncat
2031 #define _tcsncat_s strncat_s
2032 #define _tcsncat_l _strncat_l
2033 #define _tcsncat_s_l _strncat_s_l
2034 #define _tcsncpy strncpy
2035 #define _tcsncpy_s strncpy_s
2036 #define _tcsncpy_l _strncpy_l
2037 #define _tcsncpy_s_l _strncpy_s_l
2038 #define _tcspbrk strpbrk
2039 #define _tcsrchr strrchr
2040 #define _tcsspn strspn
2041 #define _tcsstr strstr
2042 #define _tcstok strtok
2043 #define _tcstok_s strtok_s
2044 #define _tcstok_l _strtok_l
2045 #define _tcstok_s_l _strtok_s_l
2046
2047 #define _tcsnset _strnset
2048 #define _tcsnset_s _strnset_s
2049 #define _tcsnset_l _strnset_l
2050 #define _tcsnset_s_l _strnset_s_l
2051 #define _tcsrev _strrev
2052 #define _tcsset _strset
2053 #define _tcsset_s _strset_s
2054 #define _tcsset_l _strset_l
2055 #define _tcsset_s_l _strset_s_l
2056
2057 #define _tcscmp strcmp
2058 #define _tcsicmp _stricmp
2059 #define _tcsicmp_l _stricmp_l
2060 #define _tcsnccmp strncmp
2061 #define _tcsncmp strncmp
2062 #define _tcsncicmp _strnicmp
2063 #define _tcsncicmp_l _strnicmp_l
2064 #define _tcsnicmp _strnicmp
2065 #define _tcsnicmp_l _strnicmp_l
2066
2067 #define _tcscoll strcoll
2068 #define _tcscoll_l _strcoll_l
2069 #define _tcsicoll _stricoll
2070 #define _tcsicoll_l _stricoll_l
2071 #define _tcsnccoll _strncoll
2072 #define _tcsnccoll_l _strncoll_l
2073 #define _tcsncoll _strncoll
2074 #define _tcsncoll_l _strncoll_l
2075 #define _tcsncicoll _strnicoll
2076 #define _tcsncicoll_l _strnicoll_l
2077 #define _tcsnicoll _strnicoll
2078 #define _tcsnicoll_l _strnicoll_l
2079
2080 /* "logical-character" mappings */
2081
2082 #define _tcsclen strlen
2083 #define _tcscnlen strnlen
2084 #define _tcsclen_l(_String, _Locale) strlen(_String)
2085 #define _tcscnlen_l(_String, _Max_count, _Locale) strnlen((_String), (_Max_count))
2086 #define _tcsnccat strncat
2087 #define _tcsnccat_s strncat_s
2088 #define _tcsnccat_l _strncat_l
2089 #define _tcsnccat_s_l _strncat_s_l
2090 #define _tcsnccpy strncpy
2091 #define _tcsnccpy_s strncpy_s
2092 #define _tcsnccpy_l _strncpy_l
2093 #define _tcsnccpy_s_l _strncpy_s_l
2094 #define _tcsncset _strnset
2095 #define _tcsncset_s _strnset_s
2096 #define _tcsncset_l _strnset_l
2097 #define _tcsncset_s_l _strnset_s_l
2098
2099 /* MBCS-specific functions */
2100
2101 #define _tcsdec _strdec
2102 #define _tcsinc _strinc
2103 #define _tcsnbcnt _strncnt
2104 #define _tcsnccnt _strncnt
2105 #define _tcsnextc _strnextc
2106 #define _tcsninc _strninc
2107 #define _tcsspnp _strspnp
2108
2109 #define _tcslwr _strlwr
2110 #define _tcslwr_l _strlwr_l
2111 #define _tcslwr_s _strlwr_s
2112 #define _tcslwr_s_l _strlwr_s_l
2113 #define _tcsupr _strupr
2114 #define _tcsupr_l _strupr_l
2115 #define _tcsupr_s _strupr_s
2116 #define _tcsupr_s_l _strupr_s_l
2117 #define _tcsxfrm strxfrm
2118 #define _tcsxfrm_l _strxfrm_l
2119
2120 #define _istlead(_Char) (0)
2121 #define _istleadbyte(_Char) (0)
2122 #define _istleadbyte_l(_Char, _Locale) (0)
2123
2124 #if __STDC__ || defined (_NO_INLINING)
2125 #define _tclen(_pc) (1)
2126 #define _tccpy(_pc1,_cpc2) (*(_pc1) = *(_cpc2))
2127 #define _tccpy_l(_pc1,_cpc2,_locale) _tccpy((_pc1),(_cpc2))
2128 #define _tccmp(_cpc1,_cpc2) (((unsigned char)*(_cpc1))-((unsigned char)*(_cpc2)))
2129 #else /* __STDC__ || defined (_NO_INLINING) */
2130 _Check_return_ __inline size_t __CRTDECL _tclen(_In_z_ const char *_cpc)
2131 {
2132 _CRT_UNUSED(_cpc);
2133 return 1;
2134 }
2135 __inline void __CRTDECL _tccpy(_Out_ char *_pc1, _In_z_ const char *_cpc2) { *_pc1 = *_cpc2; }
2136 __inline void __CRTDECL _tccpy_l(_Out_ char *_Pc1, _In_z_ const char *_Cpc2, _In_opt_ _locale_t _Locale)
2137 {
2138 _CRT_UNUSED(_Locale);
2139 _tccpy(_Pc1, _Cpc2);
2140 }
2141 _Check_return_ __inline int __CRTDECL _tccmp(_In_z_ const char *_cpc1, _In_z_ const char *_cpc2) { return (int) (((unsigned char)*_cpc1)-((unsigned char)*_cpc2)); }
2142 #endif /* __STDC__ || defined (_NO_INLINING) */
2143
2144
2145 /* ctype-functions */
2146
2147 #define _istalnum isalnum
2148 #define _istalnum_l _isalnum_l
2149 #define _istalpha isalpha
2150 #define _istalpha_l _isalpha_l
2151 #define _istdigit isdigit
2152 #define _istdigit_l _isdigit_l
2153 #define _istgraph isgraph
2154 #define _istgraph_l _isgraph_l
2155 #define _istlower islower
2156 #define _istlower_l _islower_l
2157 #define _istprint isprint
2158 #define _istprint_l _isprint_l
2159 #define _istpunct ispunct
2160 #define _istpunct_l _ispunct_l
2161 #define _istblank isblank
2162 #define _istblank_l _isblank_l
2163 #define _istspace isspace
2164 #define _istspace_l _isspace_l
2165 #define _istupper isupper
2166 #define _istupper_l _isupper_l
2167
2168 #define _totupper toupper
2169 #define _totupper_l _toupper_l
2170 #define _totlower tolower
2171 #define _totlower_l _tolower_l
2172
2173 #define _istlegal(_c) (1)
2174
2175
2176 /* the following is optional if functional versions are available */
2177
2178 #if __STDC__ || defined (_NO_INLINING)
2179 #define _strdec(_cpc1, _cpc2) ((_cpc1)>=(_cpc2) ? NULL : (_cpc2)-1)
2180 #define _strinc(_pc) ((_pc)+1)
2181 #define _strnextc(_cpc) ((unsigned int) *(const unsigned char *)(_cpc))
2182 #define _strninc(_pc, _sz) (((_pc)+(_sz)))
2183 _ACRTIMP size_t __cdecl __strncnt(_In_reads_or_z_(_Cnt) const char * _Str, _In_ size_t _Cnt);
2184 #define _strncnt(_cpc, _sz) (__strncnt(_cpc,_sz))
2185 #define _strspnp(_cpc1, _cpc2) (_cpc1==NULL ? NULL : ((*((_cpc1)+strspn(_cpc1,_cpc2))) ? ((_cpc1)+strspn(_cpc1,_cpc2)) : NULL))
2186
2187 #define _strncpy_l(_Destination, _Source, _Count, _Locale) (strncpy(_Destination, _Source, _Count))
2188 #if __STDC_WANT_SECURE_LIB__
2189 #define _strncpy_s_l(_Destination, _Destination_size_chars, _Source, _Count, _Locale) (strncpy_s(_Destination, _Destination_size_chars, _Source, _Count))
2190 #endif /* __STDC_WANT_SECURE_LIB__ */
2191 #define _strncat_l(_Destination, _Source, _Count, _Locale) (strncat(_Destination, _Source, _Count))
2192 #if __STDC_WANT_SECURE_LIB__
2193 #define _strncat_s_l(_Destination, _Destination_size_chars, _Source, _Count, _Locale) (strncat_s(_Destination, _Destination_size_chars, _Source, _Count))
2194 #endif /* __STDC_WANT_SECURE_LIB__ */
2195 #define _strtok_l(_String, _Delimiters, _Locale) (strtok(_String, _Delimiters))
2196 #if __STDC_WANT_SECURE_LIB__
2197 #define _strtok_s_l(_String, _Delimiters, _Current_position, _Locale) (strtok_s(_String, _Delimiters, _Current_position))
2198 #endif /* __STDC_WANT_SECURE_LIB__ */
2199 #define _strnset_l(_Destination, _Value, _Count, _Locale) (_strnset(_Destination, _Value, _Count))
2200 #define _strnset_s_l(_Destination, _Destination_size_chars, _Value, _Count, _Locale) (_strnset_s(_Destination, _Destination_size_chars, _Value, _Count))
2201 #define _strset_l(_Destination, _Value, _Locale) (_strset(_Destination, _Value))
2202 #define _strset_s_l(_Destination, _Destination_size_chars, _Value, _Locale) (_strset_s(_Destination, _Destination_size_chars, _Value))
2203 #else /* __STDC__ || defined (_NO_INLINING) */
2204 _Check_return_ __inline char * __CRTDECL _strdec(_In_reads_z_(_Cpc2 - _Cpc1) const char * _Cpc1, _In_z_ const char * _Cpc2) { return (char *)((_Cpc1)>=(_Cpc2) ? NULL : (_Cpc2-1)); }
2205 _Check_return_ __inline char * __CRTDECL _strinc(_In_z_ const char * _Pc) { return (char *)(_Pc+1); }
2206 _Check_return_ __inline unsigned int __CRTDECL _strnextc(_In_z_ const char * _Cpc) { return (unsigned int)*(const unsigned char *)_Cpc; }
2207 _Check_return_ __inline char * __CRTDECL _strninc(_In_reads_or_z_(_Sz) const char * _Pc, _In_ size_t _Sz) { return (char *)(_Pc+_Sz); }
2208 _Check_return_ __inline size_t __CRTDECL _strncnt(_In_reads_or_z_(_Cnt) const char * _String, _In_ size_t _Cnt)
2209 {
2210 size_t n = _Cnt;
2211 char *cp = (char *)_String;
2212 while (n-- && *cp)
2213 cp++;
2214 return _Cnt - n - 1;
2215 }
2216 _Check_return_ __inline char * __CRTDECL _strspnp
2217 (
2218 _In_z_ const char * _Cpc1,
2219 _In_z_ const char * _Cpc2
2220 )
2221 {
2222 return _Cpc1==NULL ? NULL : ((*(_Cpc1 += strspn(_Cpc1,_Cpc2))!='\0') ? (char*)_Cpc1 : NULL);
2223 }
2224
2225 #if __STDC_WANT_SECURE_LIB__
2226 _Check_return_wat_ __inline errno_t __CRTDECL _strncpy_s_l(_Out_writes_z_(_Destination_size_chars) char *_Destination, _In_ size_t _Destination_size_chars, _In_z_ const char *_Source, _In_ size_t _Count, _In_opt_ _locale_t _Locale)
2227 {
2228 _CRT_UNUSED(_Locale);
2229 return strncpy_s(_Destination, _Destination_size_chars, _Source, _Count);
2230 }
2231 #endif /* __STDC_WANT_SECURE_LIB__ */
2232
2233 __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_3(errno_t, _strncpy_s_l, _Post_z_ char, _Dest, _In_z_ const char *, _Source, _In_ size_t, _Count, _In_opt_ _locale_t, _Locale)
2234
2235 __DECLARE_CPP_OVERLOAD_INLINE_NFUNC_0_3_EX(char *, __RETURN_POLICY_DST, _strncpy_l, _strncpy_s_l, _Out_writes_z_(_Size) char, _Out_writes_(_Count) char, _Dst, _In_z_ const char *, _Source, _In_ size_t, _Count, _In_opt_ _locale_t, _Locale)
2236 {
2237 _CRT_UNUSED(_Locale);
2238 return strncpy(_Dst, _Source, _Count);
2239 }
2240
2241 __DEFINE_CPP_OVERLOAD_INLINE_NFUNC_0_3_EX(char *, __RETURN_POLICY_DST, _strncpy_l, _strncpy_s_l, _Out_writes_z_(_Size) char, _Out_writes_(_Count), char, _Dst, _In_z_ const char *, _Source, _In_ size_t, _Count, _In_opt_ _locale_t, _Locale)
2242
2243 #if __STDC_WANT_SECURE_LIB__
2244 _Check_return_wat_ __inline errno_t __CRTDECL _strncat_s_l(_Inout_updates_z_(_Destination_size_chars) char *_Destination, _In_ size_t _Destination_size_chars, _In_z_ const char *_Source, _In_ size_t _Count, _In_opt_ _locale_t _Locale)
2245 {
2246 _CRT_UNUSED(_Locale);
2247 return strncat_s(_Destination, _Destination_size_chars, _Source, _Count);
2248 }
2249 #endif /* __STDC_WANT_SECURE_LIB__ */
2250
2251 __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_3(errno_t, _strncat_s_l, _Prepost_z_ char, _Dest, _In_z_ const char *, _Source, _In_ size_t, _Count, _In_opt_ _locale_t, _Locale)
2252
2253 __DECLARE_CPP_OVERLOAD_INLINE_NFUNC_0_3_EX(char *, __RETURN_POLICY_DST, _strncat_l, _strncat_s_l, _Inout_updates_z_(_Size) char, _Inout_z_ char, _Dst, _In_z_ const char *, _Source, _In_ size_t, _Count, _In_opt_ _locale_t, _Locale)
2254 {
2255 _CRT_UNUSED(_Locale);
2256 #pragma warning(suppress: 6054) // String may not be zero-terminated
2257 return strncat(_Dst, _Source, _Count);
2258 }
2259
2260 __DEFINE_CPP_OVERLOAD_INLINE_NFUNC_0_3_EX(char *, __RETURN_POLICY_DST, _strncat_l, _strncat_s_l, _Inout_updates_z_(_Size) char, _Inout_z_, char, _Dst, _In_z_ const char *, _Source, _In_ size_t, _Count, _In_opt_ _locale_t, _Locale)
2261
2262 _Check_return_ _CRT_INSECURE_DEPRECATE(_strtok_s_l) __inline char * _strtok_l(_Inout_opt_z_ char * _String, _In_z_ const char * _Delimiters, _In_opt_ _locale_t _Locale)
2263 {
2264 _CRT_UNUSED(_Locale);
2265 return strtok(_String,_Delimiters);
2266 }
2267
2268 #if __STDC_WANT_SECURE_LIB__
2269 _Check_return_ __inline char * _strtok_s_l(_Inout_opt_z_ char * _String, _In_z_ const char * _Delimiters, _Inout_ _Deref_prepost_opt_z_ char **_Current_position, _In_opt_ _locale_t _Locale)
2270 {
2271 _CRT_UNUSED(_Locale);
2272 return strtok_s(_String, _Delimiters, _Current_position);
2273 }
2274 #endif /* __STDC_WANT_SECURE_LIB__ */
2275
2276 __inline errno_t __CRTDECL _strnset_s_l(_Inout_updates_z_(_Destination_size_chars) char *_Destination, _In_ size_t _Destination_size_chars, _In_ int _Value, _In_ size_t _Count, _In_opt_ _locale_t _Locale)
2277 {
2278 _CRT_UNUSED(_Locale);
2279 return _strnset_s(_Destination, _Destination_size_chars, _Value, _Count);
2280 }
2281
2282 __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_3(errno_t, _strnset_s_l, _Prepost_z_ char, _Dest, _In_ int, _Value, _In_ size_t, _Count, _In_opt_ _locale_t, _Locale)
2283
2284 __DECLARE_CPP_OVERLOAD_INLINE_NFUNC_0_3_EX(char *, __RETURN_POLICY_DST, _strnset_l, _strnset_s_l, _Inout_updates_z_(_Size) char, _Inout_updates_z_(_MaxCount) char, _Dst, _In_ int, _Value, _In_ size_t, _MaxCount, _In_opt_ _locale_t, _Locale)
2285 {
2286 _CRT_UNUSED(_Locale);
2287 #pragma warning(suppress: 6054) // String may not be zero-terminated
2288 return _strnset(_Dst, _Value, _MaxCount);
2289 }
2290
2291 __DEFINE_CPP_OVERLOAD_INLINE_NFUNC_0_3_EX(char *, __RETURN_POLICY_DST, _strnset_l, _strnset_s_l, _Inout_updates_z_(_Size) char, _Inout_updates_z_(_MaxCount), char, _Dst, _In_ int, _Value, _In_ size_t, _Count, _In_opt_ _locale_t, _Locale)
2292
2293 __inline errno_t __CRTDECL _strset_s_l(_Inout_updates_z_(_Destination_size_chars) char *_Destination, _In_ size_t _Destination_size_chars, _In_ int _Value, _In_opt_ _locale_t _Locale)
2294 {
2295 _CRT_UNUSED(_Locale);
2296 return _strset_s(_Destination, _Destination_size_chars, _Value);
2297 }
2298
2299 __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2(errno_t, _strset_s_l, _Prepost_z_ char, _Dest, _In_ int, _Value, _In_opt_ _locale_t, _Locale)
2300
2301 __DECLARE_CPP_OVERLOAD_INLINE_FUNC_0_2_EX(char *, __RETURN_POLICY_DST, _strset_l, _strset_s_l, _Inout_updates_z_(_Size) char, _Inout_z_ char, _Dst, _In_ int, _Value, _In_opt_ _locale_t, _Locale)
2302 {
2303 _CRT_UNUSED(_Locale);
2304 return _strset(_Dst, _Value);
2305 }
2306
2307 __DEFINE_CPP_OVERLOAD_INLINE_FUNC_0_2_EX(char *, __RETURN_POLICY_DST, _strset_l, _strset_s_l, _Inout_updates_z_(_Size) char, _Inout_z_, char, _Dst, _In_ int, _Value, _In_opt_ _locale_t, _Locale)
2308
2309 #endif /* __STDC__ || defined (_NO_INLINING) */
2310
2311
2312 #endif /* _MBCS */
2313
2314 #endif /* _UNICODE */
2315
2316
2317 /* Generic text macros to be used with string literals and character constants.
2318 Will also allow symbolic constants that resolve to same. */
2319
2320 #define _T(x) __T(x)
2321 #define _TEXT(x) __T(x)
2322
2323
2324 #ifdef __cplusplus
2325 } /* ... extern "C" */
2326 #endif /* __cplusplus */
2327 _UCRT_RESTORE_CLANG_WARNINGS
2328 #pragma warning(pop) // _UCRT_DISABLED_WARNINGS
2329 #endif /* _INC_TCHAR */
2330
2331