master
1/**
2 * This file has no copyright assigned and is placed in the Public Domain.
3 * This file is part of the mingw-w64 runtime package.
4 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
5 */
6#ifndef _INC_STDIO
7#define _INC_STDIO
8
9#include <corecrt_stdio_config.h>
10
11#pragma pack(push,_CRT_PACKING)
12
13#pragma push_macro("snprintf")
14#undef snprintf
15#pragma push_macro("vsnprintf")
16#undef vsnprintf
17#pragma push_macro("snwprintf")
18#undef snwprintf
19#pragma push_macro("vsnwprintf")
20#undef vsnwprintf
21
22#ifdef __cplusplus
23extern "C" {
24#endif
25
26#define BUFSIZ 512
27#define _NFILE _NSTREAM_
28#define _NSTREAM_ 512
29#define _IOB_ENTRIES 20
30#define EOF (-1)
31
32#ifndef _FILE_DEFINED
33 struct _iobuf {
34#ifdef _UCRT
35 void *_Placeholder;
36#else
37 char *_ptr;
38 int _cnt;
39 char *_base;
40 int _flag;
41 int _file;
42 int _charbuf;
43 int _bufsiz;
44 char *_tmpfname;
45#endif
46 };
47 typedef struct _iobuf FILE;
48#define _FILE_DEFINED
49#endif
50
51#ifdef _POSIX_
52#define _P_tmpdir "/"
53#define _wP_tmpdir L"/"
54#else
55#define _P_tmpdir "\\"
56#define _wP_tmpdir L"\\"
57#endif
58
59#ifdef _UCRT
60#define L_tmpnam 260
61#else
62#define L_tmpnam (sizeof(_P_tmpdir) + 12)
63#endif
64
65#ifdef _POSIX_
66#define L_ctermid 9
67#define L_cuserid 32
68#endif
69
70#define SEEK_CUR 1
71#define SEEK_END 2
72#define SEEK_SET 0
73
74#define STDIN_FILENO 0
75#define STDOUT_FILENO 1
76#define STDERR_FILENO 2
77
78#define FILENAME_MAX 260
79#define FOPEN_MAX 20
80#define _SYS_OPEN 20
81#ifdef _UCRT
82#define TMP_MAX 2147483647
83#else
84#define TMP_MAX 32767
85#endif
86
87#ifndef NULL
88#ifdef __cplusplus
89#ifndef _WIN64
90#define NULL 0
91#else
92#define NULL 0LL
93#endif /* W64 */
94#else
95#define NULL ((void *)0)
96#endif
97#endif
98
99#include <_mingw_off_t.h>
100
101_CRTIMP FILE *__cdecl __acrt_iob_func(unsigned index);
102#ifndef _STDIO_DEFINED
103 _CRTIMP FILE *__cdecl __iob_func(void);
104#define _iob __iob_func()
105#endif
106
107#ifndef _FPOS_T_DEFINED
108#define _FPOS_T_DEFINED
109#undef _FPOSOFF
110
111#if (!defined(NO_OLDNAMES) || defined(__GNUC__))
112 __MINGW_EXTENSION typedef __int64 fpos_t;
113#define _FPOSOFF(fp) ((long)(fp))
114#else
115 __MINGW_EXTENSION typedef long long fpos_t;
116#define _FPOSOFF(fp) ((long)(fp))
117#endif
118
119#endif
120
121#ifndef _STDSTREAM_DEFINED
122#define _STDSTREAM_DEFINED
123
124#define stdin (__acrt_iob_func(0))
125#define stdout (__acrt_iob_func(1))
126#define stderr (__acrt_iob_func(2))
127#endif
128
129#define _IOFBF 0x0000
130#define _IOLBF 0x0040
131#define _IONBF 0x0004
132
133#ifndef _UCRT
134#define _IOREAD 0x0001
135#define _IOWRT 0x0002
136#define _IOMYBUF 0x0008
137#define _IOEOF 0x0010
138#define _IOERR 0x0020
139#define _IOSTRG 0x0040
140#define _IORW 0x0080
141#ifdef _POSIX_
142#define _IOAPPEND 0x0200
143#endif
144#endif
145
146/* used with _set_output_format which is not present in ucrt */
147#ifndef _UCRT
148#define _TWO_DIGIT_EXPONENT 0x1
149#endif
150
151#if __MINGW_FORTIFY_LEVEL > 0
152__mingw_bos_declare;
153#endif
154
155#ifndef _STDIO_DEFINED
156extern
157 __MINGW_GNU_SCANF(2, 3) __MINGW_ATTRIB_NONNULL(2)
158 int __cdecl __mingw_sscanf(const char * __restrict__ _Src,const char * __restrict__ _Format,...);
159extern
160 __MINGW_GNU_SCANF(2, 0) __MINGW_ATTRIB_NONNULL(2)
161 int __cdecl __mingw_vsscanf (const char * __restrict__ _Str,const char * __restrict__ Format,va_list argp);
162extern
163 __MINGW_GNU_SCANF(1, 2) __MINGW_ATTRIB_NONNULL(1)
164 int __cdecl __mingw_scanf(const char * __restrict__ _Format,...);
165extern
166 __MINGW_GNU_SCANF(1, 0) __MINGW_ATTRIB_NONNULL(1)
167 int __cdecl __mingw_vscanf(const char * __restrict__ Format, va_list argp);
168extern
169 __MINGW_GNU_SCANF(2, 3) __MINGW_ATTRIB_NONNULL(2)
170 int __cdecl __mingw_fscanf(FILE * __restrict__ _File,const char * __restrict__ _Format,...);
171extern
172 __MINGW_GNU_SCANF(2, 0) __MINGW_ATTRIB_NONNULL(2)
173 int __cdecl __mingw_vfscanf (FILE * __restrict__ fp, const char * __restrict__ Format,va_list argp);
174
175extern
176 __MINGW_GNU_PRINTF(3, 0) __MINGW_ATTRIB_NONNULL(3)
177 int __cdecl __mingw_vsnprintf(char * __restrict__ _DstBuf,size_t _MaxCount,const char * __restrict__ _Format,
178 va_list _ArgList);
179extern
180 __MINGW_GNU_PRINTF(3, 4) __MINGW_ATTRIB_NONNULL(3)
181 int __cdecl __mingw_snprintf(char * __restrict__ s, size_t n, const char * __restrict__ format, ...);
182extern
183 __MINGW_GNU_PRINTF(1, 2) __MINGW_ATTRIB_NONNULL(1)
184 int __cdecl __mingw_printf(const char * __restrict__ , ... ) __MINGW_NOTHROW;
185extern
186 __MINGW_GNU_PRINTF(1, 0) __MINGW_ATTRIB_NONNULL(1)
187 int __cdecl __mingw_vprintf (const char * __restrict__ , va_list) __MINGW_NOTHROW;
188extern
189 __MINGW_GNU_PRINTF(2, 3) __MINGW_ATTRIB_NONNULL(2)
190 int __cdecl __mingw_fprintf (FILE * __restrict__ , const char * __restrict__ , ...) __MINGW_NOTHROW;
191extern
192 __MINGW_GNU_PRINTF(2, 0) __MINGW_ATTRIB_NONNULL(2)
193 int __cdecl __mingw_vfprintf (FILE * __restrict__ , const char * __restrict__ , va_list) __MINGW_NOTHROW;
194extern
195 __MINGW_GNU_PRINTF(2, 3) __MINGW_ATTRIB_NONNULL(2)
196 int __cdecl __mingw_sprintf (char * __restrict__ , const char * __restrict__ , ...) __MINGW_NOTHROW;
197extern
198 __MINGW_GNU_PRINTF(2, 0) __MINGW_ATTRIB_NONNULL(2)
199 int __cdecl __mingw_vsprintf (char * __restrict__ , const char * __restrict__ , va_list) __MINGW_NOTHROW;
200extern
201 __MINGW_GNU_PRINTF(2, 3) __attribute__((nonnull (1,2)))
202 int __cdecl __mingw_asprintf(char ** __restrict__ , const char * __restrict__ , ...) __MINGW_NOTHROW;
203extern
204 __MINGW_GNU_PRINTF(2, 0) __attribute__((nonnull (1,2)))
205 int __cdecl __mingw_vasprintf(char ** __restrict__ , const char * __restrict__ , va_list) __MINGW_NOTHROW;
206
207extern
208 __MINGW_MS_SCANF(2, 3) __MINGW_ATTRIB_NONNULL(2)
209 int __cdecl __ms_sscanf(const char * __restrict__ _Src,const char * __restrict__ _Format,...)
210 __MINGW_UCRT_ASM_CALL(sscanf);
211extern
212 __MINGW_MS_SCANF(2, 0) __MINGW_ATTRIB_NONNULL(2)
213 int __cdecl __ms_vsscanf(const char * __restrict__ _Str,const char * __restrict__ _Format,va_list argp)
214 __MINGW_ASM_CALL(vsscanf);
215extern
216 __MINGW_MS_SCANF(1, 2) __MINGW_ATTRIB_NONNULL(1)
217 int __cdecl __ms_scanf(const char * __restrict__ _Format,...)
218 __MINGW_UCRT_ASM_CALL(scanf);
219extern
220 __MINGW_MS_SCANF(1, 0) __MINGW_ATTRIB_NONNULL(1)
221 int __cdecl __ms_vscanf(const char * __restrict__ _Format,va_list argp)
222 __MINGW_ASM_CALL(vscanf);
223extern
224 __MINGW_MS_SCANF(2, 3) __MINGW_ATTRIB_NONNULL(2)
225 int __cdecl __ms_fscanf(FILE * __restrict__ _File,const char * __restrict__ _Format,...)
226 __MINGW_UCRT_ASM_CALL(fscanf);
227extern
228 __MINGW_MS_SCANF(2, 0) __MINGW_ATTRIB_NONNULL(2)
229 int __cdecl __ms_vfscanf(FILE * __restrict__ _File,const char * __restrict__ _Format,va_list argp)
230 __MINGW_ASM_CALL(vfscanf);
231
232extern
233 __MINGW_MS_PRINTF(1, 2) __MINGW_ATTRIB_NONNULL(1)
234 int __cdecl __ms_printf(const char * __restrict__ , ... )
235 __MINGW_UCRT_ASM_CALL(printf) __MINGW_NOTHROW;
236extern
237 __MINGW_MS_PRINTF(1, 0) __MINGW_ATTRIB_NONNULL(1)
238 int __cdecl __ms_vprintf (const char * __restrict__ , va_list)
239 __MINGW_UCRT_ASM_CALL(vprintf) __MINGW_NOTHROW;
240extern
241 __MINGW_MS_PRINTF(2, 3) __MINGW_ATTRIB_NONNULL(2)
242 int __cdecl __ms_fprintf (FILE * __restrict__ , const char * __restrict__ , ...)
243 __MINGW_UCRT_ASM_CALL(fprintf) __MINGW_NOTHROW;
244extern
245 __MINGW_MS_PRINTF(2, 0) __MINGW_ATTRIB_NONNULL(2)
246 int __cdecl __ms_vfprintf (FILE * __restrict__ , const char * __restrict__ , va_list)
247 __MINGW_UCRT_ASM_CALL(vfprintf) __MINGW_NOTHROW
248;
249extern
250 __MINGW_MS_PRINTF(2, 3) __MINGW_ATTRIB_NONNULL(2)
251 int __cdecl __ms_sprintf (char * __restrict__ , const char * __restrict__ , ...)
252 __MINGW_UCRT_ASM_CALL(sprintf) __MINGW_NOTHROW;
253extern
254 __MINGW_MS_PRINTF(2, 0) __MINGW_ATTRIB_NONNULL(2)
255 int __cdecl __ms_vsprintf (char * __restrict__ , const char * __restrict__ , va_list)
256 __MINGW_UCRT_ASM_CALL(vsprintf) __MINGW_NOTHROW;
257extern
258 __MINGW_MS_PRINTF(3, 4) __MINGW_ATTRIB_NONNULL(3)
259 int __cdecl __ms_snprintf (char * __restrict__ , size_t , const char * __restrict__ , ...)
260 __MINGW_UCRT_ASM_CALL(snprintf) __MINGW_NOTHROW;
261extern
262 __MINGW_MS_PRINTF(3, 0) __MINGW_ATTRIB_NONNULL(3)
263 int __cdecl __ms_vsnprintf (char * __restrict__ , size_t , const char * __restrict__ , va_list)
264 __MINGW_UCRT_ASM_CALL(vsnprintf) __MINGW_NOTHROW;
265
266#ifdef _UCRT
267 int __cdecl __stdio_common_vsprintf(unsigned __int64 options, char *str, size_t len, const char *format, _locale_t locale, va_list valist);
268 int __cdecl __stdio_common_vfprintf(unsigned __int64 options, FILE *file, const char *format, _locale_t locale, va_list valist);
269 int __cdecl __stdio_common_vsscanf(unsigned __int64 options, const char *input, size_t length, const char *format, _locale_t locale, va_list valist);
270 int __cdecl __stdio_common_vfscanf(unsigned __int64 options, FILE *file, const char *format, _locale_t locale, va_list valist);
271#endif
272
273#undef __MINGW_PRINTF_FORMAT
274#undef __MINGW_SCANF_FORMAT
275
276#if defined(__clang__)
277#define __MINGW_PRINTF_FORMAT __printf__
278#define __MINGW_SCANF_FORMAT __scanf__
279#elif defined(_UCRT) || __USE_MINGW_ANSI_STDIO
280#define __MINGW_PRINTF_FORMAT __gnu_printf__
281#define __MINGW_SCANF_FORMAT __gnu_scanf__
282#else
283#define __MINGW_PRINTF_FORMAT __ms_printf__
284#define __MINGW_SCANF_FORMAT __ms_scanf__
285#endif
286
287#if __USE_MINGW_ANSI_STDIO && !defined(_CRTBLD)
288/*
289 * User has expressed a preference for C99 conformance...
290 */
291
292#ifdef _GNU_SOURCE
293__MINGW_GNU_PRINTF(2, 3) __attribute__((nonnull (1,2)))
294int asprintf(char **__ret, const char *__format, ...)
295__MINGW_ASM_CALL(__mingw_asprintf);
296
297__MINGW_GNU_PRINTF(2, 0) __attribute__((nonnull (1,2)))
298int vasprintf(char **__ret, const char *__format, __builtin_va_list __local_argv)
299__MINGW_ASM_CALL(__mingw_vasprintf);
300#endif /* _GNU_SOURCE */
301
302/* There seems to be a bug about builtins and static overrides of them
303 in g++. So we need to do here some trickery. */
304#ifdef __cplusplus
305extern "C++" {
306#endif
307
308__MINGW_GNU_SCANF(2, 3) __MINGW_ATTRIB_NONNULL(2)
309int sscanf(const char *__source, const char *__format, ...)
310__MINGW_ASM_CALL(__mingw_sscanf);
311
312__MINGW_GNU_SCANF(1, 2) __MINGW_ATTRIB_NONNULL(1)
313int scanf(const char *__format, ...)
314__MINGW_ASM_CALL(__mingw_scanf);
315
316__MINGW_GNU_SCANF(2, 3) __MINGW_ATTRIB_NONNULL(2)
317int fscanf(FILE *__stream, const char *__format, ...)
318__MINGW_ASM_CALL(__mingw_fscanf);
319
320#ifndef __NO_ISOCEXT /* externs in libmingwex.a */
321#ifdef __GNUC__
322#pragma GCC diagnostic push
323#pragma GCC diagnostic ignored "-Wshadow"
324#endif
325
326__MINGW_GNU_SCANF(2, 0) __MINGW_ATTRIB_NONNULL(2)
327int vsscanf (const char *__source, const char *__format, __builtin_va_list __local_argv)
328__MINGW_ASM_CALL(__mingw_vsscanf);
329
330__MINGW_GNU_SCANF(1, 0) __MINGW_ATTRIB_NONNULL(1)
331int vscanf(const char *__format, __builtin_va_list __local_argv)
332__MINGW_ASM_CALL(__mingw_vscanf);
333
334__MINGW_GNU_SCANF(2, 0) __MINGW_ATTRIB_NONNULL(2)
335int vfscanf (FILE *__stream, const char *__format, __builtin_va_list __local_argv)
336__MINGW_ASM_CALL(__mingw_vfscanf);
337
338#ifdef __GNUC__
339#pragma GCC diagnostic pop
340#endif
341#endif /* __NO_ISOCEXT */
342
343
344
345__MINGW_GNU_PRINTF(2, 3) __MINGW_ATTRIB_NONNULL(2)
346int fprintf (FILE *__stream, const char *__format, ...)
347__MINGW_ASM_CALL(__mingw_fprintf);
348
349__MINGW_GNU_PRINTF(1, 2) __MINGW_ATTRIB_NONNULL(1)
350int printf (const char *__format, ...)
351__MINGW_ASM_CALL(__mingw_printf);
352
353__MINGW_GNU_PRINTF(2, 3) __MINGW_ATTRIB_NONNULL(2)
354int sprintf (char *__stream, const char *__format, ...)
355__MINGW_ASM_CALL(__mingw_sprintf);
356
357#if __MINGW_FORTIFY_VA_ARG
358
359__mingw_bos_extern_ovr
360__MINGW_GNU_PRINTF(2, 3) __MINGW_ATTRIB_NONNULL(2)
361int sprintf (char *__stream, const char *__format, ...)
362{
363 if (__mingw_bos_known(__stream)) {
364 int __retval = __mingw_snprintf( __stream, __mingw_bos(__stream, 1), __format, __builtin_va_arg_pack() );
365 if (__retval >= 0)
366 __mingw_bos_ptr_chk(__stream, (size_t)__retval + 1, 1);
367 return __retval;
368 }
369 return __mingw_sprintf( __stream, __format, __builtin_va_arg_pack() );
370}
371
372#endif /* __MINGW_FORTIFY_VA_ARG */
373
374__MINGW_GNU_PRINTF(2, 0) __MINGW_ATTRIB_NONNULL(2)
375int vfprintf (FILE *__stream, const char *__format, __builtin_va_list __local_argv)
376__MINGW_ASM_CALL(__mingw_vfprintf);
377
378__MINGW_GNU_PRINTF(1, 0) __MINGW_ATTRIB_NONNULL(1)
379int vprintf (const char *__format, __builtin_va_list __local_argv)
380__MINGW_ASM_CALL(__mingw_vprintf);
381
382__mingw_bos_ovr
383__MINGW_GNU_PRINTF(2, 0) __MINGW_ATTRIB_NONNULL(2)
384int vsprintf (char *__stream, const char *__format, __builtin_va_list __local_argv)
385{
386#if __MINGW_FORTIFY_LEVEL > 0
387 if (__mingw_bos_known(__stream)) {
388 int __retval = __mingw_vsnprintf( __stream, __mingw_bos(__stream, 1), __format, __local_argv );
389 if (__retval >= 0)
390 __mingw_bos_ptr_chk(__stream, (size_t)__retval + 1, 1);
391 return __retval;
392 }
393#endif
394 return __mingw_vsprintf( __stream, __format, __local_argv );
395}
396/* #ifndef __NO_ISOCEXT */ /* externs in libmingwex.a */
397
398__MINGW_GNU_PRINTF(3, 4) __MINGW_ATTRIB_NONNULL(3)
399int snprintf (char *__stream, size_t __n, const char *__format, ...)
400__MINGW_ASM_CALL(__mingw_snprintf);
401
402#if __MINGW_FORTIFY_VA_ARG
403
404__mingw_bos_extern_ovr
405__MINGW_GNU_PRINTF(3, 4) __MINGW_ATTRIB_NONNULL(3)
406int snprintf (char *__stream, size_t __n, const char *__format, ...)
407{
408 __mingw_bos_ptr_chk_warn(__stream, __n, 1);
409 return __mingw_snprintf( __stream, __n, __format, __builtin_va_arg_pack() );
410}
411
412#endif /* __MINGW_FORTIFY_VA_ARG */
413
414__mingw_bos_ovr
415__MINGW_GNU_PRINTF(3, 0) __MINGW_ATTRIB_NONNULL(3)
416int vsnprintf (char *__stream, size_t __n, const char *__format, __builtin_va_list __local_argv)
417{
418#if __MINGW_FORTIFY_LEVEL > 0
419 __mingw_bos_ptr_chk_warn(__stream, __n, 1);
420#endif
421 return __mingw_vsnprintf( __stream, __n, __format, __local_argv );
422}
423
424/* Override __builtin_printf-routines ... Kludge for libstdc++ ...*/
425#define __builtin_vsnprintf __mingw_vsnprintf
426#define __builtin_vsprintf __mingw_vsprintf
427
428/* #endif */ /* __NO_ISOCEXT */
429
430#ifdef __cplusplus
431}
432#endif
433
434#else /* !__USE_MINGW_ANSI_STDIO */
435
436#undef __builtin_vsnprintf
437#undef __builtin_vsprintf
438
439/*
440 * Default configuration: simply direct all calls to MSVCRT...
441 */
442#ifdef _UCRT
443#ifdef __GNUC__
444#pragma GCC diagnostic push
445#pragma GCC diagnostic ignored "-Wshadow"
446#endif
447 __attribute__((__format__ (__MINGW_PRINTF_FORMAT, 2, 3))) __MINGW_ATTRIB_NONNULL(2)
448 int __cdecl fprintf(FILE * __restrict__ _File,const char * __restrict__ _Format,...);
449 __attribute__((__format__ (__MINGW_PRINTF_FORMAT, 1, 2))) __MINGW_ATTRIB_NONNULL(1)
450 int __cdecl printf(const char * __restrict__ _Format,...);
451 __attribute__((__format__ (__MINGW_PRINTF_FORMAT, 2, 3))) __MINGW_ATTRIB_NONNULL(2)
452 int __cdecl sprintf(char * __restrict__ _Dest,const char * __restrict__ _Format,...) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
453
454 __attribute__((__format__ (__MINGW_PRINTF_FORMAT, 2, 0))) __MINGW_ATTRIB_NONNULL(2)
455 int __cdecl vfprintf(FILE * __restrict__ _File,const char * __restrict__ _Format,va_list _ArgList);
456 __attribute__((__format__ (__MINGW_PRINTF_FORMAT, 1, 0))) __MINGW_ATTRIB_NONNULL(1)
457 int __cdecl vprintf(const char * __restrict__ _Format,va_list _ArgList);
458 __attribute__((__format__ (__MINGW_PRINTF_FORMAT, 2, 0))) __MINGW_ATTRIB_NONNULL(2)
459 int __cdecl vsprintf(char * __restrict__ _Dest,const char * __restrict__ _Format,va_list _Args) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
460
461 __MINGW_ATTRIB_DEPRECATED_SEC_WARN
462 __attribute__((__format__ (__MINGW_SCANF_FORMAT, 2, 3))) __MINGW_ATTRIB_NONNULL(2)
463 int __cdecl fscanf(FILE * __restrict__ _File,const char * __restrict__ _Format,...);
464 __MINGW_ATTRIB_DEPRECATED_SEC_WARN
465 __attribute__((__format__ (__MINGW_SCANF_FORMAT, 1, 2))) __MINGW_ATTRIB_NONNULL(1)
466 int __cdecl scanf(const char * __restrict__ _Format,...);
467 __MINGW_ATTRIB_DEPRECATED_SEC_WARN
468 __attribute__((__format__ (__MINGW_SCANF_FORMAT, 2, 3))) __MINGW_ATTRIB_NONNULL(2)
469 int __cdecl sscanf(const char * __restrict__ _Src,const char * __restrict__ _Format,...);
470#ifdef _GNU_SOURCE
471 __attribute__ ((__format__ (__MINGW_PRINTF_FORMAT, 2, 0)))
472 int __cdecl vasprintf(char ** __restrict__ _Ret,const char * __restrict__ _Format,va_list _Args);
473 __attribute__ ((__format__ (__MINGW_PRINTF_FORMAT, 2, 3)))
474 int __cdecl asprintf(char ** __restrict__ _Ret,const char * __restrict__ _Format,...);
475#endif /*_GNU_SOURCE*/
476
477 __attribute__((__format__ (__MINGW_SCANF_FORMAT, 2, 0))) __MINGW_ATTRIB_NONNULL(2)
478 int vfscanf (FILE *__stream, const char *__format, __builtin_va_list __local_argv);
479
480 __attribute__((__format__ (__MINGW_SCANF_FORMAT, 2, 0))) __MINGW_ATTRIB_NONNULL(2)
481 int vsscanf (const char * __restrict__ __source, const char * __restrict__ __format, __builtin_va_list __local_argv);
482 __attribute__((__format__ (__MINGW_SCANF_FORMAT, 1, 0))) __MINGW_ATTRIB_NONNULL(1)
483 int vscanf(const char *__format, __builtin_va_list __local_argv);
484
485#ifdef __GNUC__
486#pragma GCC diagnostic pop
487#endif
488
489#else
490 __MINGW_MS_PRINTF(2, 3) __MINGW_ATTRIB_NONNULL(2)
491 int __cdecl fprintf(FILE * __restrict__ _File,const char * __restrict__ _Format,...);
492 __MINGW_MS_PRINTF(1, 2) __MINGW_ATTRIB_NONNULL(1)
493 int __cdecl printf(const char * __restrict__ _Format,...);
494 __MINGW_MS_PRINTF(2, 3) __MINGW_ATTRIB_NONNULL(2)
495 int __cdecl sprintf(char * __restrict__ _Dest,const char * __restrict__ _Format,...) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
496
497 __MINGW_MS_PRINTF(2, 0) __MINGW_ATTRIB_NONNULL(2)
498 int __cdecl vfprintf(FILE * __restrict__ _File,const char * __restrict__ _Format,va_list _ArgList);
499 __MINGW_MS_PRINTF(1, 0) __MINGW_ATTRIB_NONNULL(1)
500 int __cdecl vprintf(const char * __restrict__ _Format,va_list _ArgList);
501 __MINGW_MS_PRINTF(2, 0) __MINGW_ATTRIB_NONNULL(2)
502 int __cdecl vsprintf(char * __restrict__ _Dest,const char * __restrict__ _Format,va_list _Args) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
503
504 __MINGW_MS_SCANF(2, 3) __MINGW_ATTRIB_NONNULL(2)
505 int __cdecl fscanf(FILE * __restrict__ _File,const char * __restrict__ _Format,...) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
506 __MINGW_MS_SCANF(1, 2) __MINGW_ATTRIB_NONNULL(1)
507 int __cdecl scanf(const char * __restrict__ _Format,...) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
508 __MINGW_MS_SCANF(2, 3) __MINGW_ATTRIB_NONNULL(2)
509 int __cdecl sscanf(const char * __restrict__ _Src,const char * __restrict__ _Format,...) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
510#ifdef _GNU_SOURCE
511 int __cdecl vasprintf(char ** __restrict__ __ret,const char * __restrict__ __format,va_list __ap) __attribute__ ((format (__MINGW_PRINTF_FORMAT, 2, 0)));
512 int __cdecl asprintf(char ** __restrict__ __ret,const char * __restrict__ __format,...) __attribute__ ((format (__MINGW_PRINTF_FORMAT, 2, 3)));
513#endif /*_GNU_SOURCE*/
514#ifndef __NO_ISOCEXT /* externs in libmingwex.a */
515#ifdef __GNUC__
516#pragma GCC diagnostic push
517#pragma GCC diagnostic ignored "-Wshadow"
518#endif
519
520 __MINGW_MS_SCANF(2, 0) __MINGW_ATTRIB_NONNULL(2)
521 int vfscanf (FILE *__stream, const char *__format, __builtin_va_list __local_argv);
522 __MINGW_MS_SCANF(2, 0) __MINGW_ATTRIB_NONNULL(2)
523 int vsscanf (const char * __restrict__ __source, const char * __restrict__ __format, __builtin_va_list __local_argv);
524 __MINGW_MS_SCANF(1, 0) __MINGW_ATTRIB_NONNULL(1)
525 int vscanf(const char *__format, __builtin_va_list __local_argv);
526
527#ifdef __GNUC__
528#pragma GCC diagnostic pop
529#endif
530
531#endif /* __NO_ISOCEXT */
532#endif /* _UCRT */
533#endif /* __USE_MINGW_ANSI_STDIO */
534
535 _CRTIMP int __cdecl _filbuf(FILE *_File);
536 _CRTIMP int __cdecl _flsbuf(int _Ch,FILE *_File);
537#ifdef _POSIX_
538 _CRTIMP FILE *__cdecl _fsopen(const char *_Filename,const char *_Mode);
539#else
540 _CRTIMP FILE *__cdecl _fsopen(const char *_Filename,const char *_Mode,int _ShFlag);
541#endif
542 void __cdecl clearerr(FILE *_File);
543 int __cdecl fclose(FILE *_File);
544 _CRTIMP int __cdecl _fcloseall(void);
545#ifdef _POSIX_
546 FILE *__cdecl fdopen(int _FileHandle,const char *_Mode) __MINGW_ATTRIB_DEPRECATED_MSVC2005;
547#else
548 _CRTIMP FILE *__cdecl _fdopen(int _FileHandle,const char *_Mode);
549#endif
550 int __cdecl feof(FILE *_File);
551 int __cdecl ferror(FILE *_File);
552 int __cdecl fflush(FILE *_File);
553 int __cdecl fgetc(FILE *_File);
554 _CRTIMP int __cdecl _fgetchar(void);
555 int __cdecl fgetpos(FILE * __restrict__ _File ,fpos_t * __restrict__ _Pos); /* 64bit only, no 32bit version */
556 int __cdecl fgetpos64(FILE * __restrict__ _File ,fpos_t * __restrict__ _Pos); /* fgetpos already 64bit */
557 char *__cdecl fgets(char * __restrict__ _Buf,int _MaxCount,FILE * __restrict__ _File);
558 _CRTIMP int __cdecl _fileno(FILE *_File);
559#ifdef _POSIX_
560 int __cdecl fileno(FILE *_File) __MINGW_ATTRIB_DEPRECATED_MSVC2005;
561#endif
562#if defined(_DEBUG) && defined(_CRTDBG_MAP_ALLOC)
563#pragma push_macro("_tempnam")
564#undef _tempnam
565#endif
566 _CRTIMP char *__cdecl _tempnam(const char *_DirName,const char *_FilePrefix);
567#if defined(_DEBUG) && defined(_CRTDBG_MAP_ALLOC)
568#pragma pop_macro("_tempnam")
569#endif
570 _CRTIMP int __cdecl _flushall(void);
571 FILE *__cdecl fopen(const char * __restrict__ _Filename,const char * __restrict__ _Mode) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
572 FILE *fopen64(const char * __restrict__ filename,const char * __restrict__ mode);
573 int __cdecl fputc(int _Ch,FILE *_File);
574 _CRTIMP int __cdecl _fputchar(int _Ch);
575 int __cdecl fputs(const char * __restrict__ _Str,FILE * __restrict__ _File);
576 size_t __cdecl fread(void * __restrict__ _DstBuf,size_t _ElementSize,size_t _Count,FILE * __restrict__ _File);
577 FILE *__cdecl freopen(const char * __restrict__ _Filename,const char * __restrict__ _Mode,FILE * __restrict__ _File) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
578 int __cdecl fsetpos(FILE *_File,const fpos_t *_Pos);
579 int __cdecl fsetpos64(FILE *_File,const fpos_t *_Pos); /* fsetpos already 64bit */
580 int __cdecl fseek(FILE *_File,long _Offset,int _Origin);
581 long __cdecl ftell(FILE *_File);
582
583 /* Shouldn't be any fseeko32 in glibc, 32bit to 64bit casting should be fine */
584 /* int fseeko32(FILE* stream, _off_t offset, int whence);*/ /* fseeko32 redirects to fseeko64 */
585 _CRTIMP int __cdecl _fseeki64(FILE *_File,__int64 _Offset,int _Origin);
586 _CRTIMP __int64 __cdecl _ftelli64(FILE *_File);
587#ifdef _UCRT
588 __mingw_ovr int fseeko(FILE *_File, _off_t _Offset, int _Origin) {
589 return fseek(_File, _Offset, _Origin);
590 }
591 __mingw_ovr int fseeko64(FILE *_File, _off64_t _Offset, int _Origin) {
592 return _fseeki64(_File, _Offset, _Origin);
593 }
594 __mingw_ovr _off_t ftello(FILE *_File) {
595 return ftell(_File);
596 }
597 __mingw_ovr _off64_t ftello64(FILE *_File) {
598 return _ftelli64(_File);
599 }
600#else
601 int fseeko64(FILE* stream, _off64_t offset, int whence);
602 int fseeko(FILE* stream, _off_t offset, int whence);
603 /* Returns truncated 64bit off_t */
604 _off_t ftello(FILE * stream);
605 _off64_t ftello64(FILE * stream);
606#endif
607
608#ifndef _FILE_OFFSET_BITS_SET_FSEEKO
609#define _FILE_OFFSET_BITS_SET_FSEEKO
610#if (defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64))
611#define fseeko fseeko64
612#endif /* (defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)) */
613#endif /* _FILE_OFFSET_BITS_SET_FSEEKO */
614
615#ifndef _FILE_OFFSET_BITS_SET_FTELLO
616#define _FILE_OFFSET_BITS_SET_FTELLO
617#if (defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64))
618#define ftello ftello64
619#endif /* (defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)) */
620#endif /* _FILE_OFFSET_BITS_SET_FTELLO */
621
622 size_t __cdecl fwrite(const void * __restrict__ _Str,size_t _Size,size_t _Count,FILE * __restrict__ _File);
623 int __cdecl getc(FILE *_File);
624 int __cdecl getchar(void);
625 _CRTIMP int __cdecl _getmaxstdio(void);
626 char *__cdecl gets(char *_Buffer)
627 __attribute__((__warning__("Using gets() is always unsafe - use fgets() instead")));
628 int __cdecl _getw(FILE *_File);
629#ifndef _CRT_PERROR_DEFINED
630#define _CRT_PERROR_DEFINED
631 void __cdecl perror(const char *_ErrMsg);
632#endif
633#ifdef _CRT_USE_WINAPI_FAMILY_DESKTOP_APP
634 _CRTIMP int __cdecl _pclose(FILE *_File);
635 _CRTIMP FILE *__cdecl _popen(const char *_Command,const char *_Mode);
636#if !defined(NO_OLDNAMES) && !defined(popen)
637#define popen _popen
638#define pclose _pclose
639#endif
640#endif /* _CRT_USE_WINAPI_FAMILY_DESKTOP_APP */
641 int __cdecl putc(int _Ch,FILE *_File);
642 int __cdecl putchar(int _Ch);
643 int __cdecl puts(const char *_Str);
644 _CRTIMP int __cdecl _putw(int _Word,FILE *_File);
645#ifndef _CRT_DIRECTORY_DEFINED
646#define _CRT_DIRECTORY_DEFINED
647 int __cdecl remove(const char *_Filename);
648 int __cdecl rename(const char *_OldFilename,const char *_NewFilename);
649 _CRTIMP int __cdecl _unlink(const char *_Filename);
650#ifndef NO_OLDNAMES
651 int __cdecl unlink(const char *_Filename) __MINGW_ATTRIB_DEPRECATED_MSVC2005;
652#endif
653#endif
654 void __cdecl rewind(FILE *_File);
655 _CRTIMP int __cdecl _rmtmp(void);
656 void __cdecl setbuf(FILE * __restrict__ _File,char * __restrict__ _Buffer) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
657 _CRTIMP int __cdecl _setmaxstdio(int _Max);
658 _CRTIMP unsigned int __cdecl _set_output_format(unsigned int _Format);
659 _CRTIMP unsigned int __cdecl _get_output_format(void);
660 int __cdecl setvbuf(FILE * __restrict__ _File,char * __restrict__ _Buf,int _Mode,size_t _Size);
661#ifdef _UCRT
662 __MINGW_ATTRIB_PURE
663 __attribute__((__format__ (__MINGW_PRINTF_FORMAT, 1, 2))) __MINGW_ATTRIB_NONNULL(1)
664 int __cdecl _scprintf(const char * __restrict__ _Format,...);
665 __attribute__((__format__ (__MINGW_SCANF_FORMAT, 3, 4))) __MINGW_ATTRIB_NONNULL(3)
666 int __cdecl _snscanf(const char * __restrict__ _Src,size_t _MaxCount,const char * __restrict__ _Format,...) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
667#else
668 __MINGW_ATTRIB_PURE
669 __MINGW_MS_PRINTF(1, 2) __MINGW_ATTRIB_NONNULL(1)
670 _CRTIMP int __cdecl _scprintf(const char * __restrict__ _Format,...);
671 __MINGW_MS_SCANF(3, 4) __MINGW_ATTRIB_NONNULL(3)
672 _CRTIMP int __cdecl _snscanf(const char * __restrict__ _Src,size_t _MaxCount,const char * __restrict__ _Format,...) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
673#endif
674 __MINGW_ATTRIB_PURE
675 __MINGW_MS_PRINTF(1, 0) __MINGW_ATTRIB_NONNULL(1)
676 _CRTIMP int __cdecl _vscprintf(const char * __restrict__ _Format,va_list _ArgList);
677 FILE *__cdecl tmpfile(void) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
678 char *__cdecl tmpnam(char *_Buffer);
679 int __cdecl ungetc(int _Ch,FILE *_File);
680
681#ifdef _UCRT
682 __attribute__((__format__ (__MINGW_PRINTF_FORMAT, 3, 0))) __MINGW_ATTRIB_NONNULL(3)
683 int __cdecl _vsnprintf(char * __restrict__ _Dest,size_t _Count,const char * __restrict__ _Format,va_list _Args) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
684 __attribute__((__format__ (__MINGW_PRINTF_FORMAT, 3, 4))) __MINGW_ATTRIB_NONNULL(3)
685 int __cdecl _snprintf(char * __restrict__ _Dest,size_t _Count,const char * __restrict__ _Format,...) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
686#else
687 __MINGW_MS_PRINTF(3, 4) __MINGW_ATTRIB_NONNULL(3)
688 _CRTIMP int __cdecl _snprintf(char * __restrict__ _Dest,size_t _Count,const char * __restrict__ _Format,...) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
689 __MINGW_MS_PRINTF(3, 0) __MINGW_ATTRIB_NONNULL(3)
690 _CRTIMP int __cdecl _vsnprintf(char * __restrict__ _Dest,size_t _Count,const char * __restrict__ _Format,va_list _Args) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
691#endif
692
693#if __MINGW_FORTIFY_LEVEL > 0
694
695char * __cdecl __gets_chk(char *, size_t);
696char * __cdecl __mingw_call_gets_warn(char *) __MINGW_ASM_CALL(gets)
697 __attribute__((__warning__("Using gets() is always unsafe - use fgets() instead")));
698char * __cdecl __mingw_call_fgets(char * __restrict__, int, FILE * __restrict__) __MINGW_ASM_CALL(fgets);
699size_t __cdecl __mingw_call_fread(void * __restrict__, size_t, size_t, FILE * __restrict__) __MINGW_ASM_CALL(fread);
700char * __cdecl __mingw_call_tmpnam(char *) __MINGW_ASM_CALL(tmpnam);
701
702__mingw_bos_extern_ovr
703char * gets(char * __dst)
704{
705 if (__mingw_bos_known(__dst))
706 return __gets_chk(__dst, __mingw_bos(__dst, 1));
707 return __mingw_call_gets_warn(__dst);
708}
709
710__mingw_bos_extern_ovr
711char * fgets(char * __restrict__ __dst, int __n, FILE * __restrict__ __f)
712{
713 __mingw_bos_ptr_chk_warn(__dst, __n, 1);
714 return __mingw_call_fgets(__dst, __n, __f);
715}
716
717__mingw_bos_extern_ovr
718size_t fread(void * __restrict__ __dst, size_t __sz, size_t __n, FILE * __restrict__ __f)
719{
720 __mingw_bos_ptr_chk_warn(__dst, __sz * __n, 0);
721 return __mingw_call_fread(__dst, __sz, __n, __f);
722}
723
724__mingw_bos_extern_ovr
725char * tmpnam(char * __dst)
726{
727 __mingw_bos_ptr_chk_warn(__dst, L_tmpnam, 1);
728 return __mingw_call_tmpnam(__dst);
729}
730
731#endif /* __MINGW_FORTIFY_LEVEL > 0 */
732
733#if __USE_MINGW_ANSI_STDIO == 0
734
735#ifdef _UCRT
736#ifdef __GNUC__
737#pragma GCC diagnostic push
738#pragma GCC diagnostic ignored "-Wshadow"
739#endif
740 __attribute__((__format__ (__MINGW_PRINTF_FORMAT, 3, 0))) __MINGW_ATTRIB_NONNULL(3)
741 int vsnprintf (char * __restrict__ __stream, size_t __n, const char * __restrict__ __format, va_list __local_argv);
742
743 __attribute__((__format__ (__MINGW_PRINTF_FORMAT, 3, 4))) __MINGW_ATTRIB_NONNULL(3)
744 int snprintf (char * __restrict__ __stream, size_t __n, const char * __restrict__ __format, ...);
745
746#if __MINGW_FORTIFY_LEVEL > 0
747
748 int __cdecl __mingw_call_vsprintf (char * __restrict__ __stream, const char * __restrict__ __format, va_list __local_argv) __MINGW_ASM_CALL(vsprintf);
749 int __cdecl __mingw_call_vsnprintf (char * __restrict__ __stream, size_t __n, const char * __restrict__ __format, va_list __local_argv) __MINGW_ASM_CALL(vsnprintf);
750
751 __mingw_bos_extern_ovr
752 __attribute__((__format__ (__MINGW_PRINTF_FORMAT, 2, 0))) __MINGW_ATTRIB_NONNULL(3)
753 int vsprintf (char * __restrict__ __stream, const char * __restrict__ __format, va_list __local_argv)
754 {
755 if (__mingw_bos_known(__stream)) {
756 int __retval = __mingw_call_vsnprintf (__stream, __mingw_bos(__stream, 1), __format, __local_argv);
757 if (__retval >= 0)
758 __mingw_bos_ptr_chk(__stream, (size_t)__retval + 1, 1);
759 return __retval;
760 }
761 return __mingw_call_vsprintf(__stream, __format, __local_argv);
762 }
763
764 __mingw_bos_extern_ovr
765 __attribute__((__format__ (__MINGW_PRINTF_FORMAT, 3, 0))) __MINGW_ATTRIB_NONNULL(3)
766 int vsnprintf (char * __restrict__ __stream, size_t __n, const char * __restrict__ __format, va_list __local_argv)
767 {
768 __mingw_bos_ptr_chk_warn(__stream, __n, 1);
769 return __mingw_call_vsnprintf (__stream, __n, __format, __local_argv);
770 }
771
772#endif /* __MINGW_FORTIFY_LEVEL > 0 */
773
774#if __MINGW_FORTIFY_VA_ARG
775
776 int __cdecl __mingw_call_sprintf (char * __restrict__ __stream, const char * __restrict__ __Format, ...) __MINGW_ASM_CALL(sprintf);
777 int __cdecl __mingw_call_snprintf (char * __restrict__ __stream, size_t __n, const char * __restrict__ __format, ...) __MINGW_ASM_CALL(snprintf);
778
779 __mingw_bos_extern_ovr
780 __attribute__((__format__ (__MINGW_PRINTF_FORMAT, 2, 3))) __MINGW_ATTRIB_NONNULL(2)
781 int sprintf (char * __restrict__ __stream, const char * __restrict__ __format, ...)
782 {
783 if (__mingw_bos_known(__stream)) {
784 int __retval = __mingw_call_snprintf (__stream, __mingw_bos(__stream, 1), __format, __builtin_va_arg_pack());
785 if (__retval >= 0)
786 __mingw_bos_ptr_chk(__stream, (size_t)__retval + 1, 1);
787 return __retval;
788 }
789 return __mingw_call_sprintf (__stream, __format, __builtin_va_arg_pack());
790 }
791
792 __mingw_bos_extern_ovr
793 __attribute__((__format__ (__MINGW_PRINTF_FORMAT, 3, 4))) __MINGW_ATTRIB_NONNULL(3)
794 int snprintf (char * __restrict__ __stream, size_t __n, const char * __restrict__ __format, ...)
795 {
796 __mingw_bos_ptr_chk_warn(__stream, __n, 1);
797 return __mingw_call_snprintf (__stream, __n, __format, __builtin_va_arg_pack());
798 }
799
800#endif /* __MINGW_FORTIFY_VA_ARG */
801
802#ifdef __GNUC__
803#pragma GCC diagnostic pop
804#endif
805#else /* !_UCRT */
806
807/* this is here to deal with software defining
808 * vsnprintf as _vsnprintf, eg. libxml2. */
809
810#ifdef __GNUC__
811#pragma GCC diagnostic push
812#pragma GCC diagnostic ignored "-Wshadow"
813#endif
814
815 __mingw_bos_ovr
816 __MINGW_MS_PRINTF(3, 0) __MINGW_ATTRIB_NONNULL(3)
817 int vsnprintf (char * __restrict__ __stream, size_t __n, const char * __restrict__ __format, va_list __local_argv)
818 {
819#if __MINGW_FORTIFY_LEVEL > 0
820 __mingw_bos_ptr_chk_warn(__stream, __n, 1);
821#endif
822 if (__builtin_constant_p(__n) && __n == 0)
823 return _vscprintf(__format, __local_argv);
824 return __ms_vsnprintf (__stream, __n, __format, __local_argv);
825 }
826
827#ifndef __NO_ISOCEXT
828#if __MINGW_FORTIFY_VA_ARG
829
830int snprintf (char * __restrict__ __stream, size_t __n, const char * __restrict__ __format, ...) __MINGW_ASM_CALL(__ms_snprintf);
831
832__mingw_bos_extern_ovr
833__MINGW_MS_PRINTF(3, 4) __MINGW_ATTRIB_NONNULL(3)
834int snprintf (char * __restrict__ __stream, size_t __n, const char * __restrict__ __format, ...)
835{
836 __mingw_bos_ptr_chk_warn(__stream, __n, 1);
837 if (__builtin_constant_p(__n) && __n == 0)
838 return _scprintf(__format, __builtin_va_arg_pack());
839 return __ms_snprintf(__stream, __n, __format, __builtin_va_arg_pack());
840}
841
842#else /* !__MINGW_FORTIFY_VA_ARG */
843
844__mingw_ovr
845__MINGW_MS_PRINTF(3, 4) __MINGW_ATTRIB_NONNULL(3)
846int snprintf (char * __restrict__ __stream, size_t __n, const char * __restrict__ __format, ...)
847{
848 int __retval;
849 __builtin_va_list __local_argv; __builtin_va_start( __local_argv, __format );
850 if (__builtin_constant_p(__n) && __n == 0)
851 __retval = _vscprintf(__format, __local_argv);
852 else
853 __retval = __ms_vsnprintf (__stream, __n, __format, __local_argv);
854 __builtin_va_end( __local_argv );
855 return __retval;
856}
857
858#endif /* !__MINGW_FORTIFY_VA_ARG */
859#endif /* !__NO_ISOCEXT */
860
861#if __MINGW_FORTIFY_VA_ARG
862
863int __cdecl __mingw_call_ms_sprintf(char * __restrict__, const char * __restrict__, ...) __MINGW_ASM_CALL(sprintf);
864
865__mingw_bos_extern_ovr
866__MINGW_MS_PRINTF(2, 3) __MINGW_ATTRIB_NONNULL(2)
867int sprintf (char * __restrict__ __stream, const char * __restrict__ __format, ...)
868{
869 if (__mingw_bos_known(__stream)) {
870 int __retval = __ms_snprintf( __stream, __mingw_bos(__stream, 1), __format, __builtin_va_arg_pack() );
871 if (__retval >= 0)
872 __mingw_bos_ptr_chk(__stream, (size_t)__retval + 1, 1);
873 return __retval;
874 }
875 return __mingw_call_ms_sprintf( __stream, __format, __builtin_va_arg_pack() );
876}
877
878#endif /* __MINGW_FORTIFY_VA_ARG */
879
880#if __MINGW_FORTIFY_LEVEL > 0
881
882int __cdecl __mingw_call_ms_vsprintf(char * __restrict__, const char * __restrict__, va_list) __MINGW_ASM_CALL(vsprintf);
883
884__mingw_bos_extern_ovr
885__MINGW_MS_PRINTF(2, 0) __MINGW_ATTRIB_NONNULL(2)
886int vsprintf (char * __restrict__ __stream, const char * __restrict__ __format, va_list __local_argv)
887{
888 if (__mingw_bos_known(__stream)) {
889 int __retval = __ms_vsnprintf( __stream, __mingw_bos(__stream, 1), __format, __local_argv );
890 if (__retval >= 0)
891 __mingw_bos_ptr_chk(__stream, (size_t)__retval + 1, 1);
892 return __retval;
893 }
894 return __mingw_call_ms_vsprintf( __stream, __format, __local_argv );
895}
896
897#endif /* __MINGW_FORTIFY_LEVEL > 0 */
898
899#ifdef __GNUC__
900#pragma GCC diagnostic pop
901#endif
902#endif /* _UCRT */
903#endif /* __USE_MINGW_ANSI_STDIO */
904
905 _CRTIMP int __cdecl _set_printf_count_output(int _Value);
906 _CRTIMP int __cdecl _get_printf_count_output(void);
907
908#ifndef _WSTDIO_DEFINED
909#define _WSTDIO_DEFINED
910
911/* __attribute__((__format__ (gnu_wscanf, 2, 3))) */ __MINGW_ATTRIB_NONNULL(2)
912 int __cdecl __mingw_swscanf(const wchar_t * __restrict__ _Src,const wchar_t * __restrict__ _Format,...);
913/* __attribute__((__format__ (gnu_wscanf, 2, 0))) */ __MINGW_ATTRIB_NONNULL(2)
914 int __cdecl __mingw_vswscanf (const wchar_t * __restrict__ _Str,const wchar_t * __restrict__ Format,va_list argp);
915/* __attribute__((__format__ (gnu_wscanf, 1, 2))) */ __MINGW_ATTRIB_NONNULL(1)
916 int __cdecl __mingw_wscanf(const wchar_t * __restrict__ _Format,...);
917/* __attribute__((__format__ (gnu_wscanf, 1, 0))) */ __MINGW_ATTRIB_NONNULL(1)
918 int __cdecl __mingw_vwscanf(const wchar_t * __restrict__ Format, va_list argp);
919/* __attribute__((__format__ (gnu_wscanf, 2, 3))) */ __MINGW_ATTRIB_NONNULL(2)
920 int __cdecl __mingw_fwscanf(FILE * __restrict__ _File,const wchar_t * __restrict__ _Format,...);
921/* __attribute__((__format__ (gnu_wscanf, 2, 0))) */ __MINGW_ATTRIB_NONNULL(2)
922 int __cdecl __mingw_vfwscanf (FILE * __restrict__ fp, const wchar_t * __restrict__ Format,va_list argp);
923
924/* __attribute__((__format__ (gnu_wprintf, 2, 3))) */ __MINGW_ATTRIB_NONNULL(2)
925 int __cdecl __mingw_fwprintf(FILE * __restrict__ _File,const wchar_t * __restrict__ _Format,...);
926/* __attribute__((__format__ (gnu_wprintf, 1, 2))) */ __MINGW_ATTRIB_NONNULL(1)
927 int __cdecl __mingw_wprintf(const wchar_t * __restrict__ _Format,...);
928/* __attribute__((__format__ (gnu_wprintf, 2, 0))) */__MINGW_ATTRIB_NONNULL(2)
929 int __cdecl __mingw_vfwprintf(FILE * __restrict__ _File,const wchar_t * __restrict__ _Format,va_list _ArgList);
930/*__attribute__((__format__ (gnu_wprintf, 1, 0))) */ __MINGW_ATTRIB_NONNULL(1)
931 int __cdecl __mingw_vwprintf(const wchar_t * __restrict__ _Format,va_list _ArgList);
932/* __attribute__((__format__ (gnu_wprintf, 3, 4))) */ __MINGW_ATTRIB_NONNULL(3)
933 int __cdecl __mingw_snwprintf (wchar_t * __restrict__ s, size_t n, const wchar_t * __restrict__ format, ...);
934/* __attribute__((__format__ (gnu_wprintf, 3, 0))) */ __MINGW_ATTRIB_NONNULL(3)
935 int __cdecl __mingw_vsnwprintf (wchar_t * __restrict__ , size_t, const wchar_t * __restrict__ , va_list);
936/* __attribute__((__format__ (gnu_wprintf, 3, 4))) */ __MINGW_ATTRIB_NONNULL(3)
937 int __cdecl __mingw_swprintf(wchar_t * __restrict__ , size_t, const wchar_t * __restrict__ , ...);
938/* __attribute__((__format__ (gnu_wprintf, 3, 0))) */ __MINGW_ATTRIB_NONNULL(3)
939 int __cdecl __mingw_vswprintf(wchar_t * __restrict__ , size_t, const wchar_t * __restrict__ ,va_list);
940
941/* __attribute__((__format__ (ms_wscanf, 2, 3))) */ __MINGW_ATTRIB_NONNULL(2)
942 int __cdecl __ms_swscanf(const wchar_t * __restrict__ _Src,const wchar_t * __restrict__ _Format,...)
943 __MINGW_UCRT_ASM_CALL(swscanf);
944/* __attribute__((__format__ (ms_wscanf, 2, 0))) */ __MINGW_ATTRIB_NONNULL(2)
945 int __cdecl __ms_vswscanf(const wchar_t * __restrict__ _Src,const wchar_t * __restrict__ _Format,va_list)
946 __MINGW_ASM_CALL(vswscanf);
947/* __attribute__((__format__ (ms_wscanf, 1, 2))) */ __MINGW_ATTRIB_NONNULL(1)
948 int __cdecl __ms_wscanf(const wchar_t * __restrict__ _Format,...)
949 __MINGW_UCRT_ASM_CALL(wscanf);
950/* __attribute__((__format__ (ms_wscanf, 1, 0))) */ __MINGW_ATTRIB_NONNULL(1)
951 int __cdecl __ms_vwscanf(const wchar_t * __restrict__ _Format, va_list)
952 __MINGW_ASM_CALL(vwscanf);
953/* __attribute__((__format__ (ms_wscanf, 2, 3))) */ __MINGW_ATTRIB_NONNULL(2)
954 int __cdecl __ms_fwscanf(FILE * __restrict__ _File,const wchar_t * __restrict__ _Format,...)
955 __MINGW_UCRT_ASM_CALL(fwscanf);
956/* __attribute__((__format__ (ms_wscanf, 2, 0))) */ __MINGW_ATTRIB_NONNULL(2)
957 int __cdecl __ms_vfwscanf(FILE * __restrict__ _File,const wchar_t * __restrict__ _Format,va_list)
958 __MINGW_ASM_CALL(vfwscanf);
959
960/* __attribute__((__format__ (ms_wprintf, 2, 3))) */ __MINGW_ATTRIB_NONNULL(2)
961 int __cdecl __ms_fwprintf(FILE * __restrict__ _File,const wchar_t * __restrict__ _Format,...);
962 /* No __MINGW_UCRT_ASM_CALL for __ms_fwprintf; this is provided as an
963 * actual function in the ucrt import libraries. */
964/* __attribute__((__format__ (ms_wprintf, 1, 2))) */ __MINGW_ATTRIB_NONNULL(1)
965 int __cdecl __ms_wprintf(const wchar_t * __restrict__ _Format,...)
966 __MINGW_UCRT_ASM_CALL(wprintf);
967/* __attribute__((__format__ (ms_wprintf, 2, 0))) */__MINGW_ATTRIB_NONNULL(2)
968 int __cdecl __ms_vfwprintf(FILE * __restrict__ _File,const wchar_t * __restrict__ _Format,va_list _ArgList)
969 __MINGW_UCRT_ASM_CALL(vfwprintf);
970/*__attribute__((__format__ (ms_wprintf, 1, 0))) */ __MINGW_ATTRIB_NONNULL(1)
971 int __cdecl __ms_vwprintf(const wchar_t * __restrict__ _Format,va_list _ArgList)
972 __MINGW_UCRT_ASM_CALL(vwprintf);
973/* __attribute__((__format__ (ms_wprintf, 3, 4))) */ __MINGW_ATTRIB_NONNULL(3)
974 int __cdecl __ms_swprintf(wchar_t * __restrict__ , size_t, const wchar_t * __restrict__ , ...)
975 __MINGW_UCRT_ASM_CALL(swprintf);
976/* __attribute__((__format__ (ms_wprintf, 3, 0))) */ __MINGW_ATTRIB_NONNULL(3)
977 int __cdecl __ms_vswprintf(wchar_t * __restrict__ , size_t, const wchar_t * __restrict__ ,va_list)
978 __MINGW_UCRT_ASM_CALL(vswprintf);
979/* __attribute__((__format__ (ms_wprintf, 3, 4))) */ __MINGW_ATTRIB_NONNULL(3)
980 int __cdecl __ms_snwprintf(wchar_t * __restrict__ , size_t, const wchar_t * __restrict__ , ...)
981 __MINGW_UCRT_ASM_CALL(snwprintf);
982/* __attribute__((__format__ (ms_wprintf, 3, 0))) */ __MINGW_ATTRIB_NONNULL(3)
983 int __cdecl __ms_vsnwprintf(wchar_t * __restrict__ , size_t, const wchar_t * __restrict__ , va_list)
984 __MINGW_UCRT_ASM_CALL(vsnwprintf);
985
986#ifdef _UCRT
987 int __cdecl __stdio_common_vswprintf(unsigned __int64 options, wchar_t *str, size_t len, const wchar_t *format, _locale_t locale, va_list valist);
988 int __cdecl __stdio_common_vfwprintf(unsigned __int64 options, FILE *file, const wchar_t *format, _locale_t locale, va_list valist);
989 int __cdecl __stdio_common_vswscanf(unsigned __int64 options, const wchar_t *input, size_t length, const wchar_t *format, _locale_t locale, va_list valist);
990 int __cdecl __stdio_common_vfwscanf(unsigned __int64 options, FILE *file, const wchar_t *format, _locale_t locale, va_list valist);
991#endif
992
993#if __USE_MINGW_ANSI_STDIO && !defined(_CRTBLD)
994/*
995 * User has expressed a preference for C99 conformance...
996 */
997
998/* __attribute__((__format__ (gnu_wscanf, 2, 3))) */ __MINGW_ATTRIB_NONNULL(2)
999int swscanf(const wchar_t *__source, const wchar_t *__format, ...)
1000__MINGW_ASM_CALL(__mingw_swscanf);
1001
1002/* __attribute__((__format__ (gnu_wscanf, 1, 2))) */ __MINGW_ATTRIB_NONNULL(1)
1003int wscanf(const wchar_t *__format, ...)
1004__MINGW_ASM_CALL(__mingw_wscanf);
1005
1006/* __attribute__((__format__ (gnu_wscanf, 2, 3))) */ __MINGW_ATTRIB_NONNULL(2)
1007int fwscanf(FILE *__stream, const wchar_t *__format, ...)
1008__MINGW_ASM_CALL(__mingw_fwscanf);
1009
1010#ifndef __NO_ISOCEXT /* externs in libmingwex.a */
1011/* __attribute__((__format__ (gnu_wscanf, 2, 0))) */ __MINGW_ATTRIB_NONNULL(2)
1012int vswscanf (const wchar_t * __restrict__ __source, const wchar_t * __restrict__ __format, __builtin_va_list __local_argv)
1013__MINGW_ASM_CALL(__mingw_vswscanf);
1014
1015/* __attribute__((__format__ (gnu_wscanf, 1, 0))) */ __MINGW_ATTRIB_NONNULL(1)
1016int vwscanf(const wchar_t *__format, __builtin_va_list __local_argv)
1017__MINGW_ASM_CALL(__mingw_vwscanf);
1018
1019/* __attribute__((__format__ (gnu_wscanf, 2, 0))) */ __MINGW_ATTRIB_NONNULL(2)
1020int vfwscanf (FILE *__stream, const wchar_t *__format, __builtin_va_list __local_argv)
1021__MINGW_ASM_CALL(__mingw_vfwscanf);
1022#endif /* __NO_ISOCEXT */
1023
1024
1025
1026/* __attribute__((__format__ (gnu_wprintf, 2, 3))) */ __MINGW_ATTRIB_NONNULL(2)
1027int fwprintf (FILE *__stream, const wchar_t *__format, ...)
1028__MINGW_ASM_CALL(__mingw_fwprintf);
1029
1030/* __attribute__((__format__ (gnu_wprintf, 1, 2))) */ __MINGW_ATTRIB_NONNULL(1)
1031int wprintf (const wchar_t *__format, ...)
1032__MINGW_ASM_CALL(__mingw_wprintf);
1033
1034/* __attribute__((__format__ (gnu_wprintf, 2, 0))) */ __MINGW_ATTRIB_NONNULL(2)
1035int vfwprintf (FILE *__stream, const wchar_t *__format, __builtin_va_list __local_argv)
1036__MINGW_ASM_CALL(__mingw_vfwprintf);
1037
1038/* __attribute__((__format__ (gnu_wprintf, 1, 0))) */ __MINGW_ATTRIB_NONNULL(1)
1039int vwprintf (const wchar_t *__format, __builtin_va_list __local_argv)
1040__MINGW_ASM_CALL(__mingw_vwprintf);
1041
1042/* __attribute__((__format__ (gnu_wprintf, 3, 4))) */ __MINGW_ATTRIB_NONNULL(3)
1043int swprintf (wchar_t *__stream, size_t __n, const wchar_t *__format, ...)
1044__MINGW_ASM_CALL(__mingw_swprintf);
1045
1046#if __MINGW_FORTIFY_VA_ARG
1047
1048__mingw_bos_extern_ovr
1049/* __attribute__((__format__ (gnu_wprintf, 3, 4))) */ __MINGW_ATTRIB_NONNULL(3)
1050int swprintf (wchar_t *__stream, size_t __n, const wchar_t *__format, ...)
1051{
1052 __mingw_bos_ptr_chk_warn(__stream, __n * sizeof(wchar_t), 1);
1053 return __mingw_swprintf( __stream, __n, __format, __builtin_va_arg_pack() );
1054}
1055
1056#endif /* __MINGW_FORTIFY_VA_ARG */
1057
1058__mingw_bos_ovr
1059/* __attribute__((__format__ (gnu_wprintf, 3, 0))) */ __MINGW_ATTRIB_NONNULL(3)
1060int vswprintf (wchar_t *__stream, size_t __n, const wchar_t *__format, __builtin_va_list __local_argv)
1061{
1062#if __MINGW_FORTIFY_LEVEL > 0
1063 __mingw_bos_ptr_chk_warn(__stream, __n * sizeof(wchar_t), 1);
1064#endif
1065 return __mingw_vswprintf( __stream, __n, __format, __local_argv );
1066}
1067
1068#ifndef __NO_ISOCEXT /* externs in libmingwex.a */
1069
1070/* __attribute__((__format__ (gnu_wprintf, 3, 4))) */ __MINGW_ATTRIB_NONNULL(3)
1071int snwprintf (wchar_t *__stream, size_t __n, const wchar_t *__format, ...)
1072__MINGW_ASM_CALL(__mingw_snwprintf);
1073
1074#if __MINGW_FORTIFY_VA_ARG
1075
1076__mingw_bos_extern_ovr
1077/* __attribute__((__format__ (gnu_wprintf, 3, 4))) */ __MINGW_ATTRIB_NONNULL(3)
1078int snwprintf (wchar_t *__stream, size_t __n, const wchar_t *__format, ...)
1079{
1080 __mingw_bos_ptr_chk_warn(__stream, __n * sizeof(wchar_t), 1);
1081 return __mingw_snwprintf( __stream, __n, __format, __builtin_va_arg_pack() );
1082}
1083
1084#endif /* __MINGW_FORTIFY_VA_ARG */
1085
1086__mingw_bos_ovr
1087/* __attribute__((__format__ (gnu_wprintf, 3, 0))) */ __MINGW_ATTRIB_NONNULL(3)
1088int vsnwprintf (wchar_t *__stream, size_t __n, const wchar_t *__format, __builtin_va_list __local_argv)
1089{
1090#if __MINGW_FORTIFY_LEVEL > 0
1091 __mingw_bos_ptr_chk_warn(__stream, __n * sizeof(wchar_t), 1);
1092#endif
1093 return __mingw_vsnwprintf( __stream, __n, __format, __local_argv );
1094}
1095
1096#endif /* __NO_ISOCEXT */
1097
1098#else /* !__USE_MINGW_ANSI_STDIO */
1099
1100#ifdef _UCRT
1101 __MINGW_ATTRIB_DEPRECATED_SEC_WARN
1102 int __cdecl fwscanf(FILE * __restrict__ _File,const wchar_t * __restrict__ _Format,...);
1103 __MINGW_ATTRIB_DEPRECATED_SEC_WARN
1104 int __cdecl swscanf(const wchar_t * __restrict__ _Src,const wchar_t * __restrict__ _Format,...);
1105 __MINGW_ATTRIB_DEPRECATED_SEC_WARN
1106 int __cdecl wscanf(const wchar_t * __restrict__ _Format,...);
1107 __MINGW_ATTRIB_NONNULL(2)
1108 int vfwscanf (FILE *__stream, const wchar_t *__format, va_list __local_argv);
1109
1110 __MINGW_ATTRIB_NONNULL(2)
1111 int vswscanf (const wchar_t * __restrict__ __source, const wchar_t * __restrict__ __format, va_list __local_argv);
1112 __MINGW_ATTRIB_NONNULL(1)
1113 int vwscanf(const wchar_t *__format, va_list __local_argv);
1114
1115 int __cdecl fwprintf(FILE * __restrict__ _File,const wchar_t * __restrict__ _Format,...);
1116 int __cdecl wprintf(const wchar_t * __restrict__ _Format,...);
1117 int __cdecl vfwprintf(FILE * __restrict__ _File,const wchar_t * __restrict__ _Format,va_list _ArgList);
1118 int __cdecl vwprintf(const wchar_t * __restrict__ _Format,va_list _ArgList);
1119#else
1120
1121 int __cdecl fwscanf(FILE * __restrict__ _File,const wchar_t * __restrict__ _Format,...) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
1122 int __cdecl swscanf(const wchar_t * __restrict__ _Src,const wchar_t * __restrict__ _Format,...) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
1123 int __cdecl wscanf(const wchar_t * __restrict__ _Format,...) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
1124#ifndef __NO_ISOCEXT /* externs in libmingwex.a */
1125 __MINGW_ATTRIB_NONNULL(2)
1126 int vfwscanf (FILE *__stream, const wchar_t *__format, __builtin_va_list __local_argv);
1127
1128 __MINGW_ATTRIB_NONNULL(2)
1129 int vswscanf (const wchar_t * __restrict__ __source, const wchar_t * __restrict__ __format, __builtin_va_list __local_argv);
1130
1131 __MINGW_ATTRIB_NONNULL(1)
1132 int vwscanf(const wchar_t *__format, __builtin_va_list __local_argv);
1133
1134#endif /* __NO_ISOCEXT */
1135
1136 int __cdecl fwprintf(FILE * __restrict__ _File,const wchar_t * __restrict__ _Format,...);
1137 int __cdecl wprintf(const wchar_t * __restrict__ _Format,...);
1138 int __cdecl vfwprintf(FILE * __restrict__ _File,const wchar_t * __restrict__ _Format,va_list _ArgList);
1139 int __cdecl vwprintf(const wchar_t * __restrict__ _Format,va_list _ArgList);
1140#endif /* _UCRT */
1141#endif /* __USE_MINGW_ANSI_STDIO */
1142
1143#ifndef WEOF
1144#define WEOF (wint_t)(0xFFFF)
1145#endif
1146
1147#ifdef _POSIX_
1148 _CRTIMP FILE *__cdecl _wfsopen(const wchar_t *_Filename,const wchar_t *_Mode);
1149#else
1150 _CRTIMP FILE *__cdecl _wfsopen(const wchar_t *_Filename,const wchar_t *_Mode,int _ShFlag);
1151#endif
1152
1153 wint_t __cdecl fgetwc(FILE *_File);
1154 _CRTIMP wint_t __cdecl _fgetwchar(void);
1155 wint_t __cdecl fputwc(wchar_t _Ch,FILE *_File);
1156 _CRTIMP wint_t __cdecl _fputwchar(wchar_t _Ch);
1157 wint_t __cdecl getwc(FILE *_File);
1158 wint_t __cdecl getwchar(void);
1159 wint_t __cdecl putwc(wchar_t _Ch,FILE *_File);
1160 wint_t __cdecl putwchar(wchar_t _Ch);
1161 wint_t __cdecl ungetwc(wint_t _Ch,FILE *_File);
1162 wchar_t *__cdecl fgetws(wchar_t * __restrict__ _Dst,int _SizeInWords,FILE * __restrict__ _File);
1163 int __cdecl fputws(const wchar_t * __restrict__ _Str,FILE * __restrict__ _File);
1164 _CRTIMP wchar_t *__cdecl _getws(wchar_t *_String) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
1165 _CRTIMP int __cdecl _putws(const wchar_t *_Str);
1166
1167#ifdef _UCRT
1168 __mingw_ovr
1169 int __cdecl _scwprintf(const wchar_t * __restrict__ _Format,...)
1170 {
1171 __builtin_va_list __ap;
1172 int __ret;
1173 __builtin_va_start(__ap, _Format);
1174 __ret = __stdio_common_vswprintf(_CRT_INTERNAL_LOCAL_PRINTF_OPTIONS | _CRT_INTERNAL_PRINTF_STANDARD_SNPRINTF_BEHAVIOR, NULL, 0, _Format, NULL, __ap);
1175 __builtin_va_end(__ap);
1176 return __ret;
1177 }
1178 int __cdecl _snwprintf(wchar_t * __restrict__ _Dest,size_t _Count,const wchar_t * __restrict__ _Format,...) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
1179 int __cdecl _vsnwprintf(wchar_t * __restrict__ _Dest,size_t _Count,const wchar_t * __restrict__ _Format,va_list _Args) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
1180
1181#if __USE_MINGW_ANSI_STDIO == 0
1182 int __cdecl swprintf(wchar_t * __restrict__ _Dest,size_t _Count,const wchar_t * __restrict__ _Format,...);
1183 int __cdecl vswprintf(wchar_t * __restrict__ _Dest,size_t _Count,const wchar_t * __restrict__ _Format,va_list _Args);
1184
1185 int __cdecl snwprintf (wchar_t * __restrict__ s, size_t n, const wchar_t * __restrict__ format, ...);
1186 int __cdecl vsnwprintf (wchar_t * __restrict__ s, size_t n, const wchar_t * __restrict__ format, va_list arg);
1187#endif
1188
1189 __mingw_ovr
1190 int __cdecl _swprintf(wchar_t * __restrict__ _Dest,const wchar_t * __restrict__ _Format,...)
1191 {
1192 __builtin_va_list __ap;
1193 int __ret;
1194 __builtin_va_start(__ap, _Format);
1195 __ret = __stdio_common_vswprintf(_CRT_INTERNAL_LOCAL_PRINTF_OPTIONS, _Dest, (size_t)-1, _Format, NULL, __ap);
1196 __builtin_va_end(__ap);
1197 return __ret;
1198 }
1199 __mingw_ovr
1200 int __cdecl _vswprintf(wchar_t * __restrict__ _Dest,const wchar_t * __restrict__ _Format,va_list _Args)
1201 {
1202 return __stdio_common_vswprintf(_CRT_INTERNAL_LOCAL_PRINTF_OPTIONS, _Dest, (size_t)-1, _Format, NULL, _Args);
1203 }
1204
1205 __mingw_ovr
1206 int __cdecl _vscwprintf(const wchar_t * __restrict__ _Format, va_list _ArgList)
1207 {
1208 int _Result = __stdio_common_vswprintf(_CRT_INTERNAL_LOCAL_PRINTF_OPTIONS | _CRT_INTERNAL_PRINTF_STANDARD_SNPRINTF_BEHAVIOR, NULL, 0, _Format, NULL, _ArgList);
1209 return _Result < 0 ? -1 : _Result;
1210 }
1211#else
1212 _CRTIMP int __cdecl _scwprintf(const wchar_t * __restrict__ _Format,...);
1213 _CRTIMP int __cdecl _swprintf_c(wchar_t * __restrict__ _DstBuf,size_t _SizeInWords,const wchar_t * __restrict__ _Format,...);
1214 _CRTIMP int __cdecl _vswprintf_c(wchar_t * __restrict__ _DstBuf,size_t _SizeInWords,const wchar_t * __restrict__ _Format,va_list _ArgList);
1215 _CRTIMP int __cdecl _snwprintf(wchar_t * __restrict__ _Dest,size_t _Count,const wchar_t * __restrict__ _Format,...) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
1216 _CRTIMP int __cdecl _vsnwprintf(wchar_t * __restrict__ _Dest,size_t _Count,const wchar_t * __restrict__ _Format,va_list _Args) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
1217 _CRTIMP int __cdecl _vscwprintf(const wchar_t * __restrict__ _Format,va_list _ArgList);
1218
1219#ifndef __NO_ISOCEXT /* externs in libmingwex.a */
1220
1221#if __USE_MINGW_ANSI_STDIO == 0
1222 int __cdecl snwprintf (wchar_t * __restrict__ s, size_t n, const wchar_t * __restrict__ format, ...) __MINGW_ASM_CALL(__ms_snwprintf);
1223 int __cdecl vsnwprintf (wchar_t * __restrict__ s, size_t n, const wchar_t * __restrict__ format, va_list arg) __MINGW_ASM_CALL(__ms_vsnwprintf);
1224#endif
1225
1226#endif /* ! __NO_ISOCEXT */
1227 _CRTIMP int __cdecl _swprintf(wchar_t * __restrict__ _Dest,const wchar_t * __restrict__ _Format,...);
1228 _CRTIMP int __cdecl _vswprintf(wchar_t * __restrict__ _Dest,const wchar_t * __restrict__ _Format,va_list _Args);
1229
1230 int __cdecl swprintf(wchar_t * __restrict__ _Dest,size_t _Count,const wchar_t * __restrict__ _Format,...);
1231 int __cdecl vswprintf(wchar_t * __restrict__ _Dest,size_t _Count,const wchar_t * __restrict__ _Format,va_list _Args);
1232#endif /* _UCRT */
1233
1234#ifndef RC_INVOKED
1235#include <swprintf.inl>
1236#endif
1237
1238#ifdef _CRT_NON_CONFORMING_SWPRINTFS
1239#ifndef __cplusplus
1240#define _swprintf_l __swprintf_l
1241#define _vswprintf_l __vswprintf_l
1242#endif
1243#endif
1244
1245#if defined(_DEBUG) && defined(_CRTDBG_MAP_ALLOC)
1246#pragma push_macro("_wtempnam")
1247#undef _wtempnam
1248#endif
1249 _CRTIMP wchar_t *__cdecl _wtempnam(const wchar_t *_Directory,const wchar_t *_FilePrefix);
1250#if defined(_DEBUG) && defined(_CRTDBG_MAP_ALLOC)
1251#pragma pop_macro("_wtempnam")
1252#endif
1253 _CRTIMP int __cdecl _snwscanf(const wchar_t * __restrict__ _Src,size_t _MaxCount,const wchar_t * __restrict__ _Format,...);
1254 _CRTIMP FILE *__cdecl _wfdopen(int _FileHandle ,const wchar_t *_Mode);
1255 _CRTIMP FILE *__cdecl _wfopen(const wchar_t * __restrict__ _Filename,const wchar_t *__restrict__ _Mode) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
1256 _CRTIMP FILE *__cdecl _wfreopen(const wchar_t * __restrict__ _Filename,const wchar_t * __restrict__ _Mode,FILE * __restrict__ _OldFile) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
1257
1258#ifndef _CRT_WPERROR_DEFINED
1259#define _CRT_WPERROR_DEFINED
1260 _CRTIMP void __cdecl _wperror(const wchar_t *_ErrMsg);
1261#endif
1262 _CRTIMP FILE *__cdecl _wpopen(const wchar_t *_Command,const wchar_t *_Mode);
1263#if !defined(NO_OLDNAMES) && !defined(wpopen)
1264#define wpopen _wpopen
1265#endif
1266
1267 _CRTIMP int __cdecl _wremove(const wchar_t *_Filename);
1268 _CRTIMP wchar_t *__cdecl _wtmpnam(wchar_t *_Buffer);
1269#if __MSVCRT_VERSION__ >= 0x800
1270 _CRTIMP wint_t __cdecl _fgetwc_nolock(FILE *_File);
1271 _CRTIMP wint_t __cdecl _fputwc_nolock(wchar_t _Ch,FILE *_File);
1272 _CRTIMP wint_t __cdecl _ungetwc_nolock(wint_t _Ch,FILE *_File);
1273#endif
1274
1275#undef _CRT_GETPUTWCHAR_NOINLINE
1276
1277#if !defined(__cplusplus) || defined(_CRT_GETPUTWCHAR_NOINLINE) || defined (__CRT__NO_INLINE)
1278#define getwchar() fgetwc(stdin)
1279#define putwchar(_c) fputwc((_c),stdout)
1280#else
1281 __CRT_INLINE wint_t __cdecl getwchar() {return (fgetwc(stdin)); }
1282 __CRT_INLINE wint_t __cdecl putwchar(wchar_t _C) {return (fputwc(_C,stdout)); }
1283#endif
1284
1285#define getwc(_stm) fgetwc(_stm)
1286#define putwc(_c,_stm) fputwc(_c,_stm)
1287#if __MSVCRT_VERSION__ >= 0x800
1288#define _putwc_nolock(_c,_stm) _fputwc_nolock(_c,_stm)
1289#define _getwc_nolock(_c) _fgetwc_nolock(_c)
1290#endif
1291#endif
1292
1293#define _STDIO_DEFINED
1294#endif
1295
1296#ifdef _UCRT
1297 _CRTIMP int __cdecl _fgetc_nolock(FILE *_File);
1298 _CRTIMP int __cdecl _fputc_nolock(int _Char, FILE *_File);
1299 _CRTIMP int __cdecl _getc_nolock(FILE *_File);
1300 _CRTIMP int __cdecl _putc_nolock(int _Char, FILE *_File);
1301#else
1302#define _fgetc_nolock(_stream) (--(_stream)->_cnt >= 0 ? 0xff & *(_stream)->_ptr++ : _filbuf(_stream))
1303#define _fputc_nolock(_c,_stream) (--(_stream)->_cnt >= 0 ? 0xff & (*(_stream)->_ptr++ = (char)(_c)) : _flsbuf((_c),(_stream)))
1304#define _getc_nolock(_stream) _fgetc_nolock(_stream)
1305#define _putc_nolock(_c,_stream) _fputc_nolock(_c,_stream)
1306#endif
1307#define _getchar_nolock() _getc_nolock(stdin)
1308#define _putchar_nolock(_c) _putc_nolock((_c),stdout)
1309#define _getwchar_nolock() _getwc_nolock(stdin)
1310#define _putwchar_nolock(_c) _putwc_nolock((_c),stdout)
1311
1312 _CRTIMP void __cdecl _lock_file(FILE *_File);
1313 _CRTIMP void __cdecl _unlock_file(FILE *_File);
1314#if __MSVCRT_VERSION__ >= 0x800
1315 _CRTIMP int __cdecl _fclose_nolock(FILE *_File);
1316 _CRTIMP int __cdecl _fflush_nolock(FILE *_File);
1317 _CRTIMP size_t __cdecl _fread_nolock(void * __restrict__ _DstBuf,size_t _ElementSize,size_t _Count,FILE * __restrict__ _File);
1318 _CRTIMP int __cdecl _fseek_nolock(FILE *_File,long _Offset,int _Origin);
1319 _CRTIMP long __cdecl _ftell_nolock(FILE *_File);
1320 __MINGW_EXTENSION _CRTIMP int __cdecl _fseeki64_nolock(FILE *_File,__int64 _Offset,int _Origin);
1321 __MINGW_EXTENSION _CRTIMP __int64 __cdecl _ftelli64_nolock(FILE *_File);
1322 _CRTIMP size_t __cdecl _fwrite_nolock(const void * __restrict__ _DstBuf,size_t _Size,size_t _Count,FILE * __restrict__ _File);
1323 _CRTIMP int __cdecl _ungetc_nolock(int _Ch,FILE *_File);
1324#endif
1325
1326#if !defined(NO_OLDNAMES) || !defined(_POSIX)
1327#define P_tmpdir _P_tmpdir
1328#define SYS_OPEN _SYS_OPEN
1329
1330#if defined(_DEBUG) && defined(_CRTDBG_MAP_ALLOC)
1331#pragma push_macro("tempnam")
1332#undef tempnam
1333#endif
1334 char *__cdecl tempnam(const char *_Directory,const char *_FilePrefix) __MINGW_ATTRIB_DEPRECATED_MSVC2005;
1335#if defined(_DEBUG) && defined(_CRTDBG_MAP_ALLOC)
1336#pragma pop_macro("tempnam")
1337#endif
1338 int __cdecl fcloseall(void) __MINGW_ATTRIB_DEPRECATED_MSVC2005;
1339 FILE *__cdecl fdopen(int _FileHandle,const char *_Format) __MINGW_ATTRIB_DEPRECATED_MSVC2005;
1340 int __cdecl fgetchar(void) __MINGW_ATTRIB_DEPRECATED_MSVC2005;
1341 int __cdecl fileno(FILE *_File) __MINGW_ATTRIB_DEPRECATED_MSVC2005;
1342 int __cdecl flushall(void) __MINGW_ATTRIB_DEPRECATED_MSVC2005;
1343 int __cdecl fputchar(int _Ch) __MINGW_ATTRIB_DEPRECATED_MSVC2005;
1344 int __cdecl getw(FILE *_File) __MINGW_ATTRIB_DEPRECATED_MSVC2005;
1345 int __cdecl putw(int _Ch,FILE *_File) __MINGW_ATTRIB_DEPRECATED_MSVC2005;
1346 int __cdecl rmtmp(void) __MINGW_ATTRIB_DEPRECATED_MSVC2005;
1347#endif
1348
1349#ifndef __MINGW_MBWC_CONVERT_DEFINED
1350#define __MINGW_MBWC_CONVERT_DEFINED
1351
1352/**
1353 * __mingw_str_wide_utf8
1354 * Converts a null terminated UCS-2 string to a multibyte (UTF-8) equivalent.
1355 * Caller is supposed to free allocated buffer with __mingw_str_free().
1356 * @param[in] wptr Pointer to wide string.
1357 * @param[out] mbptr Pointer to multibyte string.
1358 * @param[out] buflen Optional parameter for length of allocated buffer.
1359 * @return Number of characters converted, 0 for failure.
1360 *
1361 * WideCharToMultiByte - http://msdn.microsoft.com/en-us/library/dd374130(VS.85).aspx
1362 */
1363int __cdecl __mingw_str_wide_utf8 (const wchar_t * const wptr, char **mbptr, size_t * buflen);
1364
1365/**
1366 * __mingw_str_utf8_wide
1367 * Converts a null terminated UTF-8 string to a UCS-2 equivalent.
1368 * Caller is supposed to free allocated buffer with __mingw_str_free().
1369 * @param[out] mbptr Pointer to multibyte string.
1370 * @param[in] wptr Pointer to wide string.
1371 * @param[out] buflen Optional parameter for length of allocated buffer.
1372 * @return Number of characters converted, 0 for failure.
1373 *
1374 * MultiByteToWideChar - http://msdn.microsoft.com/en-us/library/dd319072(VS.85).aspx
1375 */
1376
1377int __cdecl __mingw_str_utf8_wide (const char *const mbptr, wchar_t ** wptr, size_t * buflen);
1378
1379/**
1380 * __mingw_str_free
1381 * Frees buffer create by __mingw_str_wide_utf8 and __mingw_str_utf8_wide.
1382 * @param[in] ptr memory block to free.
1383 *
1384 */
1385
1386void __cdecl __mingw_str_free(void *ptr);
1387
1388#endif /* __MINGW_MBWC_CONVERT_DEFINED */
1389
1390#ifdef _CRT_USE_WINAPI_FAMILY_DESKTOP_APP
1391#ifndef _WSPAWN_DEFINED
1392#define _WSPAWN_DEFINED
1393 _CRTIMP intptr_t __cdecl _wspawnl(int _Mode,const wchar_t *_Filename,const wchar_t *_ArgList,...);
1394 _CRTIMP intptr_t __cdecl _wspawnle(int _Mode,const wchar_t *_Filename,const wchar_t *_ArgList,...);
1395 _CRTIMP intptr_t __cdecl _wspawnlp(int _Mode,const wchar_t *_Filename,const wchar_t *_ArgList,...);
1396 _CRTIMP intptr_t __cdecl _wspawnlpe(int _Mode,const wchar_t *_Filename,const wchar_t *_ArgList,...);
1397 _CRTIMP intptr_t __cdecl _wspawnv(int _Mode,const wchar_t *_Filename,const wchar_t *const *_ArgList);
1398 _CRTIMP intptr_t __cdecl _wspawnve(int _Mode,const wchar_t *_Filename,const wchar_t *const *_ArgList,const wchar_t *const *_Env);
1399 _CRTIMP intptr_t __cdecl _wspawnvp(int _Mode,const wchar_t *_Filename,const wchar_t *const *_ArgList);
1400 _CRTIMP intptr_t __cdecl _wspawnvpe(int _Mode,const wchar_t *_Filename,const wchar_t *const *_ArgList,const wchar_t *const *_Env);
1401#endif
1402
1403#ifndef _P_WAIT
1404#define _P_WAIT 0
1405#define _P_NOWAIT 1
1406#define _OLD_P_OVERLAY 2
1407#define _P_NOWAITO 3
1408#define _P_DETACH 4
1409#define _P_OVERLAY 2
1410
1411#define _WAIT_CHILD 0
1412#define _WAIT_GRANDCHILD 1
1413#endif
1414
1415#ifndef _SPAWNV_DEFINED
1416#define _SPAWNV_DEFINED
1417 _CRTIMP intptr_t __cdecl _spawnv(int _Mode,const char *_Filename,const char *const *_ArgList);
1418 _CRTIMP intptr_t __cdecl _spawnve(int _Mode,const char *_Filename,const char *const *_ArgList,const char *const *_Env);
1419 _CRTIMP intptr_t __cdecl _spawnvp(int _Mode,const char *_Filename,const char *const *_ArgList);
1420 _CRTIMP intptr_t __cdecl _spawnvpe(int _Mode,const char *_Filename,const char *const *_ArgList,const char *const *_Env);
1421#endif
1422#endif /* _CRT_USE_WINAPI_FAMILY_DESKTOP_APP */
1423
1424#ifdef __cplusplus
1425}
1426#endif
1427
1428#pragma pop_macro("snprintf")
1429#pragma pop_macro("vsnprintf")
1430#pragma pop_macro("snwprintf")
1431#pragma pop_macro("vsnwprintf")
1432
1433#pragma pack(pop)
1434
1435#include <sec_api/stdio_s.h>
1436
1437#endif